mattpocock tdd 详解:垂直切片与接缝纪律

QuibblerQuibbler 2026-10-05 约 7 分钟 5 次阅读

TDD 人人都听说过,但 AI 编码代理实践它时最容易走样:一口气写完所有测试再闷头实现、测试钉死实现细节、一重构测试全红。这个技能把 TDD 拆成代理能严格执行的循环纪律。本文按"概述 → 垂直切片 → 行为测试与接缝 → 循环规则 → 重构纪律 → 对比 Superpowers → 注意事项 → 总结"组织全文。

1、概述

skills.sh 页面对 tdd 的定位原文是:"Test-driven development with vertical slices, behavior-focused tests, and incremental red-green-refactor cycles"——垂直切片、面向行为的测试、渐进式红绿重构循环。单个技能安装量 1.0M,首见于 2026 年 2 月,通过 Agent Trust Hub、Socket、Snyk 三项安全审计。

它与 grill-with-docs 有个关键区别:grill 系列是用户调用型(你主动发起拷问),而 tdd 是模型调用型技能——不需要记命令,代理进入写码场景即自动生效。仓库里的 implement 编排器在实现阶段也会显式驱动它。

只装这一个技能的命令如下:

npx skills add https://github.com/mattpocock/skills --skill tdd

解读:整仓库安装与初始化方式与上一篇 grill-with-docs 完全相同(claude plugins install mattpocock-skills 或 npx skills@latest add mattpocock/skills),此处不再重复。

2、垂直切片循环

对 TDD 最常见的误解是"先把所有测试写完,再一次性实现"。tdd 技能明确禁止这种节奏,它规定的循环是:一条测试 → 一段实现 → 再下一条,如此往复。

这个粒度控制防的是两种病:

  • 测试套件庞大而脆:实现任何小改动都触发大面积红
  • 测试对行为不敏感:测的是内部结构而不是对外承诺

切片循环让每条测试都对应一条可观察的行为,红绿信号始终清晰。循环本身仍是经典的 red → green → refactor,只是步幅被严格切到"一次一条行为"。

3、行为测试与接缝

技能的核心信条是:测试只通过公共接口验证行为,绝不触及实现细节。直接收益写在规则里——好的测试"survive refactors unchanged",重构怎么动,测试都不用改。

实现这一点的关键概念是接缝(seam):受测代码暴露的公共边界。技能为此立了一条硬规则:

"Test only at pre-agreed seams."——只在事先约定的接缝处测试。

接缝必须先写下来、与用户确认,然后才允许写第一条测试。动手前代理必问的问题是:"公共接口是什么,该在哪些接缝上测?"这条规则把"测哪里"从随写随定的侥幸,变成了显式的设计决策。

4、循环规则与模块化

SKILL.md 里有一句容易被忽略但很关键的要求:所有规则"在循环之前与循环之中生效,而不是事后"。也就是说技能不是出错后的解释器,而是每一圈都要对照的检查单。

两个工程细节值得注意:

  • 探索代码库时先读 GLOSSARY.md(若存在),让测试命名与领域语言一致,并遵守所触碰区域的 ADR
  • 示例与 mock 规范外置在 tests.md 与 mocking.md 两个参考文件里,SKILL.md 本体只留规则

第一点尤其妙:GLOSSARY.md 正是 grill-with-docs 在拷问阶段沉淀的产物——上一个技能的输出,成了这个技能的输入,术语表是两个技能之间的共享数据结构。第二点则延续了仓库"小而组合"的一贯风格:规则常驻,细节按需加载。

5、重构纪律

refactor 阶段被严格放在"全绿之后":先证明行为没坏,再动结构。重构手法明确了三类——提取重复、加深模块(deep modules)、SOLID 原则。

"加深模块"的说法源自 Ousterhout 的《A Software Design Philosophy》一派:接口窄而功能深,正是接缝纪律的自然延伸。先约定窄接缝,再在接缝内加深实现,两件事是同一设计观的两面。

6、与 Superpowers 的对比

Superpowers 也有一个 test-driven-development 技能,同样主张 RED-GREEN-REFACTOR。两者定位差异如下:

维度 mattpocock tdd Superpowers TDD
角色 专注 TDD 本身的纪律 全流程方法论的一环
循环粒度 垂直切片,一次一条行为 经典红绿重构循环
测试位置 事先约定的接缝 由计划与任务拆解决定
命名依据 读 GLOSSARY.md 对齐领域语言 无域语言约定
文档组织 规则 + tests.md/mocking.md 外置参考 技能内自含

简单说:Superpowers 把 TDD 当作"想法到交付"链条上的一站,mattpocock 则把 TDD 这一站本身做精,补上了切片粒度、接缝约定与领域命名三层细节。两者不冲突,甚至可以叠加使用。

7、注意事项

  • 安装量 1.0M 与首见日期均来自 skills.sh 页面快照,以实时数据为准
  • 接缝需要与用户确认,全自动流水线场景要预先备好接缝文档,否则代理会停下来问
  • 测试命名依赖 GLOSSARY.md,术语表空缺时先跑一次 grill-with-docs 补课
  • 模型调用型技能依赖宿主平台的技能触发机制,弱宿主上效果打折

8、总结

mattpocock 的 tdd 技能把 TDD 从口号拆成可执行纪律:垂直切片规定"一次只做一条行为",接缝规则规定"只在事先约定的公共边界测试",行为信条保证测试在重构下不动,规则在循环前与循环中生效,示例与 mock 规范外置保持本体精瘦。它与 grill-with-docs 通过 GLOSSARY.md 首尾咬合,一个负责把领域语言磨清,一个负责用这套语言写测试。

对于正在让代理写代码的 developer,建议在下一个新模块上把两个技能连起来用:先 grill 出术语表与接缝清单,再让 tdd 按清单逐条推进。让 AI 守住红绿循环的关键从来不是提醒它"记得写测试",而是给它一套它无法跳过的规则——这个技能做的正是这件事。

相关推荐

Superpowers 详解:给编码 Agent 的完整开发方法论
精选Skill

Superpowers 详解:给编码 Agent 的完整开发方法论

Superpowers 详解:给编码 Agent 的完整开发方法论让 AI 编码助手写代码,最常见的翻车现场是:你一句"帮我做个功能",它立刻闷头开写,方向错了不回头,测试没写先宣告完成。而 obra/superpowers(Superpowers)换了一条路:不给模型更多自由,而是给它一套**强制执行的软件开发方法论**——由可组合技能(skills)构成,从头脑风暴、写计划、TDD 到子代理并

104
查找Skill的技巧
Skill

查找Skill的技巧

查找Skill的技巧查找合适的Skill是提升AI助手效能的关键。以下是系统化的查找技巧,快速定位高质量Skill。1、明确需求与关键词策略精准的关键词是找到合适Skill的第一步。避免过于宽泛的词汇,采用具体化、组合化的搜索策略。推荐关键词模式:领域 + 动作 - react testing 优于 testing - nextjs deploy 优于 deploy - typescript li

502
​Find-Skills 详解:给 AI Agent 装一个"技能搜索引擎"
Skill

​Find-Skills 详解:给 AI Agent 装一个"技能搜索引擎"

Find-Skills 详解:给 AI Agent 装一个"技能搜索引擎"上一篇介绍了 Skills.sh——AI Agent 的技能商店。但有个"鸡生蛋"的问题:你不知道有什么技能可用,怎么去搜索?find-skills(Vercel Labs 出品,Skills.sh 上最火的技能,270 万活跃)就是解决这个"零号问题"的——它本身也是一个 Skill,装上后让你的 AI Agent 获得自

240