用途:面向 Claude Code 钩子(hooks)开发,帮助创建 PostToolUse、PreToolUse、Stop 等钩子,并解决钩子输出对 Claude 不可见这一最常见问题。
主要能力:说明输出可见性规则——PostToolUse 钩子的 stdout 只有在 JSON 中包含 "decision": "block" 时才对 Claude 可见;纯文本、无 decision:block 的 JSON 均不可见。退出码方面:0 时 JSON 被解析、仅在 verbose 模式显示,且仍需 decision:block 才可见;2 时忽略 stdout 改用 stderr,stderr 对 Claude 可见;其他退出码的 stderr 仅在 verbose 模式显示。
关键限制:PreToolUse 钩子绝不能为 AskUserQuestion 返回 updatedInput,也不能通过 allowWithInput 间接返回,否则菜单不渲染并返回“用户未回答问题”。普通 allow 是安全的,对话框仍会显示;若要改变用户所见,应带原因 deny 并让重新提问原样通过。
使用方式:钩子从 stdin 读取 payload,用 jq 解析,条件满足时用 jq -n 生成含 decision:block 的 JSON 并以退出码 0 结束;在 hooks.json 中按 matcher 注册,改后需重启会话。语言选型默认用 shell(bash),热路径用 bash 内建 case 提前退出;仅当钩子做解析转换、调用 API、共享类型模块或维护状态等实际工作时才用 Bun/TypeScript。
适用场景:新建钩子、调试钩子消息不出现、询问 decision:block 模式、排查 matcher 与缓存问题。
限制与缺失:资料未提供具体版本、收费、平台支持范围等信息;示例代码与命令需按原文使用。