SuperAPI AI 工具集

hooks

通用与其它

查看项目

更新于 10-16 08:11

技能介绍

Hooks 是 Claude Code 的自动化接口:在生命周期事件触发时运行确定性的 shell 脚本,脚本从 stdin 读取 JSON,向 stdout 返回 {"decision":"approve"|"block","reason":"..."}。

主要事件:PreToolUse 在工具调用前触发,输入 {tool_name, tool_input},返回 {decision, reason?},block 可阻止调用;PostToolUse 在工具成功后触发,输入含 tool_output;PostToolUseFailure 在工具失败后触发;Notification 在需要输入时触发;Stop 在智能体结束回合时触发;UserPromptSubmit 在提交提示时触发,可修改提示;SessionStart 在新会话时触发,常用于注入上下文。

安装钩子包:通过 MCP 工具 cc_kb_hook_recipe(name) 获取加固过的脚本包,返回 script、script_path(.claude/hooks/{name}.sh)、settings_snippet(合并进 .claude/settings.json 的 JSON)和 verify(单行手动测试)。可用包名包括 protect-sensitive-files、auto-format-after-edit、stop-until-tests-pass、post-compact-context-restoration、direnv-reload-on-cwd-change、task-created-governance、task-completed-quality-gate、teammate-idle-enforcement,可先用 cc_docs_hook_pack_recommend(signals) 获取推荐。

编写钩子要点:用 head -c 限制输入大小,校验 JSON,用 realpath 加 PWD 前缀检查路径,拒绝以 - 开头的文件名,避免 eval 和未加引号的插值,出错时默认返回 approve,并发写共享文件用 flock。在 settings.json 中通过 matcher 正则注册,如 "Write|Edit" 或 "*"。

调试:检查 settings.json 的事件与 matcher(区分大小写)、查看 stderr、用 time 测量耗时(PreToolUse 目标 <100ms,PostToolUse <500ms)、本地用 fixture.json 测试。避免调用 LLM、执行删除操作或吞掉错误不返回 approve 等反模式。