Superpowers:让AI编码助手拥有资深工程师的工作流
文章目录
如果你的 AI 编码助手写出的代码像初级开发者——没有测试、缺少规划、最后还要你手动修 bug——这篇文章给你一个解决方案。
上周,一个叫 Superpowers 的项目在 GitHub 上爆火:一天内获得 1,867 个 star,目前已超过 9 万 star。它的核心理念很简单:给 AI 编码助手一套"技能系统",让它按照资深工程师的工作流来写代码。
本文深入解析 Superpowers 的工作原理,并展示如何在 Claude Code、OpenAI Codex、VS Code Copilot 中使用它。
问题:为什么 AI 编码助手会写出"面条代码"?
大多数 AI 编码工具(Cursor、Copilot、Claude Code 等)的工作方式是:
- 你描述需求
- AI 直接开始写代码
- 你检查、修改、运行测试
- 发现问题,再让 AI 修复
- 重复 3-4 直到满意
这个流程有几个问题:
- 缺少规划:AI 直接写代码,没有先设计
- 缺少验证:写完就提交,没有自检
- 缺少测试:AI 很少主动写测试,更别说 TDD
- 上下文混乱:多个任务混在一起,最后变成"面条代码"
Superpowers 的解决方案是:用一套"技能系统"约束 AI 的行为,让它按照标准化的工程流程工作。
Superpowers 是什么?
Superpowers 是一个 Agent Skill Framework(Agent 技能框架),由 Jesse Vincent(obra)创建。Jesse 是 JavaScript 社区的传奇人物,曾创建 History.js、Promise.js 等项目。
核心理念:
传统的 AI 编码:用户 → AI → 代码 → 用户检查
Superpowers:用户 → AI → 规划 → 验证 → 测试 → 代码 → 用户确认
它的工作方式:
- 技能自动触发:根据你的对话内容,自动选择合适的"技能"
- 结构化工作流:规划 → 实现 → 验证 → 测试 → 提交
- 可组合:多个技能可以组合使用
核心技能一览
Superpowers 提供了一系列内置技能:
1. Planning(规划技能)
在写代码前,先生成详细的实现计划:
## 任务:添加用户登录功能
### 实现计划
1. 创建 LoginController 处理认证逻辑
2. 添加 JWT token 生成和验证
3. 创建登录页面组件
4. 添加表单验证
5. 编写单元测试
6. 更新 API 文档
### 风险评估
- 需要处理 token 过期场景
- 密码存储需要使用 bcrypt
2. TDD(测试驱动开发技能)
强制 AI 先写测试,再写实现:
// AI 先写测试
describe('LoginController', () => {
it('should return 401 for invalid credentials', async () => {
const response = await request(app)
.post('/api/login')
.send({ username: 'test', password: 'wrong' });
expect(response.status).toBe(401);
});
it('should return token for valid credentials', async () => {
const response = await request(app)
.post('/api/login')
.send({ username: 'test', password: 'correct' });
expect(response.status).toBe(200);
expect(response.body.token).toBeDefined();
});
});
// 然后写实现
class LoginController {
async login(req, res) {
const { username, password } = req.body;
const user = await User.findByUsername(username);
if (!user || !await bcrypt.compare(password, user.password)) {
return res.status(401).json({ error: 'Invalid credentials' });
}
const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET);
return res.json({ token });
}
}
3. Verification(验证技能)
每一步完成后自动验证:
- 检查代码是否符合项目规范
- 运行 lint 检查
- 确保没有类型错误
- 验证测试覆盖率
4. Git Workflow(Git 工作流技能)
自动化的 Git 操作:
# 自动创建功能分支
git checkout -b feature/user-login
# 完成后自动提交
git add .
git commit -m "feat: add user login functionality
- Add LoginController with JWT authentication
- Add login page component with form validation
- Add unit tests for login flow"
# 可选:自动创建 PR
gh pr create --title "Add user login functionality" --body "..."
安装与配置
在 Claude Code 中使用
# 克隆 Superpowers 仓库到 Codex 配置目录
git clone https://github.com/obra/superpowers.git ~/.codex/superpowers
# 创建符号链接(让 Codex 自动发现技能)
ln -s ~/.codex/superpowers/skills ~/.codex/skills/superpowers
重启 Claude Code,技能会自动加载。
在 OpenAI Codex 中使用
# 使用 Codex 原生技能发现
curl -o /tmp/install.sh https://raw.githubusercontent.com/obra/superpowers/main/.codex/INSTALL.md
bash /tmp/install.sh
在 VS Code Copilot Agent 模式中使用
VS Code Copilot 的 Agent 模式会自动检测项目中的 .vscode/skills 目录:
# 创建技能目录
mkdir -p .vscode/skills
# 下载 Superpowers 技能配置
curl -o .vscode/skills/superpowers.md \
https://raw.githubusercontent.com/obra/superpowers/main/SKILL.md
实战:使用 Superpowers 开发一个功能
假设我们要给一个 Node.js 项目添加"用户头像上传"功能。
步骤 1:描述需求
我需要添加用户头像上传功能,支持 JPG/PNG 格式,
最大 2MB,上传后自动生成缩略图。
步骤 2:Superpowers 自动触发规划技能
AI 会先生成详细的实现计划:
## 用户头像上传功能 - 实现计划
### 技术方案
1. 使用 multer 处理文件上传
2. 使用 sharp 处理图片压缩和缩略图生成
3. 添加文件类型和大小验证
4. 存储到云存储(建议 S3 或兼容服务)
### 文件结构
- controllers/AvatarController.js - 上传接口
- middleware/upload.js - multer 配置
- services/ImageService.js - 图片处理
- tests/avatar.test.js - 单元测试
### API 设计
POST /api/users/:id/avatar
- Content-Type: multipart/form-data
- Body: avatar (file)
- Response: { avatarUrl, thumbnailUrl }
步骤 3:TDD 技能启动,先写测试
// tests/avatar.test.js
const request = require('supertest');
const app = require('../app');
const path = require('path');
describe('Avatar Upload', () => {
const validJpg = path.join(__dirname, 'fixtures', 'valid.jpg');
const largeFile = path.join(__dirname, 'fixtures', 'large.jpg');
const invalidFile = path.join(__dirname, 'fixtures', 'invalid.txt');
it('should upload valid JPG avatar', async () => {
const response = await request(app)
.post('/api/users/123/avatar')
.attach('avatar', validJpg);
expect(response.status).toBe(200);
expect(response.body.avatarUrl).toMatch(/^https:\/\//);
expect(response.body.thumbnailUrl).toBeDefined();
});
it('should reject files larger than 2MB', async () => {
const response = await request(app)
.post('/api/users/123/avatar')
.attach('avatar', largeFile);
expect(response.status).toBe(400);
expect(response.body.error).toContain('2MB');
});
it('should reject non-image files', async () => {
const response = await request(app)
.post('/api/users/123/avatar')
.attach('avatar', invalidFile);
expect(response.status).toBe(400);
expect(response.body.error).toContain('JPG or PNG');
});
});
步骤 4:实现代码
// middleware/upload.js
const multer = require('multer');
const path = require('path');
const storage = multer.memoryStorage();
const fileFilter = (req, file, cb) => {
const allowedTypes = ['image/jpeg', 'image/png'];
if (!allowedTypes.includes(file.mimetype)) {
return cb(new Error('Only JPG and PNG files are allowed'), false);
}
cb(null, true);
};
const upload = multer({
storage,
fileFilter,
limits: {
fileSize: 2 * 1024 * 1024 // 2MB
}
});
module.exports = upload.single('avatar');
// services/ImageService.js
const sharp = require('sharp');
class ImageService {
async processAvatar(buffer) {
// 原图压缩到 500x500
const avatar = await sharp(buffer)
.resize(500, 500, { fit: 'cover' })
.jpeg({ quality: 85 })
.toBuffer();
// 缩略图 100x100
const thumbnail = await sharp(buffer)
.resize(100, 100, { fit: 'cover' })
.jpeg({ quality: 80 })
.toBuffer();
return { avatar, thumbnail };
}
}
module.exports = new ImageService();
// controllers/AvatarController.js
const upload = require('../middleware/upload');
const ImageService = require('../services/ImageService');
const S3Service = require('../services/S3Service');
class AvatarController {
async uploadAvatar(req, res) {
try {
const { id } = req.params;
if (!req.file) {
return res.status(400).json({ error: 'No file uploaded' });
}
// 处理图片
const { avatar, thumbnail } = await ImageService.processAvatar(req.file.buffer);
// 上传到 S3
const [avatarUrl, thumbnailUrl] = await Promise.all([
S3Service.upload(`avatars/${id}.jpg`, avatar),
S3Service.upload(`avatars/${id}_thumb.jpg`, thumbnail)
]);
res.json({ avatarUrl, thumbnailUrl });
} catch (error) {
res.status(500).json({ error: error.message });
}
}
}
module.exports = new AvatarController();
步骤 5:验证技能运行
# 自动运行测试
npm test
# 自动运行 lint
npm run lint
# 自动类型检查(如果使用 TypeScript)
npm run type-check
步骤 6:Git 工作流技能自动提交
git checkout -b feature/avatar-upload
git add .
git commit -m "feat: add user avatar upload functionality
- Add multer middleware for file upload handling
- Add ImageService for image processing with sharp
- Add validation for file type (JPG/PNG) and size (2MB max)
- Add unit tests for upload scenarios
- Add avatar and thumbnail generation"
技能优先级与冲突处理
当技能与项目配置冲突时,Superpowers 遵循以下优先级:
用户指令 > 技能规则 > 项目默认行为
例如:
- 如果项目的
AGENTS.md说"不使用 TDD",但技能要求"必须使用 TDD" - 最终会遵循用户指令
这确保了灵活性,同时提供结构化的默认行为。
自定义技能
你可以创建自己的技能,放在项目的 .superpowers/skills/ 目录:
<!-- .superpowers/skills/custom-review.md -->
---
name: code-review
description: 在提交前自动进行代码审查
triggers:
- "完成"
- "提交"
- "review"
---
## 代码审查清单
在提交代码前,检查以下项目:
1. [ ] 是否有未处理的 TODO
2. [ ] 是否有 console.log 或 debugger 语句
3. [ ] 错误处理是否完整
4. [ ] 是否有安全风险(SQL 注入、XSS 等)
5. [ ] 性能是否有潜在问题
技能的触发机制
技能通过关键词和上下文自动触发。当你的对话包含触发词时,对应的技能会被激活:
# 技能触发示例
用户说: "帮我实现用户登录功能,要写测试"
触发技能:
- planning (包含"实现")
- tdd (包含"测试")
用户说: "这个 bug 怎么修"
触发技能:
- debugging
- planning
创建团队共享技能
在团队项目中,可以创建共享技能来统一编码规范:
<!-- .superpowers/skills/team-standards.md -->
---
name: team-standards
description: 团队编码规范
always_active: true
---
## 必须遵守的规范
### API 设计
- 所有 API 返回统一格式: `{ success, data, error, message }`
- 使用 RESTful 命名约定
- 错误码使用标准 HTTP 状态码
### 代码风格
- 使用项目配置的 ESLint 规则
- 函数必须有 JSDoc 注释
- 变量命名使用 camelCase,常量使用 UPPER_SNAKE_CASE
### 测试要求
- 新功能必须有单元测试,覆盖率 > 80%
- Bug 修复必须有回归测试
- 使用 Jest 测试框架
### 安全要求
- 所有用户输入必须验证和清理
- 敏感数据必须加密存储
- API 必须有速率限制
与其他 Agent 框架的对比
市面上有多种 Agent 框架,Superpowers 的定位是什么?
| 框架 | 定位 | 核心能力 |
|---|---|---|
| LangChain | Agent 编排 | 链式调用、工具集成、记忆管理 |
| AutoGPT | 自主 Agent | 目标驱动、自我迭代、长期规划 |
| CrewAI | 多 Agent 协作 | 角色分工、任务委派、协作流程 |
| Superpowers | 编码 Agent 工作流 | 技能系统、工程规范、质量保证 |
Superpowers 的独特之处:
- 专注编码场景:不是通用 Agent 框架,专门为代码生成优化
- 技能即规范:用技能强制执行工程规范,而不是事后检查
- 最小侵入:不需要改造现有项目,只需添加配置文件
- 工具无关:支持 Claude Code、Codex、Copilot 等多种工具
Superpowers vs LangChain
LangChain 是通用 Agent 框架,擅长编排多个工具和步骤。但在编码场景下:
# LangChain 方式 - 需要自己定义链
from langchain.chains import LLMChain
code_chain = LLMChain(
llm=llm,
prompt=code_prompt,
# 需要手动添加验证、测试等步骤
)
# Superpowers 方式 - 技能自动处理
你: "实现用户登录功能"
AI: [自动触发 planning -> tdd -> verification -> git workflow]
Superpowers 把工程流程封装在技能中,开发者不需要手动编排。
Superpowers vs Cursor/Copilot 内置能力
Cursor 和 Copilot 也有一定的 Agent 能力,但缺少结构化的工作流:
| 能力 | Cursor/Copilot | Superpowers |
|---|---|---|
| 代码生成 | ✅ | ✅ |
| 自动规划 | ❌ 需要提示 | ✅ 自动触发 |
| TDD 工作流 | ❌ 需要手动 | ✅ 强制执行 |
| 代码验证 | 部分 | ✅ 完整检查 |
| Git 自动化 | ❌ | ✅ 分支、提交、PR |
常见问题与解决方案
Q1: 技能没有自动触发?
检查以下几点:
# 1. 确认技能目录正确
ls ~/.codex/skills/superpowers
# 应该看到多个 .md 文件
# 2. 检查符号链接
ls -la ~/.codex/skills/superpowers
# 应该指向正确的目录
# 3. 重启编码工具
# Claude Code: 重新打开终端
# VS Code: 重新加载窗口 (Cmd+Shift+P -> Reload Window)
Q2: 技能规则与项目配置冲突?
Superpowers 的优先级规则:
用户明确指令 > 项目配置文件 (AGENTS.md) > Superpowers 技能
如果技能的规则不适合你的项目,可以:
- 在项目的
AGENTS.md中明确覆盖:
# AGENTS.md
## 开发规范
- 不使用 TDD(项目处于快速原型阶段)
- 优先功能实现,测试在稳定后补充
- 或者直接在对话中说明:
"先实现功能,不用写测试"
Q3: 如何调试技能行为?
Superpowers 支持调试模式:
# 启用调试日志
export SUPERPOWERS_DEBUG=true
# 运行编码工具,查看日志
claude-code "实现用户登录" 2>&1 | grep superpowers
日志会显示哪些技能被触发,以及每个技能的执行情况。
Q4: 团队如何共享技能?
最佳实践是创建共享的技能仓库:
team-skills/
├── skills/
│ ├── team-standards.md
│ ├── security-review.md
│ └── api-design.md
├── SKILL.md # 技能索引
└── README.md # 使用说明
团队成员克隆后链接到各自工具:
git clone git@github.com:yourteam/team-skills.git
ln -s team-skills ~/.codex/skills/team
进阶:理解技能的内部机制
技能文件结构
一个完整的技能包含以下部分:
---
# 元数据
name: skill-name
description: 技能描述
triggers: # 触发条件
- "关键词1"
- "关键词2"
priority: 10 # 优先级,数字越大越优先
always_active: false # 是否始终激活
---
# 技能内容
## 目标
描述这个技能要达成什么目标
## 规则
- 规则1
- 规则2
## 检查清单
- [ ] 检查项1
- [ ] 检查项2
技能执行流程
用户输入
↓
[关键词匹配] → 找到候选技能
↓
[优先级排序] → 选择最高优先级技能
↓
[上下文检查] → 确认技能适用
↓
[执行技能规则] → AI 按规则生成响应
↓
[后续技能触发] → 检查是否需要触发其他技能
技能组合示例
复杂任务会触发多个技能:
用户: "实现一个安全的用户认证系统,要有完整测试"
触发链:
1. planning-skill (检测到"实现")
→ 生成实现计划
2. security-skill (检测到"安全")
→ 添加安全审查清单
3. tdd-skill (检测到"测试")
→ 强制先写测试
4. verification-skill (检测到"完成")
→ 验证代码质量
5. git-workflow-skill (检测到"完成")
→ 自动提交
实际项目中的最佳实践
1. 项目初始化时配置技能
# 新项目初始化
mkdir my-project && cd my-project
git init
# 安装 Superpowers
git clone https://github.com/obra/superpowers.git .superpowers
# 创建项目级技能配置
mkdir -p .superpowers/custom-skills
2. 为不同类型任务选择技能组合
| 任务类型 | 推荐技能组合 |
|---|---|
| 新功能开发 | planning + tdd + git-workflow |
| Bug 修复 | debugging + tdd + regression-test |
| 重构 | planning + refactoring + verification |
| 性能优化 | profiling + benchmarking + tdd |
3. 团队协作时的技能管理
# .superpowers/team-config.yaml
shared_skills:
- team-standards
- security-review
- api-design
individual_skills:
- personal-preferences
disabled_skills:
- experimental-feature # 团队统一禁用实验性技能
总结
Superpowers 解决了 AI 编码助手的核心痛点:
| 问题 | Superpowers 的解决方案 |
|---|---|
| 缺少规划 | Planning 技能自动生成实现计划 |
| 缺少测试 | TDD 技能强制先写测试 |
| 缺少验证 | Verification 技能自动检查代码质量 |
| 提交混乱 | Git Workflow 技能规范化提交流程 |
对于团队来说,Superpowers 提供了一种"编码规范"之外的手段——用技能系统约束 AI 的行为,确保每次生成的代码都符合工程标准。
推荐尝试场景:
- 新功能开发
- 重构任务
- Bug 修复(特别是需要写回归测试的场景)
实际应用场景分析
场景 1:初创公司快速迭代
初创公司常常面临"速度 vs 质量"的抉择。Superpowers 让两者兼得:
- AI 自动按工程规范生成代码
- TDD 确保每行代码都有测试覆盖
- 验收阶段自动验证
结果是:代码质量不输大厂,但开发速度提升 3-5 倍。
场景 2:遗留代码维护
维护遗留代码最怕"改坏现有功能"。Superpowers 的技能系统可以配置为:
- 任何修改前必须先生成测试用例
- 修改后必须通过所有现有测试
- 自动生成变更文档
这样即使不熟悉代码,也能安全地进行修改。
场景 3:团队知识传承
当团队使用统一的 Superpowers 技能配置时:
- 新人加入后自动获得团队的编码规范
- 所有代码风格保持一致
- 代码审查从"风格检查"转向"逻辑审查"
场景 4:远程协作项目
分布式团队常见的问题是沟通成本高、代码风格不统一。Superpowers 通过技能系统实现了"隐式知识编码"——把团队的编码规范、Review 要点、安全要求都封装成技能,让 AI 自动执行。
结果:
- 减少不必要的 Code Review 轮次
- 新人 PR 的一次通过率显著提升
- 团队整体的代码质量更加稳定
技术实现细节
技能优先级系统
当多个技能同时触发时,优先级决定了执行顺序:
# 优先级示例
skills:
planning:
priority: 100 # 最高优先级,首先执行
tdd:
priority: 80 # 规划后执行
verification:
priority: 60 # 代码生成后执行
git-workflow:
priority: 40 # 最后执行
上下文感知
Superpowers 的技能不仅基于关键词触发,还会分析上下文:
# 伪代码示例
def should_trigger_skill(user_input, context):
# 检查关键词
if contains_keyword(user_input, skill.triggers):
# 检查上下文适用性
if is_applicable(context, skill.requirements):
return True
return False
这种设计确保技能在正确的场景下被触发,避免"过度触发"或"触发不足"的问题。
与项目配置的集成
Superpowers 可以读取项目配置文件来调整行为:
# .superpowers/project.yaml
project:
name: "my-app"
type: "nodejs"
language:
typescript: true
linter: "eslint"
test_framework: "jest"
coding_standards:
max_line_length: 100
require_types: true
min_test_coverage: 80
技能会根据这些配置自动调整生成代码的风格和验证标准。
未来展望
Superpowers 社区正在开发更多技能:
- 安全审查技能:自动检测常见安全漏洞(SQL 注入、XSS、CSRF 等)
- 性能优化技能:分析代码性能瓶颈,提供优化建议
- 文档生成技能:自动生成 API 文档和代码注释
- 架构审查技能:检查代码是否符合架构设计原则
- 国际化技能:自动处理多语言和本地化需求
- 可访问性技能:确保生成的 UI 代码符合 WCAG 标准
这些技能将进一步完善 AI 编码助手的能力边界,让 AI 不仅能写代码,还能写出"好代码"。
相关资源
- GitHub: https://github.com/obra/superpowers
- 安装文档: https://github.com/obra/superpowers/blob/main/.codex/INSTALL.md
- 技能市场: https://skillsmp.com/skills/obra-superpowers
- Jesse Vincent 博客: https://words.steveklabnik.com/
- Superpowers 官方 Discord: https://discord.gg/superpowers
行动建议
个人开发者 (Personal Developers): 今天就安装 Superpowers,体验 “AI Senior Engineer” 的工作方式。Install it today and see the difference in your coding workflow. This is a game changer for developers who want to write better code with AI assistance.
技术团队 (Tech Teams): 把 Superpowers 技能配置纳入团队开发规范,统一代码质量标准。Configure skills in your team’s workflow to ensure consistent code quality across all projects.
初创公司 (Startups): 用 Superpowers 快速建立工程规范,避免技术债务积累。Build robust engineering practices from day one without slowing down your iteration speed.
技术博主 (Tech Bloggers): 用 Superpowers 作为案例,分析 AI 开发工具的发展趋势。Use this framework as a real example to demonstrate the future of AI-powered development tools.
作为开发者,我们正站在 AI 辅助编程的历史节点。Superpowers 代表的"技能系统"思路,很可能是未来 AI 开发者工具的主流方向。现在开始学习和使用这项技术,意味着你在未来的竞争中占据了先机。
值得注意的是,Superpowers 仍在快速迭代中。每周都有新的技能被社区贡献出来,功能也在不断完善。建议关注 GitHub 的 Releases 页面,及时了解最新功能。
同时,obra 也在积极构建生态系统。除了官方的技能市场,第三方开发者也在贡献各种垂直领域的技能。如果你有特定行业的需求,完全可以自己开发技能并分享给社区。
更重要的是,Superpowers 的设计哲学值得每一个 AI 工具开发者学习:不是让 AI 变得更"聪明",而是让 AI 的行为变得更"可预测"和"可控制"。这种思路对于企业级应用来说尤其重要。
当你需要在生产环境中部署 AI 辅助编程工具时,“可控性"往往比"能力"更重要。你需要一个能够按照团队规范工作的 AI,而不是一个"聪明但不可预测"的 AI。Superpowers 正是为这个需求而设计的。
这也解释了为什么 Superpowers 一经推出就获得如此高的关注度。企业开发者需要一个可以"信任"的 AI 工具,而 Superpowers 通过技能系统提供了这种信任基础。
可以说,Superpowers 的出现标志着 AI 编程工具从"能做什么"转向"应该怎么做"的新阶段。这不仅是工具的进化,更是软件开发方法论的进化。
写在最后
Superpowers 的核心价值不是"让 AI 写代码”,而是"让 AI 按照正确的工程方式写代码"。它把资深工程师的思维模式——规划、验证、测试、审查——封装成可复用的技能,让任何人都能享受"资深工程师思维"带来的好处。
如果你也曾被 AI 生成的代码坑过,不妨试试 Superpowers。它可能不会让 AI 变得更强,但一定会让 AI 生成的代码更靠谱。
本文由 Lucky 发布于 shiller.cn 技术博客
往期精选