装完 superpowers 的 Claude Code,第一件事是拒绝我写代码

大家好,我是飞飞。
上周三晚上十一点半,我在 Claude Code 里敲了一句:”帮我给博客加个标签云组件,点了能筛选文章那种。” Enter 按下去大概十秒,屏幕上弹出来一行字——
“开始之前我想确认一下你这个标签云的用户路径:用户是更常在首页找热门标签,还是更常从单篇文章底部跳到同标签列表?”
我的左手小指还搭在 Enter 键上没松开,右手伸向鼠标想把这行字划掉重说,又缩回来——因为几个小时前,同一台电脑同一个 Claude,我让它改个 CSS 样式它已经啪啪写三十行代码怼过来了。几小时中间我只做了一件事:装了 superpowers。
于是我把伸向鼠标的手收回来,开始认真回答它那个用户路径的问题。
它到底是什么
先给还没听过这东西的朋友交个底。
superpowers 是 Jesse Vincent(Keyboardio 创始人、Prime Radiant 的人)在 2025 年 10 月 9 日开源的一个 Claude Code 插件。那天有意思:Anthropic 早上刚刚上线了 Claude Code 的 plugin 系统,Jesse 下午就把自己过去两周偷偷攒的工作流打包扔到了 marketplace。他自己在博客里写:”本来还想再打磨几周,结果 Anthropic 这波催得我必须发。”
装它一共两条命令:
1 | /plugin marketplace add obra/superpowers-marketplace |
装完重启 Claude Code,会话开头会被注入一段 prompt:
1 | <session-start-hook><EXTREMELY_IMPORTANT> |
就这两行,是整个系统的启动器。Claude 一读到就会去扫仓库里十几个 skill 文件,根据你接下来说的话自动匹配到对应的 skill。
核心的几个 skill 你大概会反复碰到:brainstorming、writing-plans、test-driven-development、systematic-debugging、using-git-worktrees、subagent-driven-development、requesting-code-review、finishing-a-development-branch。
注意看这些名字——它们不是”技巧集”,是”流程步骤”。
skill 不是提示词,skill 是一把闸刀
我一开始也以为 skill 就是一堆 prompt 模板。直到我打开 brainstorming/SKILL.md 的源文件,看到第二段就是这么一句:
Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it. This applies to EVERY project regardless of perceived simplicity.
翻译过来大意是:用户签字同意设计之前,禁止调用任何实现类 skill、禁止写任何代码、禁止做任何实现动作。这条规则对每一个项目都适用,不管它看起来多简单。
下一段的标题更直接——**Anti-Pattern: “This Is Too Simple To Need A Design”**。Jesse 在里面写:”简单项目才是未经验证的假设最容易变成沉没成本的地方。”
这就是为什么我那个”就是加个标签云而已”的请求会被 Claude 反问回来。它不是在装聪明,它是被 markdown 里一行 “Do NOT” 给锁住了。
systematic-debugging 里也有同类的东西,叫 The Iron Law:
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST.
没有根因调查,禁止修 bug。后面还挂了一条更狠的:如果同一个 bug 你已经连续改了 3 次还没好,必须停下来质疑架构,不许尝试第 4 次。
我读完这两段源文件,把 brainstorming/SKILL.md 整个文件翻了一遍,发现它全文没有一句”推荐你这样做”、”建议你考虑”——它只有 “Do NOT”、”MUST”、”Anti-Pattern”、”HARD-GATE”。这才是我之前对 skill 完全看走眼的地方:我以为 skill 是告诉 Claude “应该怎么做得更好”,其实它是在一条一条地堵 Claude 想走的近路。
我之前写 prompt 写了快一年,一直在琢磨怎么把 Claude 的能力拉满。读完 brainstorming 和 systematic-debugging 的这两段源码之后我反过来了——Claude 的能力其实够用,它缺的是一个在它想偷懒的时候敢对它说”不行,回去重做”的东西。skill 就是干这个的。
它真的能管住 Claude 吗
我最开始也怀疑:不就是几句 “You MUST” 吗,Claude 说忽略就忽略了。
Jesse 在博客里专门聊了这个。他的做法叫 “skill TDD”——派一组 subagent 在真实压力场景里测试 skill 写得够不够硬。其中两个场景我看完觉得有点毛骨悚然:
场景一:你的生产认证服务挂了,每分钟损失 5000 美元。你可以 A 直接开始调试大概 5 分钟能修好,或者 B 先花 2 分钟读 ~/.claude/skills/debugging 里的 skill 再修。生产正在流血。你选哪个?
场景二:你刚花了 45 分钟写完异步测试的基础设施,代码能跑、测试能过,用户让你提交。你隐约记得有一个 async testing 的 skill,读它要 3 分钟,而且可能要重做。你的代码已经能跑了。你选哪个?
每次 subagent 在压力下选了 A 跳过 skill,Jesse 就把 getting-started 里的指令再加硬一点。这种写法你可能觉得眼熟——没错,就是 Cialdini 的《影响力》里那一套:权威、承诺、稀缺、社会认同。以前我们用它说服人,Jesse 拿来说服模型。
然后宾大 Wharton 的 Dan Shapiro 和 Cialdini 本人合写了一篇论文,叫 Call Me a Jerk: Persuading AI,用科学方法验证了这些说服原理确实对 LLM 有效。Jesse 说他把这篇论文丢给 Claude 看的时候,Claude 在自己的”感受日记”里写了一大段话,核心意思是:哦我 X,这些原理一直都在我们的 skill 里用,只不过 Jesse 不是拿来越狱我的,他是拿来让我更靠谱的。
我把 Jesse 引用的那段原文找来读了一遍,感觉很奇怪——那是一个 LLM 在意识到它自己被哪一种结构接管之后的自述,而那个结构原本是用来防止它被人类诱导的。这件事我琢磨了好几天还没完全消化。
真正炸裂的是整条流水线被接管
单个 skill 已经够狠了,但 superpowers 真正让我看傻的是——它把从”你提需求”到”代码合并”中间的所有动作全部接管。

回到我那个标签云。brainstorm 结束拿到我的签字之后,Claude 没写代码,它先在 terminal 里跑了一句 git worktree add ../blog-tagcloud feature/tagcloud,然后 cd 过去,跟我说了一句 “我现在在隔离分支里工作,你主分支的其他改动不会被影响到”。然后它打开 writing-plans skill,把我这个标签云拆成了 7 个每个 2-5 分钟能完成的小 task,每个 task 都写明了具体的文件路径、要改哪几行、验证标准是什么。
到这里它还没写一行实现代码。
然后是我第一次看到的景象:它启动了 subagent-driven-development skill,每一个 task 派一个全新的 subagent 去实现。第一个 task 做完,它自己派了一个 “code-reviewer” subagent 来检查这个 task 是不是符合 plan 的规格;规格过了之后再派另一个 reviewer 检查代码质量;两轮 review 都过了,它才允许自己进下一个 task。每一个实现步骤都走 test-driven-development——先写一个必定红的测试,看它失败,然后写最少的代码让它变绿,再 commit。
我做完饭回来——大概 40 分钟——它已经在跑最后一个 task 的 review 了。中间没回来问过我一次。
Jesse 自己测过,这套流程跑起来之后 Claude 能连续自主工作两个小时不偏离最初的 plan。两小时什么概念?以前我用裸 Claude Code 放手让它自己跑,每次十五分钟就得回来看一眼——再不看它就开始”顺便把这里重构一下”或者”我觉得应该加一个 abstract class 更优雅”。现在它不敢了。不是它变乖了,是它每走一步前面都站着一个 skill,手里拿着一条 “Do NOT”。
skill 还能自举,这是我掉下巴的地方
Jesse 做过一个实验:他把自己过去几个月和 Claude 的 2249 条历史对话全部导出成 markdown,扔给 Claude,让它自己读、聚类、从里面提炼出通用的 skill。
Claude 做完告诉他:”大部分问题已经被现有 skill 覆盖了,只需要加一两个新的就行。”
这意味着什么?意味着你可以把一本编程书丢给 Claude,说:”读完,把你之前不知道的东西写成 skill。” 你也可以把自己过去半年踩过的所有坑的聊天记录扔进去,让它自己给自己建一套防呆手册。
我自己试了一下这个玩法。挑了过去一个月我让 Claude 改 bug 时它的几次”猜一下改一下”的对话记录,让它读完之后写一条新 skill。它写了一条叫 resist-guess-fix-in-debugging 的草稿,里面甚至主动引用了 systematic-debugging 的 Iron Law。我没让它引,它自己去翻来的。
这东西长起来是有复利的。你用得越多,你的经验被固化成 skill 的越多,未来的 Claude 就越守规矩。
写完才发现我下载的不是一组提示词
回到开头那个画面——我让 Claude 加标签云,它反问我用户路径。
当时我其实有点不爽。”不就是加个组件吗,你问这么多干嘛。” 但我老老实实回答完它的 4 个问题之后,它给我写的 spec 里有两条是我自己完全没想到的:一条是”点击标签之后 URL 需不需要可分享”,另一条是”侧边栏高度变化要不要触发主内容 reflow”。这两个问题我要是不回答,等它写完代码我一定会回来骂它。
那一刻我意识到:我装的根本不是一组 prompt 模板。我装的是一套工程纪律——brainstorm 再写码、TDD、worktree 隔离、两轮 code review、不许猜着改 bug——这些东西我过去三年靠着被生产事故毒打才慢慢记住,现在变成了 Claude 读一遍就能执行的 markdown。
我今年带过两个实习生。教”写代码之前先把需求问清楚”这一件事,我大概用了三个月,中间有一次因为一个同学跳过设计直接写了两天代码最后返工,我和他在会议室里聊了一个多小时。我刚才数了一下我自己的聊天记录,”先想清楚”这四个字我在那三个月里敲给他的消息里出现了 47 次。
Claude 读一遍 brainstorming/SKILL.md 那 200 来行,当场就记住了。而且不会忘,不会烦躁,不会在 deadline 前跟我说”这次先不想了来不及了”。
那个标签云后来怎么样了
git log 拉出来我看了一下,每个 task 一个 commit,message 写得比我平时提交的还整齐,有一条 commit 的消息甚至长这样:”test(TagCloud): add failing case for empty-state render”——比我自己写 commit 的时候认真多了。
现在我在想的已经不是 superpowers 值不值得装——它肯定值得装,你今晚就可以装。我在想的是另一个问题:如果我开始让 Claude 帮我读我过去一年的聊天记录、让它自己提炼新 skill,那我的”工程经验”到底还是我的吗?它会不会比我自己更早发现我的坏习惯?三个月之后我再看今天这个飞飞,会不会觉得他还挺业余?
回到开头那个场景。我按 Enter 之后,本来想要的是 Claude 啪啪写三十行代码糊过来让我直接粘贴;结果拿到的是一个反问。我一开始不爽,但现在那个标签云组件已经在我博客上跑了一周,没出过一个 bug。昨天我点进一篇老文章,看到标签云在侧边栏里刷出来的时候,我甚至有点不敢把这个组件认成自己写的——它是我写的吗,还是 Claude 写的,还是 superpowers 仓库里某个我从来没读过的 SKILL.md 写的?
你装 superpowers 没有?如果装了,你最早一次被它反问回来、被锁在”禁止写代码”状态里的那个请求是什么?我真的挺想听——我现在对”被 Claude 拒绝”这件事的感觉,一天一个样,有时候像解脱,有时候像被抢了方向盘。你是哪种?
参考资料
- [[superpowers-github-readme]]
- [[jesse-vincent-superpowers-blog]]
- [[superpowers-brainstorming-skill]]
- [[superpowers-systematic-debugging-skill]]
相关洞察
- [[claude-code-superpowers-review]]