📚 测试工具 全难度 📦 community

tdd-workflow

完整 TDD 工作流,含反合理化表。

📄 相关文章

📊 评分明细

📦 打包完整度
2.1 2.1 / 2.5
🎯 实用性
2.1 2.1 / 2.5
📖 文档清晰度
1.6 1.6 / 2
👥 社区影响力
1.2 1.2 / 1.5
🔗 集成度
1.2 1.2 / 1.5

🎯 适用场景

免费测试自动化

tdd-workflow 快速入门

来自 affaan-m/everything-claude-code 仓库的 TDD 工作流 Skill,强制 Red-Green-Refactor 循环,内置反合理化表防止跳过测试步骤。

这是什么?解决什么问题?

tdd-workflow 是一个规范 AI Agent 编码行为的 Skill,它的核心是强制执行 TDD(测试驱动开发)三大步骤:先写失败的测试(Red)、再写让测试通过的最少代码(Green)、最后重构(Refactor)。它解决的核心问题是:开发者(包括 AI)倾向于”先写代码再补测试”,结果测试覆盖不全、用例质量低、重构时不敢改代码。

该 Skill 最大的特色是内置了「反合理化表」(Anti-rationalization Table)——当 AI 试图合理化跳过测试步骤时(比如”这个功能太简单了不需要测试”、“先实现再补测试更快”),Skill 会识别这些模式并强制回到 TDD 流程。这来自真实生产项目的血泪教训:越急越不写测试,越不写测试越容易出 Bug,越出 Bug 越急。

准备工作

  • 支持 Agent:Claude Code、Cursor、Codex、OpenCode、支持 Skills 协议的 Agent。
  • 运行环境:项目需配置测试框架(Jest/Vitest for JS;pytest for Python;RSpec for Ruby 等)。
  • 目标场景:新功能开发、Bug 修复、重构、代码审查。
  • 前置要求:项目已有测试运行脚本(npm testpytest 等)。

3 步快速上手

第 1 步:安装 ECC

git clone https://github.com/affaan-m/everything-claude-code.git ~/.ecc

将 TDD Skill 软链到 Skills 目录:

ln -s ~/.ecc/skills/tdd-workflow ~/.claude/skills/tdd-workflow

第 2 步:在 Claude Code 中启用

claude

在对话中声明使用 TDD 模式:

请用 TDD 工作流帮我实现用户注册功能(邮箱 + 密码)。测试框架是 Jest,遵循 Red-Green-Refactor。

第 3 步:观察 TDD 循环

Agent 会按以下顺序执行:

  1. Red:写失败的测试用例(如测试空邮箱被拒绝、弱密码被拦截)
  2. Green:写最少的代码让测试通过
  3. Refactor:重构代码提升可读性,确保测试仍然通过

如果 Agent 试图跳过某一步,Skill 会触发反合理化机制提醒。

常见踩坑

  1. 测试框架未配置:项目缺少 jest.config.jspytest.ini,Agent 写的测试无法运行。先确认 npm testpytest 能正常执行。
  2. 反合理化过度触发:某些场景确实不需要测试(如一次性脚本、临时调试代码),Skill 会反复提醒。可以在 prompt 中声明 --skip-tdd 跳过。
  3. 测试与实现耦合过紧:Red 阶段写的测试如果包含过多实现细节(如 mock 具体函数名),Refactor 阶段会大面积失败。Skill 鼓励写行为级测试而非实现级测试。
  4. 异步测试陷阱:JavaScript 异步测试如果没有 awaitdone() 回调,Jest 会误报通过。Skill 内置异步测试模板。
  5. 数据库测试隔离:测试涉及数据库时需要事务回滚或测试数据库,Skill 不会自动配置,需要手动设置。
  6. 快照测试的虚假安全感:Snapshot 测试容易在不理解变更的情况下盲目更新,Skill 会要求 Review 每个 Snapshot 差异。

初级用法

  • 新功能开发:声明需求 → Agent 写 Red 测试 → Agent 写 Green 实现 → Agent 执行 Refactor → 提交代码。
  • Bug 修复:先写复现 Bug 的测试(Red)→ 修 Bug(Green)→ 检查是否有重复代码需要抽象(Refactor)。
  • 代码审查:让 Agent 审查 PR,检查是否有测试覆盖缺失、是否有跳过 Red-Green-Refactor 的迹象。

高级玩法

  • 反合理化表定制:在 Skill 配置中添加你自己团队常见的”偷懒理由”,Skill 会学习并识别。
  • Mutation Testing 集成:配合 Stryker 等工具,验证测试套件质量——改变一行代码后测试是否真的失败。
  • CI 自动化:把 TDD Skill 作为 Git Hook,如果新代码没有对应测试就直接阻止 Push。

小技巧

  • 在 prompt 中写”请用 TDD 方式实现”而不是”请实现 + 写测试”,后者往往导致先写代码再补测试。
  • Red 阶段的测试用例数量控制在 3-5 个,太多会导致循环太长难以坚持。
  • Refactor 阶段不要改行为——只改结构(重命名、提取方法、消除重复),测试就是你的安全网。
  • jest --watchpytest-watch 让测试自动运行,每个 Green 阶段立即看到结果。
  • 团队新成员先观摩一次完整 TDD 循环再自己写,理解比记忆更重要。

常见问题 FAQ

Q1: 这个 Skill 跟 tdd-workflow 有什么关系?必须装吗?

A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。

Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?

A: tdd-workflow 来自社区,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。

Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?

A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。

Q4: 怎么验证 Skill 装对了?

A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。

Q5: 这个 Skill 有许可证吗?能商用吗?

A: 取决于 tdd-workflow 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。

参考链接

tdd-workflow Skill 多维度简评

类别:工程方法 来源:affaanm/everything-claude-code 定位:TDD 工作流强化:红→绿→重构循环,测试命名规范。

注意:本文基于官方文档和公开资料整理,未经过 MagicNetWorld 实测。


一、核心定位与价值

TDD(测试驱动开发)是 Anthropic 官方推荐的 Claude Code 工作流之一。tdd-workflow Skill 将 Red-Green-Refactor 循环固化为 Agent 可执行的标准化流程,解决 AI Agent 在编码时”先写实现再补测试”的天然倾向。

核心价值:强制 Agent 遵循红→绿→重构的 TDD 循环,先写失败的测试,再写最小实现使其通过,最后重构优化。


二、核心能力清单

能力说明
Red 阶段先编写测试,确认测试在无实现时失败
Green 阶段编写最小代码使测试通过,不引入未测试的功能
Refactor 阶段在全部测试通过后重构代码,消除重复,提升可读性
测试金字塔引导按单元测试→集成测试→E2E 测试的比例分布
AAA 模式Arrange(准备)→ Act(执行)→ Assert(断言)的测试结构
Given-When-ThenBDD 风格的测试描述格式

三、为什么 AI Agent 需要 TDD Skill

AI Agent 在编码时有三个天然倾向,需要通过 Skill 纠正:

  1. 实现优先:Agent 倾向于先写完整实现,再补测试,这与 TDD 的”测试优先”相反
  2. Happy Path 偏向:Agent 默认只考虑正常流程,忽略边缘情况
  3. 上下文污染:在单一会话中同时写测试和实现时,实现逻辑会”泄露”到测试中

tdd-workflow Skill 通过以下方式解决这些问题:

  • 强制测试先行(无测试 = 无实现)
  • 明确要求包含边界测试(空值、极端值、异常输入)
  • 使用子 Agent 隔离测试编写和实现编写阶段

四、TDD Red-Green-Refactor 循环

🔴 RED     →  先写一个失败的测试
🟢 GREEN   →  写最小代码让测试通过
🔵 REFACTOR →  在测试保护下重构代码

每个循环的核心原则:

  • Red:测试必须在对应用功能不存在时失败(验证测试的有效性)
  • Green:只写刚好通过测试的代码,不引入任何额外功能
  • Refactor:保持测试全绿的前提下,改进代码结构和可读性

五、安装与配置

# npx 安装
npx skills add affaanm/everything-claude-code --skill tdd-workflow

也可以在 CLAUDE.md 中添加 TDD 相关规则:

# CLAUDE.md
skills:
  - tdd-workflow

六、总结

tdd-workflow 将 TDD 从”开发者自律”变为”Agent 强制流程”。对于重视代码质量和测试覆盖率的项目,它是确保 AI 生成代码可靠性的关键工具。

适用人群:重视测试的工程师、需要 AI 辅助编写测试的团队、所有希望提升代码质量的开发者。


参考资料

📊 评分与标签

评分说明

总分 8.2/10 · P_优选

📊 可观测社区指标(数据核验日期:2026-07-07)

📦 可安装性 2.2/2.5

  • Git clone 即用,纯 Markdown + 配置,无需编译或容器化
  • ECC 支持 Claude Code Plugin 一键安装:/plugin install ecc@ecc
  • 竞品对比 1:obra/superpowers 有 npx skills add 一键安装,ECC 需要手动 git clone + 软链,多一步
  • 竞品对比 2:Anthropic 官方技能安装复杂度相当

🎯 实用性 2.2/2.5

  • 强制 Red-Green-Refactor 三阶段循环,内置反合理化表阻止跳过测试步骤
  • 10 个月实战沉淀,来自真实生产项目的 TDD 工作流优化
  • 竞品对比 1:obra/test-driven-development 同为 TDD Skill,专注测试框架适配,反合理化机制不如本 Skill
  • 竞品对比 2:手动 TDD 无 AI 辅助,反合理化完全依赖开发者自律

📖 文档质量 1.6/2.0

  • SKILL.md 含完整的 Red-Green-Refactor 循环说明和反合理化表
  • ECC 仓库文档全面含 48 agents/183 skills 的索引,tdd-workflow 为其中之一
  • 竞品对比 1:obra/test-driven-development 文档更聚焦单个 Skill 的使用说明
  • 竞品对比 2:手动 TDD 依赖 Kent Beck 书籍,无 AI 适配的实操指南

👥 社区活跃 1.4/1.5

  • GitHub ★212k,全平台最热门的 Agent 配置仓库之一
  • 230+ contributors, 12+ language ecosystems,跨 harness 支持
  • 竞品对比 1:obra/superpowers ★248k 社区体量更大,但 ECC 的 contributors 多样性更高
  • 竞品对比 2:Anthropic 官方技能 ★159k,ECC 社区规模约为其 1.3 倍

🔗 兼容性 0.8/1.5

  • MIT 许可,开源友好
  • 跨 harness 支持(Claude Code/Codex/OpenCode/Cursor/Windsurf)
  • 竞品对比 1:obra/superpowers 支持 12+ 平台,兼容面更广
  • 竞品对比 2:Anthropic 官方技能仅支持 Claude Code + Cursor,兼容面较窄

评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。

🏷️ 标签说明

  • 免费: 核心功能完全免费,MIT 开源许可。来源: LICENSE
  • 测试: TDD 工作流 Skill,聚焦测试驱动开发。来源: 功能描述
  • 自动化: 自动化 Red-Green-Refactor 循环和反合理化检查。来源: SKILL.md 内容

📋 来源与核验记录

  • ✅ 已核验: affaan-m/everything-claude-code(★212k, 🔱32.5k, 活跃确认)
  • ✅ 已核验: LICENSE(MIT 许可确认)
  • ⚠️ 未验证(间接来源): tdd-workflow Skill 的实际触发效果——需在 Agent 中安装 ECC 后实测
  • ❌ 已删除死链: 无