[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSG4324CE6HX2KDT6FXYW5":3,"skill-same:01M6CSG4324CE6HX2KDT6FXYW5":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M6CSG4324CE6HX2KDT6FXYW5","claude-in-chrome-troubleshooting",null,"Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return \"Browser extension is not connected\", or behave erratically.","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fclaude-in-chrome-troubleshooting\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35],"chrome","troubleshooting","claude in chrome troubleshooting","MCP","diagnose","issues","browser","Tools","fix","use","community","behave","2026-11-10 10:12:30",false,"---\nname: claude-in-chrome-troubleshooting\ndescription: Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return \"Browser extension is not connected\", or behave erratically.\nrisk: critical\nsource: community\n---\n\n# Claude in Chrome MCP Troubleshooting\n\nUse this skill when Claude in Chrome MCP tools fail to connect or work unreliably.\n\n## When to Use\n- `mcp__claude-in-chrome__*` tools fail with \"Browser extension is not connected\"\n- Browser automation works erratically or times out\n- After updating Claude Code or Claude.app\n- When switching between Claude Code CLI and Claude.app (Cowork)\n- Native host process is running but MCP tools still fail\n\n## When NOT to Use\n\n- **Linux or Windows users** - This skill covers macOS-specific paths and tools (`~\u002FLibrary\u002FApplication Support\u002F`, `osascript`)\n- General Chrome automation issues unrelated to the Claude extension\n- Claude.app desktop issues (not browser-related)\n- Network connectivity problems\n- Chrome extension installation issues (use Chrome Web Store support)\n\n## The Claude.app vs Claude Code Conflict (Primary Issue)\n\n**Background:** When Claude.app added Cowork support (browser automation from the desktop app), it introduced a competing native messaging host that conflicts with Claude Code CLI.\n\n### Two Native Hosts, Two Socket Formats\n\n| Component | Native Host Binary | Socket Location |\n|-----------|-------------------|-----------------|\n| **Claude.app (Cowork)** | `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` |\n| **Claude Code CLI** | `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion> --chrome-native-host` | `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` (single file) |\n\n### Why They Conflict\n\n1. Both register native messaging configs in Chrome:\n   - `com.anthropic.claude_browser_extension.json` → Claude.app helper\n   - `com.anthropic.claude_code_browser_extension.json` → Claude Code wrapper\n\n2. Chrome extension requests a native host by name\n3. If the wrong config is active, the wrong binary runs\n4. The wrong binary creates sockets in a format\u002Flocation the MCP client doesn't expect\n5. Result: \"Browser extension is not connected\" even though everything appears to be running\n\n### The Fix: Disable Claude.app's Native Host\n\n**If you use Claude Code CLI for browser automation (not Cowork):**\n\n```bash\n# Disable the Claude.app native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled\n\n# Ensure the Claude Code config exists and points to the wrapper\ncat ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json\n```\n\n**If you use Cowork (Claude.app) for browser automation:**\n\n```bash\n# Disable the Claude Code native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json.disabled\n```\n\n**You cannot use both simultaneously.** Pick one and disable the other.\n\n### Toggle Script\n\nAdd this to `~\u002F.zshrc` or run directly:\n\n```bash\nchrome-mcp-toggle() {\n    local CONFIG_DIR=~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\n    local CLAUDE_APP=\"$CONFIG_DIR\u002Fcom.anthropic.claude_browser_extension.json\"\n    local CLAUDE_CODE=\"$CONFIG_DIR\u002Fcom.anthropic.claude_code_browser_extension.json\"\n\n    if [[ -f \"$CLAUDE_APP\" && ! -f \"$CLAUDE_APP.disabled\" ]]; then\n        # Currently using Claude.app, switch to Claude Code\n        mv \"$CLAUDE_APP\" \"$CLAUDE_APP.disabled\"\n        [[ -f \"$CLAUDE_CODE.disabled\" ]] && mv \"$CLAUDE_CODE.disabled\" \"$CLAUDE_CODE\"\n        echo \"Switched to Claude Code CLI\"\n        echo \"Restart Chrome and Claude Code to apply\"\n    elif [[ -f \"$CLAUDE_CODE\" && ! -f \"$CLAUDE_CODE.disabled\" ]]; then\n        # Currently using Claude Code, switch to Claude.app\n        mv \"$CLAUDE_CODE\" \"$CLAUDE_CODE.disabled\"\n        [[ -f \"$CLAUDE_APP.disabled\" ]] && mv \"$CLAUDE_APP.disabled\" \"$CLAUDE_APP\"\n        echo \"Switched to Claude.app (Cowork)\"\n        echo \"Restart Chrome to apply\"\n    else\n        echo \"Current state unclear. Check configs:\"\n        ls -la \"$CONFIG_DIR\"\u002Fcom.anthropic*.json* 2>\u002Fdev\u002Fnull\n    fi\n}\n```\n\nUsage: `chrome-mcp-toggle` then restart Chrome (and Claude Code if switching to CLI).\n\n## Quick Diagnosis\n\n```bash\n# 1. Which native host binary is running?\nps aux | grep chrome-native-host | grep -v grep\n# Claude.app: \u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host\n# Claude Code: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 2. Where is the socket?\n# For Claude Code (single file in TMPDIR):\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\n# For Claude.app (directory with PID files):\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\n# 3. What's the native host connected to?\nlsof -U 2>&1 | grep claude-mcp-browser-bridge\n\n# 4. Which configs are active?\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json\n```\n\n## Critical Insight\n\n**MCP connects at startup.** If the browser bridge wasn't ready when Claude Code started, the connection will fail for the entire session. The fix is usually: ensure Chrome + extension are running with correct config, THEN restart Claude Code.\n\n## Full Reset Procedure (Claude Code CLI)\n\n```bash\n# 1. Ensure correct config is active\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled 2>\u002Fdev\u002Fnull\n\n# 2. Update the wrapper to use latest Claude Code version\ncat > ~\u002F.claude\u002Fchrome\u002Fchrome-native-host \u003C\u003C 'EOF'\n#!\u002Fbin\u002Fbash\nLATEST=$(ls -t ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F 2>\u002Fdev\u002Fnull | head -1)\nexec \"$HOME\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F$LATEST\" --chrome-native-host\nEOF\nchmod +x ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n\n# 3. Kill existing native host and clean sockets\npkill -f chrome-native-host\nrm -rf \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\nrm -f \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 4. Restart Chrome\nosascript -e 'quit app \"Google Chrome\"' && sleep 2 && open -a \"Google Chrome\"\n\n# 5. Wait for Chrome, click Claude extension icon\n\n# 6. Verify correct native host is running\nps aux | grep chrome-native-host | grep -v grep\n# Should show: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 7. Verify socket exists\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 8. Restart Claude Code\n```\n\n## Other Common Causes\n\n### Multiple Chrome Profiles\n\nIf you have the Claude extension installed in multiple Chrome profiles, each spawns its own native host and socket. This can cause confusion.\n\n**Fix:** Only enable the Claude extension in ONE Chrome profile.\n\n### Multiple Claude Code Sessions\n\nRunning multiple Claude Code instances can cause socket conflicts.\n\n**Fix:** Only run one Claude Code session at a time, or use `\u002Fmcp` to reconnect after closing other sessions.\n\n### Hardcoded Version in Wrapper\n\nThe wrapper at `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` may have a hardcoded version that becomes stale after updates.\n\n**Diagnosis:**\n```bash\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n# Bad: exec \"\u002FUsers\u002F...\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.0.76\" --chrome-native-host\n# Good: Uses $(ls -t ...) to find latest\n```\n\n**Fix:** Use the dynamic version wrapper shown in the Full Reset Procedure above.\n\n### TMPDIR Not Set\n\nClaude Code expects `TMPDIR` to be set to find the socket.\n\n```bash\n# Check\necho $TMPDIR\n# Should show: \u002Fvar\u002Ffolders\u002FXX\u002F...\u002FT\u002F\n\n# Fix: Add to ~\u002F.zshrc\nexport TMPDIR=\"${TMPDIR:-$(getconf DARWIN_USER_TEMP_DIR)}\"\n```\n\n## Diagnostic Deep Dive\n\n```bash\necho \"=== Native Host Binary ===\"\nps aux | grep chrome-native-host | grep -v grep\n\necho -e \"\\n=== Socket (Claude Code location) ===\"\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\necho -e \"\\n=== Socket (Claude.app location) ===\"\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\necho -e \"\\n=== Native Host Open Files ===\"\npgrep -f chrome-native-host | xargs -I {} lsof -p {} 2>\u002Fdev\u002Fnull | grep -E \"(sock|claude-mcp)\"\n\necho -e \"\\n=== Active Native Messaging Configs ===\"\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json 2>\u002Fdev\u002Fnull\n\necho -e \"\\n=== Custom Wrapper Contents ===\"\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host 2>\u002Fdev\u002Fnull || echo \"No custom wrapper\"\n\necho -e \"\\n=== TMPDIR ===\"\necho \"TMPDIR=$TMPDIR\"\necho \"Expected: $(getconf DARWIN_USER_TEMP_DIR)\"\n```\n\n## File Reference\n\n| File | Purpose |\n|------|---------|\n| `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` | Custom wrapper script for Claude Code |\n| `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | Claude.app (Cowork) native host |\n| `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion>` | Claude Code binary (run with `--chrome-native-host`) |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json` | Config for Claude.app native host |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json` | Config for Claude Code native host |\n| `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` | Socket file (Claude Code) |\n| `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` | Socket files (Claude.app) |\n\n## Summary\n\n1. **Primary issue:** Claude.app (Cowork) and Claude Code use different native hosts with incompatible socket formats\n2. **Fix:** Disable the native messaging config for whichever one you're NOT using\n3. **After any fix:** Must restart Chrome AND Claude Code (MCP connects at startup)\n4. **One profile:** Only have Claude extension in one Chrome profile\n5. **One session:** Only run one Claude Code instance\n\n---\n\n*Original skill by [@jeffzwang](https:\u002F\u002Fgithub.com\u002Fjeffzwang) from [@ExaAILabs](https:\u002F\u002Fgithub.com\u002FExaAILabs). Enhanced and updated for current versions of Claude Desktop and Claude Code.*\n","# Claude in Chrome MCP Troubleshooting\n\nUse this skill when Claude in Chrome MCP tools fail to connect or work unreliably.\n\n## When to Use\n- `mcp__claude-in-chrome__*` tools fail with \"Browser extension is not connected\"\n- Browser automation works erratically or times out\n- After updating Claude Code or Claude.app\n- When switching between Claude Code CLI and Claude.app (Cowork)\n- Native host process is running but MCP tools still fail\n\n## When NOT to Use\n\n- **Linux or Windows users** - This skill covers macOS-specific paths and tools (`~\u002FLibrary\u002FApplication Support\u002F`, `osascript`)\n- General Chrome automation issues unrelated to the Claude extension\n- Claude.app desktop issues (not browser-related)\n- Network connectivity problems\n- Chrome extension installation issues (use Chrome Web Store support)\n\n## The Claude.app vs Claude Code Conflict (Primary Issue)\n\n**Background:** When Claude.app added Cowork support (browser automation from the desktop app), it introduced a competing native messaging host that conflicts with Claude Code CLI.\n\n### Two Native Hosts, Two Socket Formats\n\n| Component | Native Host Binary | Socket Location |\n|-----------|-------------------|-----------------|\n| **Claude.app (Cowork)** | `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` |\n| **Claude Code CLI** | `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion> --chrome-native-host` | `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` (single file) |\n\n### Why They Conflict\n\n1. Both register native messaging configs in Chrome:\n   - `com.anthropic.claude_browser_extension.json` → Claude.app helper\n   - `com.anthropic.claude_code_browser_extension.json` → Claude Code wrapper\n\n2. Chrome extension requests a native host by name\n3. If the wrong config is active, the wrong binary runs\n4. The wrong binary creates sockets in a format\u002Flocation the MCP client doesn't expect\n5. Result: \"Browser extension is not connected\" even though everything appears to be running\n\n### The Fix: Disable Claude.app's Native Host\n\n**If you use Claude Code CLI for browser automation (not Cowork):**\n\n```bash\n# Disable the Claude.app native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled\n\n# Ensure the Claude Code config exists and points to the wrapper\ncat ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json\n```\n\n**If you use Cowork (Claude.app) for browser automation:**\n\n```bash\n# Disable the Claude Code native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json.disabled\n```\n\n**You cannot use both simultaneously.** Pick one and disable the other.\n\n### Toggle Script\n\nAdd this to `~\u002F.zshrc` or run directly:\n\n```bash\nchrome-mcp-toggle() {\n    local CONFIG_DIR=~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\n    local CLAUDE_APP=\"$CONFIG_DIR\u002Fcom.anthropic.claude_browser_extension.json\"\n    local CLAUDE_CODE=\"$CONFIG_DIR\u002Fcom.anthropic.claude_code_browser_extension.json\"\n\n    if [[ -f \"$CLAUDE_APP\" && ! -f \"$CLAUDE_APP.disabled\" ]]; then\n        # Currently using Claude.app, switch to Claude Code\n        mv \"$CLAUDE_APP\" \"$CLAUDE_APP.disabled\"\n        [[ -f \"$CLAUDE_CODE.disabled\" ]] && mv \"$CLAUDE_CODE.disabled\" \"$CLAUDE_CODE\"\n        echo \"Switched to Claude Code CLI\"\n        echo \"Restart Chrome and Claude Code to apply\"\n    elif [[ -f \"$CLAUDE_CODE\" && ! -f \"$CLAUDE_CODE.disabled\" ]]; then\n        # Currently using Claude Code, switch to Claude.app\n        mv \"$CLAUDE_CODE\" \"$CLAUDE_CODE.disabled\"\n        [[ -f \"$CLAUDE_APP.disabled\" ]] && mv \"$CLAUDE_APP.disabled\" \"$CLAUDE_APP\"\n        echo \"Switched to Claude.app (Cowork)\"\n        echo \"Restart Chrome to apply\"\n    else\n        echo \"Current state unclear. Check configs:\"\n        ls -la \"$CONFIG_DIR\"\u002Fcom.anthropic*.json* 2>\u002Fdev\u002Fnull\n    fi\n}\n```\n\nUsage: `chrome-mcp-toggle` then restart Chrome (and Claude Code if switching to CLI).\n\n## Quick Diagnosis\n\n```bash\n# 1. Which native host binary is running?\nps aux | grep chrome-native-host | grep -v grep\n# Claude.app: \u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host\n# Claude Code: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 2. Where is the socket?\n# For Claude Code (single file in TMPDIR):\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\n# For Claude.app (directory with PID files):\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\n# 3. What's the native host connected to?\nlsof -U 2>&1 | grep claude-mcp-browser-bridge\n\n# 4. Which configs are active?\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json\n```\n\n## Critical Insight\n\n**MCP connects at startup.** If the browser bridge wasn't ready when Claude Code started, the connection will fail for the entire session. The fix is usually: ensure Chrome + extension are running with correct config, THEN restart Claude Code.\n\n## Full Reset Procedure (Claude Code CLI)\n\n```bash\n# 1. Ensure correct config is active\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled 2>\u002Fdev\u002Fnull\n\n# 2. Update the wrapper to use latest Claude Code version\ncat > ~\u002F.claude\u002Fchrome\u002Fchrome-native-host \u003C\u003C 'EOF'\n#!\u002Fbin\u002Fbash\nLATEST=$(ls -t ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F 2>\u002Fdev\u002Fnull | head -1)\nexec \"$HOME\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F$LATEST\" --chrome-native-host\nEOF\nchmod +x ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n\n# 3. Kill existing native host and clean sockets\npkill -f chrome-native-host\nrm -rf \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\nrm -f \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 4. Restart Chrome\nosascript -e 'quit app \"Google Chrome\"' && sleep 2 && open -a \"Google Chrome\"\n\n# 5. Wait for Chrome, click Claude extension icon\n\n# 6. Verify correct native host is running\nps aux | grep chrome-native-host | grep -v grep\n# Should show: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 7. Verify socket exists\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 8. Restart Claude Code\n```\n\n## Other Common Causes\n\n### Multiple Chrome Profiles\n\nIf you have the Claude extension installed in multiple Chrome profiles, each spawns its own native host and socket. This can cause confusion.\n\n**Fix:** Only enable the Claude extension in ONE Chrome profile.\n\n### Multiple Claude Code Sessions\n\nRunning multiple Claude Code instances can cause socket conflicts.\n\n**Fix:** Only run one Claude Code session at a time, or use `\u002Fmcp` to reconnect after closing other sessions.\n\n### Hardcoded Version in Wrapper\n\nThe wrapper at `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` may have a hardcoded version that becomes stale after updates.\n\n**Diagnosis:**\n```bash\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n# Bad: exec \"\u002FUsers\u002F...\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.0.76\" --chrome-native-host\n# Good: Uses $(ls -t ...) to find latest\n```\n\n**Fix:** Use the dynamic version wrapper shown in the Full Reset Procedure above.\n\n### TMPDIR Not Set\n\nClaude Code expects `TMPDIR` to be set to find the socket.\n\n```bash\n# Check\necho $TMPDIR\n# Should show: \u002Fvar\u002Ffolders\u002FXX\u002F...\u002FT\u002F\n\n# Fix: Add to ~\u002F.zshrc\nexport TMPDIR=\"${TMPDIR:-$(getconf DARWIN_USER_TEMP_DIR)}\"\n```\n\n## Diagnostic Deep Dive\n\n```bash\necho \"=== Native Host Binary ===\"\nps aux | grep chrome-native-host | grep -v grep\n\necho -e \"\\n=== Socket (Claude Code location) ===\"\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\necho -e \"\\n=== Socket (Claude.app location) ===\"\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\necho -e \"\\n=== Native Host Open Files ===\"\npgrep -f chrome-native-host | xargs -I {} lsof -p {} 2>\u002Fdev\u002Fnull | grep -E \"(sock|claude-mcp)\"\n\necho -e \"\\n=== Active Native Messaging Configs ===\"\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json 2>\u002Fdev\u002Fnull\n\necho -e \"\\n=== Custom Wrapper Contents ===\"\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host 2>\u002Fdev\u002Fnull || echo \"No custom wrapper\"\n\necho -e \"\\n=== TMPDIR ===\"\necho \"TMPDIR=$TMPDIR\"\necho \"Expected: $(getconf DARWIN_USER_TEMP_DIR)\"\n```\n\n## File Reference\n\n| File | Purpose |\n|------|---------|\n| `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` | Custom wrapper script for Claude Code |\n| `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | Claude.app (Cowork) native host |\n| `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion>` | Claude Code binary (run with `--chrome-native-host`) |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json` | Config for Claude.app native host |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json` | Config for Claude Code native host |\n| `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` | Socket file (Claude Code) |\n| `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` | Socket files (Claude.app) |\n\n## Summary\n\n1. **Primary issue:** Claude.app (Cowork) and Claude Code use different native hosts with incompatible socket formats\n2. **Fix:** Disable the native messaging config for whichever one you're NOT using\n3. **After any fix:** Must restart Chrome AND Claude Code (MCP connects at startup)\n4. **One profile:** Only have Claude extension in one Chrome profile\n5. **One session:** Only run one Claude Code instance\n\n---\n\n*Original skill by [@jeffzwang](https:\u002F\u002Fgithub.com\u002Fjeffzwang) from [@ExaAILabs](https:\u002F\u002Fgithub.com\u002FExaAILabs). Enhanced and updated for current versions of Claude Desktop and Claude Code.*\n",{"name":5,"risk":41,"source":34,"description":7},"critical","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fclaude-in-chrome-troubleshooting",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill claude-in-chrome-troubleshooting",{"tool":56,"command":57},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill claude-in-chrome-troubleshooting",{"tool":59,"command":60},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill claude-in-chrome-troubleshooting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fclaude-in-chrome-troubleshooting\u002FSKILL.md",true,[64,70],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"SOURCE.md","REFERENCE","参考文档",197,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Femblemai-assistant\u002FSOURCE.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Femblemai-assistant\u002FTRUST.auto.yaml",[75,86,102,124,143,170],{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":83,"publishedAt":36},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[84,85],"Test Skill","test",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":36},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[93,94,95,96,97,98,99,34,100,101],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":109,"publishedAt":36},"01M6GDRKEA0WE670SPFWX5GKCN","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[108],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[110,111,112,113,31,114,27,115,116,117,41,118,119,120,34,121,122,123],"automation","zoom automation","zoom","first","search","via","meeting","automate","creation","webinars","composio","recordings","management","tracking",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":131,"publishedAt":36},"01M6GDRFS1452PC71JQ38S24HR","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[130],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[132,110,133,134,135,136,137,34,114,138,120,139,41,117,31,140,100,141,27,142],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":152,"publishedAt":36},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[153,154,155,156,157,101,158,159,160,161,162,163,96,164,165,166,167,34,168,169],"expert","zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":177,"publishedAt":36},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[176],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[178,179,180,181,182,183,184,185,34,186,187,188,189,190,191,192,193,194,195,27],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]