🟡 进阶

Superpowers 到底该怎么用

一套会在 AI 动手前先拦它一下的流程:什么时候该让它接管,什么时候它只是负担

📅 更新于 2026-09-13

14
内置技能数
7
标准工作流阶段
3
写在技能里的铁律
v6.3.0
2026-08-12 发布

00先花 3 分钟:什么时候该用它

读完这一篇,你能回答一个很具体的问题:你手上这个任务,该不该让 Superpowers(下面统称 SP)这套流程接管,以及接管到什么程度。先说清两个词:代理就是替你干活的 AI 编程助手(Claude Code、Cursor 这类工具里的那个"它");插件是安装形式——把一组规则文件打包装进你已经在用的工具里。SP 不是"装上就更强"的插件,而是一叠会主动拦住代理的规则文件:你会看到它在什么情况下省下返工,也会看到它在什么情况下纯属拖累。

📎 这篇和《Superpowers 的工作流程》怎么分工

这一篇回答"该不该用、用到哪一档":14 个技能各治什么毛病、三条路径怎么选、什么时候这套流程反而是负担,以及五天怎么上手。如果你要的是"它内部按什么规则运转"——七步接力、评审契约、账本格式、五轮上限、停机条件——看 《Superpowers 的工作流程》。两篇不重复:这篇讲选型,那篇讲机制。

⚠️ 先记住三句话

① 它管的是过程,不是智力:不换模型、不加私有接口,只是让代理在动手前先问、动手后先自证。

② 三条硬规矩撑着整套东西:没得到你点头不写代码;没有先失败的测试不写生产代码;宣布"做完了"必须出示刚跑过的证据。

③ 流程按任务缩放,但有一道关卡不缩放:小改动只给两句话的设计,可"等你点头"这一步永远不能省。

按你现在的处境,直接翻到那一节

你现在的处境直接看这一节为什么先看它
还没装,想先看看它到底会做什么04 最小例子一段真实对话走查,比任何功能列表都直观
已经装了,但代理还是闷头写代码03 装与验证 → 12 三连排查九成是"没重载插件"或"技能没被加载",不是它不听话
最烦的是它不听需求就开工06 Brainstorming这一节讲"批准门禁"和三条路径的取舍
它总说"测过了"但你不信09 先写测试的铁律 → 10 完工前验证这两节讲"怎么用证据替代口头承诺"
要同时推进好几条独立任务08 子代理 → 11 隔离与收尾并行会打架,这两节讲怎么分区
担心"杀鸡用牛刀"、开销花太凶13 什么时候不该用给出可以不做、可以显式豁免的清单
只想抄一条命令或一段开场话术12 速查手册命令表 + 三段可直接粘贴的模板

一条能立刻执行的最短路径

1
在你最常用的一个工具上装一次

别一上来铺开五个工具。只挑你每天真的在用的那个,照着 03 节的一行命令装上。

2
验证三件事,而不是"感觉装好了"

重载插件或新开会话 → 在 /help 里看到新命令 → 用一条会改代码的真实需求试探它会不会先问。判据见 03.4。

3
拿一个"真小但真存在"的需求走一遍全流程

别用玩具例子。挑一个你这两天就得改的小东西,输入 /brainstorm 描述它,一路看完澄清 → 设计 → 计划 → 测试 → 收尾。

4
打开它生成的三份文件看一眼

设计文档、实施计划、进度台账。看它们有没有写到"换一个不知情的代理也能照做"的细度(07 节给了自检标准)。

5
再决定要不要铺到第二个工具、要不要写自己的技能

这一步刻意放在最后:先用一次真实体验校准"它对你到底是省时间还是浪费时间",再谈扩展。

读完你应该能

说清楚用三句话向同事解释"装了它之后代理的行为会怎么变"
装得对在你手上那个工具里装好,并验证它确实生效
判轻重面对一个任务,判断该走极轻路径还是完整七步
抓得住代理说"做完了"时,知道该要哪一种证据

01它到底是什么:先把三个错想破掉

如果你只听过名字,最可能把它想成"一套更聪明的提示词"或"某个一键生成代码的命令"。这两种理解都会让你用错它。

一句话:它到底给你装了什么?

SP 是一叠带触发条件的说明书。行业里管这种"代理在特定任务下会自动加载并遵守的说明书"叫技能(skill):每个技能是一份 Markdown 文本文件(文件名通常是 SKILL.md),开头写着"什么时候该用我",正文写着"这类活必须怎么干、干到哪一步才算完"。

你在 Claude Code 这类"AI 程序员"工具里装上它之后,代理不是变聪明了,而是多了一套它必须遵守的作业规程。官方的自我描述就是这个意思——"An agentic skills framework & software development methodology that works."(一套能用的智能体技能框架与软件开发方法论)。

这里有个词值得先分清楚:你用的那个 AI 编程工具(Claude Code、Cursor、Codex、Gemini CLI……)叫宿主;SP 是装在宿主里的内容;让内容生效的机制(技能怎么被找到、怎么被加载)由宿主提供。同一套 SP 内容,装在不同宿主里,"外壳命令"不同,但技能写的东西是同一份。

先打个照面:八个后面会反复出现的词

下面这些词现在只需要"见过一面",看不懂细节完全没关系——每个词在正文里都有专门一节展开。先扫一眼,是为了让你读后面时不会因为一个生词卡住。

词一句话是什么意思它在本文哪里被展开
仓库(repository)存放一个项目全部文件与改动历史的地方03 节安装、11 节 worktree
分支(branch)同一条代码历史的一个平行副本:改动先留在副本上,确认无误再合回去11 节整节
提交(commit)把当前的改动在历史里存成一个有编号的快照05 节的台账样例
上下文(context)模型当前能看到的那一大段对话与文件内容;它有容量上限,装不下时会被压缩05 节"为什么非要把东西写成文件"
token模型读写文本的计量单位,可以粗略当成"字数"——花得越多越贵08 节末尾(用 token 换正确率)
TDD(测试驱动开发)先写一段会自动跑的检查代码,再写能让它通过的实现,顺序不能反09 节整节
worktree(工作树)把同一个仓库的另一条分支单独摆到另一个文件夹里,两边互不干扰11 节整节
PR(pull request)把一条分支上的改动提交给对方评审、等待合并的请求11 节收尾的三个选项

它不是"更聪明的提示词"——那它和提示词差在哪?

提示词(包括写在 AGENTS.md 里的背景说明)和技能都是文本,区别不在"写得多好",而在什么时候被读到、违反了会怎样:

对比项你的提示词 / AGENTS.mdSP 技能(为什么这条差别要紧)
性质给代理的"背景与偏好说明"带触发条件的"操作规程"。背景说明可以商量,操作规程只回答"这类活按哪几步做"
生效方式一直在上下文里,靠模型自觉遵守任务命中才加载,加载即按流程执行——所以它不会因为对话变长而被稀释
违反后果最多算"不听话"技能里写着硬门禁(等你批准、先看到测试失败、完工出示证据),越线就叫违规
可编排性一整段文字,难分阶段可串成流水线:前一个技能的产物是后一个的输入,能被"接力"

一句话记法:AGENTS.md 回答"我是谁、我们怎么协作",技能回答"这类活按这几步做、做不到就不算完"。两者不冲突,通常一起用。

它不换模型、不加私有接口,那它凭什么起作用?

四个环节咬在一起:

1
安装:把技能注册进宿主

你以插件(plugin,就是把一组技能打包分发的载体)的形式装它,宿主因此认识了一批新技能和斜杠命令。

2
会话启动时注入一小段引导

每次新会话(会话 = 你打开工具之后的一段连续对话)开始,插件注入一段很短的"引导词"(官方叫 bootstrap,意思是"启动时喂给代理的第一口话"),内容是:动手前先想想有没有相关技能要遵守。

3
任务前自动对照技能清单

代理面对任务时先判断命中了哪条技能——"要实现功能"命中测试驱动,"有 Bug"命中系统性调试——然后打开对应的说明书照做。

4
用命令式措辞兜住底线

技能正文写的是"没有先失败的测试,不许有生产代码"这种带门禁的句子,而不是"建议你试试测试"。这是它和一般提示词最大的手感差别。

顺带解释两个你会在截图里看到的词:门禁指一道"不满足条件就走不过去"的关卡(比如"你点头之前不许写代码");钩子(hook)指宿主在某些固定时点(例如会话开始)自动执行的一小段逻辑——上面第 2 步的引导词就是靠钩子塞进去的。装完没生效,很多时候就是钩子没跑(需要重载插件或新开会话)。

它凭什么能跨十几个工具用?

因为它不依赖任何一家厂商的私有能力,而是建立在各家都开始提供的通用"技能"约定上。截至 2026-09 校对时,官方 README 列出的支持面包括:Claude Code、Codex(App 与 CLI)、Cursor、Devin CLI、Gemini CLI、GitHub Copilot CLI、OpenCode、Kimi Code、Pi、Hermes Agent、Antigravity、Factory Droid、Grok Build CLI。装到不同工具上,触发的外壳不同,技能内容与纪律是同一套。

📖 换个角度看这件事

它真正做的事,是把"工程规范"从人脑、团队 wiki 和口头约定里抽出来,变成每次开新会话都会被加载的文本文件。文本的好处是可版本控制、可评审、可被任何人复制改造——这比任何"记忆型提示词"都可靠。

它给你省什么、不省什么?

省返工把"做错方向"提前到开工前 30 秒发现
省追问你不必每次手动提醒"先写测试"
不省字数它反而让你多打字:先答问题、再看设计
不省 token澄清与独立评审都要额外花销,换的是正确率

最后一句是这套东西最反直觉的地方:它多数时候不让你更快,而是让你更少返工。如果你当下的任务是"5 分钟试个想法",它确实会显得啰嗦——这正是 13 节要处理的情况。

🚫 一个必须说明的边界

本文只讲"这套做法怎么用、什么时候别用",不重复官方文档的每一条规则。SP 迭代很快(官方 README 自己写着"更新多数情况下会自动进行"),技能名、命令前缀、目录布局都可能变。凡是本文给出的具体命令与路径,都以你装完在 /help 和仓库 Release Notes 里看到的为准。

02它在堵哪个洞:为什么"纪律"比"聪明"更值钱

你的问题其实不是"AI 不会写",而是"过程没纪律"

现在的 AI 编程代理,单看"写某段代码"的能力已经很够用。真正出问题的是它做题的顺序:一句话上来就动手、需求没澄清就先写、为了"看起来完成了"跳过测试、写完不做独立检查就宣布成功。SP 的设计假设非常直白:默认代理会走捷径(take shortcuts),所以把流程做成强制,而不是停在"建议你认真点"。

同一个任务,装与不装差在哪?

需求都是"给注册功能加个邮箱校验":

❌ 没装:常见失败过程
  • 不澄清就写代码,方向理解偏了
  • 不写测试,改完说"我测过了"(其实是"它没报错")
  • 顺手重构了无关代码,改动范围变大、评审困难
  • 没有提交前自查,坏味道留给下一个任务
  • 长会话里早期决定被"遗忘",后期自相矛盾
✅ 装了:同一个任务被改写成
  • Brainstorming 先问清"校验规则、错误提示、要不要支持国际邮箱"
  • 在独立的分支工作区里开工,不污染主分支
  • 先写一个会失败的测试,再写代码让它变绿
  • 实现完交给独立评审,按严重级别回报问题
  • 收尾时整理分支,让你选合并 / 发 PR / 保留

注意这不是"能力更强",是把人类团队里那套让人不互相糊弄的机制,搬给了代理:写代码的和挑刺的不是同一个人,挑刺才有效。

它专门堵的四类漏洞

漏洞典型表现SP 用哪一招堵(以及这一招的代价)
需求漂移需求没澄清就实现,做完才发现在做错的东西Brainstorming 的批准门禁:你没点头它不许写代码。代价是开头多花几轮问答
测试形同虚设代码先写、测试后补甚至不补,"手动点两下就算测过"TDD 铁律:没有先失败的测试,就不许有生产代码。代价是前期节奏明显变慢
上下文丢失长会话里,模型把早期的决定和约束"忘"了把关键产物落盘成文件(设计文档 / 实施计划 / 进度台账)。代价是仓库里多出过程文件
标准不一每个人、每个会话的提示方式不同,结果忽好忽坏把工程文化写进技能文件,任何会话自动遵守同一套规矩。代价是改规矩要走一次文本评审

哪些事它管不了?(说清楚这个才不算吹)

它管的是过程,管不了下面这些:

能分清"哪些责任交给流程、哪些留给自己",才算真正用对了它。

03怎么装、怎么确认它真的接管了

安装这一步本身只要一分钟,但"装完没生效"是新手最高频的翻车点,所以本节后半段的验证与排查比安装更重要。装之前请确认:你已经在终端里跑通过你要装的那个宿主,并且登录过。

先选一个宿主,别一次装五个

SP 对每个宿主都要单独装一次(官方 README 原话就是 "Installation differs by harness. If you use more than one, install Superpowers separately for each one.")。第一周只装你每天真的在用的那个:装多个不会冲突,但新手的理解成本会翻倍。

方式 A:从 Anthropic 官方插件市场装(Claude Code,最省心)

在 Claude Code 的对话里直接输入一行:

/plugin install superpowers@claude-plugins-official

这是官方插件市场(一个可以搜索、安装、自动更新的插件目录,英文叫 marketplace)里的分发渠道,能跟着官方版本走。

方式 B:从 SP 自己的市场装

如果你的宿主没接官方市场,或者你想跟 SP 仓库的发版节奏更紧,用它自己的市场:

/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace

两条命令分别干两件事:把"obra 的插件市场"登记进你的宿主,然后从这个市场里安装 SP。

其他工具分别怎么装?

同一套技能内容,外壳命令不同。挑你手上正在用的那一段,整段复制(每段都能独立粘贴运行):

# Antigravity —— 从仓库直接装插件;重复执行同一条命令即更新
agy plugin install https://github.com/obra/superpowers

# Codex App —— 在侧边栏 Plugins 的 Coding 分类里找到 Superpowers,点 + 号按提示装
# Codex CLI —— 打开插件搜索界面后搜 superpowers,选 Install Plugin
/plugins
superpowers

# Cursor —— 在 Agent 聊天里装,或在插件市场搜 superpowers
/add-plugin superpowers

# Devin CLI —— 装好之后用第二条命令更新
devin plugins install obra/superpowers
devin plugins update superpowers

# Factory Droid —— 先登记市场,再安装
droid plugin marketplace add https://github.com/obra/superpowers
droid plugin install superpowers@superpowers

# Gemini CLI —— 装扩展;第二条命令更新
gemini extensions install https://github.com/obra/superpowers
gemini extensions update superpowers

# GitHub Copilot CLI —— 先登记市场,再安装
copilot plugin marketplace add obra/superpowers-marketplace
copilot plugin install superpowers@superpowers-marketplace

# Grok Build CLI —— xAI 官方市场;或在 TUI 里用 /marketplace 搜着装
grok plugin install superpowers@xai-official --trust

# Kimi Code —— 插件市场里找 Marketplace > Superpowers;也可从仓库直装
/plugins install https://github.com/obra/superpowers

# Hermes Agent —— 装完要重启正在跑的会话(它没有"上下文压缩后重新注入"的钩子)
hermes plugins install obra/superpowers --enable

# Pi —— 作为 Pi 包安装;本地开发时可用第二条把它当临时包加载
pi install git:github.com/obra/superpowers
pi -e /path/to/superpowers

# OpenCode —— 让代理去读并遵循官方安装说明
Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.opencode/INSTALL.md

如果你更想看"哪个工具用哪一行"的速查,这张表跟上面那段是同一份内容:

工具安装命令装完要注意什么
Claude Code(官方市场)/plugin install superpowers@claude-plugins-official最常见路径;跟随官方版本
Claude Code(自家市场)/plugin marketplace add obra/superpowers-marketplace 后 /plugin install superpowers@superpowers-marketplace分两步,先登记市场再装
Antigravityagy plugin install https://github.com/obra/superpowers它会跑会话启动钩子,所以第一条消息起就生效
Codex App / CLI官方 Codex 插件市场里搜 superpowers 安装App 里在侧边栏 Plugins;CLI 里先敲 /plugins
Cursor/add-plugin superpowers也可以在插件市场里搜
Devin CLIdevin plugins install obra/superpowers更新用 devin plugins update superpowers
Factory Droiddroid plugin marketplace add … 后 droid plugin install superpowers@superpowers同样是"先登记市场"两步式
Gemini CLIgemini extensions install https://github.com/obra/superpowers更新用 gemini extensions update superpowers
GitHub Copilot CLIcopilot plugin marketplace add obra/superpowers-marketplace 后 copilot plugin install superpowers@superpowers-marketplace与 Claude Code 的市场同源
Grok Build CLIgrok plugin install superpowers@xai-official --trust走 xAI 官方市场;--trust 表示信任该来源
Kimi Code/plugins install https://github.com/obra/superpowers也可在市场界面里点装
Hermes Agenthermes plugins install obra/superpowers --enable没有"压缩后重新注入"钩子,超长会话后技能可能不再触发,得新开会话
OpenCode让代理读官方 .opencode/INSTALL.mdOpenCode 有自己的插件安装方式,和其他工具分开装
Pipi install git:github.com/obra/superpowers本地开发可加 pi -e /path/to/superpowers
💡 新手提示

先只在你最常用的一个工具上装好、跑通一两个例子,再考虑铺到其他工具。装多个工具不会冲突,但一次只学一个宿主,心智负担最小。

装完怎么验证它真的生效?

不要凭"装的时候没报错"下结论,跑完这三步:

1
重载插件,或干脆新开一个会话
/reload-plugins

插件的"会话启动钩子"要生效通常需要这一步。各版本提示语不同,看到类似 "SessionStart startup hook succeeded" 就算过了。

2
确认命令真的出现了
/help

应能看到新增的斜杠命令,最常见的是 /brainstorm、/write-plan、/execute-plan。部分宿主会以命名空间前缀出现,例如 /superpowers:brainstorm——两种形态都在用,以你 /help 里看到的为准。

3
用一条真需求试探它会不会先问

随便挑一个真需求(比如"帮我看看项目里邮箱校验这段能不能抽象一下")输入 /brainstorm,看它是开始问问题,还是直接改代码。能问问题 = 工作流已经接管。

装完没反应?先查这张排查表

现象最可能的原因怎么处理
/help 里看不到新命令装了但没重载,或还在旧会话里跑 /reload-plugins,或新开一个会话再看
命令在,但代理不"接管"流程技能没被加载进上下文直接问它"当前任务命中了哪些技能?",或手动敲一次 /brainstorm
提示缺权限、频繁要你批准代理权限不足以建 worktree、跑测试到宿主的权限设置里放开文件读写与常用命令;只读模式会卡死整条流水线
升级后行为变了、和文档对不上版本迭代快,技能布局或命令前缀改了看官方 Release Notes 与最新 README;命令以 /help 为准
长会话后期技能忽然不再触发上下文被压缩后引导词丢了;部分宿主没有"压缩后重新注入"的钩子新开一个会话。Hermes Agent 官方说明里明确提到这个限制
不想用了—在插件列表里停用或卸载即可,卸载不会动你的代码

权限与遥测要不要动?

项要不要管说明(含具体怎么设)
权限 / 批准模式建议开SP 会频繁创建 worktree、跑测试、读文件。建议给代理足够的文件读写与命令执行权限,否则"每步都要你点允许"会打断整条流程
遥测(telemetry)可选关默认只有 Brainstorming 的可视化伴侣会在加载它自己的 logo 时带上 SP 版本号,不含你的项目、提示词或代理信息。想关就设环境变量 SUPERPOWERS_DISABLE_TELEMETRY 为任意真值;它同时也尊重 Claude Code 的 DISABLE_TELEMETRY 与 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
技能仓库位置一般不用管插件自带的技能住在插件目录里,不用你操心。你自己写的个人技能住在宿主的技能目录:Claude Code 是 ~/.claude/skills/;Codex、Copilot CLI、Gemini CLI 也认跨运行时的别名目录 ~/.agents/skills/。想"手工改技能"时再去这些地方找
自动更新默认自动官方 README 说明更新"多数情况下会自动进行"("often automatic")。你只需要偶尔对一下版本号

04最小例子:让它接住一个 10 行的小改动

先用一个几乎人人见过的场景——"给用户名输入加长度校验"——把"流程接管"变成看得见的东西。注意:下面第 3、4 步那段完整对话是根据技能规则还原的示意走查,不是逐字输出;不同宿主、不同版本措辞不同,但节奏一致。

第一步:同一句话,两种宿主

❌ 没装 SP
你:帮我把用户名加个长度校验。
AI:好的,我改一下 register.js:

然后它直接给出改好的代码。你没看到它问任何问题,也没人保证它写了测试。

✅ 装了 SP
你:帮我把用户名加个长度校验。
AI:我命中 brainstorming 技能,先澄清两个问题:
    1) 期望的最小/最大长度是多少?
    2) 超界时是报错还是自动裁剪?

同样的指令,代理先停下问问题——这就是被工作流"接管"的最直观信号。

第二步:这条命令代表一次完整的最短闭环

把刚才那几步压缩成你实际输入的东西:

你:/brainstorm
    我想给用户名加长度校验,3–20 位,超界返回错误提示,不要自动裁剪。

AI:(澄清后给出简短设计,等你确认)……(进入实现:worktree → TDD → review → 收尾)

你:可以,按这个做。

如果你只想跳过前面的设计讨论(需求已经很清楚了),也可以从计划直接切入:

/write-plan "给用户名加 3–20 位长度校验,TDD 实现"

第三步:把它展开成"你实际会看到"的一段对话

读它的目的不是背流程,而是让"流程接管"变得可见:每一步都是一条能指出出处的技能约束,不是玄学。

你:/brainstorm 给用户名加长度校验:3–20 位,超界报错,别自动裁剪。

AI:我先把这个归到 brainstorming 的 "bounded(有界)" 路径——
    它是对现有注册流程的小改动。按规则,在你批准前我不会写任何代码。
    先确认两点:
    1) 用户名是否允许空格 / 中文?(A 不允许 / B 允许空格 / C 其他)
    2) 超界时报错文案由我拟一个,还是你用固定文案?
你:A。文案你拟。
AI:好。这是拟在对话内的简短设计,请过目:
    · 改 src/register/validate.ts,新增 validateUsername(name: string): boolean
    · 长度 [3, 20] 内返回 true;错误文案 "用户名需 3–20 位"
    · 通过一个导出函数暴露,供表单调用
    这段设计对吗?批准后我会开 worktree 分支并进入 TDD。
你:可以。
AI:(using-git-worktrees)已在 git@feature/user-length 分支开工,主分支不受影响。
    (TDD RED)先写测试——期望它先失败:

第四步:它真的会先写测试吗?

会,而且顺序不能颠倒:先写一条注定失败的测试,跑一遍确认"失败原因是功能不存在",再写实现。

// validate.test.ts
import { describe, it, expect } from 'vitest'
import { validateUsername } from './validate'

describe('validateUsername', () => {
  it('rejects a name shorter than 3 chars', () => {
    expect(validateUsername('ab')).toBe(false)   // 此刻 validateUsername 还不存在 → 必然失败
  })
})
AI:(跑测试)红灯确认:失败原因是 "validateUsername is not a function",正是预期的"功能缺失"。
    (TDD GREEN)写最小实现让它变绿:
// validate.ts
export function validateUsername(name: string): boolean {
  return name.length >= 3 && name.length <= 20
}

这里出现两个你会在全篇反复看到的词:RED 指"测试刚写好、还没实现,所以它必然失败"的那一步;GREEN 指"写了最小实现、测试刚通过"的那一步。它们中间还夹着一步强制动作:亲眼确认红灯的失败原因是对的——不是因为文件名打错、不是因为环境没装好。

第五步:收尾时它会问你什么?

AI:(跑全量测试)绿。补一条超界的测试再走一轮 RED→GREEN 后,
    请求独立评审……(requesting-code-review 报告无 Critical)
    (finishing-a-development-branch)测试全绿。接下来?
    1. Merge back to main locally
    2. Push and create a Pull Request
    3. Keep the branch as-is (I'll handle it later)
你:1。
AI:已合并,清理了 worktree。本次改动完成。
📖 注意这里少了一个选项

老版本会给你四个选项(合并 / PR / 保留 / 丢弃);从 v6.2.0 起,"丢弃这条分支"被从菜单里拿掉了,理由与现在的确认方式见 11 节。

怎么判断"装成功了"?

判据只有一个:面对一条会改代码的指令,代理是先问 / 先设计 / 先测,而不是闷头就改。看到它开始"啰嗦"地走流程,就说明它已经装好了。想立刻把它关掉也很简单——从设置里停用该插件即可。

💡 为什么"最小例子"也要有流程?

因为流程的价值恰恰在"小事"上最容易看见:小改动省掉的返工比例最大。一个 10 行的校验如果需求理解错了,重写成本是 100%。SP 宁可在开头多问 30 秒,也不愿在结尾多花 10 分钟。

05七步工作流:一次改动是怎么被接力的

SP 把一次开发组织成一条"接力":前一个技能交出的产物(批准过的设计、干净的分支、任务清单、绿测试)成为下一个技能的输入。下面按顺序讲清楚:每一步由哪个技能负责、交出什么、以及你作为人什么时候被要求介入。

七步分别由谁负责?

阶段负责技能交给下一步的产物 / 你的介入点
① 想清楚brainstorming批准过的设计(简单改动就在对话里;架构级写成设计文档存进仓库)。你要回答问题、逐段点头、评审设计文档
② 隔离using-git-worktrees干净的独立分支工作区 + 测试基线(先跑一遍确认全是绿的)。你一般无感,偶尔确认目录位置
③ 切碎writing-plans一份任务清单:每任务 2–5 分钟、带文件路径与验证步骤。你只需要看一遍并同意
④ 执行subagent-driven-development 或 executing-plans已提交、已过评审的代码。批间检查点(executing 模式)或结果汇报
⑤ 测试test-driven-development每个新功能对应一个"先失败后变绿"的测试。遇到拿不准的行为时由你拍板
⑥ 评审requesting-code-review按严重级别标注问题的评审报告。Critical 级问题会停下来等你处理
⑦ 收尾finishing-a-development-branch跑通测试后,进入"合并 / 发 PR / 保留"的选择;由你做最终取舍
/brainstorm
1 澄清需求
→
worktree
2 隔离分支
→
write-plan
3 写计划
→
execute
4 执行 / 子代理
→
TDD
5 测试驱动
→
review
6 代码评审
→
finish
7 收尾分支

三份"接力文件"长什么样?

工作流里最容易被忽略的一点:每一步的成果多数要落成文件,而不是只留在对话里。这样即使换会话、换代理、上下文被压缩,接力也不会断。下面三份是最小形态(字段示意,路径与字段以官方和你所用工具为准)。

① 设计文档(brainstorming 走架构级路径时产出,存进仓库):

# docs/superpowers/specs/2026-09-07-user-length-design.md
# 用户名长度校验 · 设计

## 目标与范围
给注册表单的用户名加 3–20 位长度校验,超界报错、不自动裁剪。

## 备选方案(带取舍)
- A. 在 validate.ts 加一个纯函数(推荐:无副作用、易测、表单与后端共用)
- B. 只在表单组件内联校验(不推荐:不可复用、难单测)
- C. 后端再做一次(本次不做,另行排期)

## 组件 / 数据流 / 错误处理 / 测试计划
(……每节讲完向人确认一次……)

② 实施计划(writing-plans 产出,给执行代理照做):

## 任务 1:新增 validateUsername 纯函数(2–3 分钟)
- 文件:src/register/validate.ts
- 代码:导出 (name) => name.length >= 3 && name.length <= 20
- 验证:node 里单测覆盖 2/3/20/21 位四个输入

## 任务 2:接进注册表单(2–3 分钟)
- 文件:src/register/form.tsx
- 代码:调用 validateUsername,失败时展示文案 "用户名需 3–20 位"
- 验证:浏览器输入 "ab" 应看到报错

③ 进度台账(subagent 模式跨任务记账,防止代理"失忆")。从 v6.2.0 起,台账不再是一份随手放的 plan-ledger.md,而是落在每份计划自己的工作区里:<仓库根>/.superpowers/sdd/<计划文件名>/progress.md(这个目录被 git 忽略,属于过程产物):

# SDD ledger — plan: docs/superpowers/plans/user-length.md
- [x] 任务1 validate.ts 提交 a1b2c3d | 评审:PASS
- [x] 任务2 form.tsx    提交 e4f5g6h | 评审:1×Important(已修)→ 复评 PASS
- [x] 任务3 收尾测试     提交 i7j8k9l | 评审:PASS
Ruling: 第2轮 Important 级意见"文案应常量外置"裁定为可延后,记 Minor 待最终评审 — 理由:不影响行为 — 裁错的代价:多一次小改动

最后那行 Ruling: 是官方规定的记账格式:Ruling: <你决定了什么> — <为什么> — <裁错了要付什么代价>。它对应一条很硬的设计原则——"定夺,而不是卡住"(原文 "Rulings, not stalls")。

为什么非要把东西写成文件?

官方在子代理技能里说得直白:"Conversation memory does not survive compaction."——会话记忆扛不住上下文压缩。真实会话里出现过最贵的一种失败:控制器忘了自己进行到哪儿,把已经做完的整串任务重新派发了一遍。文件正是为这件事准备的:台账里记下的提交号在 git 里真实存在,哪怕你的上下文已经完全不记得创建过它们。上下文被压缩后,要相信台账和 git log,而不是自己的回忆。

这不是一条你必须从头走到尾的铁轨

七步是"默认的完整形态",不是每次都全走一遍。常见的几种偏航都是正规用法:

"装了它 = 所有任务都被迫走七步"是误解吗?

是误解。它是按需命中:只有命中的技能才会被触发。测试驱动、修 Bug 前先复现、重大改动先设计——这些是"默认值";而是否开新分支、是否派子代理,由当前改动的形态决定。真正会让你觉得"被流程绑住"的,通常是 Brainstorming 的盘问与独立评审——那正是它"用 token 换正确率"的地方,取舍见 13 节。

06动手之前,它为什么先跟你抬杠?

Brainstorming 是整个框架的"门卫"技能:新手最容易嫌它烦,老手最离不开它。它要解决的是一句很朴素的话——绝大多数"AI 做错了",不是模型笨,而是它在实现一个没人确认过的假设。

它为什么叫 brainstorming,却不让你发散?

这个名字容易误导。它做的恰恰相反:收敛式地盘问。技能开头直接写死一条硬门禁(原文用 <HARD-GATE> 标签标出):在你被告知"它打算怎么做"并且你点头之前,它不许调用任何实现类技能、不许写任何代码、不许搭任何脚手架。而且官方补了一句非常关键的话——"这份仪式感随任务缩放,批准门禁永不缩放"(the ceremony scales with the task; the approval gate never does)。

所以它有三个常见误解值得当场破掉:

三条路径怎么选?

技能一开始会把你的请求归入三类之一,并且当众说出分类(这样你可以当场纠正):

路径它解决什么问题产出与你的介入点
Spike(探针)"能不能做到?""哪种方案可行?""快速粗糙没关系"这类求证问题先用两三句话说出要试什么 → 你点头 → 用最省的方式查 → 报告一个建议。不写设计文档,做的代码一律标记为"用完即弃"
Bounded(有界)对仓库里已经存在的流程做范围清晰的小改动(加个开关、加个小接口、单文件修复)问该问的问题 → 在对话里给一段简短设计 → 你明确说"可以" → 才开工。不写设计文档、不写实施计划
Architectural(架构级)新项目、新子系统,或会改变组件衔接方式、动到别人依赖的接口完整流程:提问 → 给 2–3 个方案及取舍 → 分节展示设计并逐段等你确认 → 写设计文档并提交 → 自查 → 你评审文档 → 交给写计划技能

这里的 "有界"是按仓库判定的,不是按你的熟悉程度判定的。官方在红旗表里专门堵了这条借口:"我熟这类应用,所以算有界"——"Bounded measures the repo, not your familiarity. A new project has no existing flow — it is architectural."(有界衡量的是仓库,不是你的熟悉度;新项目没有"已存在的流程",它是架构级。)

拿不准该走哪条路怎么办?

⚠️ 一条只能升、不能降的棘轮规则

先解释这个词:棘轮是一种只能朝一个方向转的齿轮,倒转会被卡住。规则本身是——官方原话:"When in doubt between two paths, take the heavier one."(两条路拿不准时,选更重的那条。)而且这个棘轮是单向的:任务进行中发现了隐藏复杂度,路径只能升级——停下来告诉你,然后走更重的流程;没有任何情况可以中途降级。

另一条同样重要:简单 ≠ 可以不做设计。bounded 的意思是"设计很短"(几句话到几小段),绝不是"没有设计"。

一次只问一个问题,实际对话是什么样?

它的问题节奏是:一次只问一个、能给选项就不开放、问的都是能改变设计的问题(范围、边界、界面取舍)。下面是一段示意盘问:

你:想给博客加一个"按标签筛选文章"的页面。
AI:(先归类)这是对现有页面结构的改动,我先按 architectural 处理还是 bounded?
    先问最影响范围的问题:这个筛选是
    A 只筛选"已发布"文章   B 也要筛草稿/定时文章   C 其他
你:A。
AI:好的。第二个问题——标签来源:A 文章自带标签字段(需要在编辑页维护)
    B 我选几个固定标签写死在配置里   C 其他
你:A。
AI:那第三个问题,UI:A 顶部一排标签点击切换   B 下拉选择   C 其他
你:A。
AI:清楚了。这轮先给方案草稿(约 150 字,覆盖列表页改造、URL 结构、空结果态、
    测试计划),每讲完一节我都会停下来问你"这部分对吗"……

注意这里的顺序很讲究:先归定路径,再问最影响范围的问题。它不是闲聊,是一台把"模糊愿望"压成"精确需求"的机器。另外,架构级路径还有两个细节:设计文档默认写到 docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md(可以被你的偏好覆盖),写完它会先做一遍自查(扫占位符、查前后矛盾、查范围、查歧义),再请你评审文件——不是口头评审。

为什么"改一个常量"也要你点头?

因为门禁拦的不是"改动大小",而是"未经确认的假设"。官方给出的理由值得原样记住:"'Simple' tasks are where unexamined assumptions cause the most wasted work."(恰恰是"简单"任务里,没被检查的假设造成最多浪费。)

一个 10 行的校验,藏着的问题可能是:"校验"到底是拦截还是提示?超界是报错还是自动裁剪?允不允许中文和空格?这些确认一次,抵得上返工十次。它还顺带解决了另一个问题:把设计拆成小节逐步确认,每段都短到你的注意力跟得上。

新手最容易踩的四个坑

坑会发生什么更合适的做法
嫌它啰嗦,直接说"别问了快做"你暂时绕开了门禁,同时把返工风险请了回来一次把目的、边界、验收标准喂足,让它几轮就收敛
把 spike 的产物当正式功能验证代码混进主干,无人负责维护探针的产出是"答案"不是代码;正式实现另起炉灶,重新分类
在"简单需求"上跳过它小改动里藏着歧义("校验"是拦截还是提示?)花 30 秒确认。简单给的是短设计,不是免设计
不纠正它的分类该走架构路径的活被分成了 bounded,后面每一步都建在错误假设上它当众说出分类时当场喊停;中途发现复杂度也可以要求升级

07怎么把设计切成"换个代理也能照做"的小步?

设计批准后的下一棒,是把"要做什么"翻译成"具体怎么一步步做"。这一棒由 writing-plans 负责写计划,executing-plans 负责在别的会话里按批执行。

一份合格的计划里必须有哪四样东西?

官方对计划的定义有一句很妙的标准:计划要清楚到"一个热情但品味差、没判断力、不了解项目、还讨厌写测试的初级工程师"也能照着执行(原文:clear enough for an enthusiastic junior engineer with poor taste, no judgement, no project context, and an aversion to testing to follow)。为了达到这个效果,每个任务被刻意切成 2–5 分钟能做完的颗粒,并自带四样东西:

① 精确的文件路径

要改哪个文件、新建哪个文件,不含糊。

② 尽可能完整的代码块

关键实现直接写进计划,执行时是"照抄 + 跑测试",不是现想。

③ 验证步骤

每个任务做完,怎么确认它真的对了(跑哪条命令、看到什么算过)。

④ 依赖顺序

任务之间谁先谁后、哪些可以并行。

这样一份计划像施工图纸:工人(执行代理)不用再想"怎么设计",只按图施工并报告每步结果。它同时让"评审"成为可能——人可以在几百行代码写出来之前,先审一份几十行的计划。

计划该写多细?一条能自检的标准

💡 判据

换一个"什么都不知道"的代理,只给它这份计划,它能不能把活干完?能 → 计划合格;不能 → 计划里还藏着没摊开的决定。计划写得越细,执行时的"临场发挥"(也就是不可控)就越少。

写计划之前先问自己哪三句话?

1
"执行代理只读我的计划、读不到这段对话,会不会卡壳?"

会,就把必要的背景写进任务本身,而不是指望它的记忆。

2
"每个任务都附了'怎么验证它做对了'吗?"

没写验证的任务,等于让执行代理自己发明"完成"的定义。

3
"有没有哪个任务明显超过 5 分钟?"

有,说明切得还不够碎。拆不碎往往意味着还有没想清楚的耦合——那正是该回头问设计的地方。

写计划这件事本身,就是一次"逼你把实现细节想明白"的脑力劳动。它往往比执行更有价值。

executing-plans 和子代理模式怎么选?

你的处境选哪个技能为什么(以及代价)
要把这批任务拿到独立或并行的会话里跑(比如同时开好几个会话各跑一条功能线)executing-plans按批次执行,批与批之间设"人类检查点",你可以随时看进度、纠偏。代价是检查点会打断连续推进
任务基本独立、且要留在当前会话里完成subagent-driven-development每任务一个全新子代理 + 两级评审 + 台账,质量门禁更严。代价是明显更啰嗦、token 更多
手上有多个互不相关的失败要查(不同测试文件、不同子系统)dispatching-parallel-agents一个代理查一个独立问题域,同时开工。代价是必须有"它们真的不相干"这个前提

值得一提的是 executing-plans 自己的开场提醒:如果你的宿主支持子代理,就该改用 subagent 模式而不是它。所以它更像是"没有子代理能力时的退路"。

08为什么要一个小任务就换一个代理?

这是 SP 里最能体现工程质量观的一环:主代理不再一口气把整个计划写完,而是每个小任务派一个全新的"子代理"(subagent,由主代理派出去、只干一件事的独立代理)去实现,再派另一个子代理去评审。因为它有明确的"为什么"——

让一个代理从头写到尾,会出什么问题?

两个问题,都很硬:

对策就是重置上下文:每个任务一个新代理,它眼里只有这份任务简报(brief)和代码库当前状态,不继承你的会话历史。

四步循环长什么样?

主代理 ──派发──> 实现子代理(sub-impl)
  简报:任务2 form.tsx 接入校验 + 报错文案,路径与代码见计划;写报告到 logs/task2.md
  子代理提交 e4f5g6h 后收工(上下文干净,眼里只有任务2)

主代理 ──派发──> 评审子代理(sub-review)   ← 独立于实现者
  输入:任务2简报 + 实现报告 + 待审 diff
  一级(规格):实现是否符合任务要求?
  二级(质量):代码质量如何?→ 报 1×Important:"文案应抽成常量,便于表单和后端复用"

主代理:记台账 "任务2: 1×Important"。
  ↳ 修复轮1:让原实现子代理修(上下文还在)→ 提交 e9f0g1h → 针对性复评 → PASS
  ↳ 全部任务完成后:派"最强可用模型"做整分支最终评审,清掉台账里的 Minor 悬案

这里出现一个你在团队协作里也见过的词:diff,指"这次改动到底改了哪些行"的那份对照——评审子代理拿到的就是一份待审 diff,而不是整个代码库。

评审到底查什么?

每个任务后做两级评审,顺序不能反:

第一级:规格(spec)

实现是否符合任务要求?更细一点:该做的都做了吗?有没有做简报里没要求的事?评审要同时给出"规格 ✅/❌"和"质量是否通过"两个结论,缺一个都算评审不完整。

第二级:代码质量

代码本身好不好:命名、重复、可测性、边界。问题按严重级别分档,见下。

严重级别的分档是这套体系的通用语言:Critical(致命,阻塞交付,不修不能往前走)、Important(重要,应修,或明确记账延后)、Minor(轻微,风格命名可读性,记下即可,不当阻断)。

评审意见怎么修?

官方流程写得很具体,而且和很多人的直觉不同:

1
第 1–3 轮:让原来的实现代理来修

因为它的上下文还在,改起来最省。每轮结束只做针对性复评——只查这次的修复,不重读整个任务。

2
第 4–5 轮:换一个更强的模型的新代理从头修

连修三轮还没好,通常意味着原来的思路卡住了。换模型是主动升级,不是惩罚。

3
5 轮封顶:到顶由控制器裁定,不许无限循环

官方把它叫"五轮熔断器"(circuit breaker)。到顶时控制器做出裁定并记进台账,而不是继续修或原地卡死。

4
Minor 不进循环

轻微问题记在台账里,留到最后统一处理。主代理绝不自己动手修——那会绕过评审、污染调度上下文。

什么情况才允许它停下来问你?

只有四种,官方逐条列出:

除此之外,冲突由主代理自行裁定并记入台账(原文 "Rulings, not stalls"——定夺而非卡住)。官方给的理由很有人味:一个错误的裁定,代价是你能看见、能撤掉的返工;而一个卡在问题上的会话,代价是你的一整天。真实案例里,有一次捐赠的会话在一个"控制器本可以自己决定"的问题上卡了将近九个小时。

进度记在哪个文件里?

记在该计划专属的工作区里。从 v6.2.0 起,每个计划有自己的目录,避免"上一份计划的台账被当成这一份的进度"(这种污染在真实使用里出现过):

# 技能自带的脚本会打印这份计划的工作区路径
scripts/sdd-workspace docs/superpowers/plans/feature-plan.md
# → <仓库根>/.superpowers/sdd/feature-plan/   (被 git 忽略,存放台账、简报、报告、评审包)

# 台账第一行必须写清自己属于哪份计划
# SDD ledger — plan: docs/superpowers/plans/feature-plan.md

恢复规则也很明确:如果台账第一行写的是别的计划文件,那它是别人的进度,别动它,自己新建一份;如果同一份计划里已经有 Task <N>: complete 这一行,那这个任务已经做完了,不要重新派发。

什么任务可以打包给同一个子代理?

从 v6.3.0 起有一条明确的省钱的规则:小而同形的任务要打包。当计划里的一串任务都是"同一种小改动重复在不同文件"(同一处一行修复、同一个常量修改、同一个字段增补),不要一个任务派一个子代理——把每个文件和它的改动写进一份简报,交给一个子代理,把它的 diff 当一整块评审。反过来,"需要自己的判断、自己的测试、自己的评审面"的活,才保持一任务一派发。

三条反直觉但关键的约束

约束它到底在防什么你可以在对话里怎么用它
主代理自己绝不改代码会绕过评审、污染调度上下文看到主代理开始自己动手修,就是流程漏了
实现子代理和评审子代理都不许再派自己的子代理会产生重复的评审席位——一个"由工人自己请来的评审"是要标记的缺陷,不是严谨评审报告里若出现"我又派了个代理复查",那是问题信号
评审方不被预设立场它不知道你希望它发现什么,所以挑刺才有意义别在派发时暗示"应该没问题"
💡 为什么值得信这套"笨办法"

它把人类工程里"独立评审"的价值搬给了代理:写代码的和挑刺的不是同一个人,挑刺才有效。代价是明显更啰嗦、token 更多——官方甚至点名批评过一种自我开脱:"评审拖慢循环"("reviews slow the loop down" is a rationalization,没有评审的循环只是没验证的瞎折腾)。它的设计始终在用 token 换正确率。

09TDD:唯一一条几乎不许讨价还价的规则

先解释这个词:TDD 是"测试驱动开发"(Test-Driven Development)的缩写。这里的"测试"指一段自动跑的检查代码——你给它输入,它替你判断结果对不对;"驱动"的意思是先写检查、再写实现,顺序不能反。在整个框架里,这是唯一一条几乎不允许松动的规则。

铁律原文是什么?

🔤 铁律原文(官方 SKILL.md 的 The Iron Law)

NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST——没有先失败的测试,就不许有生产代码。

配套的另一句被反复引用:"If you didn't watch the test fail, you don't know if it tests the right thing."(你没亲眼看着测试失败,就不知道它测的是不是对的东西。)另外还有一句总纲式的提醒:"违反规则的字面,就是在违反规则的精神。"——这句话专门用来堵"我知道精神,但这个情况特殊"。

为什么"事后补测试"等于没测?

很多人以为 TDD = 写完代码再补个测试。恰恰相反,在那套规则眼里那是自欺欺人:代码已经写好,测试写出来必然秒过,一个没有失败过的测试什么都证明不了——你不知道它测的是你刚写的行为,还是它本来就通过的旧行为。真正的顺序是"用测试倒逼设计":先写断言,接口的形状就被逼出来了。

红-绿-重构的每一步,具体要做什么?

1
RED:先写一个会失败的测试

一个"最小、单一、命名清楚、只测一个行为"的测试。目标是让它因为功能不存在而失败,而不是因为打错字。顺便解释一下你可能见到的 mock:指用假对象替代真实依赖(比如假装数据库已连通),这里的原则是能不用就不用,尽量测真实代码。

2
验证 RED(强制)

真跑一遍,确认它失败的原因正确。如果测试直接通过了,说明你测的是已有行为,得先修测试。

3
GREEN:写最少代码让它通过

写"能过这个测试的最简单实现"。不加多余的 feature、不做过度设计、不顺手重构无关代码。(你会在文档里看到 YAGNI——"You Aren't Gonna Need It",意思是"你现在并不需要它",用来指这种克制。)

4
验证 GREEN(强制)

确认这个测试通过、且全量测试没被弄红。若红了,改代码而不是改测试。

5
REFACTOR:绿了之后才整理

重构指"不改行为、只改内部结构"(去重复、改名、抽函数)。红线是:不新增行为、不让测试变红。然后加下一个新测试,循环往复。

一个完整的最小例子:从一条断言里"长"出实现

假设要"把字符串里的空白字符全删掉"。TDD 的走法是先只写断言,让接口形状先立起来:

// collapse.test.ts —— RED:此刻 collapseWhitespace 还不存在
import { it, expect } from 'vitest'
import { collapseWhitespace } from './collapse'

it('removes all whitespace', () => {
  expect(collapseWhitespace('a  b \t c')).toBe('abc')
})

跑一遍,确认它是因为"功能缺失"而红:

$ npm test
FAIL  collapse.test.ts
Error: Cannot find module './collapse'   ← 失败原因是"功能缺失",正是想要的 RED

确认红灯原因正确后,写最小实现让它变绿——不要顺手加什么 trim、换行处理:

// collapse.ts —— GREEN:只做"能过这个测试"的事
export function collapseWhitespace(s: string): string {
  return s.replace(/\s/g, '')
}
$ npm test
PASS  collapse.test.ts   ← 绿。再加一条会失败的边界测试(如把换行也算空白),继续循环

然后才是 REFACTOR:绿着的时候改名、抽函数、去重。全程有一条红线:重构不许让测试变红,更不许在重构时夹带新功能。想加功能?回到 RED 再开一轮。

💡 卡住时的小技巧

技能给的起步建议:想象你"希望这个 API 长什么样",然后先写断言、再写调用(write the wished-for API, write the assertion first)。先让形状立起来,实现自然跟着长。

"写完代码才发现没写测试"怎么处理?

🚫 技能原文级别的"零容忍"

代码写在了测试之前?官方原话是 "Write code before the test? Delete it. Start over."——删掉,重新来。它还把各种"合理化"借口逐条堵死:"别留着当参考"、"别在写测试时'改造'它"、"别看它"、"删就是删"(Delete means delete)。

常见的五个借口,官方怎么回?

心里冒出的那句话官方的回应为什么这句回应站得住
"这也太简单了,不用测"简单 ≠ 不需要测试;TDD 的颗粒本来就是小的越小的改动越容易漏边界,而边界恰恰是测试的强项
"我之后再补测试"事后补的测试秒过,证明不了任何东西没有失败过,就不知道它测的是不是对的行为
"我手动测过了"手测不可复现、不可回归,替代不了自动化测试下次改动时,手测的结论不会自动重跑
"TDD 会拖慢我"前期慢的每一分钟都在省后期的返工慢的是"想清楚"这一层,省的是"改错方向"这一层
"这个函数全是 mock,没法测""难测"往往是接口设计不清的信号 → 简化接口、注入依赖它把测试难写当成设计反馈,而不是测试的错

什么时候可以豁免?

允许的例外(但必须你显式批准)

官方列的例外只有三类:一次性原型、生成的代码、配置文件。而且它们都得问过你才行(技能里的写法是 "Exceptions (ask your human partner)")。

修 Bug 走的是更严的一条

修 Bug 不属于豁免范围,反而更严:必须先写一个能复现该 Bug 的测试,再谈修复。写不出复现测试,等于还没定位到问题——这也和 10 节的调试铁律扣在一起。

10另外两条铁律:出 Bug 时怎么修,完工时怎么自证

TDD 不是唯一一条铁律。框架里还有两条,同样带"Iron Law"字样——它们分别管"修东西"和"宣布完成"两个最容易糊弄人的时刻。

为什么"改一行碰运气"是最贵的做法?

很多代理遇到 Bug 的行为是:猜一个原因 → 改一行 → 跑一下 → 没好再猜。SP 用 systematic-debugging(系统性调试)把这个过程格式化了。它要消灭的不是"直觉",而是没有记号的瞎试:每次尝试都应该有一个可检验的假设、一条能复现的路径、一个明确的验证方法。

🔤 第二条铁律(系统性调试)

NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST——没做完根因调查,不许动手修。根因指真正引发问题的那个源头,而不是问题冒出来的那个位置。原文补了一句:没走完第一阶段(根因调查),你就不能提出修复方案。

四阶段根因流程

1
根因调查:先把错误信息读完整

别跳过报错和警告——它们经常直接写着答案。目标是拿到稳定复现的步骤,并定位到"哪一行代码在什么输入下出错",而不是停在"页面挂了"这种表象。

2
模式分析:找"正常的样子"再对比

先在同一个代码库里找到能正常工作的相似代码,再问"这类错误在哪些地方也会出现?"同一个根因常常在多个入口同时爆发,顺手全查。

3
提出并检验假设

一次只立一个假设,说清楚"我认为 X 是根因,因为 Y",然后做一个最小验证去证实或证伪。没验中不是失败,是信息——但不要在没验中的假设上继续叠加修复。

4
实现修复并验证

修复以 TDD 方式落地(先写复现测试),跑通后把这条测试留下来当回归测试。回归测试的意思是:以后谁再犯同样的错,它会立刻变红。

同一个 Bug 修 3 次还不好,就该停手

⚠️ 一条强制升级条款

技能里写着:尝试次数 少于 3 次时,带着新信息回到第一阶段重新分析;一旦达到 3 次(≥ 3),就停下来质疑架构,不许在没做架构讨论的情况下动手做第四次修复。

它给出的"架构问题"信号很具体:每次修复都在别的地方暴露新的共享状态 / 新耦合;修复需要"大规模重构"才能落地;每次修复都在别处制造新症状。这条规则专治"在同一个坑里反复横跳"。

两种修法对照

❌ 随机式:每次都从零猜

"可能是缓存问题,我清一下缓存。" → 没好。"可能是时区问题,我改一下时区。" → 还没好……

每次猜测都没被记录、没被验证,第三次和第一次一样是瞎猜。运气好蒙对了,但不知道为什么对,过几天同类 Bug 换个马甲又来了。

✅ 系统式:每步有假设、有验证、有记录

"先稳定复现 → 定位到打印语句在 22:00 后不输出 → 假设与定时任务有关 → 最小验证:把系统时间拨过 22:00,复现成功 → 根因是日志轮转把文件句柄关了 → 修复 + 留下回归测试。"

连修 3 次没成功还会触发"架构复查"升级条款,而不是继续在表层打转。

怎么逼代理在说"做完了"之前交出证据?

这条铁律来自 verification-before-completion(完工前验证):

# 官方给的"门函数"(The Gate Function):宣布任何状态之前先走完这五步
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE

1. IDENTIFY: 哪条命令能证明这个说法?
2. RUN:      完整跑一遍(新跑的、完整的)
3. READ:     读全输出,看退出码,数失败数
4. VERIFY:   输出真的支持这个说法吗?
             - 不支持 → 只陈述实际状态 + 证据
             - 支持   → 连证据一起说
5. ONLY THEN: 才可以下结论

跳过任何一步 = 在撒谎,不是在验证

它有一句极为锋利的补充:"如果你没有在这条消息里跑过验证命令,你就不能声称它通过了。"换句话说,"它应该没问题"不算数。你在评审代理交付时最有用的那句话就是:"你凭什么说它好了?给我看证据。"

三条铁律的原文并列

# 1. 测试驱动(skills/test-driven-development/SKILL.md)
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST

# 2. 系统性调试(skills/systematic-debugging/SKILL.md)
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST

# 3. 完工前验证(skills/verification-before-completion/SKILL.md)
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE

三条放一起看,你会发现它们其实是同一句话的三个时刻:开工前要确认(三条都要求"先有依据")、动手时要有证据(测试/复现)、收工时要有证据(刚跑过的验证)。这就是"纪律而不是智力"的具体含义。

11隔离与收尾:为什么要给每个任务一间独立施工房?

两个技能配成一对:using-git-worktrees 负责在工作流早期建隔离工作区,finishing-a-development-branch 负责收尾。它们合起来保证一件事:主分支永远干净,乱糟糟的中间过程都发生在分支里。

worktree 到底是什么?

你平时用的 git branch 是在同一个目录里切换指针,切来切去目录里的文件跟着变。而 worktree(工作树)允许你把同一个仓库的不同分支同时检出到不同目录,互不干扰。通俗说就是:同一个项目,在两个文件夹里各摆一份,各自停在自己的分支上。

它和普通 git branch 差在哪?

对比项普通 git branch + 切换worktree(为什么对 AI 更关键)
目录一个仓库一个目录,切换分支时目录内容整体变化一个仓库多个目录,每个目录固定停在一个分支上
并行同一时刻只能处在一个分支状态可以同时开好几个会话,各在一个 worktree 里做一条独立功能线,谁也不踩谁的脚
中间态改到一半的脏状态留在你正在用的目录里一半测试红着、文件改到一半也都在隔离目录里,主分支毫发无损
丢弃成本要 stash / reset,动作容易出错整个 worktree 一删了之(但删除有前置检查,见下)

技能本身还带着一套"先检测、别重复建"的步骤——它会先判断你是不是已经在一个隔离空间里,是的话就不该再建一层:

# 第一步:先检测当前是否已经在隔离工作区里
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)

# 子模块保护:GIT_DIR != GIT_COMMON 在 git 子模块里也成立,要先排掉
git rev-parse --show-superproject-working-tree 2>/dev/null

# 若 GIT_DIR != GIT_COMMON 且不是子模块 → 你已经在某个 worktree 里,跳过创建,直接做项目初始化

它的核心原则写得很克制:先检测现有隔离,再用宿主原生的 worktree 工具,最后才回退到手工 git 命令——不要跟宿主较劲。

收尾时它会给你哪几个选项?

任务全部完成、测试通过后,finishing-a-development-branch 会把选择摆到你面前。当前版本给的是三个选项:

Implementation complete. What would you like to do?

1. Merge back to <base-branch> locally
2. Push and create a Pull Request
3. Keep the branch as-is (I'll handle it later)

Which option?

如果你处在一个"分离头指针"(detached HEAD,指当前不在任何分支上、由外部工具托管的临时状态)的工作区里,选项减为两个——PR 或保留,因为这里没有"合并回哪条分支"可言。

选合并时,它的动作顺序也值得抄下来:先切回基础分支 → 拉取最新 → 合并 → 在合并结果上再跑一遍测试 → 绿了才清理 worktree、删掉功能分支。如果合并后的测试红了,就停下、把 worktree 和分支原地保留——因为还没推送,这次合并是本地的、可恢复的。

为什么"丢弃分支"被从菜单里拿掉了?

📖 一次真实的删减

v6.2.0 的发布说明记录了这个改动:原来的四个选项是"合并 / PR / 保留 / 丢弃",而把 "Discard this work" 摆在"Merge"旁边,等于在给"销毁已经做完、测试全绿的工作"做广告。现在丢弃只在你明确要求时才走,而且要先打字确认:

This will permanently delete:
- Branch <name>
- All commits: <commit-list>
- Worktree at <path>

先列出"将永久删除什么",再等你回话——这是它处理破坏性动作的通用姿态。

收尾会顺手删掉你没提交的文件吗?

v6.3.0 修掉了一个真实存在的坏行为:当 git worktree remove 因为"工作区里还有没提交的东西"而拒绝执行时,旧流程会伸手去拿 --force(强制删除)。现在它改成停下、把那些文件名字列出来、问你怎么办。这条修复值得单独讲,因为它是"纪律型工具也会犯错、而且错误会被写进发布说明"的一个例子——你在 18 节可以顺着官方 Release Notes 复核。

💡 对新手最实用的一条

如果你还没习惯 Git 分支,先别慌:这些动作都由代理代劳,你只需要在"合并 / 发 PR / 保留"里做一次选择。你要理解的是为什么主分支该保持干净,而不是手敲那些 Git 命令。

1214 个技能地图:谁在什么时候自动出手?

前面已经深入讲了几个重头技能。这一节给两张地图:一张是14 个技能分别管什么,一张是什么场景会自动触发哪个技能、你想绕开时能怎么办。最后一小段是可以直接抄的开场模板。

14 个技能分别管什么?

分类技能何时被触发 / 干什么(以及你该知道的边界)
测试test-driven-development实现任何功能时强制执行红绿重构;先有失败测试才有生产代码。唯一的例外是原型、生成代码、配置文件,且要你批准
调试systematic-debugging修 Bug 时走四阶段根因流程;连修 3 次失败强制架构复查。别指望它给你"快速猜一个"的许可
调试verification-before-completion声称"做完了"之前先出示证据(测试、复现、影响边界)。它管声明,不管实现
协作brainstorming任何创造 / 修改工作动手前:澄清需求、设计、批准门禁。仪式随任务缩放,门禁不缩放
协作writing-plans把批准的设计切成 2–5 分钟任务、带路径 / 代码 / 验证。它不替你做设计决定
协作executing-plans在独立 / 并行会话里分批执行计划,带人类检查点。有子代理能力时官方建议改用 subagent 模式
协作subagent-driven-development当前会话内每任务一个全新子代理 + 两级评审 + 台账。最啰嗦也最严的一档
协作dispatching-parallel-agents把互为独立的任务同时派给多个并行子代理。有共享状态时别用
协作requesting-code-review任务之间请独立评审,按严重级别回报,Critical 阻塞推进。它负责"请评审",不负责"改"
协作receiving-code-review被评审的一方怎么读意见、怎么回应、什么时候该重提。它治的是"所有权错觉"
协作using-git-worktrees开工时建隔离分支工作区,并先跑一遍测试基线确认是绿的
协作finishing-a-development-branch收尾:验证测试 → 探测环境 → 给选项 → 执行 → 清理。合并 / PR / 保留三选一
元技能using-superpowers给代理的"使用说明":整个系统的门禁与心智模型。它就是会话启动时被注入的那段引导的出处
元技能writing-skills教你(以及代理)用 TDD 的方式编写并测试新的自定义技能

顺带说清两个相关的概念,你会在官方文档里反复看到:自动触发(官方叫 model-invoked)指代理面对某类任务时自己发现"有条规矩要遵守"并加载执行,不需要你敲命令;手动调用(user-invoked)指你用斜杠命令显式发起某个流程。设计意图是:高频的纪律(TDD、复现、评审)尽量自动,低频的、需要你拍板的阶段(澄清、计划)放在命令里,让你保有控制感。

自动触发和手动调用,怎么一眼分清?

方式怎么发生的典型例子(以及误判提醒)
自动触发(model-invoked)代理自己判断命中并加载执行写核心逻辑 → 自动进 TDD;修 Bug → 自动先求复现。它该自动却没自动,才是 bug
手动调用(user-invoked)你用斜杠命令显式发起/brainstorm、/write-plan、/execute-plan。有些技能本来就得你叫它(例如写自定义技能),别冤枉它

什么场景会自动触发哪个技能?

你的动作默认触发的技能你想绕开时能怎么办
要加功能 / 改行为brainstorming(先澄清)把需求一次性说得很具体,走 bounded 轻路径即可——这不是"绕开",是"让它少问几轮"
已批准的设计要落地writing-plans → subagent / executing改动极小时可以直接说"按 TDD 做 X",从命中的那一步接管
要写任何核心逻辑test-driven-development一次性原型和配置文件需要你显式豁免
有 Bug 要修systematic-debugging(先复现)豁免面很窄;"先写复现测试"基本不可绕
一批任务互不影响、想并行dispatching-parallel-agents / subagent有共享文件就别并行,串行更省事
一批实现完成、要合并finishing-a-development-branch它会把选择摆给你:合并 / PR / 保留

最高频的命令有哪几条?

你想干的事命令会触发 / 进入哪个技能;有什么前置
把一个模糊想法变成可执行设计/brainstorm(也可能是 /superpowers:brainstorm)brainstorming。前置:你愿意回答几个问题
需求已清楚,直接把活切成任务清单/write-plan "…"writing-plans。前置:需求已经具体到能验证
在另一 / 并行会话里按计划分批执行/execute-planexecuting-plans。前置:手上有一份写好的计划文件
确认命令与插件是否就位/help、/reload-plugins本身不是技能,是验证步骤
新会话里它不按流程走,想手动"请它接管"说"请遵循 superpowers 工作流处理",或用上面任一命令回到 using-superpowers 的引导逻辑
🔤 命令前缀提醒

装成命名空间插件后,命令常带前缀(/superpowers:brainstorm);老版本或简化形态则是裸名(/brainstorm)。以你 /help 里看到的名字为准——它们触发的是同一个技能。

碰到"它没按流程走",按这三步排查

1
先问它有没有"看到"技能

直接问:"针对当前任务,有哪些相关技能?你打算遵守其中哪几条?"答不上来,说明技能没被加载——这不是它不听话,是机制没生效。

2
再确认机制是不是真的装了

/help 里有没有命令?/reload-plugins 后钩子有没有重启?是不是新开的会话?半装的插件是最常见的原因。

3
最后分清"该自动却没自动"和"本来就得你叫它"

有些技能(尤其 writing-skills、写自定义技能)本来就该由你显式发起。别把这两类混为一谈。

可以直接抄的三段开场模板

不确定怎么开口?按你现在的处境挑一段,把方括号里的内容换成你的需求:

# 场景一:需求还模糊 → 让 brainstorming 来澄清
/brainstorm 我想做一个「你的功能一句话」,约束大致是……(欢迎先问我问题)

# 场景二:需求已清楚 → 直接要计划
/write-plan 实现「具体改动」。要求:先按 TDD 走,任务拆小、每步给验证方法。

# 场景三:已有一份计划要跑 → 交给子代理并要证据
请按 superpowers 流程执行这份计划;每个任务完成后独立评审,
并按 severity 汇报;不要自己给自己评审,完工前给出测试通过的证据。

这三段的作用是把"你想走哪条流程"说清楚,剩下的纪律交给技能执行。注意第三段里那句"不要自己给自己评审"——它是整套体系里最值钱的一句约束,见 08 节。另外那句 severity 就是"严重级别"的英文,也就是 08 节讲的那套 Critical / Important / Minor 分档。

13什么时候不该用这一套

这一节是整篇里最该细读的部分。SP 的默认值偏向"多走流程",所以真正会让人吃亏的,不是"用得不够",而是用得太重、用在不该用的地方。

哪三类任务不该上流程?

任务类型为什么流程是负担更合适的做法
一次性的灵感速写 / 原型你要的答案是"这条路行不行",不是一个可维护的交付物;写测试、写设计文档都不产生你需要的价值走 Spike 路径:两三句话说清要试什么 → 你点头 → 用最省的方式查 → 拿一个建议。做的代码一律标记"用完即弃"
一行文案、一行常量的修改走完整的 worktree + 设计文档 + 计划,是为了防"大改动做错方向",而一行改动没有那个风险走 bounded 轻路径:对话里一句设计 + 你一个"可以"。官方也这么说:"框架给的是完整形态,不是每次都要走完"
纯探索、纯求证产出是"答案"而不是代码,流程里的评审与收尾都没有对象同样是 Spike。关键纪律是:拿到结论以后,正式实现要另起炉灶重新分类,别把探针代码顺手带进主干

一句话总结判据:流程的价值随"改动规模 × 不可逆程度"上升。改动越小、越可逆,"先确认"这一步就越短——但它不归零。

什么信号说明"你过度用流程了"?

什么时候不该写自己的技能?

写自定义技能是 SP 最有杠杆的一点(它教你用 TDD 的方式打磨技能本身),但技能写多了也是负担:每个自动触发的技能都在消耗上下文与判断力。出现下面这些信号时,先别写:

信号为什么不该写成技能替代做法
这条规矩半年才用一次自动触发的成本每次会话都要付,收益却极低写进 AGENTS.md 让人记得即可
现有技能已经覆盖两套规矩并存会互相打架,代理不知道听谁先改现有技能里的一行,别另起炉灶
你没法用一句触发描述说清"何时该生效"说不清触发的技能,要么不触发、要么处处误触发先把它当普通文档用一阵,观察它真的该在什么时候出现
你想用技能"取代人拍板"技能的边界是纪律,不是决策;把该问人的判断硬编码成规则,迟早替你做错决定把判断留给对话,把机械检查交给技能

写一个团队技能长什么样?

如果一个技能确实值得写(高频、肉痛、能用一句话说清触发时机),它的形态极小——一个目录加一份 SKILL.md:

skill-name/
└── SKILL.md

# SKILL.md(示意,字段以你所用的宿主约定为准)
---
name: no-debug-prints
description: 在提交前,禁止把 console.log / print 调试输出留进代码。
  (代理准备提交代码时自动触发)
---

## 规则
- 扫描本批改动;发现遗留调试输出 → 删除后再提交。
- 若删除会影响功能(本意就是保留的日志),停下来问人类。
- 提交流水:清理 → 确认无残留 → 才允许 commit。

开头两行 --- 包起来的那段叫 frontmatter(文件头部的元信息),其中 description 就是"何时该用我"的触发描述——代理面对提交任务时会读到它、意识到"有条规矩要遵守",于是照章办事。你的工程文化(不许提交调试输出、接口必须用某种命名、报错必须带错误码)都可以这样一条条变成技能。

⚠️ 版本口径提醒

技能文件的具体字段(是用 description 还是别的键名)、触发写法,会随宿主工具和 SP 版本演进。写之前查一眼你所宿主的"技能"官方文档 + SP 的 writing-skills 技能原文,别照抄本文示例的字段名就完事。

还有一个反直觉但重要的判据:一个好的技能,标准是"换一个不知情的代理照着做,不会跑偏"。所以 writing-skills 主张用真实小任务去演练你的技能,观察它是否真的被触发、措辞是否有歧义——技能本身也要"测试"。它给的核心原则是:"如果你没亲眼看着一个没有该技能的代理失败过,你就不知道这个技能教的是不是对的东西。"

14常见坑:八个真实症状

坑你会看到的症状根因与解法
装完没生效,代理照旧"闷头写"/help 里没新命令,或命令在但行为不变多半没重载 / 没重开会话,插件注入钩子没跑。重载插件或新开会话;仍不行就跑一条 /brainstorm 手动触发验证
嫌 Brainstorming 烦,养成了"跳过确认"的习惯经常做完才发现方向不对,反复返工先检查自己有没有喂足上下文(目的 / 边界 / 验收标准):这通常能把盘问从五轮压到两轮。真要压缩的是轮数,不是确认本身
让子代理干完活,主代理直接宣布完成、不评审合并后才发现一堆低级问题两级评审是子代理模式的质量闸门,不是可选项。别让"实现者自评"冒充独立评审
多个会话 / 代理在同一分支上开工互相覆盖、合并灾难用 worktree 一人一分区。改同一批文件的活别并行,宁可串行
只信"测试全绿",不信"测试对不对"测试绿了但需求没实现(因为它测的是旧行为)TDD 的灵魂是"先看它为你想要的行为失败"。若测试没失败过,它可能什么都没证明
把探针(spike)结论直接当正式功能用验证代码混进主干,无人负责维护探针的产出是"答案",不是代码。正式实现要走正式流程重做一遍
插件一直不更新,用着旧版技能文档 / 命令对不上SP 默认自动更新;发现版本异常就查官方 README 与 Release Notes,或重装
把"流程"本身当目的,为走流程而走流程一个改文案的任务也开 worktree、写正式设计文档流程按规模缩放:一行改动走 bounded 轻路径即可。框架给的是"完整形态",不是"每次都要走完"
💡 一个可以贴在心里的小判据

当你犹豫"这算不算过度使用"时,问自己:这道流程在防哪一种具体的失败?答得出(防返工、防污染、防假绿、防自嗨、防失忆),就走;答不出,就降一档。上面八条里,凡是让人难受的,几乎都不是"流程本身错了",而是"流程和被防的那件事没对齐"。

15常见问题

Q:它会让我用的模型变强吗?
不会。它不换模型、不加私有接口,只是用技能文件约束工作过程。同一个模型下,装了它的代理会"多走流程",输出质量靠纪律而非更强的模型;更强的模型 + 这套流程 = 更稳。
Q:我完全不懂 Git、也不懂测试,现在装是不是太早?
建议先能跑通你的宿主、完成一次普通对话,再装。装完之后你不需要手敲 Git 命令,但需要理解三个概念:为什么主分支要保持干净(worktree)、什么叫"先写测试"(TDD)、什么叫"独立评审"。这三个是它的价值核心,其余可以交给代理代劳。
Q:它和宿主自带的"技能"机制是什么关系?
它是建立在"代理技能"这套通用约定之上的内容层:宿主提供技能机制(怎么被发现、怎么被加载),SP 提供一套编排好的技能(内容)。你自己写在 ~/.claude/skills/ 或项目里的技能和它并存,互不冲突——它甚至教你怎么写自己的。
Q:会不会每个任务都被迫走完七步、开销爆炸?
不会。技能按命中触发:小改动走 bounded 轻路径,一句话设计即可;纯改文案连 TDD 都可能豁免。真正吃 token 的是 Brainstorming 的盘问与独立评审——那正是它"用 token 换正确率"的设计取舍。嫌贵就把自动触发放松、改用显式斜杠命令。
Q:子代理不继承主会话的上下文,会不会丢掉重要背景?
会,所以它的设计是用任务简报 + 计划 + 台账文件显式传递背景,而不是依赖"记忆"。这也是它坚持把设计、计划、裁定写成文件的原因——文件比会话记忆长寿。"你有没有把上下文都写进简报"是子代理模式跑得好不好的关键。
Q:命令前缀到底是 /brainstorm 还是 /superpowers:brainstorm?
取决于你的宿主与插件版本:部分工具的斜杠命令是裸名,装成命名空间插件的会带前缀。以你装完在 /help 里实际看到的为准,两边触发的是同一个技能。
Q:我想先试试,最便宜的起步是什么?
挑一个你信任的、有测试框架的练习项目(哪怕很空),按 03 节方式 A 装好,然后只做一件事:输入 /brainstorm,描述一个真实存在的小 Bug 或小需求,完整走一遍并观察它每一步在干什么。一次端到端体验胜过十篇文档。
Q:它会不会把简单项目搞得"杀鸡用牛刀"?
框架本身支持轻路径:bounded 改动一句话设计,一行文案改动连 TDD 都常豁免;worktree 和设计文档是"完整形态",不是每次必走。真觉得某条自动触发太吵,就从触发描述里删掉或改成显式命令。可剪裁正是这类"文本即技能"框架的优势。
Q:生成的 spec / 计划文件会污染我的仓库吗?
设计文档会放进仓库(默认 docs/superpowers/specs/,可改位置),这是刻意设计——设计值得版本化、可评审。子代理的进度台账则落在 .superpowers/sdd/<计划名>/,这个目录被 git 忽略,属于过程产物。若你连设计文档都不想留,可以改目录,或接受后删除并把它加进 .gitignore。先确认你的团队是否愿意把设计文档留在仓库。
Q:它和 GSD / BMAD / Spec-Kit / OpenSpec 这些是什么关系?
同一品类的邻居:都想用"流程 / 文档"驯服 AI 编程。SP 的差异化是"完整的、自动触发的、自带评审与子代理编排"的技能框架;像 OpenSpec 更聚焦"用 spec 文件驱动变更"。这类项目互补大于对立,很多人叠着用——用 spec 管理需求,用 SP 管执行纪律。

16术语速查表

这套体系里有不少英文黑话。第三列不是翻译,而是"它为什么重要 / 什么时候用 · 别当什么用"——目标是让你能把这些词放进自己的提示词和对话里。

术语定义为什么重要 / 何时用 · 别当什么用
Skill(技能)一份带触发条件的 Markdown 说明书(SKILL.md),告诉代理在某类任务上必须怎么干整个框架的最小积木。用在你希望代理"自动遵守"的规范上;别当成只能手动敲的命令宏——它的威力在自动触发
Bootstrap(引导)会话启动时注入的一小段上下文,提醒代理"动手前先查有没有相关技能"让"自动"成立的关键一环。别指望每个代理都记得查技能;引导词丢了,技能就可能变摆设(上下文一压缩尤其容易丢)
Harness(宿主)你实际在用的那个 AI 编程工具,负责提供技能机制与命令外壳决定安装命令与命令前缀。别把宿主和 SP 混为一谈:换宿主只换外壳,纪律内容不变
Brainstorming动手前的澄清技能:把模糊需求问成可批准的设计用在任何"会改代码 / 行为"的任务前;别把它当正式需求会议,它产出的是"设计 + 批准",不是"完整方案书"
Spike / Bounded / ArchitecturalBrainstorming 对请求的三条分类路径:求证 / 有界改动 / 架构级设计决定你走多重的流程。拿不准就选更重那条(棘轮只能升不能降);别把"求证型问题"当正式功能一路实现到底
Writing Plan(实施计划)把设计切成 2–5 分钟任务、每个任务带路径 / 代码 / 验证的清单让执行可外包、可评审。用在你准备交给子代理或另一会话跑之前;别写"参考性描述",要写到"换个代理照抄就能干"
Subagent(子代理)主代理派出去专职干一个任务的、上下文干净的独立代理解决长会话记忆丢失与自评失效。用在任务独立、质量要求高的活上;别让多个实现子代理抢同一批文件
Ledger(台账)跨任务记录进度、提交号、评审结论、裁定的文件(progress.md)给"会失忆"的代理做外部记忆。用在整个批量执行期间;别把裁定只放在会话里,压缩后就没影了
Ruling(裁定)控制器对冲突或含糊之处做出的决定,按"决定 — 原因 — 错了的代价"记进台账对应"定夺而非卡住"原则。用在你发现代理纠结于一个它本可自己决定的问题时;别把它当"越权替你做主"——破坏性动作仍然必须停下来问你
Review(评审)由独立代理按严重级别(Critical / Important / Minor)检查改动把"写完自查"升级为"别人挑刺"。用在每批实现之后;别让实现者自评冒充评审
Worktree(工作树)Git 把某个分支单独检出到独立目录的机制让每个任务有干净沙盒、支持并行会话。用在你不想让半成品污染主分支时;别在主分支上让多个代理同时开工
TDD / RED-GREEN-REFACTOR先写会失败的测试、再写最小实现、绿了才重构的流程框架里的第一条铁律,保证代码可回归、需求被断言固化。用在一切核心逻辑上;别豁免"这只是个小改动"——Bug 修复反而更要先复现
Verification(完工前验证)宣布"完成"前出示测试 / 复现 / 影响边界等证据把"应该没问题"堵在门外。用在你收到任何"做完了"的声明时;别满足于"它没报错",要看证据链条
Hook(钩子)宿主在会话开始等固定时点自动执行的一段逻辑是"自动触发"的物理载体。装完没生效,多半是钩子没跑(需重开会话);别指望钩子能替你补齐技能内容
Plugin / Marketplace把技能打包分发、可通过市场安装更新的载体让安装、更新、多工具迁移变简单。用官方 / 可信市场装;别从不明来源下载预编译包
Compaction(上下文压缩)会话太长时,宿主把早期对话压缩掉以腾出空间的过程它是所有"代理忽然失忆"问题的根源,也是为什么关键产物必须落成文件。别指望任何"记忆型提示词"扛过它

17五天练习路线:从"装上"到"用得顺手"

别试图一次学会 14 个技能。给一条按天推进的路线,每一步都有明确的"做完算什么过关"。

Day 1 · 装上并看见它"接管"

按 03 节方式 A 装好;找一个你正在做的真任务走一遍 /brainstorm。过关标准:你能向别人讲清"装了之后,代理拿到改代码的指令会先干什么"。

Day 2 · 只练 TDD 这一步

写一个 30 行的练习函数(校验、格式化都行),严格走红 → 绿 → 重构,包括亲眼看着测试因"功能缺失"而失败。过关标准:你能用自己的话解释"为什么必须先看它失败",而不是只会背口诀。

Day 3 · 学会看产物:设计文档 / 计划 / 台账

让代理做一个稍大的改动(跨 2–3 个文件),然后去读它生成的三份文件。过关标准:你能指出计划里"写得不细、换个代理会卡住"的那一处——这就是评审能力的起点。

Day 4 · 体验子代理与独立评审

用 subagent 模式跑一批 3–5 个独立小任务,留意评审报告里的 Critical / Important / Minor 分级,以及台账里的 Ruling: 行。过关标准:你能说清"为什么不能让写代码的代理自己给自己评审"。

Day 5 · 落地自己的第一个技能

挑一条你们项目最痛的规矩(提交前不许留 console.log 之类),照 13 节写成一个小技能并跑通。过关标准:你能改触发描述,让它只在"该触发时触发"。

📖 学完之后的评判标尺

用得顺手的标志不是"所有任务都走全流程",而是你能为每个任务选对轻重:该轻的轻、该重的重、该让它自动的别拦、该自己拍板的别甩锅给流程。流程是工具,正确率是目的。

如果你想把这套东西带给团队

个人的顺手,不等于团队的共识。要向别人推这套东西,最有效的不是发文档,而是先解决他自己最痛的那一次返工:找一条他刚被坑过的流程("上次改完没测试就上线结果崩了"),演示"如果当时有这条纪律会怎样"。从单点痛点切入,比从"我们该用 SP"的全景提案容易落地得多。

团队层面再往前一步,就是把沉淀的技能文件纳入仓库、走代码评审——技能是文本,天然可 diff、可回滚、可署名。哪天你想改规矩,改的是能追溯到人的一次提交,而不是某个人脑子里的记忆。

18参考来源与证据边界

本文核对过的来源

哪些数字是我实际抓到的

285,724stars(GitHub API,2026-09-12 抓取)
25,561forks(同一次抓取)
2025-10-09仓库创建时间(同一次抓取)
v6.3.0最新 Release(2026-08-12);仓库最后推送 2026-09-12

抓取方式是 GitHub 公开 API 的两个端点:api.github.com/repos/obra/superpowers(仓库元信息与 star 数)和 api.github.com/repos/obra/superpowers/releases(版本与发布日期)。你可以自己再跑一遍对照——这也是"热度数字只能当量级参考"的原因:它会持续变化。

证据边界与时效

⚠️ 时效说明

本文校对时点为 2026-09-13,锚定的最新官方发行为 v6.3.0(2026-08-12)。以下内容属于"快照式"陈述,会随上游演进而变:① star 数、fork 数等热度数字;② 技能清单与目录布局(SP 迭代快且多数更新是自动的);③ 斜杠命令的前缀形态(随插件命名空间约定变化);④ 各宿主的安装命令(v6.x 期间 Devin CLI、Hermes、Grok、Factory Droid、Antigravity 的装法都在变)。动手安装或写作引用前,请以官方仓库最新 README、各技能目录下的 SKILL.md 与 Release Notes 为准。

📖 一个只有读过发布说明才知道的例子

v6.2.0 的发布说明里记了一件很值得记住的事:他们做过一次"全局压缩"——把技能里所有回顾段、社交证明、"你用了会得到什么"的推销口气都删掉。其中 TDD 的"为什么顺序重要"那一节被整节删除后,测试优先行为在压力测试下明显退化(对照组 8/10,处理后 5/10),于是那些反驳被改写成"常见借口对照表"的一行,重新放回代理真正会撞上它的位置。"能删的都删"不是无条件的——删错了要能测出来,而且改回来。

99一句话总结

🎯 核心要点

SP 不是让 AI"更会写代码"的提示词库,而是把专业软件工程里的几条纪律(先澄清 → 先隔离 → 切计划 → 派执行 → 强制先写测试 → 独立评审 → 干净收尾)自动装进 AI 编程代理的一叠技能文件——它的价值不在"跑得快",而在"不跑偏、可回归、好协作"。

下次你让 AI 改代码时,看它是先问你、先写测试,还是闷头就改:前者说明流程已经接管,你正被一套有纪律的工作方式保护着。而当任务小到不需要保护时,你也有权利把它关掉一小会儿——流程按规模缩放,只有"等你说可以"这一步不缩放。

⌂