尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

5分钟上手 Claude Code 扩展:钩子(Hooks)与自定义命令完整指南

5分钟上手 Claude Code 扩展:钩子(Hooks)与自定义命令完整指南 5分钟上手 Claude Code 扩展钩子(Hooks)与自定义命令完整指南【免费下载链接】claude-codeClaude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-codeClaude Code 是常驻你终端的 agentic 编码工具而它的 Claude Code 扩展体系——钩子(Hooks)与自定义命令能让你在工具执行前后装上检查点5 分钟就能写出第一个可用的钩子。3 个概念一次讲透钩子、命令与配置钩子(Hooks)给工具执行装安检门钩子是一段小脚本在 Claude Code 调用工具(如 Bash、文件编辑)前后被自动触发。你可以用它做命令验证、拦截危险操作或执行完再检查结果。自定义命令用 Markdown 写的新动词自定义命令就是一个带 frontmatter 的 Markdown 文件比如 plugins/commit-commands/commands/commit.md。在文件头部声明description和允许的工具正文写清步骤Claude 就会按这个模板执行。配置钩子与命令的挂载点钩子靠一段 JSON 声明挂载事件名(如PreToolUse)、matcher(匹配哪个工具)、command(跑什么脚本)。官方仓库的 plugins/security-guidance/hooks/hooks.json 是一个生产级范例。动手跑通最快配置方法一键安装步骤先装好 Claude Codenpm install -g anthropic-ai/claude-code再写一个最简钩子block-dangerous.sh作用是在 Bash 命令执行前拦截高危删除#!/usr/bin/env bash command$(jq -r .tool_input.command // empty) if echo $command | grep -qE rm\s-rf\s/; then echo 已拦截禁止 rm -rf / 2 exit 2 fi exit 0然后在配置中把它挂到PreToolUse事件上{ hooks: { PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: bash /绝对路径/block-dangerous.sh, timeout: 10 } ] } ] } }退出码是关键约定0放行2阻止该次工具调用并把 stderr 反馈给 Claude。进阶矩阵钩子类型 × 触发时机 × 适用场景钩子类型触发时机适用场景PreToolUse工具调用前命令验证、拦截危险操作PostToolUse工具调用后编辑后安全扫描、结果二次处理SessionStart会话启动时加载上下文、初始化环境UserPromptSubmit你提交输入时注入安全提醒、提示词预处理StopAgent 结束回答时后台复审、循环控制实战配方3 个可直接套用的模板配方一Git 工作流——提交前自检目标git commit前自动检查分支与暂存内容。做法用PreToolUse 条件匹配只在提交命令上触发{ hooks: [ { type: command, command: python3 /绝对路径/check_before_commit.py, if: Bash(git commit:*), timeout: 10 } ] }验证在终端让 Claude 执行git commit脚本会先于提交被调用退出码2时提交被阻止。配方二质量检查——每次文件编辑后跑 lint目标文件一被改就立即验证代码质量。做法用PostToolUsematcher写Edit|Write|MultiEdit|NotebookEdit指向一个执行 lint 并回传结果的脚本仓库中 plugins/security-guidance/hooks/hooks.json 即此模式。验证让 Claude 编辑任意文件观察 stderr 是否出现 lint 输出。配方三安全扫描——回答结束后的后台复审目标不阻塞主流程在 Claude 答完后异步做安全审查。做法给Stop钩子加上asyncRewake: true与rewakeSummary发现问题时 Claude 会被叫醒并处理(参考 plugins/hookify/hooks/hooks.json 的事件组合方式)。验证结束一次会话若复审命中问题你会看到后台复审消息并看到 Claude 继续处理。排障手册高频现象对照表现象原因解法钩子完全没触发command用了相对路径改绝对路径或用插件变量${CLAUDE_PLUGIN_ROOT}钩子跑了但命令没被拦住退出码是0或1用exit 2才能阻止工具调用Claude 看不到你的提示信息打到了 stdout提示写到 stderr并配合exit 2会话卡住不动钩子脚本执行过慢在配置里加timeout(如 10 秒)报 JSON 解析错误stdin 输入异常捕获JSONDecodeError后exit 1规范红线与发布前检查清单三条红线先记住钩子必须秒级返回exit 2只留给必须阻止的场景任何敏感信息都不写进日志和输出。发布前逐项自查钩子脚本路径可执行且为绝对路径退出码语义正确0 放行 / 2 阻止配置中设置了timeout已测试非目标工具场景(如tool_name不是 Bash 时直接exit 0)自定义命令的 frontmatter 中description已填写脚本与文档中不含密钥、令牌等敏感信息收尾路线图下一步往哪走用 examples/hooks/ 里的官方示例替换成你自己的验证规则跑通第一个PreToolUse。把PreToolUse拦截与PostToolUse复查组合形成先挡后扫闭环。将脚本整理成插件放入 plugins/ 目录用${CLAUDE_PLUGIN_ROOT}引用路径方便分享。用自定义命令封装团队工作流配合钩子构成完整自动化工作流更多机制细节见 README.md。【免费下载链接】claude-codeClaude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表