Back

Superpowers vs Mattpocock:两种不同的编程方式

深入对比 Superpowers 与 mattpocock 两个热门 Agent Skill 库的区别。

AI Skill
Enivia
3 分钟阅读

在之前的文章中,我多次提到或安利过这两套 Skill,也进行过简单对比。

它们本质上解决的是同一个问题:如何让 Claude Code、Codex 这类编程 Agent 少犯错误,写出更可靠、更容易维护的代码。

最近深度对比使用了两套技能,仔细看下来,它们代表的是两种不同的 Agent 编程方式。

Superpowers

截止目前,Superpowers 的 GitHub 仓库获得了 264k star。

它在 README 中对自己的定位是:不只是一组零散的 Skills,而是一套完整的软件开发方法论。

superpowers 官方介绍

使用过 Superpowers 的朋友们应该都知道,它为开发过程设计了一条相对固定的路径:

  • 先通过 brainstorming 反问用户理清需求
  • 创建独立的 Git Worktree
  • 将设计转换成详细的实现计划
  • 使用子 Agent 分任务执行
  • 在实现过程中强制执行 TDD(测试驱动开发)
  • 对每个阶段都进行代码审查
  • 最后验证测试并决定合并、提交 PR 或保留分支

这些环节之间存在明确的先后关系。

Superpowers 甚至要求 Agent 在执行任何任务前,都要先判断是否存在适用的 Skill。相关流程被定义为必须执行的约束,而不是可选建议。

这也是我认为 Superpowers 最鲜明的特点:它试图通过流程限制 Agent 的自由发挥

mattpocock skill

截止目前,mattpocock skill 的 GitHub 仓库获得了 197k star。

Matt Pocock 将本人的 Skills 描述为:这些是他每天用于真实工程开发的技能,而不是用来进行“vibe coding”的自动化框架。

mattpocock skill 官方介绍

他并不希望 Skills 接管整个开发过程。相反,他认为某些完整的 Agent 开发框架会让开发者失去控制,并且在流程出现问题时难以修正。因此,他将自己的 Skills 模块设计得更小,也更容易修改和组合。

其中最有代表性的功能就是 grill-me

grill-me 会让 Agent 不断追问需求,直到计划中的决策明确。grill-with-docs 在此基础上,还会帮助项目记录专有术语,维护 CONTEXT.md,并将重要的架构决策写进 ADR。

Matt 的核心判断是,Agent 产生错误代码的首要原因通常不是因为模型能力不足,而是人类与 Agent 没有真正对齐颗粒度。

因此,mattpocock skill 更重视项目的长期上下文。它希望 Agent 和开发者逐渐形成一套共享语言,让函数、文件、测试和讨论都使用相同的领域概念。

两者都重视 TDD,但重点不同

Superpowers 和 mattpocock skills 都把 TDD(测试驱动开发)放在非常核心的位置,也都要求先写测试用例,再进行最小实现。

不过,它们对 TDD 的关注点并不完全相同。

Superpowers 更强调流程纪律。Agent 必须先亲眼验证测试失败,才能进行编码。它不允许在测试完成之前进行开发工作,整个过程强调严格执行红、绿、重构循环。

mattpocock 的 tdd Skill 则更强调测试边界。

在编写测试前,开发者和 Agent 还需要先确认应该在哪些边界上进行测试。测试会按照垂直切片逐个推进,每次只完成一个测试和对应的最小实现。

自动驾驶与辅助驾驶

如果要用一句话概括两者的区别,我会把 Superpowers 看成自动驾驶系统,把 mattpocock skills 看成工程师的辅助驾驶工具。

Superpowers 的 brainstorming 顾名思义更像是头脑风暴,旨在帮助开发者理清模糊的想法。

而 mattpocock 的 grill-me 更像是你的脑海里已经有了方案,只是需要与 Agent 对齐颗粒度并确定细节。

Superpowers 希望建立一条稳定、可重复的软件生产流水线。需求澄清、设计、计划、实现、测试、审查和合并都有对应的 Skill。只要开发者认可这套方法,就可以将较长的任务交给 Agent 按流程持续执行。

mattpocock skills 则保留了更多人为控制权。它没有强迫所有项目都走同一条完整流水线。开发者可以只使用 grill-me 澄清需求,也可以单独安装 tdd 或代码审查相关的 Skill。

这种方式更灵活,但也意味着开发者需要自己判断应该在什么时候调用哪些能力。

如何选择

对于一个从零开始、范围较大,而且可以清晰拆分任务的项目,我更倾向于使用 Superpowers。

它的优势是流程完整。尤其是在需求容易失控、Agent 可能连续工作较长时间的情况下,设计确认、任务拆分、Worktree 隔离、子 Agent 审查和验证,都可以减少 Agent 在执行过程中逐渐偏离目标的概率。

但对于已经存在一段时间的项目,或者我自己已经非常清楚应该怎样开发时,我会更喜欢 mattpocock skills。

它不会要求我为了修改一个功能而接受整套流程。我可以使用 grill-with-docs 完善领域模型,使用 diagnosing-bugs 排查复杂问题,最后调用 code-review 进行代码审查。

很难说哪一种更好,真正的区别在于,你希望 Agent 接管多少流程、保留多少控制权。