欢迎光临
我们一直在努力

每日热门skill-AI 写代码快 10 倍,也坏 10 倍——110 万安装的 tdd Skill,把“先写测试“焊死在 Agent 骨子里

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

tdd Skill 深度研究报告 —— Matt Pocock 的 3.6KB 小文件,凭什么拿下 TDD 类 Skill 全球安装量第一?

免费基金定投助手全功能拆解:为什么你的基金定投还在亏钱?因为你的工具用错了。动态平衡仓位管理+8种智能定投策略引擎,会自己算买卖点的定投系统-CSDN博客

https://download.csdn.net/download/weitingfu/93448039?spm=1001.2014.3001.5503


写在前面:你被 AI 的 fix-break-revert 循环折磨过吗?

场景重演一遍,看看熟不熟悉。

你让 Claude 重构一个组件。 代码看起来干净了。 跑一下——坏了。 你让它修。 修完,另一个功能又坏了。 三个来回之后,你放弃,回滚一切。

更糟的是:你忘了先 commit。

眼熟吗?

这几乎是每个 AI 编程重度用户的日常。2026 年的残酷事实是:AI 写代码快 10 倍,破坏代码也快 10 倍。 而绝大多数人,手里没有任何安全网。

直到我遇到 tdd——Matt Pocock 出品的测试驱动开发 Skill。

它有多火?skills.sh 注册表显示:1,122,409 次安装,TDD 类目全球第一。它的母仓库 mattpocock/skills 在 GitHub 挂着 299K stars,是整个 Skills 生态的第二大仓库。

更离谱的是:整个 Skill 的核心文件 SKILL.md 只有 3,621 个字符。不到 4KB。

这篇文章,我带你把它拆透。


一、先复习:TDD 到底是什么?

TDD,Test-Driven Development,测试驱动开发。 一句话:先写测试,再写代码。

经典三步循环:

  • RED:写一个会失败的测试,定义期望行为
  • GREEN:写最少代码让它通过
  • REFACTOR:在不改变行为的前提下,优化结构

听起来很简单? 但人类几十年都没能坚持下来。因为人天生爱先写代码、后补测试——甚至不写测试。

而 AI 呢?

AI 更糟糕。 单独让 Claude 跑 TDD 时,它会先写完一整套测试、mock 掉所有内部依赖、再写出"永远不可能失败"的断言。测试是写了,但没有任何信息量。

这不是我的猜测,这是 tdd Skill 文档里的原话:

“Agents are good at writing tests and bad at writing tests worth keeping.” (Agent 很会写测试,但很不会写"值得保留"的测试。)

tdd Skill 存在的意义,就是治这个病。


二、杀手锏:接缝(Seam)先于测试

普通 TDD 教你怎么写。 tdd Skill 先逼你回答一个问题:测哪里?

它引入了一个核心概念:接缝(Seam)。

接缝是什么?公共边界。 在这条边界上,你能观察行为,而不需要扒开代码看内部。

规则只有一条:

测试只写在你和开发者事先确认的接缝上,永远不碰内部实现。

注意,这是整个 Skill 最硬的一条规则——写任何测试之前,Agent 必须先问你要测哪些接缝,得到你的确认才能动手。

听上去很繁琐?

答案不是洁癖,是预算。

你不可能测试所有东西。与其让 Agent 把测试撒在每一个边角料上,不如先把有限的精力锁定在关键路径和复杂逻辑上。接缝清单,就是测试资源的作战地图。 先定地图,再开枪,子弹才不会浪费。

这也顺带回答了一个哲学问题:什么才是好测试? SKILL.md 里有一句话定义:“Tests verify behavior through public interfaces, not implementation details.” (测试通过公共接口验证行为,而不是通过实现细节。)


三、它封杀的三个反模式

tdd Skill 最出名的地方,是明确点了三个"反模式"的名字。每个都有可检查的特征(tell)——所以它们是规则,不是建议。

反模式一:实现耦合(Implementation-coupled)

测试 mock 内部协作者、调用私有方法、或者绕过接口去查数据库。

特征:重构后行为没变,测试却红了。 测试和实现绑死了,改实现结构就碎一地。

反模式二:同义反复(Tautological)

断言用和代码一模一样的方式重新计算期望值。

官方例子一针见血:expect(add(a, b)).toBe(a + b)。

这行测试靠"构造"通过,永远不可能和代码不一致。它测试的是自己,不是代码。

正确做法:期望值必须来自独立来源——已知正确的字面量、手工演算的例子、或者规格文档。

反模式三:横向切片(Horizontal slicing)

先一口气写完所有测试,再一口气写完所有实现。

特征:批量测试验证的是想象中的行为。你在还没理解实现之前,就锁死了测试结构,最后测的全是"形状",不是"行为"。


四、垂直切片:一发一发的曳光弹

三个反模式的解药,是垂直切片(Vertical Slicing):

一个接缝 → 一个测试 → 一个最小实现 → 重复。

每个测试都是一发曳光弹(tracer bullet):上一轮教会你的,下一轮立刻用上。你是在"边打边校准",而不是"先扫射一轮再检查弹着点"。

这里有个容易被忽略的设计细节:重构不在循环里。

tdd 刻意把重构路由到 code-review 阶段。为什么?

因为红绿循环只负责"行为正确",重构是另一件事。职责单一,规则才不会稀释。它甚至会在项目有 GLOSSARY.md 时主动读取,让测试命名对齐你的领域语言,而不是通用命名——连命名风格都在向"领域真实"靠拢。


五、怎么装?怎么用?

安装就一条命令:

npx skills add mattpocock/skills –skill tdd

装好后,在支持 Skills 的 Agent(Claude Code 等)里调用 /tdd,它会接管整个红绿循环。

配套文件有两个,千万别当摆设:

  • tests.md(2,214 字符):好测试的具体标准
  • mocking.md(1,481 字符):什么情况下才允许 mock

SKILL.md 故意不重复它们的内容,而是"指向"它们。三个文件合起来,才是一个完整的 Skill。


六、同类对比:它不是唯一的选择

Skill来源安装量特点
tdd mattpocock/skills 1,122,409 接缝机制 + 三反模式,最严格、最硬核
test-driven-development obra/superpowers 256,141 大方法论包内的组件,随 302K star 的 Superpowers 一起发
test-driven-development addyosmani/agent-skills 58,281 轻量入门款,规则更宽松
springboot-tdd / django-tdd affaan-m 各 ~11K 框架定制循环,按技术栈拆分

如果想搭一套完整闭环,官方推荐的组合是:

  • tdd(1.12M 安装):红绿循环
  • codebase-design(833K 安装):决定接缝画在哪
  • code-review(772K 安装):接管循环外的重构
  • diagnosing-bugs(818K 安装):测试红了,先帮你定位 bug

四件套互相咬合,这才是 Matt Pocock 真正想让你用的"工程体系",而不是一个孤零零的测试模板。


七、优点与坑

优点:

  • 极小:3.6KB 规则密度极高,读完就懂,模型加载成本几乎为零
  • 可检查:每个反模式都有"tell",违反规则能被当场识别
  • 流程硬:接缝先确认,从机制上杜绝"测试一切"的假努力
  • 生态咬合:和 codebase-design、code-review 等 Skill 形成完整闭环
  • 常见坑:

  • 别在接缝确认前开跑——回答"全部都要测"等于没测
  • 别拿它当重构工具——重构请走 code-review,别硬塞进循环
  • 别把 tests.md / mocking.md 当可选附件——它们是规则的另一半

  • 结尾:给 AI 一张安全网

    FrontendJoy 有一篇爆款文章的标题,我记到现在:

    “Your AI writes code 10x faster. It breaks it 10x faster too.” (你的 AI 写代码快 10 倍,破坏代码也快 10 倍。)

    没有 TDD 时,你和 AI 困在 fix-break-revert 的死循环里:每次修复都引入新问题,三轮之后你已经忘了代码原本该干什么。

    有了 TDD,规则反过来了:AI 一碰坏什么,测试立刻变红。 你一眼就知道它错在哪,不用等跑起来、等肉眼排查、等三个来回。

    你的 AI 每小时都在产出代码,但它没有安全网。 装一个 3.6KB 的 Skill,让每一次"先红后绿"都变成可验证的工程事实。

    别让你的 AI 继续盲写了。下一个需求,先跑一次 /tdd。


    关键词:TDD;Agent Skill;Matt Pocock;测试驱动开发;接缝测试;红绿重构;AI编程安全网 

    赞(0)
    未经允许不得转载:171主机测评 » 每日热门skill-AI 写代码快 10 倍,也坏 10 倍——110 万安装的 tdd Skill,把“先写测试“焊死在 Agent 骨子里
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址