[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DMZ8WBN5FK91B3DRF7ABX6":3,"skill-same:01M6DMZ8WBN5FK91B3DRF7ABX6":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":13,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6DMZ8WBN5FK91B3DRF7ABX6","claude-remote",null,"Manage **remote-control** Claude Code sessions (i.e. `claude --remote-control`, NOT regular local sessions) running in Terminal.app — start, stop, list, or resume them for mobile \u002F remote desktop access. Triggers on \"start\u002Fopen\u002Flaunch a remote claude\", \"stop\u002Fkill remote session\", \"list remote sessions\", \"continue last remote conversation in \u003Cdir>\".","Ben2pc\u002Fg-claude-code-plugins","Ben2pc","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F269387770?v=4","01M6DMZ5JCG6F1DVGNTE9BNHZQ","01M6DMZ5VXM1G5SHXWNX9092ZC",0,"MIT","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fclaude-remote\u002Fskills\u002Fclaude-remote\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"claude remote","session","app","triggers","control","local","conversation","manage","mobile","resume","terminal","continue","access","open","claude code sessions","start","code","desktop","sessions","launch","2026-11-10 10:12:30",false,"---\nname: claude-remote\ndescription: Manage **remote-control** Claude Code sessions (i.e. `claude --remote-control`, NOT regular local sessions) running in Terminal.app — start, stop, list, or resume them for mobile \u002F remote desktop access. Triggers on \"start\u002Fopen\u002Flaunch a remote claude\", \"stop\u002Fkill remote session\", \"list remote sessions\", \"continue last remote conversation in \u003Cdir>\".\n---\n\n# Claude Remote Session Manager\n\nManage Claude Code `--remote-control` sessions running in Terminal.app. Designed for remote desktop clients that let users control Claude Code from mobile devices.\n\n## State Directory\n\nAll session state lives in `~\u002F.claude-remote\u002F`. On every skill invocation, always run the cleanup script first to sync state with reality.\n\n## Scripts\n\nThis skill bundles a session manager script. All paths below are relative to the skill directory:\n\n- `scripts\u002Fsession-manager.sh` — handles create, list, remove, cleanup, and stop operations\n\nGet the script path:\n```bash\nSKILL_DIR=\"$(dirname \"$(dirname \"$(realpath \"$0\")\")\")\"\n# Or just use the known absolute path after reading it from the skill location\n```\n\n## Workflow\n\n### On Every Invocation\n\nBefore doing anything else, run cleanup to remove stale entries:\n\n```bash\nbash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh cleanup\n```\n\nThis checks each recorded session's Terminal window still exists and removes dead entries. If any sessions were cleaned up, tell the user (e.g., \"2 stale sessions were cleaned up — their Terminal windows were closed outside this tool\").\n\n### Determine Intent\n\nParse what the user wants:\n\n| Intent | Triggers |\n|--------|----------|\n| **start** | \"start\", \"open\", \"launch\", \"new session\", \"remote control\" |\n| **stop** | \"stop\", \"close\", \"kill\", \"shut down\", \"exit\" |\n| **list** | \"list\", \"status\", \"show\", \"which sessions\", \"what's running\" |\n\nIf ambiguous, ask.\n\n### Start Flow\n\n1. **Try to infer from context first.** If the user's message already contains a directory name or path (e.g., \"launch claude in ~\u002FWorkspace\u002Fmy-app\"), use it directly — skip the directory picker. Also detect any options mentioned naturally (e.g., \"with opus model\" → `--model opus`).\n\n2. Only if the directory is unclear, list directories under `~\u002FWorkspace`:\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh list-dirs\n   ```\n   Present as a numbered list via `AskUserQuestion`. Include an option to create a new directory. Note: `~\u002FWorkspace` is the default root; if it doesn't exist, ask the user for their workspace path.\n\n3. If creating new:\n   ```bash\n   mkdir -p ~\u002FWorkspace\u002F\u003Cnew-dir-name>\n   ```\n\n4. Common options (only ask if not already inferred from context):\n\n   | Option | Flag | Default | Example |\n   |--------|------|---------|---------|\n   | Permission mode | `--permission-mode \u003Cmode>` | `bypassPermissions` | `--permission-mode auto` |\n   | Model | `--model \u003Cmodel>` | (user default) | `--model sonnet` or `--model opus` |\n   | Session name | `-n \u003Cname>` | (auto) | `-n \"mobile-debug\"` |\n   | Effort level | `--effort \u003Clevel>` | (user default) | `--effort high` |\n   | Worktree | `-w, --worktree [name]` | — | Create a git worktree for the session |\n   If the user doesn't specify any, use defaults (no extra flags).\n\n5. Launch the session:\n   ```bash\n   RESULT=$(bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh create \u003Cdirectory-path> [extra-flags...])\n   ```\n   This opens Terminal.app via AppleScript, runs `claude --permission-mode bypassPermissions --remote-control [extra-flags]` in the chosen directory, and records the session.\n\n6. Report the session ID, directory, and window ID to the user. Mention they can now connect via their remote control client.\n\n### Continue (Resume Last Conversation)\n\nWhen the user wants to pick up where they left off in a directory (triggers: \"continue\", \"resume\", \"接着上次\", \"继续上次的对话\"), pass the `-c` flag to the start flow. It tells `claude` to continue the most recent conversation in that directory instead of starting a fresh one.\n\n```bash\nbash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh create \u003Cdirectory-path> -c [other-flags...]\n```\n\nNotes:\n- `-c` only resumes the **most recent** conversation in the chosen directory. If the user wants a specific older conversation, they'll need to use `claude --resume` interactively instead.\n- Combine freely with other flags (`--model`, `-n`, `-w`, etc.).\n- If no prior conversation exists in that directory, `claude` will fall back to a new session.\n\n### Stop Flow\n\n1. Get active sessions:\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh list\n   ```\n\n2. If no sessions: tell the user there's nothing to stop.\n\n3. If one session: confirm with user, then stop it.\n\n4. If multiple: present numbered list via `AskUserQuestion`, let user pick one or \"all\".\n\n5. Stop the selected session(s):\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh stop \u003Csession-id>\n   # or stop all:\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh stop-all\n   ```\n\n6. Report what was stopped.\n\n### List Flow\n\n1. Run:\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh list\n   ```\n\n2. Present a formatted table:\n   ```\n   #  Session ID   Directory              Started        Window\n   1  a1b2c3d4   ~\u002FWorkspace\u002Fmy-app     10:30 today    98905\n   2  e5f6a7b8   ~\u002FWorkspace\u002Fapi-work   09:15 today    98820\n   ```\n\n3. If no sessions: \"No active remote sessions.\"\n\n## Examples\n\n| User says | Resolved action |\n|-----------|-----------------|\n| \"start a remote claude in my-app\" | `create ~\u002FWorkspace\u002Fmy-app` |\n| \"launch claude in ~\u002Fcode\u002Fapi with opus\" | `create ~\u002Fcode\u002Fapi --model opus` |\n| \"接着上次的 my-app 继续\" | `create ~\u002FWorkspace\u002Fmy-app -c` |\n| \"open a remote session in a worktree of api-work\" | `create ~\u002FWorkspace\u002Fapi-work -w` |\n| \"stop the my-app session\" | `list` → match by directory → `stop \u003Cid>` |\n| \"kill all remote sessions\" | `stop-all` |\n| \"what's running?\" | `list` → render as table |\n\n## Important Notes\n\n- The script uses `osascript` (AppleScript) to control Terminal.app — this only works on macOS.\n- Each session opens a **new Terminal window** (not a tab) for isolation.\n- Stop uses Terminal's native \"terminate process\" dialog to shut down Claude Code, then closes the window.\n- Session state is stored as individual JSON files in `~\u002F.claude-remote\u002Fsessions\u002F` — one file per session for atomicity.\n","# Claude Remote Session Manager\n\nManage Claude Code `--remote-control` sessions running in Terminal.app. Designed for remote desktop clients that let users control Claude Code from mobile devices.\n\n## State Directory\n\nAll session state lives in `~\u002F.claude-remote\u002F`. On every skill invocation, always run the cleanup script first to sync state with reality.\n\n## Scripts\n\nThis skill bundles a session manager script. All paths below are relative to the skill directory:\n\n- `scripts\u002Fsession-manager.sh` — handles create, list, remove, cleanup, and stop operations\n\nGet the script path:\n```bash\nSKILL_DIR=\"$(dirname \"$(dirname \"$(realpath \"$0\")\")\")\"\n# Or just use the known absolute path after reading it from the skill location\n```\n\n## Workflow\n\n### On Every Invocation\n\nBefore doing anything else, run cleanup to remove stale entries:\n\n```bash\nbash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh cleanup\n```\n\nThis checks each recorded session's Terminal window still exists and removes dead entries. If any sessions were cleaned up, tell the user (e.g., \"2 stale sessions were cleaned up — their Terminal windows were closed outside this tool\").\n\n### Determine Intent\n\nParse what the user wants:\n\n| Intent | Triggers |\n|--------|----------|\n| **start** | \"start\", \"open\", \"launch\", \"new session\", \"remote control\" |\n| **stop** | \"stop\", \"close\", \"kill\", \"shut down\", \"exit\" |\n| **list** | \"list\", \"status\", \"show\", \"which sessions\", \"what's running\" |\n\nIf ambiguous, ask.\n\n### Start Flow\n\n1. **Try to infer from context first.** If the user's message already contains a directory name or path (e.g., \"launch claude in ~\u002FWorkspace\u002Fmy-app\"), use it directly — skip the directory picker. Also detect any options mentioned naturally (e.g., \"with opus model\" → `--model opus`).\n\n2. Only if the directory is unclear, list directories under `~\u002FWorkspace`:\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh list-dirs\n   ```\n   Present as a numbered list via `AskUserQuestion`. Include an option to create a new directory. Note: `~\u002FWorkspace` is the default root; if it doesn't exist, ask the user for their workspace path.\n\n3. If creating new:\n   ```bash\n   mkdir -p ~\u002FWorkspace\u002F\u003Cnew-dir-name>\n   ```\n\n4. Common options (only ask if not already inferred from context):\n\n   | Option | Flag | Default | Example |\n   |--------|------|---------|---------|\n   | Permission mode | `--permission-mode \u003Cmode>` | `bypassPermissions` | `--permission-mode auto` |\n   | Model | `--model \u003Cmodel>` | (user default) | `--model sonnet` or `--model opus` |\n   | Session name | `-n \u003Cname>` | (auto) | `-n \"mobile-debug\"` |\n   | Effort level | `--effort \u003Clevel>` | (user default) | `--effort high` |\n   | Worktree | `-w, --worktree [name]` | — | Create a git worktree for the session |\n   If the user doesn't specify any, use defaults (no extra flags).\n\n5. Launch the session:\n   ```bash\n   RESULT=$(bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh create \u003Cdirectory-path> [extra-flags...])\n   ```\n   This opens Terminal.app via AppleScript, runs `claude --permission-mode bypassPermissions --remote-control [extra-flags]` in the chosen directory, and records the session.\n\n6. Report the session ID, directory, and window ID to the user. Mention they can now connect via their remote control client.\n\n### Continue (Resume Last Conversation)\n\nWhen the user wants to pick up where they left off in a directory (triggers: \"continue\", \"resume\", \"接着上次\", \"继续上次的对话\"), pass the `-c` flag to the start flow. It tells `claude` to continue the most recent conversation in that directory instead of starting a fresh one.\n\n```bash\nbash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh create \u003Cdirectory-path> -c [other-flags...]\n```\n\nNotes:\n- `-c` only resumes the **most recent** conversation in the chosen directory. If the user wants a specific older conversation, they'll need to use `claude --resume` interactively instead.\n- Combine freely with other flags (`--model`, `-n`, `-w`, etc.).\n- If no prior conversation exists in that directory, `claude` will fall back to a new session.\n\n### Stop Flow\n\n1. Get active sessions:\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh list\n   ```\n\n2. If no sessions: tell the user there's nothing to stop.\n\n3. If one session: confirm with user, then stop it.\n\n4. If multiple: present numbered list via `AskUserQuestion`, let user pick one or \"all\".\n\n5. Stop the selected session(s):\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh stop \u003Csession-id>\n   # or stop all:\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh stop-all\n   ```\n\n6. Report what was stopped.\n\n### List Flow\n\n1. Run:\n   ```bash\n   bash \u003Cskill-dir>\u002Fscripts\u002Fsession-manager.sh list\n   ```\n\n2. Present a formatted table:\n   ```\n   #  Session ID   Directory              Started        Window\n   1  a1b2c3d4   ~\u002FWorkspace\u002Fmy-app     10:30 today    98905\n   2  e5f6a7b8   ~\u002FWorkspace\u002Fapi-work   09:15 today    98820\n   ```\n\n3. If no sessions: \"No active remote sessions.\"\n\n## Examples\n\n| User says | Resolved action |\n|-----------|-----------------|\n| \"start a remote claude in my-app\" | `create ~\u002FWorkspace\u002Fmy-app` |\n| \"launch claude in ~\u002Fcode\u002Fapi with opus\" | `create ~\u002Fcode\u002Fapi --model opus` |\n| \"接着上次的 my-app 继续\" | `create ~\u002FWorkspace\u002Fmy-app -c` |\n| \"open a remote session in a worktree of api-work\" | `create ~\u002FWorkspace\u002Fapi-work -w` |\n| \"stop the my-app session\" | `list` → match by directory → `stop \u003Cid>` |\n| \"kill all remote sessions\" | `stop-all` |\n| \"what's running?\" | `list` → render as table |\n\n## Important Notes\n\n- The script uses `osascript` (AppleScript) to control Terminal.app — this only works on macOS.\n- Each session opens a **new Terminal window** (not a tab) for isolation.\n- Stop uses Terminal's native \"terminate process\" dialog to shut down Claude Code, then closes the window.\n- Session state is stored as individual JSON files in `~\u002F.claude-remote\u002Fsessions\u002F` — one file per session for atomicity.\n",{"name":5,"description":7},"main","35ebe8b08b17cce45c0c3f24a21080fb530b926f","plugins\u002Fclaude-remote\u002Fskills\u002Fclaude-remote","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins","https:\u002F\u002Fgithub.com\u002FBen2pc","2026-07-28 18:59:26",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add Ben2pc\u002Fg-claude-code-plugins --skill claude-remote",{"tool":60,"command":61},"bunx","bunx skills add Ben2pc\u002Fg-claude-code-plugins --skill claude-remote",{"tool":63,"command":64},"pnpm","pnpm dlx skills add Ben2pc\u002Fg-claude-code-plugins --skill claude-remote","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fclaude-remote\u002Fskills\u002Fclaude-remote\u002FSKILL.md",true,[68],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"scripts\u002Fsession-manager.sh","SCRIPT","脚本",6229,"https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fclaude-remote\u002Fskills\u002Fclaude-remote\u002Fscripts\u002Fsession-manager.sh",[75,93,109,119,130,138],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":43},"01M6DN14KZ80KKKESYQZR9H744","ip-diagnosis","在 macOS + Chrome 上排查公网 IPv4\u002FIPv6 出口、国家\u002F地区、ASN\u002F组织、DNS、默认路由、utun 状态，以及浏览器侧 Server Response 与 WebRTC 暴露情况。适用于用户要求检查 IP、地区一致性、VPN\u002F代理接管情况、IPv6 问题或浏览器网络暴露，并输出详细运维报告与复查链接。","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fskills\u002Fip-diagnosis\u002FSKILL.md",[],[82,83,84,85,86,87,88,89,90,91,92],"ip diagnosis","diagnosis","ip","vpn","webrtc","运维","ipv6","dns","server","chrome","macos",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":43},"01M6DN0WE4KYQMMV4DYTT43Q26","feishu-channel-doctor","诊断飞书频道健康状态 — 排查多进程冲突、WebSocket 连接问题、日志分析。当用户报告\"没有回复\"\"消息丢失\"\"连接异常\"或想查看飞书频道运行状态时使用。","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ffeishu-channel\u002Fskills\u002Ffeishu-channel-doctor\u002FSKILL.md",[],[100,101,102,103,104,105,106,107,108],"feishu channel doctor","feishu","channel","doctor","read","kill","PS","Bash","websocket",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":43},"01M6DN0SB22WG1KS02W8YBCD1W","feishu-channel-configure","设置飞书频道 — 保存应用凭证、查看访问策略和频道状态。当用户提供飞书应用凭证、要求配置飞书、问\"怎么设置\"或\"谁能联系我\"、或想查看频道状态时使用。","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ffeishu-channel\u002Fskills\u002Ffeishu-channel-configure\u002FSKILL.md",[],[102,116,101,117,118,104,107],"feishu channel configure","configure","write",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":43},"01M6DN0N1Z6C62P9VRRB0EGTPH","feishu-channel-config","修改飞书频道体验配置 — 确认表情、引用回复、分块方式等。当飞书消息中用户请求更改频道显示\u002F回复行为时使用。仅限体验配置，安全配置（策略、白名单、群组）必须拒绝。","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ffeishu-channel\u002Fskills\u002Ffeishu-channel-config\u002FSKILL.md",[],[126,101,102,127,118,128,129,104],"feishu channel config","config","安全","false",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":43},"01M6DMZN939Y7RX52V6M80VSHV","feishu-channel-access","管理飞书频道访问控制 — 批准配对、编辑白名单、设置私聊\u002F群组策略。当用户需要配对、批准某人、查看谁有权限、或更改飞书频道策略时使用。","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ffeishu-channel\u002Fskills\u002Ffeishu-channel-access\u002FSKILL.md",[],[101,35,102,137,107,104,118],"feishu channel access",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":43},"01M6DMZK2F818H0B56QKMJYCS8","hello","Greet the user with a friendly message","https:\u002F\u002Fgithub.com\u002FBen2pc\u002Fg-claude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fexample-plugin\u002Fskills\u002Fhello\u002FSKILL.md",[],[140,145,146,147],"message","greet","user"]