开发与工程 tddtest-driven-developmentclaude-code-hookstest-reporterscode-qualityautomated-validation

TDD Guard

为 Claude Code 自动执行测试驱动开发:阻止跳过测试或过度实现,让 AI 编码助手严格遵守测试先行原则。

FollowSkills 评估 · FSRS-2.0
推荐
61/ 100 五分制 3.1 / 5
1 2 3 4 5 6
1信任安全19 / 25 · 3.8/5

该 skill 使用 disable-model-invocation 且 allowed-tools 仅限 Read/Glob/Grep,权限最小化;指南明确禁止修改测试框架或其他依赖,遇到问题应告知用户而非自行修复,配置不可迁移时交由用户决定,符合确认与透明原则;数据流清楚(reporter 写入 .claude/tdd-guard/data/test.)。扣分项:安装第三方 reporter 包时依赖注册表供应链,skill 本身未提供回滚或卸载说明,也未要求对配置修改进行明确的事前确认。

2可靠稳定10 / 20 · 2.5/5

SKILL.md 对九种框架的配置说明内部一致、路径明确、含 Go/Rust 管道写法;异常路径有明确指引(多个框架时询问用户、失败时停止并报告)。扣分项:静态审阅未执行,框架检测与迁移的具体可复现路径和失败反馈质量只能推断;仓库虽有 CI 与 reporter 测试,但未覆盖该 setup skill 自身的关键路径,故按静态上限不给超过 10 分。

3适用触发11 / 15 · 3.7/5

受众与场景清晰(Claude Code 用户为项目配置 TDD Guard),框架支持表明确,范围与非适用边界写入 Guidelines,且 disable-model-invocation 避免误触发。扣分项:未声明对无支持框架项目的降级行为;核心安装依赖 npm/PyPI/Packagist/crates.io/RubyGems/go install 等境外源,未提供镜像或离线方案,对中国大陆网络环境可能不可达,未在文档中说明。

4规范维护11 / 15 · 3.7/5

MIT 许可、作者署名(Nizar Selander)、语义化版本 1.7.0、CI/security 工作流、贡献者列表齐全;文档结构良好,README 还主动披露项目已演进为 Probity、旧项目继续维护,更新路径透明。扣分项:skill 本身无 changelog/版本对应说明,依赖 Claude Code 插件机制等隐含假设,未提供 FAQ 或常见故障排查。

5有效结果6 / 15 · 2.0/5

目标明确:检测框架、安装匹配 reporter、按规范配置;配置片段具体到各框架且可直接套用,较手动配置有明显边际价值,并提供 tdd-guard on/off 控制。扣分项:静态审阅无法验证实际输出正确性;有效性上限受限,reporter 安装后仍需用户接入验证流程,直接可用性的端到端证据不足。

6证据核验4 / 10 · 2.0/5

存在可审计的第一手材料:CI(含 reporter 测试矩阵)、CodeQL 与 npm audit 安全扫描、pytest reporter 测试辅助代码佐证 test. 数据结构。扣分项:这些证据针对仓库整体而非该 setup skill 的关键路径,无第三方独立复现,静态审阅置信度低,故仅给 4 分。

证据充分度: 评估于 2026年9月18日 审查版本 2579ec1823fa
使用前请注意
  • 该 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 随时开关。

  1. 使用 Claude Code 进行日常开发的团队,希望强制执行测试先行的 TDD 流程,防止智能体直接写实现代码
  2. 同时维护 Vitest 和 pytest 的多语言项目,需要为多个框架统一安装并配置 TDD Guard 报告器
  3. 已安装旧版 TDD Guard 报告器配置的项目,配置已偏离当前规范,需要自动迁移
  4. 开发者希望定制 TDD 校验规则(例如放宽或收紧最小实现要求),通过 instructions.md 调整
  5. 在结对或评审场景中,需要临时关闭强制校验,用 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 的存量项目仍可继续使用。

常见问题

使用它收费吗?
项目本身 MIT 许可、免费开源。但校验环节使用模型进行验证,README 提到可为校验选择更快或更强的模型,相关 API 成本取决于你的模型配置,具体定价文档未说明。
它需要什么权限?会读取我的代码吗?
TDD Guard 钩子以你的用户权限运行。报告器会把测试结果写入项目内的 .claude/tdd-guard/data/test.,setup 技能仅使用 Read、Glob、Grep 工具。README 提到维护自动化安全扫描与依赖审计,并欢迎源码审查。
如果我的测试框架不被支持怎么办?
支持框架限于 Vitest、Jest、Storybook、pytest、PHPUnit、Go、Rust、RSpec、Minitest 九种。不支持的框架无法使用其报告器,也无法完整启用强制执行;可考虑迁移到继任项目 Probity。
智能体会不会绕过校验?
README 提供了加强强制执行(enforcement)的文档,用于防止智能体绕过验证,也支持忽略模式控制哪些文件被校验。校验可在会话中用 tdd-guard off/on 切换,因此人为关闭是被明确支持的行为。

相关 Skills