TDD Guard
为 Claude Code 自动执行测试驱动开发:阻止跳过测试或过度实现,让 AI 编码助手严格遵守测试先行原则。
该 skill 使用 disable-model-invocation 且 allowed-tools 仅限 Read/Glob/Grep,权限最小化;指南明确禁止修改测试框架或其他依赖,遇到问题应告知用户而非自行修复,配置不可迁移时交由用户决定,符合确认与透明原则;数据流清楚(reporter 写入 .claude/tdd-guard/data/test.)。扣分项:安装第三方 reporter 包时依赖注册表供应链,skill 本身未提供回滚或卸载说明,也未要求对配置修改进行明确的事前确认。
SKILL.md 对九种框架的配置说明内部一致、路径明确、含 Go/Rust 管道写法;异常路径有明确指引(多个框架时询问用户、失败时停止并报告)。扣分项:静态审阅未执行,框架检测与迁移的具体可复现路径和失败反馈质量只能推断;仓库虽有 CI 与 reporter 测试,但未覆盖该 setup skill 自身的关键路径,故按静态上限不给超过 10 分。
受众与场景清晰(Claude Code 用户为项目配置 TDD Guard),框架支持表明确,范围与非适用边界写入 Guidelines,且 disable-model-invocation 避免误触发。扣分项:未声明对无支持框架项目的降级行为;核心安装依赖 npm/PyPI/Packagist/crates.io/RubyGems/go install 等境外源,未提供镜像或离线方案,对中国大陆网络环境可能不可达,未在文档中说明。
MIT 许可、作者署名(Nizar Selander)、语义化版本 1.7.0、CI/security 工作流、贡献者列表齐全;文档结构良好,README 还主动披露项目已演进为 Probity、旧项目继续维护,更新路径透明。扣分项:skill 本身无 changelog/版本对应说明,依赖 Claude Code 插件机制等隐含假设,未提供 FAQ 或常见故障排查。
目标明确:检测框架、安装匹配 reporter、按规范配置;配置片段具体到各框架且可直接套用,较手动配置有明显边际价值,并提供 tdd-guard on/off 控制。扣分项:静态审阅无法验证实际输出正确性;有效性上限受限,reporter 安装后仍需用户接入验证流程,直接可用性的端到端证据不足。
存在可审计的第一手材料:CI(含 reporter 测试矩阵)、CodeQL 与 npm audit 安全扫描、pytest reporter 测试辅助代码佐证 test. 数据结构。扣分项:这些证据针对仓库整体而非该 setup skill 的关键路径,无第三方独立复现,静态审阅置信度低,故仅给 4 分。
- 该 skill 会指示安装第三方 reporter 包(npm/PyPI/Packagist/crates.io/RubyGems),存在供应链依赖,建议安装后核对包来源与版本。
- 核心安装流程依赖境外包注册表,中国大陆网络环境可能不可达,文档未提供镜像或离线安装方案。
- 上游已声明项目演进为 Probity,TDD Guard 仅为维持性维护,长期更新存在不确定性。
- skill 未提供配置修改的回滚/卸载说明,修改测试配置文件前建议自行备份。
- 本评审为静态源码审阅,未实际执行;框架检测与配置迁移行为需用户自行验证。
这个 Skill 能做什么,适合哪些场景?
TDD Guard 是一个面向 Claude Code 的自动化 TDD 强制执行插件。当智能体试图在没有失败测试的情况下编写实现、或超出当前测试需求过度编码时,它会拦截该操作并解释正确的做法。该项目提供九种测试框架(Vitest、Jest、Storybook、pytest、PHPUnit、Go、Rust、RSpec、Minitest)的报告器,测试结果统一写入项目根目录下的 .claude/tdd-guard/data/test.。需要说明的是,项目 README 指出其已演进为 Probity(支持 Claude Code、Codex 和 GitHub Copilot CLI,且无需配置测试报告器),新项目建议使用 Probity,TDD Guard 仍对存量项目维护。
setup 技能识别项目使用的测试框架,从 npm、PyPI、Packagist、RubyGems、crates.io 或 go install 安装或更新对应的 TDD Guard 报告器,并把报告器配置写入或迁移到当前规范(如 Vitest/Jest 的 reporters 数组、pytest 的 tdd_guard_project_root、Go 的 go test - 管道等)。所有报告器将测试结果写入 .claude/tdd-guard/data/test.,TDD Guard 据此在 Claude Code 钩子中校验智能体操作是否符合 TDD 原则,违规时阻止并说明。校验规则可通过编辑 .claude/tdd-guard/data/instructions.md 自定义,会话中可用 tdd-guard off / tdd-guard on 随时开关。
- 使用 Claude Code 进行日常开发的团队,希望强制执行测试先行的 TDD 流程,防止智能体直接写实现代码
- 同时维护 Vitest 和 pytest 的多语言项目,需要为多个框架统一安装并配置 TDD Guard 报告器
- 已安装旧版 TDD Guard 报告器配置的项目,配置已偏离当前规范,需要自动迁移
- 开发者希望定制 TDD 校验规则(例如放宽或收紧最小实现要求),通过 instructions.md 调整
- 在结对或评审场景中,需要临时关闭强制校验,用 tdd-guard off/on 在会话中切换
这个 Skill 有哪些优点和局限?
- 覆盖九种主流测试框架和五种语言生态(JS/TS、Python、PHP、Go、Rust、Ruby)
- setup 技能限定了明确的职责边界:只安装和配置报告器,不改动测试框架或其他依赖
- 规则可自定义(instructions.md),支持会话内开关、lint 集成和忽略模式
- MIT 许可,README 列出了各语言贡献者,具备 CI 与安全扫描工作流徽章
- README 明确指出项目已演进为 Probity,新项目被引导使用后者,长期投入需谨慎评估
- 需要为每个项目配置测试报告器,设置成本高于其继任者 Probity(宣称无需报告器)
- 报告器要求使用绝对路径配置 projectRoot,配置迁移无法完成时只能提示用户自行决定
- 要求 Node.js 22+,且校验依赖所选模型的判断,对非典型工作流的误拦截/漏拦截情况无公开数据
- setup 技能仅限 Read、Glob、Grep 三个工具,无法自行执行安装命令之外的问题排查(设计如此,但用户需自己动手)
如何安装这个 Skill?
在项目目录打开 Claude Code,依次运行:1) /plugin marketplace add nizos/tdd-guard;2) /plugin install tdd-guard@tdd-guard;3) /tdd-guard:setup。第三步会为项目配置对应测试框架的报告器。可能需要重启终端会话或 IDE 扩展才能看到 setup 技能。环境要求:Node.js 22+ 和受支持的测试框架。手动安装与配置见仓库 docs/installation.md(本文未包含其内容)。
如何使用这个 Skill?
安装并运行 /tdd-guard:setup 后,TDD Guard 通过 Claude Code 钩子自动校验每次代码变更,无需手动触发。常用操作:在会话中输入 tdd-guard off 或 tdd-guard on 切换强制执行;编辑 .claude/tdd-guard/data/instructions.md 自定义校验规则;更多配置(lint 集成、忽略模式、校验模型选择)见仓库 docs/ 目录文档。
这个 Skill 与同类方案有什么区别?
README 明确指出 TDD Guard 已演进为 Probity(github.com/nizos/probity):同样的 TDD 强制执行,扩展支持 Claude Code、Codex 和 GitHub Copilot CLI,验证更可靠且无需配置测试报告器。新项目建议直接采用 Probity;依赖 TDD Guard 的存量项目仍可继续使用。