用途:为 Claude Code 插件开发 Hook——事件驱动的自动化脚本,在 Claude Code 事件触发时执行,用于校验操作、执行策略、添加上下文和集成外部工具。
主要能力:支持 PreToolUse(工具执行前审批、拒绝或修改调用)、PostToolUse(响应工具结果并反馈)、Stop/SubagentStop(校验完成标准)、UserPromptSubmit(添加或校验提示)、SessionStart/SessionEnd(加载与保存上下文)、PreCompact、Notification 等事件。Hook 分两类:prompt 型由 LLM 做上下文感知判断,支持 Stop、SubagentStop、UserPromptSubmit、PreToolUse;command 型执行 bash 命令做确定性检查。
配置方式:插件在 hooks/hooks.json 中使用带 hooks 包装字段的格式,用户设置 .claude/settings.json 使用事件直接位于顶层的格式。command 命令中应使用 ${CLAUDE_PLUGIN_ROOT} 保证可移植性,matcher 支持精确、| 多选、* 通配及正则(区分大小写)。输出为 JSON,含 continue、suppressOutput、systemMessage;PreToolUse 可返回 permissionDecision 与 updatedInput,Stop 可返回 decision 与 reason。退出码 0 表示成功,2 表示阻塞错误并将 stderr 反馈给 Claude。
适用场景:插件开发中做文件写入安全校验、Bash 命令校验、任务完成度检查、会话上下文加载与注入、外部工具集成等。
限制与注意事项:Hook 在会话启动时加载,修改配置后必须重启 Claude Code 才能生效,不能热替换。所有匹配的 Hook 并行执行,彼此看不到对方输出,执行顺序不确定,应独立设计。command 型需校验全部输入、为变量加引号、设置合适超时(默认 command 60 秒、prompt 30 秒),避免硬编码路径、长时间运行和记录敏感信息。可用 claude --debug 调试,用 /hooks 查看已加载 Hook。