ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

superpowers技能库安装与使用:让Claude Code变身可调用的AI技能专家

superpowers技能库安装与使用:让Claude Code变身可调用的AI技能专家 1. superpowers 究竟是什么先跑起来再理解的安装路径我最初看到 superpowers 这个项目名时第一反应是又一个名字唬人的工具。直到有一天发现朋友圈里好几个人在说今天让 Claude 用 superpowers 帮我重构了整个模块我才认真去翻了仓库。坦白讲它确实配得上这个名字——它把 Claude Code 的能力从一问一答的对话式工具变成了可调用的技能库这是两者之间最本质的差别。如果你现在打开 Claude Code输入帮我把这个项目里所有的 TODO 都找出来它能做到但每次都要重新解释一遍需求。而装了 superpowers 之后你可以直接说用 read_files 技能扫描项目中的 TODO 标记并按模块输出报告它就知道该读哪些文件、按什么格式汇总、要不要生成 Markdown 表格。省掉的不只是打字时间而是你反复描述上下文的整个沟通成本。这篇文章我会按照自己实际入手的顺序来写先讲怎么装再拆解它到底自带了哪些 skills然后讲清楚引入一个技能这件事背后的文件级原理最后把我踩过的坑和一套推荐用法分享出来。适合正在用 Claude Code、但觉得总差那么点意思的人也适合刚接触技能概念、想做自定义扩展的小白。1.1 先搞明白它是技能包而不是插件很多人习惯把它类比成 VS Code 插件这个类比部分正确但会误导你。VS Code 插件是一段常驻的程序装了就一直在后端跑。superpowers 不一样它本质上是一堆结构化的 Markdown 文件外加少量配套脚本。每个技能就是一个目录目录里有一个SKILL.md作为入口说明Claude Code 在对话中根据你的指令动态决定要不要去读这个文件、读完再决定是否调用。这个动态读取的设计是 superpowers 的灵魂。你装完它系统不会变卡也不会抢占上下文窗口——只有当技能被显式或隐式触发时对应的SKILL.md才会被读入对话上下文。这就像你书架上多了几十本手册平时不占桌面空间需要查的时候才抽出来翻。理解了这一点后面怎么引入技能的所有操作就都好懂了所谓引入本质上就是写一个符合规范的SKILL.md再把它放到读得到的位置。没有魔法纯粹是文件约定。1.2 安装前的环境确认三件事没到位先别动手我的建议是安装前先花三分钟确认环境不然中途报错会浪费很多时间。需要检查的就三样检查项要求确认命令Claude Code 版本已安装且能正常对话claude --versionNode.js 环境18 以上node -vGit 客户端可用能访问 GitHubgit --version这三项里最容易出问题的是 Node 版本。我早期装的时候用的还是 Node 16安装脚本跑到一半会因为某些语法不兼容直接中断报错信息也不直观。如果你的环境是 18 或 20 就没有这个烦恼了。另外建议在干净的目录下操作别刚开一个大型项目就直接装我见过有人在某个项目目录里执行安装脚本结果把一堆技能文件混进了项目仓库让 Git 状态变得很难看。2. 完整安装流程两种方式都跑一遍总有一种适合你superpowers 的安装路径不复杂官方提供了两种方式git clone本地安装以及远程管道直接执行脚本。我两个都试过这里把关键细节和差异说清楚。2.1 方式一git clone 本地安装推荐可控性最强这是我最推荐的方式因为你拿到的不只是安装结果还有整个项目源码方便你看结构、改配置、甚至二次开发。步骤很简单# 找一个你打算长期存放工具的目录比如 ~/tools cd ~/tools # 克隆仓库 git clone https://github.com/obra/superpowers.git # 进入目录 cd superpowers # 执行安装脚本 ./install.sh安装脚本运行期间终端会打印出正在创建技能目录正在复制技能文件之类的日志。我建议先别急着做别的事盯一下输出一旦有permission denied的报错就说明该chmod x install.sh了。全程耗时一般在几十秒内取决于你的磁盘速度。需要注意这个目录一旦装上就不要随便移动。我吃过一次亏装完后觉得 ~/tools/superpowers 不舒服把它挪到了 ~/dev/tools/ 下结果发现它通过绝对路径或固定相对路径引用了技能源文件移动之后重跑一次 install 才恢复。别折腾路径装在哪就让它待在哪。2.2 方式二远程管道安装适合快速上手验证如果你只想先看看效果、不打算研究源码远程安装会更省事。官方推荐的命令大致是curl -fsSL https://superpowers.obra.dev/install.sh | bash这行命令把安装脚本拉下来直接执行。两分钟就能装完然后你可以马上开 Claude Code 试一个技能。但这其中有三个值得注意的地方。第一管道执行第三方脚本本身就是一种信任行为我只有在确认项目社区活跃、反馈良好的情况下才敢这么干你要提前看一下这个 URL 是否可访问别在任何不确定环境里盲跑。第二远程安装默认也会把仓库克隆到本地某个位置所以最终还是需要 Git环境检查那一步省不掉。第三如果你所在网络访问该域名慢或不通就老老实实走 git clone 那条路没必要死磕。2.3 安装完成后的验证与技能目录结构装完之后怎么确认真的成功你只需要打开 Claude Code直接问一句你现在知道 superpowers 吗如果你有 skills 就列出来。如果它回答出技能名称比如read_files、browser说明安装生效了。另一个更硬性的确认方式是直接看磁盘ls ~/.claude/skills/正常情况下你会看到一排技能目录每个目录对应一个技能。我机器上大致是这个样子~/.claude/skills/ ├── read_files/ ├── write_files/ ├── run_commands/ ├── browser/ ├── screenshot/ ├── create_skill/ ├── improve_skill/ └── ...这个目录是所有技能生效的关键位置。Claude Code 在会话中会感知到这个目录的存在当你的指令命中某个技能的关键描述时它就会去对应目录读取SKILL.md然后按里面的指引执行。如果你将来想手动加技能往这个目录塞一个新文件夹就行完全不需要改注册表、不需要刷新服务——下次对话自动生效。3. 技能清单与我的使用排序哪些 skills 值得第一时间用起来很多人装完 superpowers 后的第一个问题是这么多技能我到底该先用哪个这题没有唯一答案但我可以根据自己的实际使用频次给你一个足够靠谱的优先级参考。3.1 第一梯队read_files、write_files、run_commands三个就够日常工作这三个技能是整个技能库的地基。它们干的事情本质上是让 Claude Code 的文件读写和命令执行从随机应变变成稳定流程。read_files让你的对话中帮我看看某个文件变成结构化行为Claude 会按设定的行数范围、分批读取而不是一次性把巨大文件塞进上下文。我自己维护一份几千行的日志和配置文件时让 Claude 分段读完 Rewrite 一遍并标注风险点它靠的就是这个技能读一半不会把上下文堵死也不会莫名其妙漏掉中段内容。write_files负责把 Claude 生成的内容落地到文件里。听起来简单但没它的时候Claude 经常把整段代码丢在小窗里让你手动复制——有了这个技能你可以直接说把刚才的重构结果写回 src/utils/parser.ts它自己知道怎么处理路径、要不要保留原文件备份、怎么处理已有文件冲突。这个技能配合权限确认实操体验会好非常多。run_commands则是让 Claude 能在你的批准下执行终端命令自动跑测试、装依赖、查进程。我会让它跑npm test和git diff测试返回结果后马上做下一步修复整个循环非常顺。你一开始可以只给它开放白名单里的命令例如测试和构建相关的降低风险。技能名一句话说明我的使用频率read_files结构化读文件分页不爆上下文每天十几次write_files安全写文件减少手动复制每天五六次run_commands执行命令并返回结果每天七八次这三个技能一起用的时候会形成很完美的闭环读入代码 → 分析问题 → 修改代码 → 跑测试 → 根据测试结果再读再改。我在一个中型 Node 项目里修一个核心模块的 bug全靠这个循环整个过程中 Claude 几乎不需要我额外解释什么。3.2 第二梯队浏览器、截图让 Claude 长出一双眼睛我第一次用browser技能的时候真是有点惊喜。之前的 Claude Code 是完全看不见界面的我给它一个报错截图它只能根据我描述来猜。有了browser和screenshot技能它能打开指定的网页截图给你看甚至能返回页面的 DOM 结构信息。于是有些以前很烦人的操作就变得自然了我写前端布局总是对不齐现在直接让 Claude 用 browser 打开 localhost 页面自己看一眼渲染结果然后回来告诉我左侧导航宽度溢出栅格类没生效接着它自己写 CSS 修复改完再截一张图确认。这个看-改-验闭环省掉了我无数来回切窗口的时间。browser和screenshot一般是一起用的。前者负责打开和交互后者负责截取当前浏览画面。注意两者都依赖本机有可用的浏览器环境如果你用的是无头服务器要提前配好 Chromium 之类的基础环境不然技能会自动失败报错还可能让你一头雾水。3.3 第三梯队create_skill 与 improve_skill把 Claude 变成你的 技能作者真正让我觉得 superpowers 这个项目了不起的是它内置了制造技能的技能。create_skill让你用对话的方式生成一个全新的技能模板improve_skill能根据你日常使用反馈来迭代已有技能。这两个算是元技能用得好你的技能库就会随着使用越来越多、越来越好用。我第一次用create_skill做了一个代码审查技能告诉 Claude 我希望它按安全、性能、可读性、边界条件四个维度审查代码输出格式是表格每条都要给出修改建议。结果它自动生成了一套目录和SKILL.md放在~/.claude/skills/code_review/下面之后我随时说用 code_review 技能看下这段代码它就会按我定义的维度执行。这个体验太好了等于把自己的隐性知识沉淀成了可复用的资产。improve_skill则适合在你使用过程中发现问题时用比如read_files 读大文件时有时候会截断加一个自动判断文件大小的前置步骤它会同步更新技能定义这种用后即改的感觉非常舒服。4. 技能引入链路拆解从 SKILL.md 到实际生效前面讲过superpowers 的本质是文件级的技能约定。但你光知道这个还不够想真正灵活运用还得理解一个技能从创建到实际生效的完整链路以及为什么有些技能引不进去。4.1 一个标准技能目录的组成与最小示例我自定义过不少技能可以给你一个最精简的模板。假设我想给 Claude 定义一个生成项目周报的技能~/.claude/skills/weekly_report/ ├── SKILL.md └── templates/ └── weekly_report_template.md核心是SKILL.md它用 Markdown 书写包含 frontmatter元信息区和正文。frontmatter 里至少要指明技能名称和描述这个描述是 Claude 判断什么时候该调用我的关键。下面是一份极简示例--- name: weekly_report description: When the user asks to generate a weekly progress report, scan the git log and project files, then create a Markdown report with completed items, in-progress items, risks, and next steps. --- # Weekly Report Skill Follow the template in templates/weekly_report_template.md. Use git log --since7.days --prettyformat:%h %s to collect recent commits. Categorize each commit by area (feature, fix, refactor, docs). Identify risks based on any TODO/FIXME markers introduced this week.生成技能后重启或继续当前 Claude Code 会话然后你说生成这周的周报。Claude 看到周报这个词匹配到description里写的 weekly progress report就主动去读~/.claude/skills/weekly_report/SKILL.md接着按里面的步骤执行。整个过程不需要你手动加载任何东西它自动完成匹配-读取-执行三连。4.2 为什么技能一直不被触发排查思路很重要这是我在实践中遇到最多的问题技能装了放的位置也对但 Claude 就是不调用。经过反复实验我总结出四个高频原因按出现概率排序description写得不够具体匹配不上你的口语化指令。比如你把 description 写成 Generate report但它实际应该是 Generate a weekly status report including commits, issues, and next steps。Claude 是语义匹配的描述里有关键词越贴近用户的自然表达触发越准。技能目录名和技能名称不一致。目录名weekly_report但 SKILL.md 里的name写成weeklyreport会导致引用错乱。保持两者一致是最稳的策略。~/.claude/skills/下有同名冲突。如果你装了两个同名技能Claude 可能不知道选哪个最后哪个都不触发。我建议安装前先确认目录中是否已有同名的旧目录有就先备份再替换。在一次对话中反复引用同一种技能但一直失败这时候 Claude 可能已经忘了这个技能。建议新起会话后再试一次或者直接说重新读取一下 xxx 技能的说明来强制刷新。排查这件事最有效的手段是把 Claude 的思考过程打开也就是 verbose 模式观察它读到哪一步停止了。我曾经发现我的技能触发失败是因为对话中途 Claude 尝试读了SKILL.md但里面某个相对路径写错了导致后续执行失败——这种报错不打开内部输出根本看不到。4.3 子步骤与依赖SKILL.md 里的脚本怎么管理复杂技能往往需要调用外部脚本或者分成多个子步骤执行。这时候最好不要把所有逻辑都堆在SKILL.md描述里而是把脚本放到scripts/子目录然后在文档中给明确指令。比如一个技能要执行数据处理skills/data_processor/ ├── SKILL.md └── scripts/ ├── transform.py └── validate.pySKILL.md里只需要说明先用 python scripts/transform.py 处理输入再用 validate.py 验证输出。这样做的好处是文档负责指挥脚本负责干活Claude 在理解执行逻辑时不会被大段代码淹没。脚本路径尽量写相对路径配合技能目录本身这样技能包整体就能随意搬迁、拷贝到其他机器不用担心硬编码路径失效。5. 权限配置与安全边界放开技能之前想清楚这几件事superpowers 天然允许 Claude 调用你的文件系统和终端命令这个能力有多强风险就有多大。我的原则是从最小权限开始按需逐步放开绝对不图省事直接给完全自由。5.1 理解权限机制的默认逻辑Claude Code 对命令执行是有确认机制的——默认情况下危险操作会询问你。装了技能之后要注意一个坑技能里的脚本会经由 Claude 去执行而你看到的是Claude 想运行 xxx 命令的提示不是用户运行了 xxx 命令。如果你习惯不看确认提示就一路回车技能的风险会随之放大。我自己的做法是在本地环境使用--dangerously-skip-permissions这类模式时非常谨慎宁可多几次确认也不希望它擅自改动我却没察觉。日常开发只需要在配置里把特定命令或目录加入白名单比如只允许它修改工作区里的 src 目录这比完全放开安全得多。白名单配置可以写在~/.claude/settings.json里针对项目目录再覆盖一份配置文件这样不同项目之间的权限边界也很清晰。5.2 允许的技能哪些可安全白名单化根据我的实战经验下面这几类命令白名单化以后收益远大于风险命令类型示例风险等级建议只读命令cat、ls、git diff低可放开测试命令npm test、pytest低可放开格式化命令eslint --fix、prettier --write中放开前确认不会改出问题建议格式化后人工 review 一遍包安装命令npm install、pip install中尽量手动执行避免它改动依赖强制命令rm -rf、git push --force高绝不放白名单永远手动确认我记忆里最惨的一次是让 Claude 帮我换个端口配置结果它把settings.json整个覆盖了我本地折腾半天的环境配置全部丢掉。往事不堪回首从那以后我对写文件类技能一律严格审查重要文件强制先备份。5.3 团队协作时的技能管理建议如果你所在的团队也打算推广 superpowers 共享技能可以建立一个私有的技能仓库普通 Git 仓库即可把标准技能目录~/.claude/skills/下的内容作为仓库内容管理成员统一拉取。每个技能目录里的SKILL.md就是天然文档新人看一眼就能理解这个技能定义了什么。版本管理上的习惯我对技能的变更也会像代码一样走 PR 流程改动技能描述、增加脚本、修正路径都在分支上做合并前让另一个成员审一下。技能是有生命周期的。用了两三次后发现某个技能基本没被触发过我就会清理掉或合并进其他技能。太多不用的技能只会增加上下文匹配的噪音——Claude 在判断该不该读你的SKILL.md时会参考所有技能目录的 description。保持技能库的精简就是在提高触发准确率。6. 把它用出真正超级能力的几个习惯最后聊一些更偏方法论的东西。工具和技能都是中性的能发挥多大价值取决于你怎么把它嵌入到日常工作流里。我自己总结出三个习惯分享出来供你参考。6.1 把一次性指令变成可复用技能大多数人的用法是直接在对话里描述需求帮我检查这份 JSON 的结构和类型定义是否一致。说完就完了。但高价值的做法是当你发现自己反复在向 Claude 提同一类需求时就应该使用create_skill把这个需求固化成技能。我举个真实例子。我每周都要整理项目依赖的版本更新情况一开始我每次都要解释检查 package.json 里的依赖看看有没有新版本有就列出差异和建议。频率高了之后我花十分钟用create_skill定义了一个dependency_checker技能之后每周只有一句话用 dependency_checker 检查一下。 减少的不只是打字量而是把我怎么思考这件事这个方法本身也固化下来了。6.2 不定时用 improve_skill 给技能做版本升级技能不是写完了就完事。我一般会在用技能遇到不满意时直接说这个技能输出的报告没有统计 xx 指标improve_skill帮我升级一下。然后它会根据我的建议调整SKILL.md里的步骤和输出格式并提醒我下次生效需要新会话。整个过程像是对自己的助手做小步迭代非常上瘾。6.3 技能与场景的组合拳单个技能往往解决单点问题但我慢慢体会到真正的高效率来自技能的组合编排。比如我之前接手一个遗留旧项目流程是先run_commands跑一遍测试看现状再用read_files读核心代码然后用自定义的code_review技能分析隐患最后用write_files一次性输出修复后的代码期间发现需要新的方法就用create_skill现场做一个。这套组合打下来以前需要周末加班梳理的工作一个下午能梳理完大半。而且因为每个步骤都有明确的技能规范Claude 的输出质量比临时发挥要稳定得多。在我个人的实际体验里superpowers 最让我惊叹的地方不是它提供了多少现成技能而是它把让 AI 按你的方法做事这件事的门槛降到了极低。它给你的不只是几把好用的锤子更是一个能造锤子的工作台。喜欢折腾的人完全可以在它的基础上搭出一套专属于自己的 AI 工作流。最后再分享一个细节。技能库成长到一定规模后我养成了一个习惯每个季度给~/.claude/skills/做一次整体梳理——删掉三个月没用过的、合并功能重叠的、把几个相关技能组织成技能组。这个梳理过程本身就是对自己工作方式的一次回顾。工具会越来越强但真正让它发挥价值的仍然是你对自己工作流的认识。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进