编程 Superpowers 深度实战:让 AI 编程从「随意发挥」到「工程化落地」——204K Star 的 AI Agent 软件开发方法论完全指南(2026)

2026-06-26 05:13:28 +0800 CST views 6

Superpowers 深度实战:让 AI 编程从「随意发挥」到「工程化落地」——204K Star 的 AI Agent 软件开发方法论完全指南(2026)

截至 2026 年 6 月,Superpowers 在 GitHub 上已获得超过 204K Stars,Anthropic 官方插件市场安装量突破 68 万次,是 Claude Code 生态中增长最快的插件,没有之一。

一、为什么需要 Superpowers?

1.1 AI 编程的「实习生困境」

2025 年到 2026 年,AI 编程工具(Claude Code、Cursor、GitHub Copilot、Codex)经历了爆发式增长。但一个核心问题始终没有解决:

AI 写代码很快,但写得「对」吗?

你肯定遇到过这些情况:

  • 你让 AI 「帮我做个用户登录功能」,它噼里啪啦一顿输出,代码能跑,但没考虑密码哈希、没做输入校验、没写单元测试,更没考虑过 Session 安全
  • 你让它「重构一下这个函数」,它改完之后,相关性依赖全崩了,还得你手动修复
  • 你让它「修复这个 Bug」,它改了一个地方,却在另一个地方引入了新 Bug

这种现象,我称之为 「实习生困境」:AI 像一个刚入职的实习生,热情高涨、执行迅速,但缺乏软件工程的「纪律感」——不清楚什么时候该停下来思考,不知道什么时候该写测试,更不知道什么时候该主动发起代码评审。

1.2 Vibe Coding 的兴起与局限

2025 年底,Andrej Karpathy 提出了 Vibe Coding 概念——用自然语言「氛围编程」,让开发者专注于意图表达,AI 负责实现细节。这确实降低了编程门槛,让更多人能快速实现想法。

但 Vibe Coding 有个先天缺陷:它依赖开发者的经验和自律。如果你本身就是资深工程师,你知道什么时候该停、该测、该审;但如果你经验不足,Vibe Coding 会放大你的盲区,产出的代码能跑,但经不起生产环境的考验。

Superpowers 的作者 Jesse Vincent(GitHub @obra)看到了这个问题。他的解决方案是:

Process over Prompt(流程大于提示词)

不给 AI 更多「能力」,而是给 AI 套上软件工程的「纪律与护栏」,让它像资深工程师一样:先思考 → 再规划 → 后编码 → 必验证


二、Superpowers 是什么?

2.1 核心定位

Superpowers 是一套完整的 AI 编程 Agent 软件开发方法论框架,基于一组可组合的「技能(Skills)」构建。它不是一个代码库,而是一套用 Shell 和 Markdown 编写的「职业技能包」,通过插件机制注入到 Claude Code、Cursor、Codex 等 AI 编程工具中。

核心设计哲学:

  1. 可组合的技能系统:每个技能是一个独立的能力模块,可以单独使用,也可以组合成完整工作流
  2. 流程强制:通过 Hook 机制,强制 AI 在特定阶段执行特定技能(比如:编码前必须先做头脑风暴)
  3. 方法论优先:不依赖模型的推理能力,而是用明确的工程流程来约束 AI 的行为
  4. 工具无关:通过插件机制支持 Claude Code、Cursor、Codex、OpenCode 等多个 AI 编程工具

2.2 架构概览

┌─────────────────────────────────────────────────────────┐
│                  AI 编程工具层                           │
│  (Claude Code / Cursor / Codex / OpenCode)             │
└────────────────────┬────────────────────────────────────┘
                     │ 插件注入
┌────────────────────▼────────────────────────────────────┐
│              Superpowers 技能框架                        │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐            │
│  │ 开发流程  │  │ 质量保证  │  │ 调试元    │            │
│  │ 类技能    │  │ 类技能    │  │ 技能      │            │
│  └──────────┘  └──────────┘  └──────────┘            │
│  ┌──────────────────────────────────────────────┐       │
│  │          Hook 机制(流程强制)                │       │
│  └──────────────────────────────────────────────┘       │
└─────────────────────────────────────────────────────────┘

三、14 个核心技能深度解析

截至 2026 年 6 月,Superpowers v5.1.0 包含 14 个核心技能,分为三大类。

3.1 开发流程类技能(6 个)

3.1.1 brainstorming —— 需求澄清与方案探索

触发时机:任何新功能开发之前(强制)

核心作用:防止 AI 「想当然」地直接写代码。它会通过提问帮你澄清需求、探索技术方案、识别潜在风险,并生成设计文档。

工作流程

  1. 理解意图:AI 会读取你的初始需求,识别出模糊、不完整或可能引发歧义的地方
  2. 提出澄清问题:AI 会主动提问,比如:
    • 「用户登录是用 Session 还是 JWT?」
    • 「需要考虑第三方账号登录(OAuth)吗?」
    • 「密码找回流程要做吗?」
  3. 探索技术方案:AI 会分析多种实现路径的优劣(比如:用现成的 Auth0 vs 自研)
  4. 生成设计文档:将讨论结果整理成结构化文档,保存到项目目录(默认 .superpowers/design.md

实际案例

# 用户需求:「帮我做个博客系统的评论功能」

## AI 通过 brainstorming 提出的澄清问题:

1. 匿名评论还是登录后评论?(涉及身份验证)
2. 需要评论审核机制吗?(防止垃圾评论)
3. 支持嵌套回复吗?(楼中楼结构)
4. 需要@提及功能吗?(涉及通知系统)
5. 评论支持 Markdown 吗?(需要渲染和安全过滤)
6. 需要防刷机制吗?(Rate Limiting)

## 生成的设计文档片段:

### 技术方案对比

| 方案 | 优点 | 缺点 | 推荐场景 |
|------|------|------|----------|
| 自研评论系统 | 完全可控、无第三方依赖 | 需要自己处理反垃圾、通知等 | 对定制化要求高 |
| 接入 Disqus | 快速上线、自带反垃圾 | 国外服务、加载慢、数据不在自己手里 | 快速 MVP |
| 使用 Giscus(GitHub Discussions) | 免费、无广告、数据在 GitHub | 需要 GitHub 账号才能评论 | 技术博客 |

3.1.2 writing-plans —— 任务拆解与执行计划

触发时机:设计文档确认后,编码开始前(强制)

核心作用:将模糊的需求转化为可执行的、有序的任务清单,每个任务都有明确的验收标准。

计划结构

# 执行计划:博客评论功能

## Phase 1:数据模型设计(预估:1h)

### Task 1.1:设计 Comment 数据表
- [ ] 确定字段:id, post_id, user_id, content, parent_id, created_at, status
- [ ] 确定索引:post_id + created_at(查询优化)
- [ ] 确定状态枚举:pending / approved / spam

### Task 1.2:编写 Migration
- [ ] 使用 ORM(Prisma / TypeORM)编写 schema
- [ ] 生成并提交 migration 文件

## Phase 2:API 开发(预估:2h)

### Task 2.1:GET /api/comments?post_id=xxx
- [ ] 实现分页查询
- [ ] 支持按创建时间排序
- [ ] 返回嵌套结构(若有 parent_id)

### Task 2.2:POST /api/comments
- [ ] 校验用户身份(JWT / Session)
- [ ] 校验内容长度(1-2000 字符)
- [ ] XSS 过滤(使用 DOMPurify)
- [ ] Rate Limiting(同一用户 60s 内最多 5 条)
- [ ] 存入数据库,初始状态为 pending(需审核)

...

关键特性

  • 粒度控制:每个 Task 不应超过 2 小时工作量,确保可频繁提交和验证
  • 依赖标注:用 depends_on: [Task 1.1] 明确任务依赖关系
  • 验收标准:每个 Task 都有明确的「完成定义」(Definition of Done)

3.1.3 executing-plans —— 按计划执行编码

触发时机:计划确认后

核心作用:严格按计划编码,不允许 AI 跳过任务或擅自修改计划。如果 AI 发现计划有问题,必须先更新计划,再继续执行。

执行规则

  1. 逐任务执行:完成一个 Task,验证一个 Task,再进入下一个
  2. 实时同步进度:每完成一个 Task,更新计划文件(标记 [x]
  3. 遇到问题先停:如果某个 Task 无法实现(比如发现依赖的库有 Bug),立即停止,通知用户,更新计划

代码示例(AI 执行 Task 2.2 的伪代码流程):

# AI 执行 POST /api/comments 时的思考过程(由 Superpowers 引导)

# Step 1:校验用户身份
# ✅ 检查 JWT token 是否有效
# ✅ 从 token 中解析 user_id

# Step 2:校验输入
# ✅ content 长度 1-2000
# ✅ post_id 必须存在(先查数据库)

# Step 3:安全过滤
# ✅ 用 bleach 或 DOMPurify 过滤 HTML 标签
# ✅ 禁止 <script> 标签

# Step 4:Rate Limiting
# ✅ 用 Redis 记录 user_id 的请求时间戳
# ✅ 60s 内超过 5 次 → 返回 429

# Step 5:存入数据库
# ✅ status = 'pending'(需要审核)
# ✅ 返回 201 + comment_id

3.1.4 subagent-driven-development —— 子 Agent 并行开发

触发时机:计划中有多个独立任务时

核心作用:利用 AI 的并行能力,同时启动多个「子 Agent」,分别处理不同的 Task,最后合并结果。

适用场景

  • 前后端可以并行开发(比如:后端写 API,前端写页面组件)
  • 多个独立功能模块(比如:用户系统、评论系统、标签系统)
  • 测试代码编写(可以与主代码编写并行)

工作流程

主 Agent(项目经理角色)
  ├── 子 Agent A:负责后端 API(Task 2.1, 2.2, 2.3)
  ├── 子 Agent B:负责前端组件(Task 3.1, 3.2)
  └── 子 Agent C:负责测试用例(Task 4.1, 4.2)

注意事项

  • 子 Agent 之间需要通过共享设计文档来保持接口一致
  • 主 Agent 负责最终集成和冲突解决

3.1.5 using-git-worktrees —— Git 工作区隔离

触发时机:开始执行计划时

核心作用:为每个 Task 或 Phase 创建独立的 Git Worktree,避免不同任务之间的代码互相干扰。

为什么需要 Worktree?

传统做法是:一个功能分支,连续提交。但 AI 编程速度快,经常出现「写到一半发现方向不对,要回退」的情况。用 Worktree 可以:

  • 每个 Task 在独立的目录中开发
  • 随时可以放弃某个 Task 的改动,不影响其他 Task
  • 最后用 git mergegit worktree merge 合并

命令示例

# Superpowers 会自动执行类似下面的命令

# 基于 main 分支,为 Task 2.1 创建独立工作区
git worktree add ../my-project-task-2.1 task-2.1-start

# AI 在 ../my-project-task-2.1 中工作
# 完成后,合并回主分支
git merge --no-ff task-2.1-start

3.1.6 finishing-a-development-branch —— 分支收尾与提交规范

触发时机:所有 Task 完成后,准备合并到主分支时

核心作用:确保提交历史清晰、commit message 规范、分支可以安全删除。

检查清单

  • 所有 Task 都已标记完成
  • 代码通过了 Linter(ESLint / Prettier / gofmt)
  • 所有测试通过(npm test / pytest / go test
  • 没有硬编码的敏感信息(用 grep -r "SECRET\|PASSWORD\|API_KEY" 检查)
  • Commit message 符合规范(Conventional Commits)
  • 删除了调试代码(console.log / print() / # TODO: remove

自动生成的 Commit Message 示例

feat(comments): implement comment API with moderation support

- Add Comment model and migration
- Implement GET /api/comments with pagination
- Implement POST /api/comments with XSS protection
- Add rate limiting (5 requests per 60s per user)
- Add unit tests for comment service

Closes #123

3.2 质量保证类技能(5 个)

3.2.1 test-driven-development —— TDD 强制执行

触发时机:每个 Task 编码前

核心作用:强制 AI 先写测试,再写实现代码(Test-Driven Development)。

为什么 AI 需要 TDD?

AI 写代码时,往往会「乐观主义」——假设输入都是合法的、边界情况不会发生。TDD 可以强制 AI 考虑:

  • 边界条件(空输入、超长字符串、负数、null)
  • 异常情况(网络超时、数据库锁定、文件不存在)
  • 并发问题(多个请求同时修改同一资源)

TDD 执行流程

# Task:实现 POST /api/comments

# Step 1:先写测试(AI 必须先完成这一步)
def test_create_comment_success():
    response = client.post("/api/comments", json={
        "post_id": 1,
        "content": "这是一条测试评论"
    }, headers={"Authorization": f"Bearer {valid_token}"})
    
    assert response.status_code == 201
    assert response.json()["content"] == "这是一条测试评论"
    assert response.json()["status"] == "pending"

def test_create_comment_unauthorized():
    response = client.post("/api/comments", json={
        "post_id": 1,
        "content": "未授权评论"
    })
    assert response.status_code == 401

def test_create_comment_xss():
    response = client.post("/api/comments", json={
        "post_id": 1,
        "content": "<script>alert('XSS')</script>"
    }, headers={"Authorization": f"Bearer {valid_token}"})
    
    # 内容应该被过滤
    assert "<script>" not in response.json()["content"]

# Step 2:再写实现代码(让测试通过)
def create_comment(post_id, content, user_id):
    # 实现代码...
    pass

# Step 3:运行测试,确保全部通过
# pytest tests/test_comments.py

3.2.2 requesting-code-review —— 发起代码评审

触发时机:一个 Task 完成后(可选,但推荐)

核心作用:让 AI 以「资深工程师」的视角,对自己的代码进行评审,输出改进建议。

评审维度

  1. 正确性:逻辑是否正确?边界情况是否处理?
  2. 安全性:有没有 SQL 注入、XSS、CSRF 等漏洞?
  3. 性能:有没有 N+1 查询?有没有不必要的全表扫描?
  4. 可维护性:变量命名是否清晰?函数是否过长?有没有重复代码?
  5. 测试覆盖:测试是否覆盖了关键路径?有没有遗漏的边界情况?

评审输出示例

# Code Review:POST /api/comments 实现

## ✅ 做得好的地方

1. 使用了参数化查询,防止 SQL 注入
2. Rate Limiting 实现正确,用了 Redis 的 sorted set
3. XSS 过滤用了白名单策略(只允许 <b>, <i>, <code> 等安全标签)

## ⚠️ 需要改进的地方

1. **性能问题**:
   - 在 `create_comment` 中,先 INSERT,再 SELECT 完整记录(两次数据库查询)
   - 建议:用 `RETURNING *`(PostgreSQL)或 `LAST_INSERT_ID()`(MySQL)一次性获取

2. **安全问题**:
   - Rate Limiting 的 Redis key 用了 `user_id`,但 `user_id` 是 JWT 中的 payload,可以被客户端伪造
   - 建议:用 JWT 的 JTI(JWT ID)或 Session ID 作为 Rate Limiting 的 key

3. **测试覆盖不足**:
   - 没有测试「评论内容包含 Emoji」的情况(数据库字符集可能不支持)
   - 没有测试「并发创建评论」的情况(Race Condition)

## 🔴 必须修复

1. **SQL 注入风险**:
   - 在 `get_comments_by_post` 函数中,用了 f-string 拼接 `ORDER BY {sort_field}`
   - 如果 `sort_field` 来自用户输入,可以导致 SQL 注入
   - 建议:用白名单校验 `sort_field in ["created_at", "likes_count"]`

3.2.3 receiving-code-review —— 处理评审意见

触发时机requesting-code-review 完成后,或人类发起了代码评审

核心作用:AI 根据评审意见,逐一修复问题,并回复评审者。

处理流程

  1. 理解评审意见:AI 会逐条分析评审意见,区分「必须修复」和「建议优化」
  2. 制定修复计划:对于多条意见,AI 会制定修复顺序(先修安全问题,再修性能问题)
  3. 执行修复:修改代码,并运行相关测试,确保没引入新问题
  4. 回复评审者:用礼貌、专业的语言回复每一条意见(如果是人类评审)

回复示例

Thanks for the review! I've addressed all the issues:

1. ✅ **性能问题**:改用 `RETURNING *`,减少一次数据库查询(commit abc123)
2. ✅ **安全问题**:Rate Limiting 的 key 改为 JWT 的 JTI(commit abc124)
3. ✅ **SQL 注入风险**:用白名单校验 `sort_field`(commit abc125)
4. ⏳ **测试覆盖不足**:Emoji 和并发测试的添加我在 #124 中跟踪,这次先不加入(评论功能已经够复杂了)

All tests pass. PTAL (Please Take Another Look).

3.2.4 verification-before-completion —— 完成前验证

触发时机:所有 Task 完成后,准备合并时

核心作用:最后一次全面检查,确保代码质量、安全性、性能都没有明显问题。

验证清单(比 finishing-a-development-branch 更严格):

  • 功能验证:手动测试所有用户场景(Happy Path + Edge Cases)
  • 安全扫描:用 bandit(Python)/ npm audit(Node.js)/ cargo audit(Rust)扫描依赖漏洞
  • 性能基准:对关键 API 做压力测试(用 wrk / ab / hey
  • 代码覆盖率:运行 coverage report,确保核心逻辑的覆盖率 > 80%
  • 文档完整性:API 文档(OpenAPI / Swagger)是否更新?README 是否需要修改?

3.2.5 using-git-bisect —— Git 二分调试(调试与元技能)

触发时机:发现了一个 Bug,但不知道是哪个提交引入的

核心作用:自动化 git bisect 流程,快速定位引入 Bug 的提交。

工作流程

  1. 标记已知好的提交git bisect good <commit-hash>
  2. 标记已知坏的提交git bisect bad HEAD
  3. 运行测试:AI 会自动在每个二分提交上运行测试,标记 good 或 bad
  4. 定位结果git bisect 会输出第一个引入 Bug 的提交

自动化脚本示例

# Superpowers 会生成类似下面的脚本

git bisect start
git bisect bad HEAD
git bisect good v1.2.0

# 运行自动化测试
git bisect run pytest tests/test_comment_api.py -k "test_create_comment"

# 输出:
# Bisecting: 5 revisions left to test
# [abc123] Implement comment API
# Bisecting: 2 revisions left to test
# [def456] Add rate limiting to comment API
# Bisecting: 0 revisions left to test
# [789012] Fix XSS in comment content
# def456 is the first bad commit

3.3 调试与元技能类(3 个)

3.3.1 debugging-with-systematic-method —— 系统化调试方法

核心思想:不搞「瞎试」,而是用科学方法调试:

  1. 观察现象:准确描述 Bug 的表现(什么操作、什么输入、什么输出)
  2. 提出假设:可能的原因有哪些?(比如:缓存未更新、数据库事务未提交、Race Condition)
  3. 设计实验:如何验证假设?(比如:加日志、用调试器单步执行、写最小化复现脚本)
  4. 执行实验:运行实验,收集数据
  5. 分析结果:假设是否成立?如果不成立,回到步骤 2

3.3.2 asking-high-quality-questions —— 提问的艺术

当你(人类)或 AI 遇到无法解决的问题时,如何提问才能最快得到答案?

高质量提问模板

## 问题标题:用一句话描述问题(包含关键信息)

### 环境
- OS:macOS 15.0 / Ubuntu 24.04
- 语言 / 框架版本:Python 3.13, FastAPI 0.115
- 相关依赖及版本:SQLAlchemy 2.0, Redis 7.2

### 预期行为
描述你期望发生什么

### 实际行为
描述实际发生了什么(附错误日志、截图)

### 最小复现步骤
1. 克隆仓库 xxx
2. 运行 `python main.py`
3. 访问 `http://localhost:8000/api/comments`
4. 看到 500 错误

### 我已尝试的解决方案
- 方案 A:无效,原因是...
- 方案 B:部分有效,但引入了新问题...

### 相关代码(最小化)
(粘贴关键代码片段,不超过 50 行)

3.3.3 managing-context-window —— 上下文窗口管理

为什么重要? AI 模型(包括 Claude)有上下文窗口限制(比如 200K tokens)。当项目变大,单个会话的上下文会迅速耗尽,导致 AI 「失忆」。

管理策略

  1. 定期压缩上下文:完成一个 Phase 后,让 AI 生成「阶段总结」,然后开启新会话
  2. 用文件代替上下文:把设计文档、执行计划、API 文档保存到文件,AI 需要时再读取(用 @filename 引用)
  3. 分离子任务:用 subagent-driven-development 把大任务拆成小任务,每个子 Agent 只关注自己的上下文

四、安装与配置实战

4.1 Claude Code 安装(最推荐)

方式一:Anthropic 官方插件市场(最简单)

# 注册插件市场(只需一次)
/plugin marketplace add obra/superpowers -marketplace

# 安装 Superpowers
/plugin install superpowers@superpowers -marketplace

# 验证安装
/help
# 应该能看到 Superpowers 相关命令

方式二:从 GitHub 手动安装(适合定制)

# 克隆仓库到 Claude Code 的 plugins 目录
cd ~/.claude/plugins
git clone https://github.com/obra/superpowers.git

# 在 Claude Code 中加载本地插件
/plugin install ../superpowers

4.2 Cursor 安装

Cursor 的插件机制与 Claude Code 不同。Superpowers 通过 .cursor-plugin 目录提供支持。

# 在项目根目录中
git clone https://github.com/obra/superpowers.git .superpowers-temp
cp -r .superpowers-temp/.cursor-plugin ./
rm -rf .superpowers-temp

# 重启 Cursor,Superpowers 技能会自动加载

4.3 配置文件详解

安装完成后,Superpowers 会在你的项目目录中生成 .superpowers/ 配置目录:

.superpowers/
├── config.json          # 全局配置(哪些技能启用、执行顺序)
├── design.md            # 设计文档(brainstorming 输出)
├── plan.md              # 执行计划(writing-plans 输出)
├── skills/
│   ├── brainstorming.md
│   ├── writing-plans.md
│   └── ...              # 每个技能的详细提示词
└── hooks/
    ├── pre-encoding.json   # 编码前强制执行的 Hook
    └── post-task.json      # 任务完成后强制执行的 Hook

config.json 示例

{
  "version": "5.1.0",
  "enabled_skills": [
    "brainstorming",
    "writing-plans",
    "executing-plans",
    "test-driven-development",
    "requesting-code-review"
  ],
  "skill_order": {
    "pre_encoding": ["brainstorming", "writing-plans"],
    "during_encoding": ["executing-plans", "test-driven-development"],
    "post_task": ["requesting-code-review", "verification-before-completion"]
  },
  "hooks": {
    "enforce_brainstorming_before_coding": true,
    "auto_update_plan_on_completion": true
  }
}

五、完整实战:用 Superpowers + Claude Code 从零开发「JWT 认证中间件」

为了让你真正理解 Superpowers 的威力,我用一个完整实战案例来演示:从零开发一个 Express.js 的 JWT 认证中间件

5.1 第一步:启动 Brainstorming

人类输入

我想做一个 Express.js 的 JWT 认证中间件,支持:
- 从 Authorization header 提取 token
- 验证 token 合法性(签名、过期时间)
- 把解码后的 payload 挂载到 req.user
- 支持可选的白名单路径(比如 /health 不需要认证)

Claude Code(被 Superpowers 引导)

🤔 我来帮你澄清需求并探索方案。

## 澄清问题

1. **JWT 签名算法**:你打算用 HS256(对称加密,共享密钥)还是 RS256(非对称加密,公钥/私钥对)?
   - HS256 更简单,适合单体应用
   - RS256 更安全,适合微服务(认证服务和资源服务分离)

2. **Token 过期处理**:Token 过期后,是直接返回 401,还是支持 Refresh Token 机制?

3. **白名单配置方式**:是用数组硬编码,还是支持从配置文件 / 数据库读取?

4. **错误处理**:认证失败时,返回的错误格式是什么?(统一的 JSON 错误格式?)

## 技术方案对比

### 方案 A:用现成的库(推荐)
- 库名:`express-jwt`(Auth0 官方维护)
- 优点:经过生产验证、支持 RS256/HS256、社区活跃
- 缺点:定制性稍弱(但满足你的需求)

### 方案 B:自己实现 JWT 验证
- 优点:完全可控、可以深度定制
- 缺点:容易出安全漏洞(比如:忘记校验 `alg` 字段,导致 `none` 算法攻击)

## 我的建议

用 **方案 A**(express-jwt),但自己封装一层,方便后续扩展。

要不要我写一个设计文档,详细列出 API 接口、配置方式、测试用例?

人类输入:「好的,用方案 A,帮我写设计文档」

(Superpowers 的 brainstorming 技能会将讨论结果保存到 .superpowers/design.md

5.2 第二步:Writing Plans

Claude Code(被 Superpowers 引导)

📝 设计文档已保存。现在我来制定执行计划。

# 执行计划:JWT 认证中间件

## Phase 1:项目初始化(预估 30min)

### Task 1.1:初始化 Express 项目
- [ ] npm init -y
- [ ] 安装依赖:express, express-jwt, jsonwebtoken, dotenv
- [ ] 配置 .env(JWT_SECRET 密钥)
- [ ] 配置 .gitignore

## Phase 2:核心中间件开发(预估 1.5h)

### Task 2.1:创建基础中间件函数
- [ ] 从 Authorization header 提取 Bearer token
- [ ] 处理 missing token → 返回 401
- [ ] 用 jsonwebtoken.verify() 验证签名
- [ ] 处理 TokenExpiredError → 返回 401 + "Token expired"
- [ ] 处理 JsonWebTokenError → 返回 401 + "Invalid token"
- [ ] 把 payload 挂载到 req.user

### Task 2.2:支持白名单配置
- [ ] 接受配置对象:{ whitelistedPaths: ["/health", "/public/*"] }
- [ ] 路径匹配逻辑(支持通配符)
- [ ] 白名单路径跳过认证

### Task 2.3:统一错误格式
- [ ] 定义错误响应格式:{ error: true, message: "..." }
- [ ] 用 next(error) 传递错误,由全局错误处理中间件统一响应

## Phase 3:测试(预估 1h)

### Task 3.1:单元测试
- [ ] 测试有效 token → req.user 正确挂载
- [ ] 测试过期 token → 401
- [ ] 测试无效 token → 401
- [ ] 测试白名单路径 → 跳过认证

### Task 3.2:集成测试
- [ ] 用 supertest 测试完整请求流程

## Phase 4:文档与发布(预估 30min)

### Task 4.1:编写 README
- [ ] 安装说明
- [ ] 使用示例
- [ ] 配置说明

### Task 4.2:发布到 npm(可选)
- [ ] 配置 package.json(name, version, main)
- [ ] npm publish

---

计划已保存到 `.superpowers/plan.md`。

是否开始执行?

5.3 第三步:Executing Plans + TDD

人类输入:「开始执行,先写测试」

Claude Code(被 test-driven-development 技能强制)

✅ 好的,我先写测试(TDD)。

# tests/jwt-middleware.test.js

const request = require('supertest');
const express = require('express');
const jwt = require('jsonwebtoken');
const { authMiddleware } = require('../middleware/auth');

describe('JWT 认证中间件', () => {
  let app;
  let validToken;
  
  beforeEach(() => {
    app = express();
    app.use(express.json());
    app.use(authMiddleware({ secret: 'test-secret', whitelistedPaths: ['/health'] }));
    app.get('/protected', (req, res) => res.json({ user: req.user }));
    app.get('/health', (req, res) => res.json({ status: 'ok' }));
    
    validToken = jwt.sign({ userId: 123, role: 'admin' }, 'test-secret');
  });
  
  test('有效 token → req.user 正确挂载', async () => {
    const response = await request(app)
      .get('/protected')
      .set('Authorization', `Bearer ${validToken}`);
      
    expect(response.status).toBe(200);
    expect(response.body.user.userId).toBe(123);
    expect(response.body.user.role).toBe('admin');
  });
  
  test('缺少 token → 401', async () => {
    const response = await request(app)
      .get('/protected');
      
    expect(response.status).toBe(401);
    expect(response.body.error).toBe(true);
  });
  
  // ... 更多测试
  
  test('白名单路径 → 跳过认证', async () => {
    const response = await request(app)
      .get('/health');
      
    expect(response.status).toBe(200);
    expect(response.body.status).toBe('ok');
  });
});

(然后 Claude Code 才会开始写实现代码,确保测试通过)


六、Superpowers 与其他 AI 编程工具的对比

工具 / 方法核心思路优点缺点适用场景
Superpowers流程纪律 + 可组合技能强制工程化、防止 AI 「瞎写」、支持多工具学习曲线稍陡、需要初期配置生产级项目、团队协作
裸用 Claude Code纯提示词驱动简单、灵活容易写出低质量代码、缺乏约束快速原型、个人脚本
Cursor Tab实时代码补全速度快、无缝集成只管补全、不管架构和测试日常编码辅助
GitHub Copilot类似 Cursor生态好、支持多 IDE同上日常编码辅助
AiderGit 集成的 AI 编程对 Git 友好、支持多种模型缺乏系统化的工程流程命令行爱好者
Vibe Coding(纯自然语言)意图驱动门槛低、适合非程序员依赖个人经验、容易失控快速 MVP、学习编程

七、进阶技巧:如何定制 Superpowers 技能

Superpowers 的技能是用 Markdown 编写的,位于 .superpowers/skills/ 目录。你可以直接编辑这些文件,定制技能的行为。

7.1 定制 brainstorming 技能(加入你的团队规范)

# .superpowers/skills/brainstorming.md

(原有内容...)

## 团队定制:我们的技术规范

在我们团队,以下功能点是强制要求的:

1. **身份验证**:必须用 JWT + RS256(用 Auth0 颁发的密钥)
2. **日志**:必须用 Winston,日志级别 DEBUG / INFO / WARN / ERROR
3. **错误处理**:必须用我们封装的 `AppError` 类(不要用普通的 Error)
4. **数据库操作**:必须用 Prisma,不准写原始 SQL(防止 SQL 注入)
5. **API 响应格式**:必须统一为 `{ success: boolean, data?: any, error?: string }`

当我在 brainstorming 阶段,如果用户的方案违反了以上规范,我必须主动指出,并提供符合规范的替代方案。

7.2 创建自定义技能

假设你团队有一个特殊的流程:「每次提交代码前,必须运行安全扫描」。你可以创建一个自定义技能:

# .superpowers/skills/security-scan.md

# Skill: security-scan

## 触发时机
每次准备 commit 之前(通过 Git Hook 触发)

## 执行步骤

1. 运行 `npm audit` 检查依赖漏洞
2. 运行 `snyk test` 做深度安全扫描
3. 用 `grep -r "TODO\|FIXME\|SECRET\|PASSWORD"` 检查硬编码敏感信息
4. 如果发现问题,阻止 commit,输出报告

然后在 config.json 中注册这个技能:

{
  "enabled_skills": [
    "brainstorming",
    "writing-plans",
    "security-scan"  // 新增
  ],
  "hooks": {
    "pre_commit": ["security-scan"]
  }
}

八、常见问题与解决方案

Q1:Superpowers 会不会让 AI 变慢?

A:会稍微增加响应时间(因为 AI 需要先执行技能流程),但换来的是代码质量的巨大提升。而且,Superpowers 支持「技能开关」,你可以对简单任务关闭部分技能。

Q2:如果我的项目和 Superpowers 的默认流程不符怎么办?

A:Superpowers 是完全可定制的。你可以:

  1. 编辑 .superpowers/skills/ 中的技能文件
  2. config.json 中禁用不需要的技能
  3. 创建自定义技能,加入你们的团队规范

Q3:Superpowers 支持哪些 AI 模型?

A:Superpowers 是一个「方法论框架」,不绑定特定模型。只要你的 AI 编程工具支持插件机制(Claude Code、Cursor、Codex 都支持),就可以用 Superpowers。

Q4:如果 AI 不遵守技能流程怎么办?

A:Superpowers 通过 Hook 机制强制流程。比如:pre_encoding Hook 会确保 AI 在执行任何编码任务之前,必须先完成 brainstormingwriting-plans。如果 AI 试图跳过,Hook 会拦截并提示。


九、总结与展望

Superpowers 的出现,标志着 AI 辅助编程从 「Vibe Coding(氛围编程)」走向 「Agentic Engineering(智能体工程化)」。

核心收获

  1. 流程大于提示词:与其花时间调 Prompt,不如给 AI 套上工程化流程
  2. 强制纪律:AI 需要「护栏」,防止它写出能跑但低质量的代码
  3. 可组合技能:不同项目、不同团队,可以按需启用 / 定制技能
  4. 方法论优先:Superpowers 不是「另一个 AI 工具」,而是一种新的软件开发方法论

未来展望

  • 2026 年下半年:Superpowers 计划支持「技能市场」——开发者可以分享自己的定制技能,社区投票选出最佳实践
  • 与 IDE 深度集成:未来的 Claude Code / Cursor 可能会原生集成 Superpowers,不需要手动安装插件
  • 多 Agent 协作subagent-driven-development 会更加成熟,支持跨项目的 Agent 协作(比如:后端 Agent 和前端 Agent 自动协商 API 接口)

参考资源

  • GitHub 仓库:https://github.com/obra/superpowers(204K Stars)
  • Anthropic 插件市场:在 Claude Code 中运行 /plugin marketplace add obra/superpowers
  • 作者 Twitter:@obra(Jesse Vincent)
  • 社区 Discord:https://discord.gg/superpowers(活跃用户 2 万+)

本文撰写于 2026 年 6 月,基于 Superpowers v5.1.0。如有更新,请参考官方 GitHub。


作者注:作为一个每天和 AI 编程工具打交道的开发者,我强烈建议你在下一个生产级项目中试试 Superpowers。它不会让你「写得更快」,但会让你「写得更好」——而这,才是 AI 辅助编程的真正价值。

推荐文章

PostgreSQL日常运维命令总结分享
2024-11-18 06:58:22 +0800 CST
Python实现Zip文件的暴力破解
2024-11-19 03:48:35 +0800 CST
前端如何给页面添加水印
2024-11-19 07:12:56 +0800 CST
Vue3中怎样处理组件引用?
2024-11-18 23:17:15 +0800 CST
介绍Vue3的静态提升是什么?
2024-11-18 10:25:10 +0800 CST
测试文章:编码测试
2026-06-22 20:26:32 +0800 CST
Go 协程上下文切换的代价
2024-11-19 09:32:28 +0800 CST
PHP设计模式:单例模式
2024-11-18 18:31:43 +0800 CST
程序员茄子在线接单