用途:这是一个基于 Claude Code 内置 Stop 钩子实现的 TDD 迭代开发方案。Stop 钩子在 Claude 即将结束响应前触发,若脚本以退出码 2 结束,其 stderr 会反馈给模型并自动继续对话,从而无需插件即可形成真实的测试驱动循环。
主要能力:每次响应结束后自动执行测试、lint 与类型检查;失败信息回传给模型促使继续修复;通过计数文件跟踪迭代并在达到上限(示例为 25 次)后停止;仅在尚未存在测试文件时跳过;区分代码错误(退出 2 继续循环)与环境/访问错误(退出 0 停止并报告)。还可配合 PreToolUse 钩子在写入前 lint,以及 SessionStart 钩子注入项目上下文。
使用方式:在项目的 .claude/settings.json 中配置 Stop 钩子,指向 scripts/tdd-loop-check.sh,设置 timeout 与 statusMessage;脚本中通过 npm test、npm run lint、npx tsc --noEmit(或 pytest、ruff、mypy)执行检查。迭代计数保存在 .claude/.tdd-iteration-count,建议加入 .gitignore。
适用场景:功能开发、缺陷修复、重构、API 开发等具有明确通过/失败信号的任务。
限制:不适合 UI/UX、一次性操作、需求不清或主观设计类任务;临时关闭可移除或重命名钩子、设 MAX_ITERATIONS=1 或删除脚本。具体脚本细节需按资料配置。