SuperAPI AI 工具集

claude-code-hook-development

智能体与模型

查看项目

更新于 10-15 21:36

技能介绍

用途:在用户要求“创建钩子”“添加钩子”“编写钩子”或提及 Claude Code hooks 时使用,帮助编写在特定事件上运行 shell 命令的钩子,用于添加守卫、自动化和策略强制执行。

主要能力与概念:钩子类型分为命令钩子(运行 bash 脚本)和提示钩子(查询 LLM 做上下文感知决策)。退出码含义:0 表示成功、动作继续(stdout 在 verbose 模式显示);2 表示阻止、动作被阻断并将 stderr 反馈给 Claude;其它表示错误、非阻断,stderr 显示给用户。文件位置:设置文件为 .claude/settings.json,脚本放在 .claude/hooks/ 并需标记为可执行。

设置结构示例:{"hooks":{"PreToolUse":[{"matcher":"Bash","hooks":[{"type":"command","command":".claude/hooks/my-script.sh","timeout":60}]}]}}。

事件与是否可阻断:PreToolUse(工具执行前,可阻断)、PostToolUse(工具完成后,仅反馈)、PermissionRequest(用户看到权限对话框,可阻断)、UserPromptSubmit(用户提交提示,可阻断)、Stop(主智能体结束,可继续)、SubagentStop(子智能体结束,可继续)、SessionStart(会话开始,添加上下文)、SessionEnd(会话结束,仅清理)、Notification(发送通知,不可阻断)、PreCompact(压缩前,不可阻断)。

常用匹配器:PreToolUse/PostToolUse/PermissionRequest 支持 Bash、Edit、Write、Read、Glob、Grep、Task、mcp__<server>__<tool> 及正则。通配符权限示例:Bash(npm )、Bash(-h*)、Bash(git:*)。

脚本模板:#!/usr/bin/env bash 后 set -euo pipefail,读取 JSON 输入,用 jq 解析 tool_name 与 command,校验逻辑命中危险模式时向 stderr 输出原因并 exit 2,否则 exit 0。

关键限制:钩子在启动时被快照,创建或修改后必须重启 Claude Code 或运行 /hooks 审查并应用配置才生效,这是防止恶意钩子修改影响当前会话的安全特性。验证是否加载:重启后运行 /hooks 确认钩子出现在列表中;未出现时检查 JSON 语法、文件位置及 disableAllHooks: true。

排查:钩子未触发时先确认是否重启、检查 /hooks 输出、用 jq 校验 JSON、注意工具名大小写(Bash 非 bash)。安全测试建议:先在安全分支测试阻断类钩子,验证后改为生产配置,再重启确认。调试可用 claude --debug 查看钩子执行细节,或在钩子中写入日志文件。