最近这一两年,AI 编程工具已经成了不少开发者的标配。但用着用着,你应该也会发现一个尴尬的问题:模型上下文一长就“失忆”,同样的任务每次都要把规则重新讲一遍,遇到稍微复杂点的需求,AI 给出的方案就像“一次性餐具”——用完就扔,下次重新生成又是另一个思路。我一度以为这是模型的极限,直到我接触到 superpowers,才发现问题其实出在“交互方式”上。
superpowers 不是一个普通的插件,它是一套给 AI 编码助手(典型如 Codex CLI)使用的“技能增强框架”。你可以把它理解成给 AI 配了一套真正可复用的“工作手册”:规划、拆分任务、写代码、自测、迭代,每一个环节都有标准的操作流程,而不是每次都在一个巨大的 prompt 里碰运气。装上之后,AI 的行为会稳定很多,输出质量也有了清晰的底线。
这篇就基于我自己的实际使用经验,从安装到日常用法、再到踩坑记录,完整捋一遍 superpowers 的使用指南。如果你正在用 Codex 这类 AI 工具做真实项目,又觉得“AI 写的代码不太能放心用”,这套东西值得你花半小时试试。
1. 先理解 superpowers 在解决什么问题
1.1 为什么单单靠“聊天”没法把代码写好
直接用 ChatGPT 或 Codex 写代码时,最典型的一个痛点就是“没有过程管理”。你让它实现一个功能,它立刻跳进实现细节,跳过需求澄清、边界条件分析、方案设计,直接开始输出代码。遇到小函数还好,一旦涉及多个文件、数据库表、接口调用链,这种“直接开写”的玩法基本必翻车。
另一个痛点是上下文断裂。你上午跟 AI 确认了模块 A 的设计约束,下午做模块 B 的时候,只要不在同一个会话里,它就彻底忘了。即使在同一会话里,随着代码文件越贴越多,它也常常把早期给出的关键决策淹没在历史里。
superpowers 的思路是:不依赖模型“临场发挥”,而是把整个编码任务拆成一系列标准化的“技能流程”。比如先做需求澄清,再做技术方案规划,然后子任务拆分,最后才进入编码。每个环节都有明确的目标和输出物。技能定义里写清楚了该做什么、不该做什么、如何自我检查,这样即使换了会话、换了项目,AI 的行为模式依然是稳定的。
1.2 它跟普通 prompt 模板、插件市场里的扩展有什么区别
有些人可能觉得,superpowers 不就是一套精心设计的 prompt 吗?我自己刚开始也这么想,用完之后发现差异还是挺大的。
普通的 prompt 优化,本质是“一次性指令优化”。你可以在一个 prompt 里把角色、流程、约束写得很细,但问题是:
- 执行过程中模型容易偏离指令,尤其上下文变长后,中间规则会被淹没;
- 无法对新任务自动适配,每次都要重新组织语言;
- 缺乏结构化的“技能文件”管理,复用到另一个项目时基本靠复制粘贴。
superpowers 把“技能”做成了文件系统中的结构化单元。每个技能有名称、描述、触发条件和操作步骤,核心的思维流程被硬编码成了可调用的步骤序列。AI 会先根据任务描述决定调用哪个技能,然后严格按照技能内的流程执行。
举个例子,superpowers 里有一个很常用的技能叫 brainstorming(头脑风暴)。当你的任务描述不够清晰时,它会主动触发,AI 会反过来问你问题,而不是急着动手。这个“先问清楚再做”的行为,如果不靠技能约束,仅靠 prompt 大概率是无法稳定复现的。
也正是这种“可复现性”让 superpowers 在实际开发中真正好用:同样是完成一个支付模块,今天做和明天做,AI 的思考路径基本一致,不会出现昨天用方案 A、今天用方案 B 的混乱情况。
1.3 适用场景与适用人群
我个人的判断是,superpowers 最适合这几类场景:
- 需求不明确、需要探索性开发的场景。superpowers 的流程会强制 AI 先澄清需求,再做设计,减少返工。
- 涉及多文件、多步骤的中大型功能开发。subagents 等技能可以把任务拆给多个子任务协同完成,解决单线程上下文瓶颈。
- 需要长期维护、可复用的项目。技能文件和项目规则可以沉淀下来,换人换模型都能保持一致。
- Java/Spring 这类结构性强、约定大于配置的技术栈。因为 superpowers 里的技能可以按项目自定义规则,把团队的编码规范直接固化到 AI 的执行流程里。
不过我也有个比较实际的提醒:如果你只是写点一次性脚本、单文件工具,或者你用的模型本身能力较弱,superpowers 带来的收益不会特别明显,反而会觉得流程繁琐。它更适合“认真做项目”的场景,而非“随手写段代码”的场景。
2. 安装与环境准备:从零到能跑通第一个技能
2.1 前置依赖:Node.js 版本与 Codex CLI
superpowers 是基于 Node.js 构建的命令行工具,所以在安装之前,先确保你的机器上已经具备以下环境:
- Node.js 18 或更高版本(我自己用的是 20.x,运行很稳定;低于 18 某些依赖如
@modelcontextprotocol/sdk会直接报错) - Codex CLI 0.44 或更高版本(superpowers 通过 codex 的 MCP 机制接入,老版本没有对应的能力)
- 一个好用的终端。Windows 用户建议用 PowerShell 7+ 或 Windows Terminal,避免 cmd 的编码问题
检查环境可以快速跑两条命令:
node -v codex --version如果codex还没装,先装一下:
npm install -g @openai/codex安装完成后可以用codex --version验证。这一步如果卡住,多半是 npm 源的问题,可以临时切到国内镜像源再装:
npm install -g @openai/codex --registry=https://registry.npmmirror.com2.2 安装 superpowers 的两种方式
官方提供了两种安装方式,我分别说一下我的体验。
方式一:npm 全局安装
npm install -g superpowers这是最直接的方式,装完后终端里就有superpowers命令了。不过要注意,如果你的 Node 版本偏老,这里很容易在编译原生模块时失败,报错信息通常是node-gyp相关。解决办法是先把 Node 升到 18+。
方式二:使用自动安装脚本
curl -sSL https://superpowers.dev/install.sh | bash这个脚本会帮你检查环境、安装依赖,并自动把 MCP 配置写入 Codex 的配置文件。我推荐第一次使用的人走这种方式,省心很多。
装完之后,确认一下版本:
superpowers --version2.3 初始化项目:让 Codex 识别到技能
全局装好之后,还需要进入你的项目目录做一次初始化。这个动作会创建一个.superpowers目录,里面存放项目级别的技能配置和自定义规则。
cd your-project superpowers init初始化完成之后,我建议你观察一下生成的目录结构:
.superpowers/ skills/ project-rules/ config.json其中skills目录用来放项目自定义技能,project-rules目录可以放项目级的规范说明。superpowers 自带的技能文件其实在全局安装目录里,但项目目录允许你覆盖和扩展。
这一步做完,启动 Codex CLI 时,它会自动加载.superpowers下的配置。你可以先跑一个简单的任务验证是否生效:
codex "调研一下当前目录的代码结构,用中文输出报告"如果 superpowers 正常工作,你会看到 AI 先调用相关技能,再开始分析,整个交互过程明显比之前“有条理”得多。
2.4 关于 Java 环境的特别说明
搜索 superpowers 相关热词时,“superpowers java”上了热搜,看来用 Java 的朋友不少。这里单独说明一下 Java 项目使用 superpowers 的几个注意点:
- 确保
JAVA_HOME环境变量正确设置,并且 JDK 版本与项目要求一致。superpowers 的技能执行过程中可能需要调用mvn或gradle,路径不对会导致构建失败。 - 项目根目录的
pom.xml或build.gradle建议放在 AI 最容易看到的位置,必要时可以在.superpowers/project-rules/里写一条规则,明确告诉 AI 构建命令是什么。 - Java 项目的编译输出目录(
target或build/classes)建议加入.gitignore,同时提醒 AI 不要分析生成的字节码文件。
我实际在 Spring Boot 项目里用了一周,发现只要把构建命令写清楚,superpowers 的编码质量明显比裸 Codex 要高,尤其在涉及多模块依赖时,它会更主动地先梳理模块关系。
3. 核心技能拆解:superpowers 到底内置了哪些“能力”
3.1 常用技能一览
superpowers 内置了一套相当丰富的技能库,我把日常用到的核心技能整理成了一张表,方便大家对照参考。
| 技能名称 | 触发场景 | 核心作用 |
|---|---|---|
| brainstorming | 需求模糊、方案未定 | 通过多轮追问澄清需求,输出问题清单和初步思路 |
| planning | 需求已明确,需要设计方案 | 拆解功能模块,评估技术选型和风险,生成实施计划 |
| subagents | 任务复杂、上下文过长 | 把任务拆分给多个子代理并行处理,最后汇总结果 |
| code-review | 代码已完成,需要检查 | 从可维护性、安全性、性能等维度审查代码并给出修改建议 |
| writing-notes | 需要沉淀文档 | 将项目决策、经验、架构信息整理成可检索的文档 |
| debugging | 出现异常,需要定位问题 | 引导 AI 系统化排查,而不是盲目猜测修改 |
这六个技能里,我最常用的是brainstorming和planning。以前直接让 AI“帮我写一个用户注册接口”,它上来就给你一堆代码,但没问清楚你用的是 Spring MVC 还是 WebFlux、是否需要验证码、用户表怎么设计。现在它会先触发 brainstorming,反问我几个关键问题。等需求对齐了,再进入 planning,把接口定义、数据库变更、异常处理都规划好,最后才编码。
3.2 brainstorming 技能:把模糊需求转换成明确问题
这个技能的核心价值在于,它把“提问”变成了一种标准动作。我举个例子,你给 Codex 下达的任务是:
帮我给项目加一个限流功能没有技能约束时,AI 可能会直接写一个拦截器或者 Filter 实现限流,但具体限流算法、粒度、超出之后的响应方式全都靠猜。而触发 brainstorming 之后,AI 会按流程先抛出几个问题:
- 限流是针对单个用户、单个 IP,还是整个接口?
- 是使用固定窗口、滑动窗口还是令牌桶算法?
- 限流后是返回 429 错误,还是排队等待?
- 是否需要支持分布式限流(比如 Redis)?
看到区别了吗?同样是实现功能,前者是“猜”,后者是“确认”。对于真实项目来说,后者的价值不言而喻。从我的经验看,哪怕你心里的答案已经很清楚,走一遍这个流程也值得,因为 AI 问出的问题常常能帮你发现自己没想到的边界情况。
3.3 planning 技能:把大目标拆成可执行的子任务
当需求澄清完,superpowers 就会进入 planning 阶段。这个技能的主要输出是一份结构化的实施计划,包括:
- 功能模块拆分:把整个需求拆成若干独立的功能点
- 技术方案选型:比如用 Redis 还是本地缓存、用异步还是同步
- 实施顺序编排:标明哪些任务可以并行,哪些必须串行
- 风险点标注:提前指出可能的技术难点和兼容性问题
我一般会要求 AI 把计划以 Markdown 文件形式输出到项目目录的.superpowers/plans/下,这样后续执行时可以直接引用。如果中途 Codex 会话断了,重新启动后让它读取这个计划文件,它就能无缝接续工作。这个习惯帮我避免了很多次“AI 忘了之前讨论结果”的情况。
3.4 subagents 技能:多线程并行解决复杂任务
这个技能是我认为 superpowers 最“超能力”的一个特色。它的核心思想是:把一个复杂任务拆分成多个子任务,每个子任务由独立的子代理执行,最后再汇总。因为每个子代理拥有独立的上下文窗口,互不干扰,所以整体能处理的信息量远超单线程方式。
举个实际例子,有一次我需要同时修改一个 Spring Boot 项目的 Controller、Service、Repository 三层代码。如果只用一个对话窗口,AI 需要同时记住三层代码的上下文,很容易混乱。我让 superpowers 用 subagents 技能,把三个层的修改分别分配给三个子代理并行处理,每个代理只关注自己那一层,最后再统一检查和整合。整体质量明显比单线程输出稳定。
不过这里有个小提醒:subagents 的并行执行依赖模型本身的能力,如果你的 Codex 还接了其他工具(比如编译器输出、文件读写),子代理之间共享文件状态可能会产生冲突。我通常会指定每个子代理只负责独立的文件,避免互相覆盖。
4. 实操演示:用 superpowers 完成一个 Java 小功能
4.1 任务目标与初始状态
为了让大家有更直观的体感,我拿一个具体的场景演示一遍完整流程。假设当前项目是一个基于 Spring Boot 3.x 的订单服务,现在需求是:
给订单模块增加一个“取消订单”接口,要求校验订单状态,只有待支付状态才能取消,并且取消后释放库存这个需求不算太复杂,但涉及 Controller、Service、库存联动的几层修改,非常适合演示 superpowers 的整体工作流。项目环境是 JDK 17、Maven、Spring Boot 3.2。
4.2 第一步:让 AI 先做需求澄清
我直接在项目根目录启动 Codex CLI,输入:
@superpowers 帮我实现取消订单功能,具体需求:校验订单状态,只有待支付状态才能取消,取消后释放库存注意这里我在指令里显式提到了@superpowers,作用是提示模型优先选择对应的技能流程。如果你没有显式指定,superpowers 也会根据任务描述自动匹配技能,但显式触发更可控。
Codex 收到命令后,按照 brainstorming 技能开始向我提问。它问的几个问题是:
- 取消操作是物理删除订单,还是将订单状态更新为“已取消”?
- 释放库存的具体含义:是恢复商品的可售库存,还是增加一个库存变更流水?
- 接口的入参是订单号还是订单项 ID?
- 如果订单已经处于“已发货”状态,调用这个接口应该返回什么错误码?
这几个问题很关键,尤其是“释放库存”这一点,如果没有确认清楚,AI 很可能只会更新订单状态而忘了库存操作。我逐一回答后,任务进入 planning 阶段。
4.3 第二步:生成实施计划
planning 技能输出的实施计划大致是这样的:
变更文件清单: 1. OrderController.java - 新增 cancelOrder 接口 2. OrderService.java - 新增 cancelOrder 业务方法 3. OrderStatusEnum.java - 确认待支付状态定义 4. InventoryService.java - 新增 releaseStock 方法 5. OrderCancelRequest.java - 新增请求参数 DTO(如存在则复用) 实施顺序: 1. 先定义接口 DTO 与状态枚举检查 2. 实现 Service 层取消逻辑 3. 调用 InventoryService 释放库存 4. 在 Controller 暴露接口 5. 补充单元测试这个计划文件会被保存到.superpowers/plans/20250115-order-cancel-plan.md。我确认计划没问题后,指示 AI 开始执行。
4.4 第三步:逐文件编码与自测
接下来 AI 按计划逐个文件编码。这里让我比较惊喜的是,每一步修改完成后,superpowers 会主动要求运行编译和测试来验证,而不是一口气把所有代码写完再交付。
以下是 Service 层核心代码的简化示例:
@Service public class OrderService { private final OrderRepository orderRepository; private final InventoryService inventoryService; public OrderService(OrderRepository orderRepository, InventoryService inventoryService) { this.orderRepository = orderRepository; this.inventoryService = inventoryService; } public void cancelOrder(String orderId) { Order order = orderRepository.findById(orderId) .orElseThrow(() -> new OrderNotFoundException(orderId)); if (order.getStatus() != OrderStatus.PENDING_PAYMENT) { throw new IllegalOrderStateException("只有待支付状态的订单才能取消"); } order.setStatus(OrderStatus.CANCELLED); orderRepository.save(order); // 释放库存 inventoryService.releaseStock(order.getProductId(), order.getQuantity()); } }注意这里 AI 在实现取消逻辑后,又主动在技能引导下做了一次自测,检查边界条件:订单不存在时抛什么异常、状态不匹配时是否会误操作库存、库存释放失败时订单状态是否会产生不一致。这个过程很接近一个真正开发者的自查节奏。
4.5 第四步:代码审查与收尾
所有代码完成后,我触发了一次code-review技能。AI 从几个维度审查了变更:
- 事务一致性:库存释放和订单状态更新是否应该在同一个事务中。它建议在
cancelOrder上增加@Transactional,避免库存扣了但订单没更新成功。 - 幂等性:重复调用取消接口是否会产生副作用。
- 参数校验:
orderId为空时是否会抛出无意义的异常。
这些都算是一针见血的问题。我在实际项目里确实遇到过类似的事务问题——AI 在编码阶段不见得能全部考虑到,但配合 code-review 技能做一轮“自我找茬”,质量明显上了一个台阶。
最终,AI 把完整的变更摘要和测试结果整理成一份简短报告,整个流程到此结束。耗时大约十分钟,比我手动检查和改代码快了很多。
5. 常见问题与排查技巧实录
5.1 安装或初始化时报错
我遇到的第一类问题基本都集中在环境层面。这里把典型的报错和处理方案整理一下,方便大家直接对表操作。
| 报错内容 | 可能原因 | 解决方案 |
|---|---|---|
Node.js version must be >= 18 | 本机 Node 版本过低 | 用nvm install 18升级后再重试 |
Cannot find module '@modelcontextprotocol/sdk' | 依赖安装不完整 | 删除node_modules后重新npm install |
EACCES: permission denied | 权限不足 | 不要用sudo直接装全局包,改用 nvm 管理 Node |
MCP server connection failed | Codex 配置未生效 | 检查~/.codex/config.toml中的 MCP server 配置 |
关于config.toml,我需要强调一下它的结构。superpowers 会在初始化时自动写入以下配置,如果你手动修改,注意保持格式一致:
[mcp.servers.superpowers] command = "superpowers" args = ["mcp"]如果你的 codex 配置文件是 JSON 格式,则需要写成:
{ "mcp": { "servers": { "superpowers": { "command": "superpowers", "args": ["mcp"] } } } }我自己就曾经因为把配置文件改错了语法,导致 codex 一直没有加载上技能。排查这类问题有个笨办法:先断开所有自定义配置,只保留默认配置,确定能跑通再逐步加回。
5.2 技能不触发或行为表现不稳定
有时候你已经完成了安装,但 AI 的执行方式跟之前没装 superpowers 时没什么区别。我从自己的经验看,通常有三个原因:
原因一:codex 版本太低。如果你装的是旧版 codex,可能根本不支持 MCP 协议,superpowers 自然不会被调用。用codex --version确认版本号,老版本就直接升级。
原因二:项目目录没有初始化。很多人只在全局装了 superpowers,忘了在自己的项目目录执行superpowers init。没有.superpowers目录,技能就不会被加载。进到项目根目录重新初始化即可。
原因三:任务描述太“明确”了。superpowers 的某些技能(比如 brainstorming)需要模型判断“用户意图是否清晰”。如果你在任务里把每一步都写得死死的,模型觉得没有歧义,自然就不会触发澄清流程。这就好比你跟同事交代任务时把每个细节都说完了,对方当然不会再问你问题。想强制触发某个技能,可以在指令里显式写上技能名,比如:
@superpowers 用 brainstorming 技能分析一下当前需求,输出需要澄清的问题我实测下来,显式触发比自动触发的可靠性高得多,建议在关键任务上总是显式指定。
5.3 Java 项目中的常见坑
在 Java 项目里用 superpowers,有几个坑值得单独记录一下:
JAVA_HOME 未设置。superpowers 某些技能执行时会尝试调用 Maven 或 Gradle,如果 JVM 环境变量没配好,会报Unable to locate a Java Runtime。排查时先跑:
echo $JAVA_HOME mvn -version确认两处输出一致。如果你用 IDE 自带的 JDK,终端里的mvn很可能找不到,这种情况建议在~/.zshrc或~/.bashrc里显式export JAVA_HOME=...。
Lombok 依赖导致的源代码分析偏差。AI 在分析 Java 代码时,如果遇到 Lombok 注解生成的 getter/setter,它可能误以为字段没有访问接口,进而提出“该字段缺少 getter/setter”这类无意义的修改建议。解决办法是在.superpowers/project-rules/下加一条规则:项目使用 Lombok,所有实体类字段默认具备 getter/setter。这样 AI 就不用去代码里猜了。
Maven 私有仓库依赖拉取失败。如果你的项目使用了私有 Maven 仓库,superpowers 执行构建时可能因为本地settings.xml没配置镜像而失败。我建议把仓库地址写进项目级的README或.superpowers/project-rules/,让 AI 在需要构建时参考。
5.4 上下文过长或会话中断怎么办
这个应该是使用 AI 编程工具最头疼的问题之一。superpowers 并不能让上下文无限大,但它提供了相对优雅的解决方案:把中间产物持久化到文件,而不是全部塞进对话。
我的标准操作是:
- 每个阶段结束时,让 AI 把阶段结论写入
.superpowers/plans/目录; - 如果会话中断,新会话中直接告诉 AI“读取
.superpowers/plans/xxx.md,基于这个计划继续执行”; - 每周做一次项目知识归档,把重要的架构决策和编码规范沉淀到
.superpowers/project-rules/。
这个方法表面上只是“多写了几份文件”,实际效果却相当于给 AI 装了一个外部记忆盘。模型本身的上下文限制没有变,但它不再需要从零回忆项目背景,所有关键信息都在文件里。
6. 把 superpowers 融入日常开发:我的配置习惯与效费比评估
6.1 项目级规则的写法与示例
superpowers 的自定义能力,很大程度体现在project-rules上。我通常在项目初始化后做的第一件事,就是创建一份项目规则文件,例如.superpowers/project-rules/backend-rules.md:
# 项目规则 - 本项目使用 Spring Boot 3.x,Java 17,Maven - 实体类统一使用 Lombok - Controller 层只做参数接收和简单校验,不写业务逻辑 - Service 层必须使用 @Transactional 声明事务边界 - 所有接口统一返回 Result<T> 包装对象 - 新增功能必须配套单元测试,测试类命名以 Test 结尾 - 涉及数据库变更时,需要补充对应 SQL 脚本写好之后,superpowers 在执行任务时会自动加载这些规则并约束编码行为。这比你每次都在对话中重复强调“记得加事务”“记得写测试”要可靠得多。规则文件本身也是 git 仓库的一部分,团队成员都能复用,相当于把团队的编码规范直接“注入”到了 AI 的执行流程里。
关于规则颗粒度,我的经验是:不要写太多抽象原则,比如“代码要优雅”“要做好异常处理”这种话没意义,AI 无法量化执行。要写就写可检查的硬性约束,比如:
- “所有日期类型统一使用
java.time.LocalDateTime,不使用java.util.Date” - “接口入参必须使用 DTO 类,禁止直接接收 Map”
- “RESTful 接口路径统一以
/api开头”
规则越具体,AI 执行越不靠猜。我现在的项目规则文件大概有二十来条,每条都是针对项目实际踩过的坑总结出来的,效果比一开始写一堆泛泛而谈的“原则”好得多。
6.2 在单文件脚本、小工具等轻量场景下要不要用
前面我提到 superpowers 更适合正经项目,但在某些轻量场景里,它其实也能带来意外的好处。
比如你需要写一个一次性数据处理脚本。这种任务简单,不需要走 brainstorming、planning 那一整套流程。但 superpowers 的subagents技能也许能把任务拆成“数据读取”“清洗转换”“结果输出”三个子任务并行处理。不太复杂的任务也可以让它直接产出代码,只要你在指令里表达得足够清晰,AI 会判断是否需要触发技能流程。
我个人的做法是:在轻量场景下,尽量给足上下文,不需要用技能流程;但如果是给公司项目写代码,哪怕是很小的改动,我也会显式控制它的流程,至少把planning和code-review这两个环节走完。这不是形式主义,而是为了确保 AI 输出符合项目约束,不产生后续债务。
6.3 一周体验后的效费比评估
用了大概一周之后,我最大的感受是:superpowers 的核心价值不是让 AI 变得更“聪明”,而是让 AI 变得“更稳”。
效率上,前几次使用会感觉变慢了,因为多了澄清、规划、审查这些步骤。但放到整个项目周期看,因为返工变少了,最后的总时间是下降的。我实测过:以前裸用 Codex 开发一个多模块功能,可能要反复对话修修补补四五轮;现在用 superpowers,基本一两轮就能产出接近可合并的代码。
质量上,最明显的变化是“AI 开始主动确认需求了”。以前它像一个急于表现的实习生,现在更像一个愿意先把问题想清楚再动手的资深同事。对于团队协作来说,这种变化比单次生成代码的质量提升更宝贵。
当然,它也有适用边界。如果你用的是能力偏弱的模型,或者任务本身特别简单,superpowers 的流程化反而会带来不必要的开销。你需要根据自己的使用频率和项目复杂度,灵活决定用多重的流程。
6.4 创作新技能的初步尝试与边界
最后聊一聊自定义技能。superpowers 允许你在.superpowers/skills/下创建自己的技能文件,格式是 Markdown,核心包含技能名称、描述、触发条件、执行步骤。
我尝试创建一个简单的“代码提交信息生成”技能,内容大致是:
# commit-message-generator 描述:根据 git diff 生成符合 Conventional Commits 规范的提交信息 触发条件:用户请求生成 commit message,或提交代码前要求整理提交信息 执行步骤: 1. 运行 `git diff --cached` 获取暂存区变更 2. 分类变更类型:feat/fix/refactor/docs/style/test 3. 输出单行 subject(不超过 50 字符,使用祈使语气) 4. 如有必要,输出 body 说明变更动机把文件放到.superpowers/skills/commit-message-generator.md之后,重新启动 codex,就能通过@superpowers调用这个技能了。整个过程没有写一行代码,改的只是一个 Markdown 文件。
这种“靠文档定义行为”的设计让我有一种很奇妙的感觉:你不需要理解模型内部机制,也不需要写复杂的程序,只需要把正确的操作流程描述清楚,AI 就会按照这个流程执行。技能文件就是 AI 的程序,而你就是开发者。
我不建议一上来就做特别复杂的自定义技能。先把内置技能用好,理解一个技能文件的结构和触发逻辑,再慢慢根据自己项目的需要添加规则。等你熟练了,你会发现这其实是在给自己训练一个“懂你项目”的数字员工,它的行为模式完全由你来定义。
写在最后:现在值得动手试试
把 superpowers 接入我日常开发流程大概一周,最大的变化不是代码生成速度变快了,而是我对 AI 交付的东西“敢放心用了”。以前 Codex 写完代码我总要检查一遍有没有隐藏的坑,现在它自己会先做一轮需求澄清、一轮规划、一轮自测、一轮代码审查,剩下的问题已经少了很多。
如果你跟我一样,既想让 AI 提效,又不想被它的不稳定输出拖累,我建议你今晚就动手装一个试试。先做点小任务感受流程差异,再逐步把它引入你的主力项目。流程化的确会多一点仪式感,但配合项目规则去用,它会慢慢从一个“聊天机器人”变成真正能打配合的编码搭子。