.claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|MultiEdit|Write",
"hooks": [
{
"type": "command",
"command": "npm run lint",
"timeout": 120
}
]
}
]
}
}
使用 Claude Code Hooks Generator 生成专门的 settings JSON,用于生命周期自动化。Hooks 适合确定性的检查、通知、权限提醒和防护栏,而不是依赖模型记住某一步。
优先生成哪些模板
从一个可见、可手动复现的 hook 开始:编辑文件后运行 lint、在 PreToolUse 阻止读取密钥文件、权限请求时提醒,或在 Stop 事件输出 git status。
Claude Code 官方引用
Anthropic 的 Claude Code hooks reference 覆盖生命周期事件、settings JSON、输入输出格式、exit codes、异步 hooks、HTTP hooks、prompt hooks、MCP tool hooks 和安全注意事项。
Matcher 与命令规则
用 matcher 缩小 hook 触发范围。PostToolUse lint 通常只匹配编辑类工具;PreToolUse 防护栏应检查工具输入并给出清晰决策,不要把策略藏在含糊的 shell 命令里。
常见错误
避免过宽 matcher、破坏性命令、每次 tool call 都跑长测试、隐藏网络调用、本地绝对路径,以及未经权限审查就共享 settings JSON。
常见问题
Claude Code hooks 放在哪里?
Hooks 配置在 Claude Code settings JSON 中,常见范围包括 user、project、local 或 managed settings。
Hooks 应该自动跑测试吗?
先使用快速定向检查。长测试套件通常更适合作为显式命令或发布门禁。
Hooks 能阻止危险操作吗?
可以,但行为必须可见,并在团队文档中解释清楚。