用途:在 Claude Code 的 Plan Mode 退出时,自动用计划 H1 标题命名当前会话,替代手动 /rename,并在上下文压缩(compaction)后自动恢复标题。
主要能力:由三个 shell 脚本协作。plan-rename-hook.sh 在 PreToolUse ExitPlanMode 时抓取 H1 标题(去掉 "Plan:" 前缀、截断 80 字符),写入 sidecar 备份并标记 pending,不直接写 JSONL,避免用户拒绝计划时标题闪烁。plan-rename-guard.sh 作为 Stop hook,在每次回应后检查:pending 时扫描 JSONL 确认计划是否被接受,接受才写入 custom-title 并置为 confirmed;confirmed 但 JSONL 缺 custom-title 时兜底重注入。plan-rename-compact.sh 在 SessionStart compact 时读取 confirmed sidecar,扫描 JSONL 尾部,缺失则重注入,并清理超过 30 天的 sidecar。
使用方式:安装后需手动在 ~/.claude/settings.json 的 hooks 中加入 PreToolUse(matcher ExitPlanMode)、Stop、SessionStart(matcher compact)三条命令配置,分别指向上述脚本。npx skills add 只安装文件,不会自动修改 settings.json。系统需 python3 与 bash。
限制:Stop hook 每次回应都执行,无 sidecar 时约 5ms 退出;/clear 新建会话时标题不会延续;sidecar 会累积(每个约 100 bytes,自动清理 30 天以上)。JSONL custom-title 格式与 hook stdin schema 均为逆向观察所得,非官方 API,Claude Code 更新可能改变行为;ExitPlanMode 仅触发 PreToolUse、SessionStart 的 compact matcher 需 v2.1.75+,均为观察结果。建议大版本更新后做整合测试。安全方面含 session ID 校验、路径限制在 ~/.claude/ 内、控制字符清理、sidecar 权限 700/600 与原子写入。