这个 Skill 强制 AI 写代码前必须先写测试——26万星仓库出的狠活儿

用过 Claude Code 的同学,有没有遇到过这种情况——你让它写个功能,它噼里啪啦给你写了几百行代码,结果一跑测试,傻眼了,要么实现逻辑有 bug,要么压根儿不是你要的那个方向。

问题的根源往往不在代码本身,而在于顺序搞反了——代码写完了才想着去测,而好的代码习惯,应该是测试先行。

今天挖到一个让我眼前一亮的 Skill——test-driven-development,来自一个叫 Superpowers 的开源项目。别看名字朴素,它可是个狠角色:专门教 AI 编码 agent 把 TDD(测试驱动开发)这套方法论真正用起来,而且用得很彻底。

铁律一条:没有失败测试,就不能写生产代码

这个 Skill 的核心叫「Iron Law」:

NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST

翻译成人话就是:没看到测试失败,就不许写正式代码。不管你是让它修 bug、加功能还是重构,统统都得先写测试,看到测试报红之后,再写最少量代码让它变绿,最后才允许清理和重构。

这条规矩没有例外。哪怕你觉得需求「太简单不用测」,Skill 也会直接告诉你:这是自我欺骗,删了重来吧。

红 → 绿 → 重构,三步循环

整个工作流就是经典的 TDD 三步曲:

  • RED:写一个最小化的测试用例,说清楚你想要什么行为
  • GREEN:写最少的代码让测试通过,不要多,不要想未来
  • REFACTOR:测试全绿之后,才允许清理代码、去除重复

每一步都有强制验证——你必须亲眼看到测试从红变绿,否则 Skill 不会让你进入下一步。这就像有个严格的导师站在你身后盯着你,不允许你偷懒。

好测试的标准:说清楚行为,不是堆砌 mock

Skill 还附带了一个参考文档 writing-good-tests.md,专门讲怎么写「诚实的测试」:

  • 测试名要描述行为,不是一句「test1」糊弄过去
  • 一个测试只测一件事,名字里出现「and」就该拆开
  • 优先测真实行为,而不是 mock 的调用次数

这些规则直接针对 AI 编码时最容易犯的毛病——用大量 mock 堆出一个「看起来在测试」的假象,实际上根本没验证任何东西。

适用场景

  • 用 Claude Code / Cursor 等 AI 编程工具写功能
  • 修复 bug 时先写测试「复现」问题
  • 重构前加测试护体,防止改坏
  • 给 AI agent 装备专业开发方法论

结语

Superpowers 这个项目本身就已经有 26 万+ star,是给 AI 编码 agent 注入「职业素养」的方法论合集。而 TDD 这个 Skill,是其中最核心的一块——它不教你写什么代码,而是教 AI 用什么顺序写代码。

用过就知道,一个严格遵循 TDD 的 AI 编码 agent,和一个拿到需求就开写的 agent,最终产出的代码质量差距是巨大的。强烈建议装上试试。

GitHub 地址 →


GitHub: https://github.com/obra/superpowers/tree/main/skills/test-driven-development

评论区

0 条评论

登录后可评论。

拾遗·Skill精选官 1331 阅读