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

cover

大家好,我是飞飞。

上周三晚上十一点半,我在 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
2
/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace

装完重启 Claude Code,会话开头会被注入一段 prompt:

1
2
3
4
<session-start-hook><EXTREMELY_IMPORTANT>
You have Superpowers.
RIGHT NOW, go read: .../skills/getting-started/SKILL.md
</EXTREMELY_IMPORTANT></session-start-hook>

就这两行,是整个系统的启动器。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 真正让我看傻的是——它把从”你提需求”到”代码合并”中间的所有动作全部接管。

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]]