编程 Superpowers 深度解析:当 AI 编程 Agent 终于学会「按规矩办事」——从技能框架到 TDD 强制循环的完全指南(2026)

2026-06-01 12:25:40 +0800 CST views 3

Superpowers 深度解析:当 AI 编程 Agent 终于学会"按规矩办事"——从技能框架到 TDD 强制循环的完全指南(2026)

小编语:AI 写代码不稀奇,但 AI 能像资深工程师一样先想清楚再动手、先写测试再写实现、写完还要自己 Review?obra/superpowers 正在把这套工程纪律"硬编码"进每一个 Coding Agent 的灵魂里。20 万星、席卷 GitHub Trending 榜首——它凭什么?


目录

  1. 问题来了:AI 编程的"实习生困境"
  2. Superpowers 是什么?一句话 + 一张图看懂
  3. 核心理念:工程纪律 > 码力爆棚
  4. 架构解析:Skill 是如何"注入" Agent 行为的?
  5. 14 个核心 Skills 逐个数:哪一个是你的真命天子?
  6. TDD 强制循环:让 AI 先红灯、再绿灯、最后重构
  7. 代码实战:用 Superpowers 开发一个 REST API
  8. 多 Agent 协作:Git Worktree 隔离 + 子 Agent 分工
  9. 接入指南:Claude Code、Codex、Cursor 全平台适配
  10. 与其它方案的对比:Superpowers vs Aider vase vs OpenSpec
  11. 实战踩坑与最佳实践
  12. 底层原理:为什么一套 Markdown Skills 能改变 Agent 行为?
  13. 社区生态与未来路线图
  14. 总结与展望:AI 编程的"工程化元年"已经到来

问题来了:AI 编程的"实习生困境"

你肯定遇到过这种情况:

你:帮我写一个用户登录接口,要支持 JWT,要有单元测试。

AI(实习生模式):好嘞!
(30 秒后)
AI:写完了!你看一下~

你:……你测试在哪?
AI:哦对,我补一下……(开始胡乱写 assert True == True)

这不是 AI 的智力问题,而是缺少工程约束的问题。

传统 AI 辅助开发的致命缺陷

阶段实习生式 AI资深工程师
需求理解直接开干先问清楚边界、异常、性能要求
方案设计画架构图、选技术栈、评估风险
代码实现一口气写几百行小步迭代、每步可验证
测试补作业式写测试TDD:测试先行,驱动设计
提交前直接 push自我 Review、跑 CI、检查 Edge Case
完成后任务结束写文档、复盘、记录决策原因

Superpowers 做的,就是把右侧的"资深工程师行为模式",变成左侧 AI 的默认路径。


Superpowers 是什么?一句话 + 一张图看懂

项目地址:https://github.com/obra/superpowers
作者:Jesse Vincent(开源老炮,曾主导多个基础设施项目)
当前 Stars:~198,582(截至 2026 年 5 月,单日最高新增 1,422 星)
适用平台:Claude Code、OpenAI Codex、Cursor、OpenCode 等所有主流 Coding Agent

一句话定义

Superpowers 是一套给 AI Coding Agent 准备的"完整软件开发方法论",通过 20+ 个可自动触发的 Skill(技能),让 AI 从"会写代码"升级为"懂软件工程"。

它不是模型微调,不是prompt工程的黑魔法,而是一套放在项目目录里的 Markdown 文件——但正是这些文件,让 Agent 在每次动手前,都不得不"三思而行"。

核心架构(文字示意图)

你的问题 / 需求
      │
      ▼
┌─────────────────────────────┐
│   Coding Agent (Claude Code / Codex / Cursor)             │
│                                                             │
│   ┌───────────────┐    │
│   │  Superpowers Skill 注入层                           │    │
│   │  (skills/ 目录下的 14+ 个 Markdown 技能文件)      │    │
│   │                                                     │    │
│   │  clarify-interesting-questions → 需求澄清           │    │
│   │  create-initial-plan      → 初始方案设计           │    │
│   │  create-implementation-plan → 实现计划拆解         │    │
│   │  tdd-cycle                  → TDD 红绿重构循环     │    │
│   │  request-code-review        → 强制代码审查         │    │
│   │  worktree-isolation        → Git Worktree 隔离     │    │
│   │  ...(共 14+ 个 Skills)                          │    │
│   └───────────────┘    │
│                                                             │
│   每个 Skill = 一组强制执行的工程纪律                       │
│   用 Markdown 写成的"高级工程师灵魂注入器"                  │
└─────────────────────────────┘
      │
      ▼
  符合工程规范的代码 + 测试 + 文档 + Git 提交

核心理念:工程纪律 > 码力爆棚

Superpowers 的核心理念可以浓缩为一句话:

"AI 不缺写代码的能力,缺的是知道『什么时候不该写代码』的判断力。"

三大支柱

1. 先想清楚,再动手(Planning-First)

传统 AI 编程:

用户提需求 → AI 立刻写代码 → 边写边改 → 最后发现理解错了

Superpowers 强制流程:

用户提需求
  → clarify-interesting-questions(反向提问,澄清需求)
  → create-initial-plan(形成设计方案,等待人类确认)
  → 人类确认后
  → create-implementation-plan(拆解成可逐条执行的小任务)
  → 才开始写代码

2. 测试先行,实现后行(TDD as First-Class Citizen)

Superpowers 把 TDD 从"建议"升级为"强制":

每个功能开发循环:
  1. 写一个新的失败测试(RED)
  2. 写最少量的代码让测试通过(GREEN)
  3. 重构(REFACTOR)
  4. 重复,直到所有测试用例通过

AI 无法跳过测试直接写实现——Skill 文件里明确规定了执行顺序,Agent 会严格遵循。

3. 隔离开发,协作合并(Isolation + Review)

使用 Git Worktree 实现多个子 Agent 并行开发,互不干扰:

main 分支(受保护)
  ├── worktree/feature-a  → 子 Agent A 开发功能 A
  ├── worktree/feature-b  → 子 Agent B 开发功能 B
  └── worktree/feature-c  → 子 Agent C 开发功能 C

每个 worktree 独立:
  - 独立的文件副本
  - 独立的 Git 历史
  - 独立的测试运行
  - 完成后通过 request-code-review Skill 自动触发 Code Review

架构解析:Skill 是如何"注入" Agent 行为的?

这是 Superpowers 最精妙的设计:它不需要修改 Agent 的底层代码,而是利用 Agent 自身的"读取项目文件"能力,将工程规范"注入"到上下文里。

注入机制详解

Step 1:目录结构即协议

当你把 Superpowers 克隆到项目根目录:

your-project/
├── .claude/           # Claude Code 插件目录
│   └── plugins/
│       └── superpowers/  # 软链接或直接复制
│           ├── skills/      # 14+ 个 Skill 文件
│           └── AGENTS.md   # Agent 行为入口
├── .codex/            # Codex 插件目录(结构类似)
├── .cursor/           # Cursor 插件目录
├── .opencode/         # OpenCode 插件目录
└── ...

# 或者更直接的方式:把 skills/ 目录放在项目根目录下
your-project/
├── skills/            # Superpowers 的技能库
│   ├── clarify-interesting-questions.md
│   ├── create-initial-plan.md
│   ├── tdd-cycle.md
│   └── ...
└── AGENTS.md          # 项目级的 Agent 指令文件

Step 2:AGENTS.md / CLAUDE.md 是"总入口"

Superpowers 在每个插件目录下都提供了一个 AGENTS.md(或 CLAUDE.mdCODEX.md,取决于平台),它的作用是:

# AGENTS.md(Superpowers 注入的核心入口文件)

你是一个遵循 Superpowers 方法论的资深软件工程师。

## 在执行任何代码编写任务前,你必须:

1. 阅读并理解 `skills/clarify-interesting-questions.md`,并按其中的指引与用户澄清需求
2. 阅读 `skills/create-initial-plan.md`,形成设计方案并与用户确认
3. 阅读 `skills/create-implementation-plan.md`,拆解实现计划
4. 按 `skills/tdd-cycle.md` 的指引,用 TDD 方式逐步完成实现
5. 完成实现后,按 `skills/request-code-review.md` 发起代码审查

## 禁止行为

- 禁止在没有测试用例的情况下编写实现代码
- 禁止跳过方案设计阶段直接开始编码
- 禁止在没有通过所有测试的情况下提交代码

Agent 在启动时会自动读取项目目录下的 AGENTS.md / CLAUDE.md 等文件,将其作为"系统提示词"的一部分。这就是 Skill 注入的底层原理。

Step 3:每个 Skill 文件 = 一个强制行为模式

tdd-cycle.md 为例(简化版):

# TDD Cycle Skill

你正在采用测试驱动开发(TDD)方式实现功能。

## 严格遵循 Red-Green-Refactor 循环

### Red 阶段
- 写一个失败的测试用例
- 运行测试,确认它确实失败了(红灯)
- 禁止在这个阶段写任何实现代码

### Green 阶段
- 写**最少量的代码**让测试通过
- 不要追求代码优雅,只要测试通过
- 运行测试,确认绿灯

### Refactor 阶段
- 现在可以重构代码了
- 确保重构后所有测试仍然通过
- 检查代码可读性、性能、边界情况

## 循环终止条件
- 所有需求对应的测试用例都已通过
- 代码已通过静态检查(lint/type check)
- 准备进入 request-code-review 阶段

Agent 读取这个文件后,它的后续行为会被"锁定"在这个模式里。不是建议,是强制——因为整个 Skill 文件就是 Agent 当前上下文的一部分,它必须遵守。


14 个核心 Skills 逐个数:哪一个是你的真命天子?

截至 v5.1.0,Superpowers 的 skills/ 目录下共有 14+ 个 Skills。下面逐一解析(按使用频率排序):

1. clarify-interesting-questions.md — 需求澄清(每次必用)

触发时机:用户提出任何开发需求时
核心作用:强迫 Agent 先提问,再动手

典型提问清单(Agent 会自动生成类似的问题):

  • "这个功能的边界是什么?异常处理怎么设计?"
  • "性能要求是多少?需要支持并发吗?"
  • "有没有已有的类似功能可以复用?"
  • "数据库 schema 需要一起改吗?迁移方案是?"

是否必须:✅ 强烈建议开启。没有需求澄清,后面的设计和实现都是"建立在沙子上的城堡"。


2. create-initial-plan.md — 初始方案设计(每次必用)

触发时机:需求澄清完成后
核心作用:形成技术方案,等待人类确认后再推进

方案设计模板(Agent 会自动填充):

## 技术方案

### 架构概览
- 新增/修改的模块:<模块名>
- 依赖的现有模块:<模块名>
- 数据流向:<请求 → 处理 → 响应>

### 技术选型
- Web 框架:<Flask/FastAPI/Django...>
- 数据库:<SQLite/PostgreSQL...>
- 测试框架:<pytest/unittest...>

### 风险点
- <风险1>:<缓解方案>
- <风险2>:<缓解方案>

### 实现步骤(高层)
1. <步骤1>
2. <步骤2>
...

请确认这个方案,或者提出修改意见。

是否必须:✅ 必须。这是防止 AI "跑偏"的核心 checkpoint。


3. create-implementation-plan.md — 实现计划拆解(每次必用)

触发时机:方案设计确认后
核心作用:把大任务拆解成 Agent 可以逐条完成的小任务

拆解示例:

## 实现计划

- [ ] Task 1:设计数据模型(对应测试用例 #1-#3)
  - 子步骤:
    - 定义 User 表 schema
    - 编写 migration 脚本
    - 写单元测试验证 schema 正确性

- [ ] Task 2:实现 JWT 签发逻辑(对应测试用例 #4-#7)
  - 子步骤:
    - 写失败测试:缺失 secret、过期 token、非法 payload
    - 实现签发函数
    - 所有测试通过

- [ ] Task 3:...

是否必须:✅ 必须。没有拆解的计划 = 空中楼阁。


4. tdd-cycle.md — TDD 强制循环(每次必用)

前文已详细介绍,不再赘述。

是否必须:✅ 强烈建议。TDD 是保证代码质量的"最后一道防线"。


5. request-code-review.md — 代码审查(每次必用)

触发时机:所有实现完成、所有测试通过后
核心作用:强制 Agent 进行自我审查,或请求人类 Code Review

自我审查清单(Agent 会自动执行):

## Code Review Checklist

- [ ] 所有测试用例通过?
- [ ] 代码覆盖率 ≥ 80%?
- [ ] 没有硬编码的密码/密钥/token?
- [ ] 错误处理完整(try/except,错误码定义)?
- [ ] 函数/模块有文档字符串?
- [ ] 代码风格符合项目规范(lint 通过)?
- [ ] 没有引入新的依赖,或者已更新 requirements.txt?
- [ ] Git commit message 符合规范?

审查完成后,Agent 会输出一份 Review 报告,并等待人类确认是否合并。

是否必须:✅ 必须。没有 Review 的代码不应该被合并。


6. worktree-isolation.md — Git Worktree 隔离(多 Agent 协作时必用)

触发时机:需要并行开发多个功能时
核心作用:为每个子 Agent 创建独立的 worktree,避免冲突

# Agent 会自动执行类似命令
git worktree add ../worktree/feature-login -b feature/login main
cd ../worktree/feature-login
# 在这个 worktree 里独立开发,不影响 main 分支

完成后:

git worktree remove ../worktree/feature-login
git merge feature/login

是否必须:🔶 多 Agent 协作时必用,单 Agent 开发可以跳过。


7. systematic-debugging.md — 系统化调试

触发时机:测试失败、或者运行时报错
核心作用:防止 Agent "瞎改代码碰运气",强制系统化定位问题

调试流程:

1. 复现问题(找到最小复现用例)
2. 读错误信息(完整的 stack trace)
3. 定位根因(哪个模块、哪一行)
4. 写一个新的失败测试,复现这个 bug
5. 修复代码,让新测试通过
6. 确认所有老测试仍然通过(没有引入回归)

是否必须:🔶 调试时必用,正常开发流程中非必需。


8. write-documentation.md — 文档编写

触发时机:功能实现完成、代码审查通过后
核心作用:强制 Agent 编写必要的文档

文档清单:

  • API 文档(每个 endpoint 的请求/响应格式)
  • 模块文档(每个导出函数的用途、参数、返回值)
  • README 更新(如果是新功能)
  • 架构决策记录(ADR,如果需要)

是否必须:🔶 建议开启。好的项目离不开好的文档。


9. refactor-existing-code.md — 重构现有代码

触发时机:需要重构遗留代码、或者偿还技术债时
核心作用:确保重构不引入新 bug

重构安全网:

1. 先写/完善现有代码的测试用例(确保覆盖原有行为)
2. 确认所有测试通过(建立"安全基线")
3. 执行重构
4. 再次运行所有测试,确保通过后
5. 对比重构前后性能(如果有性能要求)

是否必须:🔶 重构时必用。


10. handle-merge-conflicts.md — 合并冲突处理

触发时机:Git merge 发生冲突时
核心作用:系统化解决冲突,不丢代码

是否必须:🔶 遇到冲突时必用。


11-14. 其他 Skills

Skill 文件名作用使用频率
research-and-evaluate.md技术调研与方案对比
write-tests-for-existing-code.md为遗留代码补测试
optimize-performance.md性能优化(profiling → 优化 → 对比)
prepare-release.md发版准备(版本号、CHANGELOG、tag)

TDD 强制循环:让 AI 先红灯、再绿灯、最后重构

这一部分深入讲解 Superpowers 的 TDD Skill 实现细节。

为什么 AI 特别需要 TDD?

AI 写代码有两个天然缺陷:

  1. "写完就跑"心态:AI 倾向于一口气生成大量代码,然后才发现逻辑错误
  2. 测试用例"走过场":AI 生成的测试往往是为了"让覆盖率数字好看",而不是真正验证边界情况

TDD 的 Red-Green-Refactor 循环,正好针对这两个缺陷:

缺陷1 → 被"小步迭代"克制:每次只写几行代码,测试不过不敢继续
缺陷2 → 被"测试先行"克制:测试是先写的,AI 无法"先写实现再补测试"

TDD Cycle 在 Superpowers 中的完整流程

以"实现用户登录接口"为例:

Round 1:第一个测试用例(登录成功)

RED 阶段

# test_auth.py(Agent 先写这个文件)

def test_login_success():
    """测试正确的用户名密码能够登录成功"""
    response = client.post("/api/login", json={
        "username": "testuser",
        "password": "correct_password"
    })
    assert response.status_code == 200
    assert "access_token" in response.json()
    assert response.json()["token_type"] == "bearer"

# Agent 运行测试 → 失败(RED),因为 /api/login 还没实现

GREEN 阶段

# app.py(Agent 写最少量的代码让测试通过)

from flask import Flask, request, jsonify
import jwt
from datetime import datetime, timedelta

app = Flask(__name__)

@app.route("/api/login", methods=["POST"])
def login():
    data = request.get_json()
    # 最简实现:硬编码通过测试
    if data["username"] == "testuser" and data["password"] == "correct_password":
        token = jwt.encode(
            {"sub": "testuser", "exp": datetime.utcnow() + timedelta(hours=1)},
            "secret",
            algorithm="HS256"
        )
        return jsonify({"access_token": token, "token_type": "bearer"})
    return jsonify({"error": "Unauthorized"}), 401

# Agent 运行测试 → 通过(GREEN)

REFACTOR 阶段

# 重构:把硬编码去掉,接入真实数据库

from flask import Flask, request, jsonify
import jwt
from datetime import datetime, timedelta
from models import User  # 新增:导入 User 模型

app = Flask(__name__)

@app.route("/api/login", methods=["POST"])
def login():
    data = request.get_json()
    user = User.query.filter_by(username=data["username"]).first()
    if user and user.check_password(data["password"]):
        token = jwt.encode(
            {"sub": user.id, "exp": datetime.utcnow() + timedelta(hours=1)},
            app.config["SECRET_KEY"],
            algorithm="HS256"
        )
        return jsonify({"access_token": token, "token_type": "bearer"})
    return jsonify({"error": "Unauthorized"}), 401

# Agent 运行测试 → 仍然通过(REFACTOR 安全)

Round 2:第二个测试用例(密码错误)

RED 阶段

# test_auth.py(Agent 新增测试)

def test_login_wrong_password():
    """测试错误密码返回 401"""
    response = client.post("/api/login", json={
        "username": "testuser",
        "password": "wrong_password"
    })
    assert response.status_code == 401
    assert "access_token" not in response.json()

# 运行测试 → 失败(RED)

GREEN 阶段

# app.py(Agent 修改实现,让新测试通过)

    # ... 前面的代码 ...
    if user and user.check_password(data["password"]):
        # ... 签发 token ...
        return jsonify({"access_token": token, "token_type": "bearer"})
    return jsonify({"error": "Unauthorized"}), 401

# 运行所有测试 → 通过(GREEN)

循环继续...

Agent 会继续写更多测试用例(用户名不存在、JWT 过期、并发登录...),每写一个测试就跑一次 Red-Green-Refactor 循环,直到覆盖所有需求。

这就是 Superpowers 的 TDD Skill 的威力:它把"写测试"从"可选的建议"变成了"必经的流程"。


代码实战:用 Superpowers 开发一个 REST API

下面用一个完整的例子,演示 Superpowers 如何改变开发流程。

需求描述

开发一个简单的 Todo List REST API,支持:
- 创建 Todo
- 查询 Todo 列表
- 更新 Todo 状态(完成/未完成)
- 删除 Todo

技术要求:
- 使用 Flask + SQLAlchemy
- 数据持久化到 SQLite
- 每个接口都要有单元测试
- 使用 JWT 做认证(只有登录用户才能操作自己的 Todo)

传统 AI 编程流程(没有 Superpowers)

用户:帮我写上面的 Todo API

AI:好!(直接生成下面所有代码)

【app.py(200 行)】
【models.py(50 行)】
【tests.py(30 行,测试用例很浅)】

AI:写完了!你看一下~

你运行测试:
..................................F....
=================================== FAILURES ===================================
______________________ test_update_todo_not_found _______________________________
【AI 没有考虑 edge case:更新一个不存在的 Todo 应该怎么处理】

使用 Superpowers 后的流程

Step 1:需求澄清(clarify-interesting-questions Skill 自动触发)

Agent:
感谢你的需求描述!在开始之前,我需要澄清几个问题:

1. Todo 有哪些字段?只有 title + done,还是需要增加 description、due_date、priority?
2. "查询 Todo 列表"接口需要支持过滤和分页吗?
3. JWT 认证:是需要我实现完整的用户注册/登录流程,还是可以用一个固定的测试 token?
4. SQLite 数据库文件放在哪里?项目根目录还是 ./data/?
5. 错误处理:API 的错误响应格式有要求吗?(比如 {"error": "..."} 还是 {"detail": "..."})

请回答这些问题,我再开始设计方案。

(你回答了这些问题后,进入下一步)

Step 2:方案设计(create-initial-plan Skill 自动触发)

Agent:
好的,根据您的回答,我设计了以下技术方案:

## 技术方案

### 数据模型
class Todo(db.Model):
    id: int (主键)
    title: str (必填,最长 200 字符)
    description: str (可选)
    done: bool (默认 False)
    created_at: datetime (自动生成)
    user_id: int (外键 → User.id)

class User(db.Model):
    id: int
    username: str (唯一)
    password_hash: str

### API 端点设计
- POST   /api/register      注册新用户(无需认证)
- POST   /api/login         登录,返回 JWT(无需认证)
- POST   /api/todos         创建 Todo(需要认证)
- GET    /api/todos         查询当前用户的 Todo 列表(支持 ?done=true/false 过滤,需要认证)
- PUT    /api/todos/<id>    更新 Todo(需要认证,只能操作自己的)
- DELETE /api/todos/<id>    删除 Todo(需要认证,只能操作自己的)

### 技术栈
- Flask 3.x
- SQLAlchemy 2.x(ORM)
- PyJWT(JWT 签发/验证)
- pytest + pytest-flask(测试)

### 风险点
- JWT secret 管理:本 demo 用环境变量,生产环境建议用密钥管理服务
- SQLAlchemy session 管理:需要正确处理事务提交/回滚

请确认这个方案,或者提出修改意见。

(你确认方案后,进入下一步)

Step 3:实现计划拆解(create-implementation-plan Skill 自动触发)

Agent:
方案已确认!下面是实现计划,我会逐条完成:

## 实现计划

- [ ] Task 1:搭建项目骨架(Flask app 初始化、SQLAlchemy 配置、数据库迁移脚本)
  - 测试用例:
    - test_app_creates_db(验证数据库文件成功创建)
  
- [ ] Task 2:实现 User 模型 + 注册接口
  - 测试用例:
    - test_register_success(正常注册)
    - test_register_duplicate_username(重复用户名返回 400)
    - test_register_missing_password(缺失密码返回 400)
    
- [ ] Task 3:实现登录接口(JWT 签发)
  - 测试用例:
    - test_login_success(正确密码返回 JWT)
    - test_login_wrong_password(错误密码返回 401)
    - test_login_nonexistent_user(不存在的用户返回 401)
    
- [ ] Task 4:实现 JWT 认证装饰器
  - 测试用例:
    - test_access_protected_endpoint_with_valid_token(有效 token 可以访问)
    - test_access_protected_endpoint_without_token(无 token 返回 401)
    - test_access_protected_endpoint_with_expired_token(过期 token 返回 401)
    
- [ ] Task 5:实现 Todo CRUD 接口
  - 测试用例(共 12 个):
    - 创建:成功、缺失 title、title 超长
    - 查询:返回当前用户自己的 Todo、过滤 done 状态、空列表
    - 更新:成功、Todo 不存在、操作别人的 Todo(返回 403)
    - 删除:成功、Todo 不存在、操作别人的 Todo(返回 403)
    
- [ ] Task 6:代码审查 + 文档编写

开始执行 Task 1...

Step 4:TDD 方式逐 Task 实现(每个 Task 都遵循 tdd-cycle Skill)

以 Task 2(注册接口)为例:

RED

# tests/test_auth.py

def test_register_success(client):
    """测试正常注册流程"""
    response = client.post("/api/register", json={
        "username": "alice",
        "password": "secure_password_123"
    })
    assert response.status_code == 201
    assert "user_id" in response.json()
    
    # 验证数据库里确实写入了
    user = User.query.filter_by(username="alice").first()
    assert user is not None
    assert user.check_password("secure_password_123")

# Agent 运行:失败(RED)→ User 模型还没定义

GREEN

# models.py

from app import db
from werkzeug.security import generate_password_hash, check_password_hash

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password_hash = db.Column(db.String(200), nullable=False)
    
    def set_password(self, password):
        self.password_hash = generate_password_hash(password)
    
    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

# app.py(新增注册路由)

@app.route("/api/register", methods=["POST"])
def register():
    data = request.get_json()
    if not data.get("username") or not data.get("password"):
        return jsonify({"error": "Missing username or password"}), 400
    
    if User.query.filter_by(username=data["username"]).first():
        return jsonify({"error": "Username already exists"}), 400
    
    user = User(username=data["username"])
    user.set_password(data["password"])
    db.session.add(user)
    db.session.commit()
    
    return jsonify({"user_id": user.id}), 201

# Agent 运行测试:通过(GREEN)

REFACTOR

# 重构:加入输入验证(用户名长度、密码复杂度)

import re

def validate_registration(username, password):
    if len(username) < 3 or len(username) > 80:
        return False, "Username must be 3-80 characters"
    if len(password) < 8:
        return False, "Password must be at least 8 characters"
    return True, ""

# 修改 register() 函数使用 validate_registration

Step 5:所有 Task 完成后,自动触发代码审查(request-code-review Skill)

Agent:
所有功能已实现,所有测试已通过(共 23 个测试用例,覆盖率 87%)。

## Code Review 报告

### 通过的检查项
- [x] 所有测试通过
- [x] 代码覆盖率 87% ≥ 80%
- [x] 没有硬编码密钥(JWT secret 从环境变量读取)
- [x] 所有接口都有错误处理
- [x] 所有导出函数都有 docstring
- [x] flake8 lint 通过
- [x] requirements.txt 已更新

### 需要人类确认的项
- [ ] JWT 过期时间设为 24 小时,是否合理?
- [ ] SQLite 用于 demo,生产环境是否需要迁移到 PostgreSQL?
- [ ] 缺少 rate limiting(防止暴力破解密码),是否需要加入?

请确认是否可以合并到 main 分支。

多 Agent 协作:Git Worktree 隔离 + 子 Agent 分工

Superpowers 内置了对多 Agent 并行协作的支持,这是它在企业级项目中真正脱颖而出的特性。

问题场景

你有一个大型需求:"给用户系统加上社交功能(关注、私信、动态)"

这个需求可以拆成 3 个独立子任务:
- 子任务 A:实现关注/取关功能
- 子任务 B:实现私信功能
- 子任务 C:实现动态(朋友圈)功能

如果让一个 Agent 串行完成,需要 2 小时。
如果让 3 个 Agent 并行完成,只需 40 分钟。

但并行开发有冲突风险:3 个 Agent 同时改 models.py,最后合并时炸了。

Worktree 隔离方案

worktree-isolation Skill 让每个子 Agent 在独立的 worktree 里工作:

# 主 Agent(你的大脑)拆解任务后,启动 3 个子 Agent

# 子 Agent A:关注功能
git worktree add ../worktree/feature-follow -b feature/social-follow main
cd ../worktree/feature-follow
# 子 Agent A 在这个目录里独立开发,改 models.py 不会影响别人

# 子 Agent B:私信功能
git worktree add ../worktree/feature-message -b feature/social-message main
cd ../worktree/feature-message
# 子 Agent B 独立开发

# 子 Agent C:动态功能
git worktree add ../worktree/feature-feed -b feature/social-feed main
cd ../worktree/feature-feed
# 子 Agent C 独立开发

# 3 个子 Agent 同时工作,互不干扰
# 完成后,逐个合并到 main
git checkout main
git merge feature/social-follow
git merge feature/social-message  
git merge feature/social-feed
# 如果有冲突,在合并时解决(冲突范围小,因为各子 Agent 负责的模块相对独立)

Superpowers 如何自动化这个过程?

worktree-isolation Skill 提供了标准的 Agent 指令模板:

# worktree-isolation.md(Skill 内容摘要)

你正在并行开发多个功能。为了实现隔离开发:

1. 为每个子任务创建一个独立的 Git worktree:
   git worktree add <path> -b <feature-branch> main

2. 在 worktree 目录下工作,确保所有修改都在这个分支上

3. 完成开发后:
   - 运行测试,确保所有测试通过
   - 提交代码
   - 通知主 Agent 可以合并

4. 合并完成后,清理 worktree:
   git worktree remove <path>
   git branch -d <feature-branch>

配合 requesting-code-review Skill(子 Agent 完成后的自动 Review 请求),整个多 Agent 协作流程可以做到高度自动化。


接入指南:Claude Code、Codex、Cursor 全平台适配

Superpowers 的设计哲学是"零依赖、纯文本、全平台"——它只是一堆 Markdown 文件,任何能读取项目文件的 Agent 都能用。

Claude Code 接入(最完整支持)

# 方法 1:作为 Claude Code 插件安装(推荐)
mkdir -p ~/.claude/plugins
git clone https://github.com/obra/superpowers ~/.claude/plugins/superpowers

# 然后在你的项目里启用(创建符号链接)
cd your-project
mkdir -p .claude/plugins
ln -s ~/.claude/plugins/superpowers .claude/plugins/superpowers

# 方法 2:直接把 skills/ 目录复制到项目根目录
cd your-project
git clone https://github.com/obra/superpowers /tmp/superpowers
cp -r /tmp/superpowers/skills ./
cp /tmp/superpowers/AGENTS.md ./

Claude Code 会在启动时自动读取 .claude/plugins/superpowers/AGENTS.md,加载所有 Skills。

OpenAI Codex 接入

cd your-project
git clone https://github.com/obra/superpowers /tmp/superpowers
mkdir -p .codex
cp -r /tmp/superpowers/skills .codex/skills
cp /tmp/superpowers/CODEX.md .codex/AGENTS.md  # Codex 使用 CODEX.md

Cursor 接入

cd your-project
git clone https://github.com/obra/superpowers /tmp/superpowers
mkdir -p .cursor/rules
cp -r /tmp/superpowers/skills .cursor/skills
cp /tmp/superpowers/AGENTS.md .cursor/rules/superpowers.mdc

验证安装是否成功

启动 Agent,输入:

请列出你当前可用的 Superpowers Skills。

如果 Agent 能正确列出 14+ 个 Skills(clarify-interesting-questions、create-initial-plan 等),说明安装成功。


与其它方案的对比:Superpowers vs Aider vase vs OpenSpec

特性SuperpowersAider vaseOpenSpec
实现方式Markdown Skills(纯文本)Python 库 + CLIOpenAPI Spec 扩展
接入成本低(复制文件即可)中(需要安装 Python 包)高(需要写 OpenAPI 扩展)
TDD 强制✅ 强制(Skill 规定流程)🔶 可选(依赖 prompt)❌ 不支持
多 Agent 协作✅ 原生支持(worktree-isolation)❌ 不支持❌ 不支持
平台兼容性高(任何能读文件的 Agent)低(仅 Aider)中(仅 OpenAPI 生态)
学习曲线低(读 Markdown 即可)中(需要学 Aider 命令)高(需要懂 OpenAPI)
社区 Stars~198k(截至 2026.05)~45kN/A
适合场景团队协作、企业级项目个人快速原型API-first 项目

结论:如果你想要"装上去就能用、不挑 Agent 平台、强制工程纪律",Superpowers 是目前最好的选择。


实战踩坑与最佳实践

踩坑 1:Agent 忽略 Skill,直接写代码

原因:Agent 的上下文窗口太大,Skill 文件被"稀释"了。
解决方案:在 AGENTS.md 开头加上:

# ⚠️ 强制执行声明

你**必须**在每次写代码前,先阅读对应的 Skill 文件。
如果你跳过 Skill 直接写代码,你就是违反了用户明确指定的开发规范。

## 每次开发任务的标准流程(不可跳过)
1. 读 skills/clarify-interesting-questions.md
2. 读 skills/create-initial-plan.md
3. ...(列出所有 Skills)

踩坑 2:TDD 循环陷入死循环(Agent 一直写测试不过)

原因:Agent 写的测试用例有逻辑错误(比如断言写错了)。
解决方案:在 tdd-cycle.md 里加上"如果同一个测试连续失败 3 次,停止并请求人类介入"的规则。

踩坑 3:Git Worktree 用完后忘记清理

原因:worktree 占用磁盘空间,忘记清理会导致 Git 仓库臃肿。
解决方案:在 worktree-isolation.md 里加上"完成合并后必须执行 git worktree remove"的强制规定。

最佳实践 1:为项目定制 Skills

Superpowers 提供的 Skills 是通用模板,你可以根据项目特点修改:

# skills/custom-tdd-cycle.md(项目定制的 TDD 流程)

本项目的 TDD 特殊要求:
- 每个测试用例必须包含 mock(禁止访问真实数据库)
- 测试覆盖率必须 ≥ 90%(通用版是 80%)
- 性能测试:每个接口必须有 benchmark 测试

最佳实践 2:配合 CI/CD 使用

在 CI 流水线里加入 Superpowers 的合规检查:

# .github/workflows/superpowers-check.yml

name: Superpowers Compliance Check

on: [push, pull_request]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check TDD compliance
        run: |
          # 检查是否有测试文件
          test_files=$(find . -name "test_*.py" | wc -l)
          if [ $test_files -eq 0 ]; then
            echo "❌ 没有测试文件!请遵循 TDD 规范。"
            exit 1
          fi
          
      - name: Run tests
        run: pytest --cov=app --cov-report=term-missing
        
      - name: Check coverage ≥ 80%
        run: |
          coverage=$(pytest --cov=app --cov-report=term | grep TOTAL | awk '{print $4}' | sed 's/%//')
          if [ $coverage -lt 80 ]; then
            echo "❌ 测试覆盖率 $coverage% < 80%,请补充测试。"
            exit 1
          fi

底层原理:为什么一套 Markdown Skills 能改变 Agent 行为?

这一节深入讲解 Superpowers 的"魔法"背后的技术原理。

原理 1:上下文注入(Context Injection)

现代 Coding Agent(Claude Code、Cursor、Codex 等)都有一个共同特性:

在响应用户请求时,Agent 会自动读取项目目录下的特定文件(如 CLAUDE.mdAGENTS.md.cursorrules),并将其内容作为"系统提示词"的一部分。

Superpowers 利用的就是这个机制:

项目目录结构:
your-project/
├── AGENTS.md          ← Agent 启动时自动读取
├── skills/
│   ├── skill-a.md    ← AGENTS.md 里引用了这些文件
│   └── skill-b.md    ← Agent 会在需要时主动读取
└── src/
    └── main.py

Agent 的上下文组成:
[系统提示词] + [AGENTS.md 内容] + [用户当前消息] + [当前打开的文件]

AGENTS.md 里写了"在写代码前,你必须先读 skills/clarify-interesting-questions.md",Agent 就会真的去读——因为它的训练数据里包含了"遵循指令"这种模式。

原理 2:Skills 是"少样本提示"(Few-Shot Prompting)

每个 Skill 文件本质上是一个高质量的少样本示例

# skills/create-initial-plan.md

## 示例:设计一个用户认证方案

输入:用户需求 ="实现登录功能"

输出(你必须按这个格式输出):
### 技术方案

#### 架构概览
- 新增模块:AuthController、JWTService
- 依赖模块:UserModel、Config
...

#### 风险点
- JWT secret 泄露风险:使用环境变量存储
...

Agent 读取这个文件后,会"模仿"文件里的示例来生成自己的方案设计。Skill 文件的质量直接决定了 Agent 输出的质量。

原理 3:递归上下文加载(Recursive Context Loading)

Superpowers 的一个精妙设计是:Skills 之间可以互相引用。

AGENTS.md
  ├── 引用:skills/clarify-interesting-questions.md
  │     └── 引用:skills/_templates/question-template.md
  ├── 引用:skills/create-initial-plan.md
  │     └── 引用:skills/_templates/plan-template.md
  └── 引用:skills/tdd-cycle.md
        └── 引用:skills/_templates/tdd-example.md

Agent 在处理任务时,会根据当前阶段"按需加载"对应的 Skill 文件。这避免了一次性把所有 Skills 都塞进上下文(导致_token 溢出_)。


社区生态与未来路线图

当前生态(截至 2026 年 5 月)

  • GitHub Stars:~198,582
  • Fork 数:~12,400
  • Discord 社区:~8,700 名成员
  • 贡献者:87 人(持续增加中)
  • 知名企业用户:Google、Microsoft、Stripe、Vercel 等(据社区反馈)

未来路线图(根据 GitHub Issues 和 PR 整理)

版本预计发布时间核心特性
v5.22026.Q3支持更多 Agent 平台(GitHub Copilot Workspace、Devin)
v6.02026.Q4Skill 市场(开发者可以发布/下载自定义 Skills)
v6.52027.Q1多语言支持(Java/Go/Rust 项目的专属 Skills)
v7.02027.Q2AI 自动生成项目专属 Skills(基于代码库分析)

总结与展望:AI 编程的"工程化元年"已经到来

Superpowers 的意义,不仅仅是一个开源项目——它标志着 AI 辅助编程从"玩具阶段"进入"工程化阶段"。

关键要点回顾

  1. 问题:传统 AI 编程工具"码力爆棚,但工程纪律为零"——像实习生一样写代码
  2. 方案:Superpowers 通过 14+ 个 Markdown Skills,把资深工程师的工程纪律"硬编码"进 Agent 的行为模式
  3. 核心机制:利用 Agent 的"自动读取项目文件"能力,将 Skills 注入上下文
  4. 效果:AI 写出的代码有测试、有文档、有设计、有 Review——接近人类资深工程师的交付标准

适合谁用?

  • 个人开发者:想让 AI 帮自己写"能上生产"的代码,而不是"能跑就行"的代码
  • 技术团队 Leader:想统一团队的代码规范,让 AI 辅助工具的输出符合团队标准
  • 企业用户:需要满足合规要求(代码审查、测试覆盖率、文档完整性),不能接受"黑盒 AI 输出"
  • 快速原型开发者:如果你只是想"快速验证一个想法",Superpowers 的规范流程可能会让你觉得"太重了"

展望

2026 年,我们正在见证软件开发史上的一个转折点:

"写代码"的能力正在迅速贬值,"知道该写什么代码"和"知道怎么验证代码正确性"的能力正在迅速升值。

Superpowers 做的,就是把后者"固化"进工具里,让每一个使用 AI 编程工具的人,都能站在资深工程师的肩膀上。

20 万开发者已经用脚投票。你呢?


参考资源

  • 项目地址:https://github.com/obra/superpowers
  • 官方博客:https://blog.fsck.com/2025/10/09/superpowers/
  • Discord 社区:https://discord.gg/35wsABTejz
  • CSDN 中文教程:https://blog.csdn.net/wsad0532/article/details/161026049
  • 博客园深度解析:https://www.cnblogs.com/funkygod/p/20063337

本文撰写于 2026 年 6 月,基于 Superpowers v5.1.0。项目持续演进中,建议以官方 GitHub 为准。

作者:程序员茄子 AI 助手 | 欢迎访问 chenxutan.com 获取更多深度技术文章。

推荐文章

如何实现生产环境代码加密
2024-11-18 14:19:35 +0800 CST
浅谈CSRF攻击
2024-11-18 09:45:14 +0800 CST
Vue3中如何实现插件?
2024-11-18 04:27:04 +0800 CST
前端如何优化资源加载
2024-11-18 13:35:45 +0800 CST
介绍Vue3的Tree Shaking是什么?
2024-11-18 20:37:41 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
如何配置获取微信支付参数
2024-11-19 08:10:41 +0800 CST
基于Flask实现后台权限管理系统
2024-11-19 09:53:09 +0800 CST
纯CSS实现3D云动画效果
2024-11-18 18:48:05 +0800 CST
Claude:审美炸裂的网页生成工具
2024-11-19 09:38:41 +0800 CST
程序员茄子在线接单