fix(installer): CC npx 路径补齐 hooks 注册(v1.4.0 关键修复)#29
Closed
jnMetaCode wants to merge 1 commit into
Closed
Conversation
v1.3.0 及之前,`npx superpowers-zh` 装 CC 目标只复制 skills/ + 改
CLAUDE.md,完全没装 hooks。结果用户社区高频反馈:
- skills 静静躺在 .claude/skills/ 但 AI 从不主动调用
- using-superpowers 指令也不进流程
- /skills 命令读不到,挪到用户级也不自动调用
根因:上游 hooks/hooks.json 的 ${CLAUDE_PLUGIN_ROOT} 只有走 CC plugin
marketplace 时才会注入,npx 路径下根本不会展开。而 SessionStart hook
是 superpowers 自动触发链路的核心——CLAUDE.md 文本是被动的,模型可能
完全忽略。
修复(bin/superpowers-zh.js):
- 新增 installClaudeCodeHooks() — 复制 hooks/ 到 .claude/hooks/,并把
SessionStart hook 注册到 .claude/settings.json,用绝对路径替代
${CLAUDE_PLUGIN_ROOT}(npx 路径下后者不展开)
- 幂等:重复跑不会重复注册(按 hooks 目录路径去重)
- generateClaudeCodeBootstrap() 改为先装 hooks 再写 CLAUDE.md
- 新增 uninstallClaudeCodeHooks() — --uninstall 精确摘 settings.json
entry + 删 .claude/hooks/ 下我们装过的脚本,目录空就连目录删
- 新增 printMarketplaceHintIfNeeded() — 装 CC / Codex CLI / OpenCode /
VS Code 这 4 款"有官方 plugin marketplace 的工具"时,主动打印
marketplace 命令作为 high-fidelity 推荐路径。
npx 仍可用但是 low-fidelity(不走 plugin 注册)。
README 新增"📌 先选对路径:marketplace vs npx"表格,诚实标注 17 款
工具里这 4 款的 npx 路径是 low-fidelity。其余 13 款(Cursor/Trae/Kiro/
Gemini/Hermes 等只看本地配置文件的工具)npx 是 canonical 安装路径。
RELEASE-NOTES.zh.md 新增 v1.4.0 段记录修复内容。
本地烟测:
- mktemp 测试目录 → npx --tool claude → ✅ skills + hooks + settings.json
+ CLAUDE.md 都到位
- 第二次跑 → ✅ 幂等,settings.json 仍只有 1 个 SessionStart entry
- --uninstall → ✅ 清干净(skills + hooks + settings.json + CLAUDE.md 段)
向后兼容:v1.3.0 已装的用户重新跑 npx superpowers-zh 即可补齐 hooks。
不影响上游 plugin marketplace 安装路径(仍按上游正常工作)。
9 tasks
Owner
Author
|
按维护者方针 "主站没有的暂时不改了" 关闭此 PR。 CC installer 补 hooks 注册是 fork 自己加的 npx 入口的修补,主站没有 npx 路径——主站 CC 用户走 替代方案(不需要代码改动,文档层即可):在 README 引导 CC/Codex/OpenCode/VS Code 用户走各自官方 plugin marketplace,npx 路径仅为没有 marketplace 的工具(Cursor/Trae/Kiro/等 13 款)服务。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
你要解决什么问题?
用户社区微信群高频反馈,
npx superpowers-zh装 CC 完成后 skill 完全不会自动触发:根因诊断: 在 v1.3.0 及之前,
bin/superpowers-zh.js的generateClaudeCodeBootstrap()只做两件事:skills/复制到.claude/skills/CLAUDE.md追加 bootstrap 文本完全没有处理
hooks/。仓库里hooks/hooks.json注册了 SessionStart hook(执行\${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd session-start),但:\${CLAUDE_PLUGIN_ROOT}这个环境变量是 CC 从 plugin marketplace 安装时才会注入的——npx + cp不会触发而 SessionStart hook 是 superpowers 自动触发链路的核心——它在每次会话开始把
using-superpowers元 skill 内容注入到对话开头。没有这个 hook,CLAUDE.md 文本是被动的,模型可能完全忽略。这个 PR 做了什么改变?
bin/superpowers-zh.js(+155 行):installClaudeCodeHooks(projectDir):复制hooks/到.claude/hooks/+ 把 SessionStart hook 注册到.claude/settings.json,用绝对路径替代\${CLAUDE_PLUGIN_ROOT}(npx 路径下后者不展开)。幂等设计,重复跑按 hooks 目录路径去重。generateClaudeCodeBootstrap()改为先装 hooks 再写 CLAUDE.md。uninstallClaudeCodeHooks(projectDir):--uninstall精确摘掉 settings.json 里指向我们 hooks 目录的 entry + 删.claude/hooks/下我们装过的脚本,目录空就连目录一起删。其他用户自有 hooks 不动。printMarketplaceHintIfNeeded(installedTargets):装 CC / Codex CLI / OpenCode / VS Code 这 4 款 "有官方 plugin marketplace 的工具" 时,主动打印 marketplace 命令作为 high-fidelity 推荐路径。npx 仍可用但 low-fidelity。README.md(+17 行):新增 "📌 先选对路径:marketplace vs npx" 表格,诚实标注 17 款工具里有 4 款的 npx 路径是 low-fidelity:
/plugin marketplace add ...npx superpowers-zh(v1.4.0+ 已补 hooks)/plugins搜 superpowersnpx superpowers-zh --tool codexnpx superpowers-zh --tool opencodenpx superpowers-zh(仅复制 skills)其余 13 款(Cursor / Trae / Kiro / Gemini / Hermes / Aider / Antigravity / Windsurf / Qwen / Claw / OpenClaw / DeerFlow)—— 它们本来就只看本地配置文件,npx 是 canonical 安装路径,没有 "更高保真" 可言。
RELEASE-NOTES.zh.md(+40 行): 新增 v1.4.0 段记录修复 + 透明度章节。这个改变适合放在核心库中吗?
适合。本 fork 自己的 npx installer 是中文版核心增量(上游没有),其对 CC 的支持有真实 bug。修复对所有走 npx 路径的中文用户都有益,不针对特定项目/团队/工作流。
你考虑了哪些替代方案?
/plugin marketplace add,别用 npx" —— 用户体验差,过去 npx 装过的存量用户得不到修复,且 npx 名义支持 CC 但实际半残。npx superpowers-zh检测到.claude/时直接 abort 并提示走 marketplace —— 太极端,移除既有能力;且其他识别为 CC 的工具(如 OpenClaw 共用.claude/skills/)会被误伤。/plugin marketplace add—— 不可行,CC plugin marketplace 注册必须从 CC 内部走,npx 不能代办。这个 PR 是否包含多个不相关的改变?
否。三处改动都围绕同一个问题:"npx 装 CC 是 low-fidelity 路径"。
bin/superpowers-zh.js:从 low-fidelity 升级到 "近完整"(补齐 hooks,仍不是正式 plugin)README.md:诚实标注 4 款工具的 fidelity 差异,主动引导走 marketplaceRELEASE-NOTES.zh.md:记录这个修复明确不在本 PR 范围(应分别独立 PR 处理):
已有的 PR
fix: npx 装 CC 目标时补上 CLAUDE.md bootstrap) —— 同性质,之前只补了 CLAUDE.md 没补 hooks,本 PR 补齐 hooks 才是完整修复测试环境
本地烟测(mktemp 测试目录):
未做的 eval(留给 merge 后由用户验证):
using-superpowers元 skill 在每次会话被注入/skills命令在非 marketplace 安装下是否能列出我们的 skills(如不能则 README 提示走 marketplace 的论据更强)评估
不适用 —— 本 PR 是 installer 代码修复 + 文档同步,不改任何 skill 内容、不改任何 prompt、不改模型行为。
修复正确性由 installer smoke test 验证(commit message 已附 mktemp 测试结果),不需要 skill 对抗式 eval。
严格性
人工审核