AI编程代理如何掌握TDD:mattpocock-skills-zh-CN的/tdd红绿重构循环完整教程

发布时间:2026/9/1 10:28:37
AI编程代理如何掌握TDD:mattpocock-skills-zh-CN的/tdd红绿重构循环完整教程 AI编程代理如何掌握TDDmattpocock-skills-zh-CN的/tdd红绿重构循环完整教程【免费下载链接】mattpocock-skills-zh-CN这是 mattpocock/skills 的简体中文本地化版本。项目地址: https://gitcode.com/gh_mirrors/mat/mattpocock-skills-zh-CNmattpocock-skills-zh-CN 是 Matt Pocock 知名 agent skills 仓库的简体中文本地化版本其中的/tdd 技能专门教 AI 编程代理通过TDD测试驱动开发的红绿重构循环red-green-refactor一次一个垂直切片地构建功能、修复缺陷产出能承受重构的可靠测试。本文是面向新手的完整教程无需手写测试框架知识你只需了解这个循环如何运作以及它背后的三条纪律。为什么 AI 编程代理需要 TDDAI 编程代理最典型的失败模式之一就是代码跑不起来在没有真实反馈的情况下代理只能盲飞——生成一堆看着合理、实则无法工作的代码。red-green-refactor 循环正是解药代理先写一个失败测试再修到测试通过获得稳定的反馈回路。mattpocock-skills-zh-CN 把这套最佳实践压缩成可复用的技能文件让任意兼容 Agent Skills 的编码代理都能按纪律执行。 核心理念TDD 是red → green loop。这个技能的价值不在于写测试而在于让循环产出值得保留的测试——什么算好测试、测试该放在哪里、如何避开反模式每个 cycle 前和 cycle 中都要参考而不是事后补救。详见 skills/engineering/tdd/SKILL.md30 秒安装 /tdd 技能安装只需一条命令把 tdd 技能加入你的编码代理npx skills add vinvcn/mattpocock-skills-zh-CN --skilltdd也可以整库安装后按需选择或作为 Claude Code 原生插件安装。首次使用时记得一并选择/setup-matt-pocock-skills完成 issue tracker 等配置更新则用npx skills update tdd。完整安装说明见 docs/engineering/tdd.md 与根目录 README.md。红绿循环是什么Red → Green → Refactor 三步走/tdd 的主导思想是一次一个切片vertical slice一个测试、刚好够让它通过的实现然后重复。第一个 cycle 是一颗曳光弹tracer bullet——先证明单条路径端到端可用再向外构建。第一步先写一个失败测试Red规则叫Red before green先写一个会失败的测试再只写刚好让它通过的代码。不要预判未来的测试也不要顺手添加臆想的功能——每个测试都是对上一轮学习结果的回应。第二步只写刚好够通过的代码Green每个 cycle 只处理一个 seam、一个测试、一个最小实现。这样你永远清楚哪个行为重要、如何验证它不会冲出车灯照亮的范围。第三步重构只在全绿时进行Refactor一个容易误解的细节重构不属于 red → green 循环本身。在 /tdd 的规则中refactoring 属于 review 阶段由code-review技能承担且绝不在测试为红时重构。常见的重构候选包括重复代码、过长方法、浅模块等清单见 refactoring.md。循环的完整规则SKILL.md规则含义Red before green先失败测试再最小实现不写投机功能One slice at a time每 cycle 只有一个 seam、一个测试、一个最小实现Refactoring not in loop重构留给 review 阶段红灯时严禁重构好测试的三个标准Seam、规格化、独立期望值/tdd 技能内置了一份好测试参考手册这是它区别于普通 TDD 教程的关键。Seam测试必须放在公共边界上Seam接缝是你测试的公共边界能观察行为、但不伸手进入内部的接口。测试放在 seams 上绝不针对内部实现。技能还要求写任何测试前先写下要测试的 seams 并与用户确认。你无法测试所有东西提前认可 seams 才能把精力花在关键路径和复杂逻辑上。测试名读起来像一份规格说明好测试通过公共接口验证行为而不是实现细节。代码可以完全改变测试不该跟着变。例如✅user can checkout with valid cart—— 读起来就是能力说明内部重命名永远不会破坏它❌checkout calls paymentService.process—— 描述的是 HOW不是 WHAT好测试与坏测试的对照示例见 tests.mdMocking 边界规则见 mocking.md只在系统边界 mock外部 API、数据库、时间/随机数、文件系统永远不要 mock 你自己控制的代码。期望值必须来自独立的真相来源断言的期望值不能按代码计算的方式重新计算那是天然通过的同义反复必须来自known-good literal、worked example 或 spec。例如断言calculateTotal等于15而不是自己再reduce一遍。三种反模式让 AI 代理避开的坑技能文档明确列出了三种反模式SKILL.md值得新手重点记忆 实现耦合Implementation-coupledmock 内部协作者、测试私有方法、绕过接口直接查数据库。特征是重构时测试失败、但行为没变。 同义反复Tautological断言以与代码相同的方式重新计算期望值测试按构造永远通过却什么也验证不了。 水平切片Horizontal slicing先写完所有测试、再写所有实现——你测试的是_想象中的_行为。正确做法是垂直切片一个测试 → 一个实现 → 重复。/tdd 在构建链中的位置什么时候该用它/tdd 是主构建链中写代码的引擎位置如下docs/engineering/tdd.mdgrill-with-docs → to-spec → to-tickets → implement → code-reviewbehavior 还没钉住先用to-spec定下规格再进入 /tdd。担心接口形状而非测试用codebase-design找到值得为之写测试的 deep-module seams/tdd 在规划期会调用它获取深模块词汇。完整工作流由 implement 驱动它在预先认可的 seams 上调用 /tdd 逐个构建 ticket最后交接给code-review。不确定选哪个技能问ask-matt它是本仓库 user-invoked 技能的 router。如何判断 /tdd 正在生效运行几轮循环后对照这三个信号自检✅ 它写一个测试、让它通过、然后才写下一个——而不是一批测试后跟一批代码✅ 测试命名的是 behavior 而非 internals能在一次内部重命名后存活✅ 期望值来自 spec 的 literals而不是按代码推导出来的数字三条全中说明你的 AI 编程代理已经真正掌握了测试驱动开发。核心资料速查资料路径TDD 技能主文档循环规则 反模式skills/engineering/tdd/SKILL.md好测试 / 坏测试对照skills/engineering/tdd/tests.md何时 Mock 与可 Mock 性设计skills/engineering/tdd/mocking.md循环后的重构候选skills/engineering/tdd/refactoring.mdTDD 技能中文文档What it does / When to usedocs/engineering/tdd.md工程技能总览User-invoked / Model-invoked 分类skills/engineering/README.mdimplement 技能在 seams 上驱动 /tddskills/engineering/implement/SKILL.md 小贴士探索代码库时/tdd 会先读取CONTEXT.md如果存在让测试名和接口词汇与项目领域语言对齐并尊重你所触碰区域的 ADRs——这正是中文本地化版本对中文项目友好的细节之一。【免费下载链接】mattpocock-skills-zh-CN这是 mattpocock/skills 的简体中文本地化版本。项目地址: https://gitcode.com/gh_mirrors/mat/mattpocock-skills-zh-CN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考