lionad-morotar/local-tools/close-cc-host

Claude Code and agent skill by lionad-morotar/local-tools

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

关闭承载当前 Claude Code 会话的宿主(VSCode 窗口或其终端面板),连同 claude 一起退出。通过 close-host-window 扩展触发:先 SIGTERM claude(走完 SessionEnd hooks)再关 host,不抢焦点、不丢 hooks。--host vscode 关窗口、--host terminal(默认)只关终端面板。Use when 任务结束要随宿主退出,或需精确关闭某 claude 终端所在窗口/面板。

Install

npx vskill@latest install lionad-morotar/local-tools/close-cc-host

SKILL.md

close-cc-host

关闭承载当前 claude 会话的宿主(VSCode 窗口 ⊃ 终端面板 ⊃ claude),连同 claude 一起退出。靠 close-host-window 扩展完成,且先 SIGTERM claude 走完 SessionEnd hooks 再关 host —— 直接 dispose terminal 是强杀,会丢 hooks。

核心原理

外部进程没法主动定位/操作 VSCode 窗口(AX 跨 Space 失明、激活抢焦点、CGS/IPC 死路)。扩展可以 —— per-window extension host + workbench.action.closeWindow(不抢焦点、不受 Space 限制)。

但扩展直接 terminal.dispose() 是强杀(SIGHUP/SIGKILL),claude 的 SessionEnd/Stop hook 会丢。正确顺序:SIGTERM claude 进程组(优雅退出,SessionEnd hooks 跑完)→ 等退出 → 再关 host(Docker/k8s/systemd 标准两段式终止)。

前置条件(缺一则静默失败)

  1. 装 close-host-window 扩展(vsix 本地装;项目 ~/Github/Lionad-Morotar/vscode-extension-for-agent)
  2. Cmd+Shift+P → Developer: Reload Window 激活(onStartupFinished 只在窗口启动触发一次)
  3. workspace 可信(/tmp 等不可信 workspace 扩展不激活)

触发

sh
bash scripts/close.sh # 默认 --host terminal,只关活动终端面板
bash scripts/close.sh --host vscode # 关整个窗口(连带所有终端面板)

--host 路由(两层都先 SIGTERM claude 走 SessionEnd,再关):

  • vscode:socket(新终端 $VSC_WINDOW_CLOSE_HOOK)或哨兵 .close-window-signal(老终端)→ closeWindow
  • terminal(默认):哨兵 .close-terminal-signal → dispose 活动终端面板

隐藏语义(容器层级)

VSCode 窗口 ⊃ 终端面板 ⊃ claude。--host vscode 关顶层窗口(连带 terminal + claude);--host terminal 只关中间层终端面板(claude 随之退出,窗口保留)。对参数路由无影响,仅交代嵌套关系。

关联机制(cc 怎么找到本窗口的扩展)

cc 不主动找 —— 扩展通过 environmentVariableCollection 把本窗口 socket 路径注入新终端的 $VSC_WINDOW_CLOSE_HOOK(vscode 通道);老终端走哨兵。reload 后 sessionId 变但环境变量自动重铺。详见 references/vscode.md。

坑位(实测血泪)

  • 装扩展后必须 reload:onStartupFinished 只在窗口启动触发一次。
  • Workspace Trust 拦截:/tmp 等不可信 workspace 扩展不激活,且无报错。
  • 直接 dispose = 强杀 = 丢 hooks:扩展已改为 SIGTERM 优雅退出,别绕过扩展直接 kill pty。
  • 老终端无 `$VSC_WINDOW_CLOSE_HOOK`:环境变量启动时定型 → 哨兵兜底。
  • 哨兵通道一触即发:touch .close-*-signal 在真 workspace 下立即触发关 host。验证务必在 mktemp -d 隔离目录跑。
  • 子模块/worktree 的 `.git` 是文件不是目录:close.sh 找 workspace 根必须用 -e 判 .git,用 -d 会越过子模块根把哨兵落到上层父仓(扩展只 watch workspaceFolders[0],落错位置即静默失败)。
  • 关闭即终止当前会话:close.sh 必须最后一条,commit / 存盘提前做完。

解耦

信号分档(SIGTERM/SIGHUP/SIGKILL)+ 扩展机制(per-window host、双通道、SIGTERM 优雅退出)+ 关联机制 + 激活前置 → references/vscode.md

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Refreshed 13 Oct 2026, 26 days ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/lionad-morotar/local-tools/close-cc-host/badge)](https://verified-skill.com/skills/lionad-morotar/local-tools/close-cc-host)

Something wrong with this skill or its page? Tell us.