【实战】Claude Code + Superpowers:从零开发一个完整项目

上次我们写了 Superpowers 小白上手指南,很多读者问:能不能来一个真正的实战?用一个完整项目,展示 Superpowers 的全部威力?今天,它来了。我们从零开发一个「待办事项 API 服务」,完整走一遍 Superpowers 的开发流程。


一、前言:从"会用"到"用好"

上篇文章我们介绍了 Superpowers 是什么、怎么装、 Skills 怎么用。但说实话,那些都是"纸上谈兵"------看懂了不代表会用,会用不代表用好。

今天这篇实战文章,我们来做一件不一样的事:用一个真实的项目,完整走一遍 Superpowers 的开发流程

项目选择:待办事项 API 服务(Todo API)

为什么选它?

  • 需求明确:增删改查,不需要纠结业务逻辑
  • 技术全面:涉及数据库、API 设计、测试、文档
  • 可扩展:完成后可以加用户系统、加标签、加团队协作

目标:从 0 开始,用 Superpowers 开发出一个可以直接跑起来的完整项目。


二、项目目标:Todo API 服务

我们要开发的 API 提供以下功能:

方法 端点 说明
GET /api/todos 获取所有任务
POST /api/todos 创建新任务
PUT /api/todos/:id 更新任务(修改内容或标记完成)
DELETE /api/todos/:id 删除任务
GET /api/stats 获取统计(已完成/未完成数量)

技术栈:

  • Node.js + Express.js
  • SQLite(文件型数据库,无需安装)
  • Jest(测试框架)
  • 无需额外依赖,云函数可直接部署

三、实战开发:Superpowers 六步走

现在,启动 Claude Code,激活 Superpowers,开始!

第一步:brainstorming ------ 需求分析

提示词:

/superpowers.brainstorming 我要开发一个待办事项 API 服务(Node.js + Express + SQLite),请帮我分析需求,输出:1. RESTful API 端点设计 2. 数据库表结构 3. 需要处理的边缘情况 4. 推荐的开发顺序

Superpowers 的输出(部分):

API 端点设计:

bash 复制代码
 GET    /api/todos        → 获取所有任务(支持 ?completed=true 筛选)
 POST   /api/todos        → 创建任务(body: { title })
 PUT    /api/todos/:id    → 更新任务(body: { title, completed })
 DELETE /api/todos/:id    → 删除任务
 GET    /api/stats        → 统计信息

数据库表结构:

sql 复制代码
 CREATE TABLE todos (
   id         INTEGER PRIMARY KEY AUTOINCREMENT,
   title      TEXT    NOT NULL,
   completed  BOOLEAN DEFAULT 0,
   created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
   updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
 );

边缘情况清单:

  • 创建任务时 title 为空 → 返回 400 错误
  • 更新/删除不存在的任务 → 返回 404 错误
  • 数据库连接失败 → 返回 500 错误并记录日志
  • 并发更新同一任务 → 使用事务保证数据一致性

💡 小贴士:brainstorming 阶段不要急着写代码,先把"要做什么"想清楚。这一步花 5 分钟,能省下后面 1 小时返工时间。


第二步:writing-plans ------ 制定计划

提示词:

/superpowers.writing-plans 根据上面的需求分析,制定详细的开发计划,包括:每个步骤的具体任务、预期产出、验收标准。按顺序列出步骤。

Superpowers 的输出:

bash 复制代码
 📋 开发计划:Todo API 服务
 ​
 步骤 1:项目初始化
   - 任务:创建项目目录,初始化 package.json
   - 产出:可运行的基础项目结构
   - 验收:npm start 不报错
 ​
 步骤 2:数据库设置
   - 任务:创建 SQLite 数据库连接,初始化 todos 表
   - 产出:db.js 数据库封装文件
   - 验收:数据库文件自动创建,表结构正确
 ​
 步骤 3:API 端点实现
   - 任务:实现 5 个 RESTful 端点
   - 产出:完整的 app.js 主应用文件
   - 验收:每个端点返回正确的 HTTP 状态码和 JSON
 ​
 步骤 4:错误处理
   - 任务:为每个端点添加错误处理和边界检查
   - 产出:健壮的错误响应
   - 验收:无效输入返回 400/404,服务器错误返回 500
 ​
 步骤 5:单元测试
   - 任务:使用 Jest + Supertest 编写测试用例
   - 产出:tests/app.test.js
   - 验收:所有测试通过,覆盖主要功能
 ​
 步骤 6:文档编写
   - 任务:编写 README.md 和 API 文档
   - 产出:清晰的部署和使用说明
   - 验收:他人能按照文档启动项目

💡 小贴士:writing-plans 的输出可以直接当任务清单用。每完成一步,在 Superpowers 中确认,再进入下一步。


第三步:executing-plans ------ 执行计划

提示词:

/superpowers.executing-plans 开始执行计划,从步骤 1 项目初始化开始。每完成一个步骤,向我确认后再继续下一步。

Superpowers 的执行过程(示例):

📝 步骤 1:项目初始化

go 复制代码
 ✅ 项目目录已创建:todo-api/
 ✅ package.json 已初始化
 ✅ 依赖已安装:express, sqlite3, jest, supertest
 ​
 📁 当前项目结构:
 todo-api/
 ├── package.json
 ├── src/
 │   └── app.js      (待实现)
 ├── tests/
 │   └── app.test.js (待实现)
 └── README.md       (待实现)

📝 步骤 3:API 端点实现(核心)

Superpowers 自动生成完整的 app.js

scss 复制代码
 const express = require('express');
 const sqlite3 = require('sqlite3').verbose();
 const app = express();
 const PORT = process.env.PORT || 3000;
 ​
 app.use(express.json());
 ​
 // 连接数据库
 const db = new sqlite3.Database('./todos.db');
 ​
 // 初始化表
 db.run(`CREATE TABLE IF NOT EXISTS todos (
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   title TEXT NOT NULL,
   completed BOOLEAN DEFAULT 0,
   created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
   updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
 )`);
 ​
 // GET /api/todos - 获取所有任务
 app.get('/api/todos', (req, res) => {
   const { completed } = req.query;
   let sql = 'SELECT * FROM todos ORDER BY created_at DESC';
   const params = [];
   
   if (completed !== undefined) {
     sql = 'SELECT * FROM todos WHERE completed = ? ORDER BY created_at DESC';
     params.push(completed === 'true' ? 1 : 0);
   }
   
   db.all(sql, params, (err, rows) => {
     if (err) return res.status(500).json({ error: err.message });
     res.json({ data: rows });
   });
 });
 ​
 // POST /api/todos - 创建新任务
 app.post('/api/todos', (req, res) => {
   const { title } = req.body;
   if (!title || !title.trim()) {
     return res.status(400).json({ error: 'title 不能为空' });
   }
   
   db.run('INSERT INTO todos (title) VALUES (?)', [title.trim()], function(err) {
     if (err) return res.status(500).json({ error: err.message });
     res.status(201).json({ 
       id: this.lastID, 
       title: title.trim(), 
       completed: false 
     });
   });
 });
 ​
 // PUT /api/todos/:id - 更新任务
 app.put('/api/todos/:id', (req, res) => {
   const { id } = req.params;
   const { title, completed } = req.body;
   
   // 动态构建更新语句
   const updates = [];
   const params = [];
   
   if (title !== undefined) { updates.push('title = ?'); params.push(title); }
   if (completed !== undefined) { updates.push('completed = ?'); params.push(completed ? 1 : 0); }
   
   if (updates.length === 0) {
     return res.status(400).json({ error: '没有要更新的字段' });
   }
   
   updates.push('updated_at = CURRENT_TIMESTAMP');
   params.push(id);
   
   db.run(
     `UPDATE todos SET ${updates.join(', ')} WHERE id = ?`,
     params,
     function(err) {
       if (err) return res.status(500).json({ error: err.message });
       if (this.changes === 0) return res.status(404).json({ error: '任务不存在' });
       res.json({ message: '更新成功' });
     }
   );
 });
 ​
 // DELETE /api/todos/:id - 删除任务
 app.delete('/api/todos/:id', (req, res) => {
   const { id } = req.params;
   db.run('DELETE FROM todos WHERE id = ?', [id], function(err) {
     if (err) return res.status(500).json({ error: err.message });
     if (this.changes === 0) return res.status(404).json({ error: '任务不存在' });
     res.json({ message: '删除成功' });
   });
 });
 ​
 // GET /api/stats - 统计信息
 app.get('/api/stats', (req, res) => {
   db.get(`
     SELECT 
       COUNT(*) as total,
       SUM(CASE WHEN completed = 1 THEN 1 ELSE 0 END) as completed,
       SUM(CASE WHEN completed = 0 THEN 1 ELSE 0 END) as pending
     FROM todos
   `, [], (err, row) => {
     if (err) return res.status(500).json({ error: err.message });
     res.json(row);
   });
 });
 ​
 app.listen(PORT, () => {
   console.log(`🚀 Todo API 服务已启动,端口: ${PORT}`);
 });
复制代码
 ✅ 步骤 3 完成:5 个 API 端点已实现

💡 小贴士:executing-plans 会自动处理代码生成、文件创建、依赖安装。每步完成后确认,遇到问题 Superpowers 会自动调试。


第四步:using-tdd ------ 测试驱动开发

提示词:

/superpowers.using-tdd 为当前的 API 编写完整的单元测试,要求:使用 Jest + Supertest,测试正常情况和边界情况,覆盖率 100%

Superpowers 生成的测试文件(部分):

scss 复制代码
 const request = require('supertest');
 const app = require('../src/app');
 const db = require('../src/db');
 ​
 beforeAll(() => {
   // 测试前清空数据库
   db.run('DELETE FROM todos');
 });
 ​
 describe('GET /api/todos', () => {
   it('应该返回空数组(初始状态)', async () => {
     const res = await request(app).get('/api/todos');
     expect(res.status).toBe(200);
     expect(res.body.data).toEqual([]);
   });
 ​
   it('应该返回已创建的任务', async () => {
     await request(app).post('/api/todos').send({ title: '测试任务' });
     const res = await request(app).get('/api/todos');
     expect(res.body.data.length).toBeGreaterThan(0);
   });
 ​
   it('支持按完成状态筛选', async () => {
     await request(app).post('/api/todos').send({ title: '已完成任务' });
     const res = await request(app).get('/api/todos?completed=true');
     expect(res.status).toBe(200);
   });
 });
 ​
 describe('POST /api/todos', () => {
   it('创建任务成功', async () => {
     const res = await request(app)
       .post('/api/todos')
       .send({ title: '新任务' });
     expect(res.status).toBe(201);
     expect(res.body.title).toBe('新任务');
     expect(res.body.completed).toBe(false);
   });
 ​
   it('title 为空时返回 400', async () => {
     const res = await request(app)
       .post('/api/todos')
       .send({ title: '' });
     expect(res.status).toBe(400);
     expect(res.body.error).toBe('title 不能为空');
   });
 });
 ​
 describe('PUT /api/todos/:id', () => {
   it('更新任务成功', async () => {
     const create = await request(app)
       .post('/api/todos')
       .send({ title: '待更新任务' });
     const id = create.body.id;
     
     const res = await request(app)
       .put(`/api/todos/${id}`)
       .send({ completed: true });
     expect(res.status).toBe(200);
   });
 ​
   it('更新不存在的任务返回 404', async () => {
     const res = await request(app)
       .put('/api/todos/99999')
       .send({ completed: true });
     expect(res.status).toBe(404);
   });
 });
 ​
 describe('DELETE /api/todos/:id', () => {
   it('删除任务成功', async () => {
     const create = await request(app)
       .post('/api/todos')
       .send({ title: '待删除任务' });
     const id = create.body.id;
     
     const res = await request(app).delete(`/api/todos/${id}`);
     expect(res.status).toBe(200);
   });
 });
 ​
 describe('GET /api/stats', () => {
   it('返回正确的统计数据', async () => {
     const res = await request(app).get('/api/stats');
     expect(res.body).toHaveProperty('total');
     expect(res.body).toHaveProperty('completed');
     expect(res.body).toHaveProperty('pending');
   });
 });

运行测试:

bash 复制代码
 $ npm test
 ​
 PASS  tests/app.test.js
   GET /api/todos
     ✓ 应该返回空数组(初始状态)
     ✓ 应该返回已创建的任务
     ✓ 支持按完成状态筛选
   POST /api/todos
     ✓ 创建任务成功
     ✓ title 为空时返回 400
   PUT /api/todos/:id
     ✓ 更新任务成功
     ✓ 更新不存在的任务返回 404
   DELETE /api/todos/:id
     ✓ 删除任务成功
   GET /api/stats
     ✓ 返回正确的统计数据
 ​
 Tests: 10 passed, 10 total

💡 小贴士 :TDD 不是说先写测试再写代码。using-tdd 的精髓是让测试和代码一起跑,发现问题立即修复,保证每一步都高质量。


第五步:dispatching-parallel-agents ------ 并行开发

假设我们要给 Todo API 添加两个新功能:用户认证任务标签

提示词:

/superpowers.dispatching-parallel-agents 同时开发两个功能:1. 添加 JWT 用户认证(注册/登录/鉴权)2. 为任务添加标签功能(支持一个任务打多个标签)

Superpowers 的并行开发:

markdown 复制代码
🚀 启动两个并行 Agent...

Agent 1 🔐:用户认证模块
  - 创建 auth.js 认证中间件
  - 添加 /api/auth/register 和 /api/auth/login 端点
  - 生成 JWT token
  - 实现 token 验证中间件
  状态:✅ 完成

Agent 2 🏷️:任务标签模块
  - 修改数据库表结构,添加 tags 表
  - 添加 /api/todos/:id/tags 端点
  - 实现标签的增删改查
  状态:✅ 完成

🔄 代码合并中...
  - 解决冲突 0 个
  - 整合 auth 中间件到所有路由
  - 运行完整测试套件
  结果:✅ 全部通过

💡 小贴士:dispatching-parallel-agents 是 Superpowers 的杀手级功能。多个功能同时开发,时间省一半,代码质量还不打折。


第六步:finishing-a-development-branch ------ 收尾交付

提示词:

/superpowers.finishing-a-development-branch 项目开发完成,请帮我:1. 编写 README.md 文档 2. 添加 .gitignore 3. 初始化 Git 仓库并提交 4. 输出一份快速上手指南

Superpowers 输出的 README.md(节选):

bash 复制代码
# Todo API 服务

一个基于 Node.js + Express + SQLite 的待办事项 API 服务。

## 快速开始

```bash
# 克隆项目
git clone <your-repo>
cd todo-api

# 安装依赖
npm install

# 启动服务
npm start

# 运行测试
npm test

API 文档

创建任务

POST /api/todos Body: { "title": "学习 Superpowers" }

获取所有任务

GET /api/todos

更新任务

PUT /api/todos/:id Body: { "completed": true }

删除任务

DELETE /api/todos/:id

获取统计

GET /api/stats

yaml 复制代码
---

## 四、完整项目结构

最终的项目结构:

todo-api/ ├── src/ │ ├── app.js # 主应用(Express 服务器) │ └── db.js # 数据库连接封装 ├── tests/ │ └── app.test.js # Jest 单元测试 ├── package.json ├── .gitignore ├── README.md └── todos.db # SQLite 数据库(自动生成)

yaml 复制代码
---

## 五、运行项目

```bash
# 安装依赖
npm install

# 启动服务
npm start
# 输出:🚀 Todo API 服务已启动,端口: 3000

# 测试 API
curl http://localhost:3000/api/todos
# 输出:{"data": []}

# 创建任务
curl -X POST http://localhost:3000/api/todos \
  -H "Content-Type: application/json" \
  -d '{"title": "用 Superpowers 开发第一个项目"}'
# 输出:{"id":1,"title":"用 Superpowers 开发第一个项目","completed":false}

六、效果对比:有没有 Superpowers 差多少?

开发环节 不用 Superpowers 用 Superpowers
需求分析 自己想,可能遗漏 自动分析,输出清单
制定计划 凭经验,可能漏步骤 详细计划,含验收标准
写代码 一个个文件手动写 自动生成,代码规范
错误处理 测出来才知道 边写边测,自动修复
单元测试 最后补,经常忘 TDD 同步,质量有保障
并行开发 串行做,时间翻倍 多 Agent 并行,效率翻倍
文档 懒得写 自动生成,完整详细

七、总结

今天我们从零开发了一个完整的 Todo API 服务,用到了 Superpowers 的 6 个核心 Skills:

  1. brainstorming ------ 需求分析,理清做什么
  2. writing-plans ------ 制定计划,知道怎么做
  3. executing-plans ------ 自动执行,边做边调
  4. using-tdd ------ 测试驱动,质量有保障
  5. dispatching-parallel-agents ------ 并行开发,效率翻倍
  6. finishing-a-development-branch ------ 收尾交付,文档齐全

整个过程,你只需要:

  • 提需求(写提示词)
  • 确认结果(每步确认)
  • 做决策(遇到选择时拍板)

剩下的,Superpowers 帮你搞定。


👨‍💻 H先生出品 | 专注 AI 工具与效率提升

系列文章:

相关推荐
大田稻谷2 小时前
从认知科学到代码实现——为 AI Agent 构建记忆系统
ai编程
库洛西鲁2 小时前
Claude Code 怎么配置和使用?从安装到实战踩坑全记录(2026)
ai编程·claude
小虎AI生活2 小时前
一人公司获客神器,WorkBuddy + 即梦 Seedance 2.0,这个组合真的绝了
ai编程
AI_paid_community2 小时前
我花了一晚上把 Claude Code 彻底"薅羊毛"了——free-claude-code 项目深度实测
人工智能·claude
程序员老刘3 小时前
当全网都在喊“程序员要被AI取代了”,Flutter给了另一种答案
flutter·ai编程·客户端
最强小杰3 小时前
OpenClaw 安装踩坑全记录:npm 和 Bun 两种方式的原理差异与实战配置(2026)
ai编程·mcp
不丿二3 小时前
用文件系统实现 AI 持久记忆:一个 Claude Code Agent Skill 的架构设计
claude
tanis_33 小时前
MinerU MCP Server 部署与工作流实战:Claude Desktop / Cursor / Cline 接入指南
ai编程·mcp
厨师沙拉qwq4 小时前
minimax文生图mcp
claude·mcp