解决每次新建项目都要重复配置 Claude Code 钩子的问题,提供 20 个经过审核的复制即用钩子(格式化、风险拦截、质量门禁),并有生成器合成到 settings.json。
几周前,我发现自己在每个 Claude Code 项目里都要重复同样的流程:想让 Prettier 在 Claude 编辑文件后运行,想在它请求权限时收到通知,还特别想让别动我的 .env 文件。于是我翻出 hooks 文档,找一个旧 gist,手写一段 settings.json 块,正则匹配写错了,调试,再重来一遍。
Hooks 是 Claude Code 最强大的功能之一:确定性 shell 命令,绑定在 PreToolUse 或 PostToolUse 这类事件上执行,这样无聊的杂事每次都会自动发生,不用依赖模型去记住。但配置成本太高,导致大多数人一个 hook 都没配。
所以我做了 Claude Hookbook:一个经过审查的现成 hook 库,共 20 个拿来就能用的 hook,外加一个生成器,把你选中的那些组合成一个有效的 settings.json。
20 个 hook,覆盖我一直重复做的事:
编辑后运行的格式化器:Prettier、ESLint、Ruff、gofmt、rustfmt。
运行前拦截的护栏:阻止 Claude 写入 .env 和凭证文件,拦截破坏性 shell 命令,在提交前对暂存变更运行 gitleaks。
质量门禁:编辑后在最近邻测试上运行,后台类型检查 TypeScript,项目检查失败时阻止任务完成。
体验提升:Claude 需要输入时桌面通知、会话启动时仓库快照、压缩后重新注入项目上下文。
每个 hook 页面都列出了它使用的事件和匹配器、风险等级、需要安装的依赖、安装和测试步骤,以及——针对拦截型 hook——触发后如果你不认可的恢复指南。
坦诚的部分:测试状态
Hook 在你的机器上运行代码,所以我不想做一个满站都是未经审查代码片段的网站。每个 hook 都附带来源信息(来源以及它对标的是哪个 Claude Code 版本)和测试徽章:只有在真实安装并针对当前版本完成正向和负向触发运行后,才会标记为已测试。在那之前,hook 显示 needs-manual-check,并附带页面上的具体测试步骤。目前库中大多数 hook 都还带着这个徽章——我宁愿给你看检查清单,也不愿意伪造一个绿色的通过标识。
我为自己打造的部分:在网站上勾选 hook,生成器就会输出一个合并后的 settings.json。单 hook 页面和生成器从相同的规范字段构建配置片段,所以它们不会产生偏差。不需要 CLI,不需要账号,纯浏览器运行。
这是一个跑在 Vercel 上的静态 Next.js 站点,所有路由都预渲染。Hook 以每个 hook 一个 JSON 文件的方式存放,通过 Zod schema 在构建时验证,所以格式错误的 hook 会在构建阶段失败,而不是在你的机器上失败。
仓库:github.com/yanairon/claude-hookbook。欢迎提 issue 和 hook 请求——如果你也有一个在每个项目里都要重写的 hook,欢迎在评论区告诉我。