Claude Code 钩子开发
为 Claude Code 插件构建可验证、可控的事件驱动自动化。
文档覆盖输入校验、路径安全、变量引用、超时、权限确认和敏感文件提示,并强调使用CLAUDE_PLUGIN_ROOT;因此具备基本安全意识。扣分原因是示例仍包含向Slack、数据库和审计日志发送原始输入的外部数据流,未提供用户确认、最小权限、脱敏、回滚或失败时的恢复方案;管理员绕过检查和可预测/tmp状态文件也削弱安全性。
文档给出事件、输入字段、退出码、调试方式和测试流程,示例脚本也有set -euo pipefail及部分空值处理。扣分原因是静态材料未证明关键路径可运行,多个示例依赖jq、Claude Code运行时、外部命令或未提供的脚本;部分输出格式和并行/顺序行为说明存在潜在不一致,异常输入、超时和依赖缺失的诊断覆盖不足。
触发短语、支持的事件、命令钩子与提示钩子适用场景均有明确说明,覆盖验证、上下文加载、停止检查和通知等需求。扣分原因是未清楚界定不适用场景、运行时版本边界、平台差异和提示钩子的可靠性边界;未提供中文使用指导或中国大陆网络环境说明,且外部集成示例可能受网络可达性影响。
文档结构较完整,包含概览、事件、配置格式、模式、示例、脚本说明、调试、限制和工作流;技能自身有version 0.1.0,仓库也提供README、LICENSE和安全政策。扣分原因是技能元数据未声明许可证,缺少变更日志、维护责任人和明确更新路径,引用的references/examples/scripts虽存在于所给材料中但没有说明版本兼容矩阵;部分高级示例把高风险实践作为可复制模板。
该技能提供可直接改写的JSON配置、Shell示例、事件速查表、迁移建议和测试工作流,能够覆盖创建常见Claude Code钩子的核心任务。扣分原因是静态阅读无法验证实际输出、事件语义或工具运行结果;示例需要用户自行补齐插件结构、依赖和环境,安全策略多为启发式,复杂场景仍需较多审查和修改。
材料包含具体配置、脚本、测试命令、调试命令和仓库内CI证据,部分主张具备可审计来源。扣分原因是没有在给定材料中提供针对该技能关键路径的真实CI测试或第三方执行结果,测试脚本主要是说明性示例,未覆盖提示钩子、事件兼容性、并行行为和外部集成,因此静态可验证性有限。
- 不要直接复制Slack通知、数据库记录或审计日志示例;先确认数据范围、脱敏、用户同意、凭据保护和网络出口策略。
- 提示钩子和事件输出格式应依据目标Claude Code版本的官方文档核对,并在隔离项目中测试。
- 示例脚本依赖jq、Claude Code环境变量及外部工具;缺失依赖、Windows兼容性、符号链接、复杂Shell命令和并行钩子行为需要额外验证。
- 技能元数据未明确许可证、变更记录和维护责任,采用前应确认版本与后续更新来源。
它能做什么 & 适用场景
该技能指导开发者为 Claude Code 插件创建和配置钩子,以响应工具调用、会话生命周期、用户提示和代理停止等事件。它重点介绍推荐的提示词钩子,也覆盖用于确定性检查和外部工具集成的命令钩子。内容包括 hooks.json 配置、匹配器、输入输出 JSON、环境变量、安全校验、调试和测试。它适合需要控制工具使用、加载项目上下文或自动化开发流程的 Claude Code 插件开发者。
指导用户在插件的 hooks/hooks.json 或用户设置中配置 PreToolUse、PostToolUse、Stop、SubagentStop、UserPromptSubmit、SessionStart、SessionEnd、PreCompact 和 Notification 事件;编写提示词钩子或 Bash 命令钩子;通过标准输入读取会话、工具和提示信息;输出允许、拒绝、询问、阻止或系统消息等结构化 JSON;使用 ${CLAUDE_PLUGIN_ROOT}、$CLAUDE_PROJECT_DIR 和 $CLAUDE_ENV_FILE;通过 jq、claude --debug 及仓库提供的校验、测试和 lint 脚本检查钩子。
- 需要在 Write 或 Edit 工具执行前检查敏感文件、路径遍历或危险操作的插件开发者。
- 希望在工具执行后分析结果、记录日志或向 Claude 提供反馈的团队。
- 需要在会话开始时加载项目上下文并持久化环境变量的项目维护者。
- 希望在代理停止前验证测试、构建和任务完整性的开发者。
- 需要用提示词钩子处理复杂判断、用命令钩子执行快速确定性检查的插件作者。
优缺点一览
- 覆盖完整的钩子事件、配置格式、输入输出和生命周期。
- 同时说明提示词钩子与命令钩子的适用场景。
- 包含路径安全、输入校验、变量引用、超时和并行执行建议。
- 提供校验、测试和 lint 脚本的使用方向。
- 内容明确面向 Claude Code 插件,移植到其他客户端需要调整。
- 来源没有提供此技能的独立安装步骤或测试结果。
- 钩子配置在会话启动时加载,修改后必须重启 Claude Code。
- 插件钩子并行运行且不保证顺序,不能依赖其他钩子的输出。
- README 未说明费用或许可证,仓库许可证标为 unknown。
如何安装
README 仅记录 Claude Code 本体的安装方式:macOS/Linux 可运行 curl -fsSL https://claude.ai/install.sh | bash,或使用 brew install --cask claude-code;Windows 可运行 irm https://claude.ai/install.ps1 | iex,或使用 winget install Anthropic.ClaudeCode。随后进入项目目录运行 claude。该来源没有说明如何单独安装或放置此技能目录。
如何使用
在 Claude Code 插件开发场景中提出类似“create a hook”或“add a PreToolUse hook”的请求,并指定目标事件和校验逻辑。按技能说明在 hooks/hooks.json 中配置钩子,命令钩子使用 ${CLAUDE_PLUGIN_ROOT} 引用文件;修改配置后重启 Claude Code,再用 claude --debug 和仓库提供的脚本测试。