Superpowers 中文操作手册
完整的软件开发方法论——让 AI Agent 像有纪律的工程师而非野生大模型
1. 什么是 Superpowers
Superpowers 是 Jesse Vincent(前 Twitter 工程师,blog.fsck.com)开源的 AI 编码方法论框架。它由 14 个高度结构化的 skill(markdown 文件)组成,不是命令集合,而是一套软件工程方法论。
"Claude can work autonomously for a couple hours at a time without deviating from the plan you put together."
(写好计划后,Claude 能连续自主工作几小时不偏离)
它和其他 AI 编码工具的关键差异
| 维度 | 普通 Agent | Superpowers |
|---|---|---|
| 触发方式 | 需要你显式说命令 | 自动触发(system prompt 强制) |
| 方法论 | 每次写代码都重头来 | TDD / 系统调试等被编码成 skill |
| 长时执行 | 1 小时后偏离 plan | 子 Agent 委派,每个 task 独立 context |
| 强制力 | "建议" TDD | "删除你违规写的代码" 强制 TDD |
| 自我验证 | 说"完成"就完成 | 必须出示运行命令证据 |
核心组件
Superpowers = 14 个 skill + 初始指令(system prompt 注入):
- 初始指令:让 Agent 在每次响应前必须 check 是否有相关 skill
- 14 skill:覆盖 brainstorming、TDD、调试、Git Worktree、子 Agent 委派、代码 review 等核心工程动作
它适合谁?
- 独立开发者:希望 AI 长时间无人值守工作
- 资深工程师:受不了 AI "瞎写、瞎改、瞎说完成"
- 追求代码质量:想强制 TDD、root-cause 调试
- 团队领导:让 AI 输出符合工程师纪律的代码
2. 安装方式
Superpowers 已支持 8 个 AI 编码 host。每个 host 安装方式不同——如果你用多个 host 要分别安装。
2.1 Claude Code(最推荐 host)
方式 A:官方插件市场
/plugin install superpowers@claude-plugins-official
方式 B:Superpowers 自家市场(含其他相关插件)
/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace
2.2 OpenCode(本机已通过此方式安装)
对 OpenCode Agent 说:
Fetch and follow instructions from
https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.opencode/INSTALL.md
Agent 会自动 fetch 安装指令并执行(拉取仓库、注册到 OpenCode 的 plugin/skill 目录)。
ls ~/.cache/opencode/packages/superpowers@*/node_modules/superpowers/skills/
应看到 14 个 skill 目录。每次 OpenCode session 启动会自动加载。
2.3 其他 host
| Host | 安装命令 |
|---|---|
| Codex CLI | 在 Codex 内输入 /plugins,搜索 "superpowers",选择 Install Plugin |
| Codex App | 侧栏 Plugins → Coding 分类 → Superpowers → 点 + |
| Factory Droid |
|
| Gemini CLI |
|
| Cursor | /add-plugin superpowers(Cursor Agent chat 中) |
| GitHub Copilot CLI |
|
3. 核心理念
3.1 三大铁律(Iron Laws)
Superpowers 在 skill 文件里强制 3 条铁律。新手第一次见到会感到震撼——它真的会执行。
铁律 #1:TDD 不可违反
没有失败的测试,就不能写实现代码
test-driven-development skill 会让 Agent 直接删除你写的代码,强制重新先写 test。Jesse 在 SKILL.md 写:"Write code before the test? Delete it. Start over."
铁律 #2:调试不可绕过根因
没找到根因,不允许提出修复方案
systematic-debugging skill 强制走 4 阶段:Reproduce → Isolate → Fix → Verify。每个阶段不完成不能进下一阶段。
铁律 #3:完成必须有证据
没有新鲜验证证据,不允许声称完成
verification-before-completion skill 检查 5 件事:
- IDENTIFY:什么命令能证明这个声明?
- RUN:执行完整命令(不能复用旧输出)
- READ:完整读输出,检查 exit code,统计失败数
- VERIFY:输出是否真的支持你的声明?
- ONLY THEN:才能说"完成"
3.2 自动触发机制
不像 gstack 需要你手动 /skill,Superpowers 通过 using-superpowers skill 在 system prompt 注入这段:
If you think there is even a 1% chance a skill might apply
to what you are doing, you ABSOLUTELY MUST invoke the skill.
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE.
YOU MUST USE IT.
This is not negotiable. This is not optional.
结果:Agent 看到任何"创造性任务"都会自检:是否要先 brainstorming?是否要 using-git-worktrees?这种自动检查在每次响应前发生。
3.3 指令优先级体系
三层优先级,用户指令永远最高:
| 优先级 | 来源 | 含义 |
|---|---|---|
| 🥇 最高 | 用户在 CLAUDE.md / AGENTS.md 中的明确指令 | "这个项目不要 TDD" — Superpowers 让步 |
| 🥈 中 | Superpowers skill | 覆盖默认 system prompt 行为 |
| 🥉 低 | 默认 system prompt | Claude / OpenCode 等的原始行为 |
# AGENTS.md
This is a prototype, skip TDD. Move fast.
Superpowers 立即让步。
4. 14 个 Skill 详解(含触发条件、设计原因、使用好处)
每个 Skill 都给出 4 个维度的解释:
- 触发条件:什么场景下 Agent 会自动调用它
- 具体行为:被调用后做什么
- 为什么这样设计:背后的工程学原理
- 这样用的好处:相比"AI 直接写"能避免什么坑
元能力(2 个)
using-superpowers
Meta · 总入口触发条件:每次会话开始(system prompt 强制注入)。Agent 收到任何用户消息前,必须先 check 是否有相关 skill 适用。
具体行为:
- 注入"1% 规则":哪怕只有 1% 可能某 skill 适用,也必须 invoke
- 建立优先级:用户指令 > Superpowers skill > 默认 system prompt
- 提供 platform tool 映射(Claude / OpenCode / Gemini 各自的工具名)
为什么这样设计:
Skill 默认是被动的——Agent 想用才用。但 AI 经常"觉得不需要"而跳过 brainstorming,直接写出错误代码。using-superpowers 把"是否使用 skill"从偏好变成强制,关闭了 Agent "走捷径"的退路。
这样用的好处:
- ✅ 方法论真的会被执行:不是"AI 想起来才用"
- ✅ 用户指令永远最高:你说"skip TDD",立即生效
- ✅ 跨平台一致:同样的 skill 在 Claude/OpenCode/Gemini 行为相同
writing-skills
Meta · 自定义触发条件:用户要求"创建新 skill"或"修改现有 skill"时自动激活。
具体行为:
- 引导你写符合 Superpowers 规范的 SKILL.md
- 强制包含 frontmatter(name + description)
- 提供测试方法论(怎么验证 skill 有效)
- 检查 skill 是否会与现有 14 个冲突
为什么这样设计:
Superpowers 官方不接受社区贡献新 skill(维护成本高)。但 Jesse 提供了 writing-skills 让你在自己的项目 / 团队内写私有 skill。这是一种"授人以渔"——核心 14 个 skill 不变,但你可以扩展。
这样用的好处:
- ✅ 团队规范代码化:把"我们项目的约定"写成 skill
- ✅ 跨项目复用:在 A 项目写的 skill 拷到 B 项目
- ✅ 方法论沉淀:踩过的坑写成 skill,团队不再重复踩
协作类(10 个 - 核心)
brainstorming · 入口 Skill
⚠️ HARD-GATE · 必经触发条件:你说"做一个 X"、"加一个 Y"、"改一下 Z" 时必须激活。HARD-GATE 规则:「在你完成 brainstorming 并获得用户对设计的确认前,禁止调用任何实现 skill、写任何代码、scaffold 任何项目。」
具体行为(9 步 checklist):
- 探索项目上下文(读文件 / docs / 最近 commit)
- (如有视觉问题)单独发一条消息"是否要开 visual companion"
- 苏格拉底式追问(一次只问一个):理解目的 / 约束 / 成功标准
- 提议 2-3 个方案,含 trade-off 和推荐
- 分章节展示设计,每节让用户确认才继续
- 写 design doc 到
docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md并 commit - Spec 自检(看是否有占位符、矛盾、模糊、范围问题)
- 让用户 review 写好的 spec
- 转交
writing-plansskill
为什么这样设计:
Jesse 的核心洞察:"简单"项目恰恰是浪费工作最多的地方——因为它太简单,所以没人 brainstorm,所以隐藏的假设没暴露,所以做出来不是用户想要的。HARD-GATE 把"先 brainstorm"从建议变成宪法。
"一次问一个问题" 是认知科学——人脑同时回答多问题会变烂。"分章节确认" 是为了让用户能具体反馈而不是笼统地"看着差不多"。
这样用的好处:
- ✅ 错误前置发现:在 design 阶段(5 分钟)发现 = 在代码阶段(5 小时)发现
- ✅ 有 design doc 可追溯:commit 进 git,未来可查
- ✅ 用户参与感强:每章确认 → 用户真的在共建
- ✅ 下游 skill 输入清晰:design doc 直接喂给 writing-plans
writing-plans
Collaboration · 计划生成触发条件:brainstorming 完成后自动衔接,或你说"为这个 spec 写计划"时。
具体行为:
- 把 design doc 拆成2-5 分钟粒度的 task
- 每个 task 包含:完整代码、文件路径、测试、验证步骤
- Plan header 强制写明:Goal / Architecture / Tech Stack
- 用 checkbox(
- [ ])标记,方便后续追踪 - 保存到
docs/superpowers/plans/YYYY-MM-DD-<feature>.md
关键设计假设:执行的工程师"对项目零知识、品味差、不会写测试"。所以 plan 必须包含一切——这意味着子 Agent 拿到 plan 就能跑。
为什么这样设计:
2-5 分钟粒度不是随意定的——这是子 Agent 不偏离的最优颗粒。粒度太大(30 分钟)→ subagent 中途偏离;太小(30 秒)→ 调度开销大于实际工作。Jesse 的实测:2-5 分钟是甜点。
"假设工程师品味差" 是为了让 plan self-contained——subagent 在隔离 context 下能完成,不用回头问主 Agent。
这样用的好处:
- ✅ 每个 task 是原子的:完成 = commit,失败 = 回滚
- ✅ 可暂停可恢复:tasks.md 的 checkbox 即进度
- ✅ 多人接力友好:A 做完 1-3,B 接 4-7
- ✅ 是 subagent-driven 的输入:粒度不对则下游崩
subagent-driven-development · 招牌
Collaboration · 长时执行触发条件:plan 已写好,用户说"开始"或"go"。需要满足:① 有 plan ② 任务多数独立 ③ 同一 session 执行。
具体行为(每 task 一个循环):
- 主 Agent 派 implementer subagent(带 implementer-prompt.md)
- subagent 实现 + 测试 + commit + 自我 review
- 主 Agent 派 spec reviewer subagent(独立 context)
- spec reviewer 检查代码是否匹配 spec → 不匹配则 implementer 修
- 主 Agent 派 code quality reviewer subagent(再独立 context)
- quality reviewer 审代码质量 → 有问题则 implementer 修
- TodoWrite 标记 task 完成,下一个 task 重复
关键纪律:连续执行不停顿。"Should I continue?" 类的提问被禁止——用户说了"开始"就一直跑到完。
为什么这样设计:
核心问题:为什么不让主 Agent直接做?答案——上下文污染。主 Agent 跑 1 小时积累的对话历史会让它后续判断变差("我之前是不是说过 X")。Subagent 每次拿全新 context,精确构造它需要的信息(plan + 当前 task),跑完即销毁。
两阶段 review(spec 合规 → 代码质量)也是独立 context——避免 reviewer 被 implementer 的"自圆其说"带偏。这相当于三人轮岗盯一个 task。
这样用的好处:
- ✅ 长时无人值守:可以连续 2-4 小时不偏离
- ✅ 主 Agent context 干净:保留给协调而非实现
- ✅ 三重审查:implementer + spec reviewer + quality reviewer
- ✅ 失败可定位:哪个 subagent 崩了哪个 task 失败
executing-plans
Collaboration · 批量执行触发条件:plan 已写好,但你想"换 session 执行"或"加人工 checkpoint"。
具体行为:
- 批量执行 task 但每批后停下问用户
- 适合"开新窗口、用新 agent 跑别人写的 plan"
- 慢于 subagent-driven(有人工 checkpoint)
- 但更可控(人工干预点多)
为什么这样设计:
不是所有场景都适合 subagent-driven。比如:
- 团队成员 A 写了 plan,团队成员 B 要在自己的 session 执行
- 高风险变更需要每隔几个 task 人工 review
- token 预算紧张(subagent 多消耗 token)
这时用 executing-plans。
这样用的好处:
- ✅ 跨 session 友好:plan 写一次执行多次
- ✅ 人工 checkpoint:高风险场景安全感
- ✅ token 节约:相比 subagent-driven 省 30-50%
dispatching-parallel-agents
Collaboration · 并行加速触发条件:你面对 2+ 个独立任务(无共享状态、无顺序依赖)。
具体行为:
- 检测任务是否真独立(如有依赖会拒绝并行)
- 用
using-git-worktrees创建多个隔离工作区 - 派多个 subagent 同时跑各自的 worktree
- 主 Agent 等所有完成后汇总结果
为什么这样设计:
大多数 sprint 末期有 5-10 个独立小 feature(404 页 / favicon / 健康检查端点)。串行做要 6 小时,并行做 1.8 小时。独立性是关键——如果 task 2 依赖 task 1 的某个 util 函数,并行会失败。所以这个 skill 先做依赖分析。
这样用的好处:
- ✅ 3-4× 加速:相比串行
- ✅ worktree 隔离:失败的 subagent 不影响其他
- ✅ 资源利用率高:CPU 闲着不如多线程跑
using-git-worktrees
Collaboration · 工作区隔离触发条件:开始 feature 工作需要隔离时;或 executing-plans 之前。
具体行为(3 步检测):
- Step 0:检测已有隔离 — 通过
git rev-parse --git-dir判断当前是否已在 worktree。注意排除 submodule 误判。 - Step 1a:用平台原生 worktree 工具 — 如果你的 IDE / harness 自带
EnterWorktree、WorktreeCreate、/worktree命令、--worktreeflag,用它而不是 git - Step 1b:fallback 到 git worktree add — 没有原生工具时才退回 git CLI
为什么这样设计:
"never fight the harness" 是 Jesse 的设计原则。如果你的 IDE 已经有 worktree 管理(如 Conductor),用 git worktree add 会创建幻象状态——IDE 看不见、管不了。先尊重 harness,没有时才 fallback。
Submodule 排除是真实坑——很多 setup 在 submodule 内被误判为 worktree,导致疯狂创建嵌套。
这样用的好处:
- ✅ 主分支永远干净:feature 在隔离环境跑
- ✅ 失败可丢弃:worktree 删除即回归
- ✅ 多 feature 并行:每个 worktree 一个 feature
requesting-code-review
Collaboration · 提交 review触发条件:完成 task / 实现完功能 / 准备合并前。
具体行为:
- 对照 plan 检查每条要求是否完成
- 测试覆盖度核对(每个新功能有对应 test 吗?)
- 边界条件 checklist(empty / null / overflow)
- 错误处理 checklist(每个 await 有 catch 吗?)
- 按严重度分类问题:CRITICAL / HIGH / MEDIUM / LOW
为什么这样设计:
"自检"和"互检"差别巨大——人写完代码后倾向于"看着对",因为大脑模式补全。requesting-code-review 强制 Agent 把 plan 当 checklist 逐条核对,而不是凭感觉。
这样用的好处:
- ✅ 客观标准:plan 写了什么必须做到
- ✅ 分级反馈:CRITICAL 的拦截合并,LOW 的可后续
- ✅ 覆盖盲区:边界条件 / 错误处理是 AI 最容易漏的
receiving-code-review
Collaboration · 反对盲从触发条件:收到 code review 反馈,特别是反馈不清楚或技术上可疑时。
具体行为:
- 不立即认错
- 验证 reviewer 的论点(reviewer 也会犯错)
- 如果反馈错误:用技术严谨性反驳
- 如果反馈正确:实现修复 + 解释思路
- 区分"主观偏好"和"客观错误"
为什么这样设计:
AI 默认是讨好型人格——人类一反对,AI 就改。这导致很多正确的代码被改坏,因为 reviewer 自己也错了但 AI 不反驳。receiving-code-review 教 Agent "performative agreement is worse than disagreement"。
这样用的好处:
- ✅ 避免"改坏":reviewer 错时 AI 不会盲从
- ✅ 提升 review 质量:reviewer 也会更严谨
- ✅ 团队学习机会:技术分歧公开化讨论
finishing-a-development-branch
Collaboration · 收尾触发条件:所有 task 完成,准备做最后处置时。
具体行为:
- 跑完整测试套件
- 验证 baseline(之前通过的还在通过)
- 展示 4 个选项让用户选:
- Merge:合并到主分支
- PR:开 Pull Request
- Keep:保留 worktree(继续做)
- Discard:丢弃工作(实验失败)
- 如选 merge/PR:清理 worktree
为什么这样设计:
没这个 skill 的常见问题:feature 做完后worktree 留在那,一周后 git worktree list 里有 8 个孤儿。finishing-a-development-branch 把"收尾"变成不可跳过的最后步骤。
4 个选项覆盖所有真实情况——包括"丢弃"(PoC 失败也是常见结局)。
这样用的好处:
- ✅ 没有孤儿 worktree:项目目录干净
- ✅ "丢弃"被合法化:不需要为失败 PoC 强行 merge
- ✅ 测试 baseline 校验:合并前最后一道检查
测试类(1 个 - 最严格)
test-driven-development · 铁律
⚠️ IRON LAW · 不可违反触发条件:实现任何 feature / bugfix 之前。
具体行为(RED-GREEN-REFACTOR):
- RED:写一个测试(必须失败,因为函数还不存在 / 行为还没实现)
- 验证 RED:跑测试,看到它失败。如果意外通过 = 测试有 bug
- GREEN:写最少代码让测试通过(即使是 hardcoded)
- 验证 GREEN:跑测试,看到全绿
- REFACTOR:重构代码(可能从 hardcoded 改成真正算法),保证测试还绿
- commit,进入下一个 task
违反铁律的处理:
如果你违反顺序先写了实现代码:
Don't keep it as "reference"
Don't "adapt" it while writing tests
Don't look at it
Delete means delete
→ Implement fresh from tests. Period.
Skill 会强制 Agent 删除你写的代码,重新先写 test。
为什么这样设计:
核心原则:"If you didn't watch the test fail, you don't know if it tests the right thing."
这听起来教条,但有深刻原因:测试代码本身也会有 bug。如果你先写实现再写"测试",你的测试可能是"凑出来"匹配实现的,根本不是真测——比如测试了 add(1,1) 但其实你写的是 add(a,b) { return 2 },测试还是过!
"看到 RED" 是验证测试有效的唯一方式——只有先看到失败,才能保证 GREEN 是真的修复了问题。
这样用的好处:
- ✅ 测试有效性保障:每个测试都被验证过能 catch bug
- ✅ 设计从外向内:先想"怎么用"再想"怎么实现"
- ✅ 覆盖率自然高:每行实现代码都有对应测试
- ✅ 重构信心:32 个 test 全绿 = 行为快照锁定
调试类(2 个 - 铁律 + 验证)
systematic-debugging · 铁律
⚠️ IRON LAW · 不可违反触发条件:遇到 bug / 测试失败 / 意外行为时必须激活,特别是:
- 时间紧(紧急情况下乱猜诱惑大)
- "应该改一下就好"看起来很明显
- 已经试了几次修复
- 之前的 fix 没生效
- 你不完全理解问题
具体行为(4 阶段,每阶段必须完成才能进下一阶段):
Phase 1: ROOT CAUSE INVESTIGATION
- 仔细读错误信息:完整读 stack trace,记下 line / file / error code
- 稳定复现:写脚本一定能触发,否则没法验证修复
- 追数据流:从输入到错误点,每一步状态是什么
- 列假设:H1 / H2 / H3,每个写"如何验证"
- 逐个验证假设:直到找到真正根因
Phase 2: ISOLATE
- 用 root-cause-tracing 子技术:反向追踪到最早的"错误注入点"
- 不是症状(页面白),是根因(getServerSideProps 用模块级变量)
Phase 3: FIX
- 用 defense-in-depth 子技术:多层防御
- L1:根因修复(最重要)
- L2:断言或 invariant,防止类似 bug 再现
- L3:监控告警,未来出问题能马上发现
Phase 4: VERIFY
- 用 condition-based-waiting:可靠等待异步条件
- 触发 verification-before-completion skill 强制出示证据
- 跑 1000 次复现脚本看是否还崩
为什么这样设计:
"症状修复"是软件工程最大祸根——表面修了,根因还在,过几天换种症状再爆。systematic-debugging 的 4 阶段是消除症状修复诱惑的护栏。
"越紧急越要慢"是反直觉但正确的——慌乱中乱试更可能引入新 bug,把 5 分钟问题拖成 5 小时。
这样用的好处:
- ✅ 真正修复:根因消除而非症状缓解
- ✅ 纵深防御:L2/L3 防御让类似 bug 不再现
- ✅ 调试可复现:每个假设和验证都记录
verification-before-completion · 铁律
⚠️ IRON LAW · 不可违反触发条件:你要声称"work is complete / fixed / passing"前;或要 commit / PR 前。
具体行为(5 步 Gate Function):
- IDENTIFY:什么命令能证明这个声明?
- RUN:执行完整命令(不是部分、不是上次缓存的)
- READ:读完整输出,检查 exit code,统计失败数
- VERIFY:输出是否真支持声明?
- 如果否:陈述实际状态 + 证据
- 如果是:陈述声明+ 证据
- ONLY THEN:才能说"完成"
禁用词(红旗 - 看到 STOP):
- "should" / "probably" / "seems to"
- "Great!" / "Perfect!" / "Done!"(验证前的满意表达)
- "trust the agent's report"(信子 Agent 的报告)
- "just this once"(只此一次)
不充分的证据:
| 声明 | 需要 | 不充分 |
|---|---|---|
| 测试通过 | 测试输出 0 失败 | "上次跑过" |
| Linter 干净 | linter 输出 0 错 | "看着应该过" |
| 构建成功 | build exit 0 | "linter 过了" |
| Bug 已修 | 原症状测试通过 | "代码改了" |
| 子 Agent 完成 | VCS diff 显示改动 | "agent 报告 success" |
为什么这样设计:
"声称完成而不验证 = 不诚实,不是高效"。这是 Jesse 的核心信念。AI 经常说"已修复"但实际没跑——因为它"觉得应该好了"。这种认知幻觉是软件 bug 的最大来源之一。
Gate Function 把"我觉得对"变成"我有证据证明"。这种思维习惯一旦养成,会贯穿你所有工程动作。
这样用的好处:
- ✅ 消除"AI 装作完成":必须出示运行证据
- ✅ 消除"我觉得过了":用客观输出代替主观感受
- ✅ 训练工程严谨:长期使用会改变你的工程直觉
5. 完整工作流
典型的 Superpowers 工作流是自动激活的——你只需要描述要做什么,skill 自动接力:
苏格拉底设计
隔离工作区
2-5 min/task
每 task 派子 agent
RED-GREEN-REFACTOR
review checklist
必须有证据
merge/PR/cleanup
实际对话样例
AI: 我用 brainstorming skill 来精炼需求。
项目背景探索完成。我想问几个问题(一次一个):
Q1: 这是个人玩具还是生产工具?
You: 生产工具,团队 5 人会用
AI: Q2: 配置文件是 YAML 还是 TOML 倾向?
...
[省略 4 个问题]
我提议 3 种方案:
A. Bun + clipanion(速度快,但生态窄)
B. Node + commander(生态好,但慢)
C. Deno + cliffy(现代化但团队不熟)
我推荐 A。你的选择?
You: A
AI: [呈现设计第 1 节] 数据流图...
[等你确认] OK?
You: OK
AI: [第 2 节] 配置 schema... [等确认]
...
所有节确认后:写 design doc 到
docs/superpowers/specs/2026-05-20-myctl-design.md
切换到 writing-plans skill。
我会拆 14 个 2-5 分钟 task,要进 worktree 吗?
You: 要
AI: [using-git-worktrees] 创建 ../myctl-feat
[writing-plans] 14 个 task 写入 plan.md
请 review plan,确认后说 "go"
You: go
AI: 开始 subagent-driven-development。
[3 小时后] 14/14 完成。
切换到 finishing-a-development-branch...
测试 47/47 通过。要 PR 吗?
6. 实战示例
6.1 夜间长时执行(Superpowers 招牌场景)
22:30 You: 写一个跨平台 CLI 工具叫 myctl,需要 init/add/remove/list
4 个子命令,配置 ~/.myctl.yaml,TypeScript + Bun
22:30 brainstorming: 14 个澄清问题完成
22:35 writing-plans: 14 个 task 计划已写入 plan.md
22:36 You: go
22:37 using-git-worktrees: 创建 ../myctl-feat
22:38 Subagent-1: task-1 (init 子命令)
TDD RED: 测试 init creates ~/.myctl.yaml ... FAIL ✓
TDD GREEN: 实现 src/commands/init.ts ... PASS ✓
review: 通过 spec + quality
22:43 Subagent-2: task-2 (add 子命令)
... [每个 4-6 分钟]
01:18 task-13 完成(互不依赖的并行被自动调度)
01:24 task-14 完成(文档)
01:25 finishing-a-development-branch: 47 个测试全过
提示:merge 还是 PR?
08:00 You: 看到 plan 100%,发个 PR 吧
08:01 AI: 已开 PR #42 https://github.com/.../pull/42
实战 Tips
- 布置任务后不要打断 subagent,让它跑完。打断 = 污染主 Agent 上下文
- 早上看 plan.md 进度,能快速判断是否需要介入
- 失败的 task 会被标记 BLOCKED,主 Agent 会停止等你
6.2 强制 TDD 重构遗留代码
You: 重构 calculatePricing 函数(800 行 god function),
拆成 5 个小函数,行为完全不变
AI [TDD skill 自动激活]:
启用 TDD 模式重构。
第 0 步:写 32 个 characterization tests 覆盖现有行为
- 7 个边界(0、负数、null、empty)
- 12 个折扣组合
- 8 个货币转换
- 5 个 promo code
全部 PASS ✓ —— 现在我有"行为快照"
Refactor 1: 抽 calculateBasePrice
跑 32 个 test... 32/32 PASS ✓
Refactor 2: 抽 applyDiscounts
跑 32 个 test... 31/32 PASS ⚠️
[verification-before-completion 触发]
我不能声明完成。失败:
✗ test_promo_VIP_with_stacking
分析:promo "VIP" 的折扣顺序变了。
回滚 refactor 2。
Refactor 2 (重试): 保留原折扣顺序
跑 32 个 test... 32/32 PASS ✓
commit
... [继续 refactor 3-5]
最终:5 个新函数,32/32 测试通过,行为完全一致。
6.3 系统化调试:复杂 race condition
You: 帮我修这个偶发空白页 bug,每天 1-3 次,重启就好
AI [systematic-debugging skill 自动激活]:
启用 systematic-debugging。铁律:未完成 Phase 1 不能 fix。
═══════════════════════════════════════
Phase 1: REPRODUCE
═══════════════════════════════════════
读 logs/2026-05-15-bug.log...
21 次空白页都发生在 60s 内有 ≥3 个并发请求。
写 stress-test.ts 模拟:
- 60s 内 5 个并发 SSR 请求
- 本地复现率 100% ✓
REPRODUCE 阶段完成。
═══════════════════════════════════════
Phase 2: ISOLATE
═══════════════════════════════════════
root-cause-tracing:
用户请求 → SSR → getServerSideProps → 数据 fetch
发现:getServerSideProps 中的 globalCache 是
模块级变量,第二个请求覆盖了第一个的 ctx。
ISOLATE 阶段完成。根因:模块级状态 + SSR 并发。
═══════════════════════════════════════
Phase 3: FIX
═══════════════════════════════════════
defense-in-depth 三层防御:
L1: globalCache 改为 per-request scope (AsyncLocalStorage)
L2: 加 invariant 断言不允许跨请求复用
L3: 加 telemetry 监控异常情况
Fix 实现 ... commit ✓
═══════════════════════════════════════
Phase 4: VERIFY
═══════════════════════════════════════
[verification-before-completion 触发]
- 跑 stress-test.ts 1000 次 → 0 个失败 ✓
- 单元测试覆盖 race 场景 → PASS ✓
- 部署 staging 监控 30 分钟 → 0 异常 ✓
确认:bug 已修复(不仅"我觉得修了")。
7. 实战经验总结
1核心红利:长时自主执行(数小时)
这是 Superpowers 最值钱的能力。其他工具的 Agent 跑 1 小时就开始偏离 plan,Superpowers 的 subagent 每个跑完即退出,主 Agent 只负责调度,上下文污染最小。
2布置任务后不要打断
看到 subagent 在跑,不要中途插话。要等它跑完一个 task 或 BLOCKED 后再介入。打断会污染主 Agent,让后续 task 偏离。
3写 plan 时让 AI 拆到极细
Plans 拆到 2-5 分钟/task 的粒度才能真正 subagent-driven。粒度太大(30 分钟+)的 task 容易在 subagent 内部偏离。
4TDD 在 PoC 阶段开关
在项目根写 AGENTS.md / CLAUDE.md:
# PoC 阶段
This is a prototype. Skip TDD for now. Move fast.
# 转生产前删除上面这行
用户指令优先级最高,Superpowers 让步。
5用 git worktree 做真并行
using-git-worktrees + dispatching-parallel-agents 组合可同时开 3-5 条独立分支。每个分支隔离,即使一个 subagent 写崩了不影响其他。
6调试不要让 AI 跳过 Phase 1
"赶时间也要走 Reproduce 阶段"。systematic-debugging 的 4 阶段顺序不可跳跃。新手最爱跳到 FIX,结果"修了一处坏了三处"。
7verification-before-completion 是反"AI 装作完成"的终极武器
AI 经常说"已修复"实际没跑。这个 skill 强制:声明完成 = 必须出示运行命令的 fresh 输出,否则不算。看到 AI 说"完成"时记得追问"verification 命令的输出呢?"
8worktree 用完一定要 finishing-branch 清理
Superpowers 的 git worktree 用完要 finishing-a-development-branch 收尾,否则一周后你会发现有 8 个孤儿分支。
9受不了"AI 太啰嗦" → 那是优势
新手常觉得 Superpowers 的 Agent 反复确认很烦。这是它的核心机制——确认本身就是减少错误的关键。如果你只想要"快速生成代码",Superpowers 不适合你(用普通 Agent + Tab 补全更好)。
10跨项目复用方法论
Superpowers 是方法论级别的工具。在 A 项目用熟了 TDD / 系统调试这套,在 B 项目同样适用。不像 gstack / OpenSpec 是项目级配置,Superpowers 是个人能力升级。
- 没有产品视角的"挑战需求"机制(gstack 强项)
- 没有 spec 文件持久化(OpenSpec 强项)
- 对真实浏览器 QA、PR 自动 ship 不太管
- 新手常觉得"啰嗦"——它确实会反复确认
- token 消耗大(每个 task 一个 subagent)
8. 常见问题
Q1:装了但 Agent 没自动触发 skill?
- 检查 system prompt 是否包含
using-superpowers指令(OpenCode 用户在对话开头应能看到) - 确认 skill 目录存在:
ls ~/.cache/opencode/packages/superpowers@*/node_modules/superpowers/skills/ - OpenCode 重启 session 试试
Q2:subagent 跑到一半失败怎么办?
Superpowers 的设计:subagent 报告 BLOCKED → 主 Agent 停止等你 → 你给信息 → 主 Agent 派新 subagent 重试该 task。
不要试图让原 subagent 继续——它的 context 已坏。
Q3:TDD 让我无法写"探索性代码"?
解法 1:在项目根 CLAUDE.md 写 "skip TDD for prototyping"
解法 2:在该次任务说 "skip TDD this time, prototype only"
解法 3:用 git worktree 开 prototype 分支,不开 TDD,验证 idea 后切回主分支重写
Q4:subagent token 用得太多?
这是 Superpowers 的设计 trade-off:用 token 换正确性。优化方向:
- plan 阶段拆得更细,subagent 上下文更小
- 避免在 brainstorm 阶段塞过多无关项目背景
- 预算紧时用 Sonnet 做 subagent,Opus 做主 Agent 调度
Q5:和 OpenCode 自带的同名 skill 冲突?
OpenCode 内置一些 skill(如 brainstorming)。Superpowers 的 skill 优先级更高,因为它在 system prompt 强制注入。冲突时 Superpowers 覆盖。
Q6:如何升级 Superpowers?
| Host | 升级方式 |
|---|---|
| Claude Code | 大多数自动;手动重装 plugin |
| OpenCode | 对 Agent 说 "fetch and follow … INSTALL.md" 重新安装 |
| Gemini CLI | gemini extensions update superpowers |
| 其他 | 各自的 plugin update 命令 |
Q7:能贡献新 skill 吗?
官方注明:一般不接受新 skill 贡献。原因是 skill 必须在所有支持的 host 上工作,新 skill 维护成本高。
但你可以用 writing-skills 在自己项目里写私有 skill,或者 fork 仓库自用。
Q8:和其他工具冲突吗?
不冲突。三个 AI 编码工具命名空间隔离:
- Superpowers:自动触发(system prompt)
- OpenSpec:
/opsx:* - gstack:
/<skill-name>
9. 参考资源
- GitHub 仓库:obra/superpowers
- 原始发布博文:Superpowers (2025-10-09)
- 作者博客:Jesse Vincent's blog
- Discord:Superpowers Discord
- Issues:GitHub Issues
- 赞助作者:github.com/sponsors/obra