我用 Claude Code + Superpowers 完成了第一个项目:极简计算器

2 阅读13分钟

我用 Claude Code + Superpowers 完成了第一个项目:极简计算器

4 周学习 Superpowers 系列文章 - Day 1

🎯 写在前面

最近发现了一个很火的 Claude Code 插件 - Superpowers,GitHub 上已经有 10w+ star。作者 Jesse Vincent 声称这个插件能让你的 AI 编码助手变得更聪明、更可靠。

作为一个经常使用 AI 辅助开发的开发者,我决定花 4 周时间系统学习这个框架。这是我的 Day 1 学习笔记和实战记录。


📚 什么是 Superpowers?

官方定义

Superpowers is a complete software development workflow for your coding agents, built on top of a set of composable "skills" and some initial instructions that make sure your agent uses them.

一句话总结

Superpowers 是一个为 AI 编码代理设计的完整软件开发工作流框架,它通过一系列可组合的"技能"(Skills),让 AI 不再是"直接写代码",而是遵循一套科学的开发流程。


🎬 核心理念

Superpowers 基于三个核心原则:

1. TDD(测试驱动开发)

RED(写失败的测试)→ GREEN(写最小代码通过测试)→ REFACTOR(重构优化)

2. YAGNI(你不需要它)

"You Aren't Gonna Need It"

不要过度设计,只做当前需要的功能。

3. DRY(不重复自己)

"Don't Repeat Yourself"

消除重复代码,提高可维护性。


🔄 与普通 AI 编码的区别

❌ 普通模式

我:帮我做个计算器
AI:好的![啪啪啪写了 200 行代码]
     [可能有 Bug,可能不符合需求]
我:这个不对...
AI:好的,我再改改... [又写了 100 行]

问题:

  • 直接跳进实现,不问清楚需求
  • 容易猜测错误,偏离目标
  • 没有测试,质量无法保证
  • 代码审查缺失

✅ Superpowers 模式

我:帮我做个计算器
AI:先问清楚需求 → 我确认 →
    生成计划 → 我确认 →
    一步步执行 → 完成
我:完美!✓

优势:

  • 先搞清楚你真正想要什么
  • 拆分成小任务,逐步完成
  • 每个步骤都有验证
  • 自动生成设计文档和实施计划

🛠️ 安装过程

第一步:配置 Git(重要!)

Windows 上首次安装时遇到了 SSH 认证问题:

# 配置 Git 使用 HTTPS 而不是 SSH
git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf git:

第二步:在 Claude Code 中安装插件

/plugin install superpowers@claude-plugins-official

第三步:验证安装

新建一个空白项目,对 Claude 说:

"帮我规划一个计算器的功能"

如果它先问你问题而不是直接写代码,说明安装成功!


🎭 完整执行流程演示

项目:极简基础计算器

阶段 1:需求澄清(brainstorming 技能)

我:

"帮我做一个计算器"

Claude(Superpowers 模式):

好的!在开始之前,我需要先了解一些细节:

1. 这个计算器是 Web 应用还是命令行工具?
2. 需要哪些功能?比如:
   - 基本运算(加减乘除)
   - 科学计算功能
   - 历史记录
3. UI 风格有什么要求?简约 / 复古 / 现代等
4. 用什么技术栈?(React / Vue / 纯 HTML+JS)
5. 有没有其他特殊要求?

请回答这些问题,我们再开始规划。

我的回答:

1. Web 应用
2. 基本四则运算 + 小数点 + 退格 + 清除
3. 极简风格
4. 纯 HTML + CSS + JavaScript,单文件
5. 可直接在浏览器打开运行

阶段 2:设计规格(自动生成文档)

Claude 自动生成设计文档: docs/superpowers/specs/2026-03-21-calculator-design.md

# 极简基础计算器设计文档

**日期**: 2026-03-21
**状态**: 已批准

## 1. 概述
构建一个极简风格的基础计算器 Web 应用,支持加减乘除基本运算和小数点功能。
使用纯 HTML/CSS/JavaScript 实现,单文件结构,无需构建工具。

## 2. 功能需求

### 2.1 核心功能
- 加法 (+)
- 减法 (-)
- 乘法 (×)
- 除法 (÷)
- 小数点支持
- 正负号切换 (±)
- 百分比运算 (%)
- 退格删除 (←)
- 清除所有 (C)

### 2.2 用户界面
- 表达式显示行:显示当前输入的算式
- 结果显示行:显示计算结果
- 4列 × 5行 按钮网格布局

## 3. 架构设计

### 3.1 技术栈
- **HTML5**: 语义化结构
- **CSS3**: Flexbox + Grid 布局
- **JavaScript (ES6+)**: 原生逻辑,无框架依赖

### 3.2 文件结构

index.html (单文件,包含所有 HTML、CSS、JS)


### 3.3 部署方式
直接在浏览器中打开 `index.html` 文件即可运行,无需服务器。

## 4. 按钮布局 (4列 × 5行)

| 列\行 | 1 | 2 | 3 | 4 |
|-------|---|---|---|---|
| 1 | C | ← | % | ÷ |
| 2 | 7 | 8 | 9 | × |
| 3 | 4 | 5 | 6 | - |
| 4 | 1 | 2 | 3 | + |
| 5 | ± | 0 | . | = |

## 5. 核心逻辑

### 5.1 状态管理
```javascript
const state = {
  currentInput: "",      // 当前输入的数字字符串
  previousInput: "",     // 上一个输入的数字
  operation: null,       // 当前选择的运算符
  expression: "",        // 完整的表达式字符串
  shouldResetInput: false // 是否需要重置输入
};

5.2 运算处理

  • 使用 parseFloat() 转换数字
  • 结果精度处理:parseFloat(result.toFixed(10)) 避免浮点数精度问题
  • 除以零:显示 "不能除以零"

6. 验收标准

6.1 功能验收

  • 所有基本运算功能正常
  • 小数点运算正确
  • 界面符合极简设计风格
  • 错误情况有合理提示
  • 可直接在浏览器中打开运行

6.2 具体测试用例

用例输入预期结果
基础加法2 + 3 =5
基础减法10 - 4 =6
基础乘法3 × 4 =12
基础除法15 ÷ 3 =5
浮点精度0.1 + 0.2 =0.3(非 0.30000000000000004
除以零5 ÷ 0 =不能除以零

**这个规格对吗?有任何需要调整的吗?**

我确认后,Claude 继续生成实施计划。

---

#### 阶段 3:实施计划(自动生成 13 个任务)

**Claude 自动生成实施计划:** `docs/superpowers/plans/2026-03-21-calculator.md`

极简基础计算器实施计划

Goal: 构建一个极简风格的基础计算器 Web 应用

Architecture: 单文件 HTML 结构,使用原生 JavaScript 处理状态管理和计算逻辑

Tech Stack: HTML5, CSS3 (Flexbox + Grid), JavaScript (ES6+)


Task 1: 创建 HTML 基础结构

  • 创建 HTML5 文档结构
  • 在浏览器中验证页面加载
  • 提交初始结构

Task 2: 创建 CSS 样式

  • 添加基础样式和布局
  • 添加显示屏样式
  • 添加按钮网格样式
  • 在浏览器中验证样式
  • 提交样式

Task 3: 创建按钮 HTML 结构

  • 添加所有按钮(4×5 网格)
  • 在浏览器中验证按钮显示
  • 提交按钮结构

Task 4: 实现状态管理

  • 添加状态管理代码
  • 添加更新显示函数
  • 在浏览器控制台测试状态
  • 提交状态管理

Task 5: 实现数字输入功能

  • 添加数字输入函数(包含长度限制、前导零处理)
  • 添加数字按钮事件监听
  • 在浏览器中测试数字输入
  • 提交数字输入功能

Task 6: 实现小数点功能

  • 添加小数点处理函数(防止多个小数点)
  • 添加小数点按钮事件监听
  • 在浏览器中测试小数点
  • 提交小数点功能

Task 7: 实现运算符功能

  • 添加运算符处理函数(支持链式计算)
  • 添加运算符按钮事件监听
  • 在浏览器中测试运算符
  • 提交运算符功能

Task 8: 实现计算功能

  • 添加计算函数(四则运算 + 除零处理 + 浮点精度)
  • 添加等号按钮事件监听
  • 在浏览器中测试计算
  • 提交计算功能

Task 9: 实现清除功能

  • 添加清除函数
  • 添加清除按钮事件监听
  • 在浏览器中测试清除
  • 提交清除功能

Task 10: 实现退格功能

  • 添加退格函数
  • 添加退格按钮事件监听
  • 在浏览器中测试退格
  • 提交退格功能

Task 11: 实现百分比功能

  • 添加百分比函数
  • 添加百分比按钮事件监听
  • 在浏览器中测试百分比
  • 提交百分比功能

Task 12: 实现正负号切换功能

  • 添加正负号切换函数
  • 添加正负号按钮事件监听
  • 在浏览器中测试正负号
  • 提交正负号功能

Task 13: 完整功能验收测试

  • 运行所有验收测试
  • 确认功能验收通过
  • 提交验收通过

每个任务预计 2-5 分钟,总共 13 个任务

准备好了吗?说 "go" 开始执行!


---

#### 阶段 4:选择执行模式

**我选择:** `subagent-driven-development`(子代理驱动开发)

**Claude:**

正在启动子代理开发流程...

这将自动协调多个 AI 代理完成所有 13 个任务。 预计耗时约 40 分钟。

准备好了吗?说 "go" 开始。


**我:** `go`

---

#### 阶段 5:自动执行任务

**AI 自动执行每个任务,每个任务都包含:**

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【Task 5/13】实现数字输入功能 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【Step 1】添加数字输入函数... ✓ 添加 inputNumber() 函数 ✓ 处理长度限制(12位) ✓ 处理前导零

【Step 2】添加数字按钮事件监听... ✓ 为所有数字按钮添加事件监听

【Step 3】在浏览器中测试... ✓ 测试:点击数字按钮,数字正确显示 ✓ 测试:超过 12 位不再接受输入 ✓ 测试:前导零自动处理

【Step 4】提交... ✓ git commit -m "feat: add number input handling"

任务 5 完成!


---

#### 阶段 6:项目完成

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🎉 所有任务完成! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

项目统计:

  • 13 个任务完成
  • 所有验收测试通过
  • 耗时约 42 分钟
  • 零 Bug

最终文件结构:

learn-superpowers/
├── index.html               完整的计算器应用
├── .git/                    Git 历史(13 次提交)
└── docs/
    └── superpowers/
        ├── specs/           设计文档
           └── 2026-03-21-calculator-design.md
        └── plans/           实施计划
            └── 2026-03-21-calculator.md

项目成功!🎉


---

## 🔍 最终成果展示

### 项目预览

```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>极简计算器</title>
    <style>
        /* 极简风格 CSS 样式 */
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            background-color: #f5f5f5;
        }

        .calculator {
            width: 320px;
            padding: 16px;
            background-color: #f5f5f5;
        }

        .display {
            background-color: #ffffff;
            height: 100px;
            padding: 16px;
            border-radius: 8px;
            margin-bottom: 16px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
            display: flex;
            flex-direction: column;
            justify-content: flex-end;
            align-items: flex-end;
        }

        .result {
            font-size: 32px;
            color: #2d3436;
            font-weight: 500;
        }

        .buttons {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 8px;
        }

        .button {
            width: 60px;
            height: 60px;
            border: none;
            border-radius: 8px;
            font-size: 20px;
            cursor: pointer;
        }

        .button-number {
            background-color: #ffffff;
            color: #2d3436;
        }

        .button-operator {
            background-color: #ff9f43;
            color: #ffffff;
        }

        .button-equals {
            background-color: #ee5a3a;
            color: #ffffff;
        }
    </style>
</head>
<body>
    <div class="calculator">
        <div class="display">
            <div class="expression"></div>
            <div class="result">0</div>
        </div>
        <div class="buttons">
            <!-- 4×5 按钮网格 -->
        </div>
    </div>
    <script>
        // 完整的 JavaScript 逻辑
    </script>
</body>
</html>

功能特性

基本运算:加减乘除 ✅ 小数点支持:防止多个小数点 ✅ 链式计算:支持连续运算 ✅ 退格删除:删除最后一个字符 ✅ 清除功能:清空所有状态 ✅ 百分比:将当前数字转换为百分比 ✅ 正负号:切换数字的正负 ✅ 浮点精度:自动处理浮点数精度问题 ✅ 除零保护:友好的错误提示 ✅ 极简 UI:iOS 风格设计

技术亮点

  1. 单文件架构:所有代码在一个 HTML 文件中
  2. 状态管理:清晰的 state 对象管理所有状态
  3. 事件驱动:所有按钮通过事件委托处理
  4. 错误处理:完善的边界情况处理
  5. 浮点精度:使用 toFixed(10) 避免精度问题

🤔 两种执行模式对比

subagent-driven-development(我选择的)

特点:

  • 🤖 自动化程度高
  • 👤 人工干预少
  • ⚡ 效率高

优点:

  • ✅ 可以连续工作数小时不偏离方向
  • ✅ 多个代理互相审查,质量高
  • ✅ 自动处理大部分决策

缺点:

  • ❌ 你不能实时控制每个步骤
  • ❌ 可能错过一些细节
  • ❌ 需要信任 AI 的判断

适合场景:

  • 大型项目(多个功能模块)
  • 有清晰规格的任务
  • 你想"放手"让 AI 去做

手动分步执行(下次要试试)

特点:

  • 🤖 自动化程度低
  • 👤 人工干预多
  • 🐢 效率中等

优点:

  • ✅ 你完全掌控每个步骤
  • ✅ 可以实时调整方向
  • ✅ 适合学习理解每个环节
  • ✅ 能看到中间结果

缺点:

  • ❌ 需要你频繁参与
  • ❌ 效率相对较低
  • ❌ 容易打断 AI 的思路

适合场景:

  • 学习 TDD 流程
  • 需要理解每个步骤
  • 项目需要频繁调整
  • 你想边看边学

📊 效率对比

普通模式 vs Superpowers

维度普通模式Superpowers
需求理解❌ 容易偏离✅ 先澄清 + 生成设计文档
代码质量⭐⭐⭐⭐⭐⭐⭐⭐
文档完整性❌ 经常缺失✅ 自动生成规格 + 计划
Bug 数量🔴 较多🟢 零 Bug
开发时间⚡ 快⚡⚡ 稍慢但更可靠
可维护性⭐⭐⭐⭐⭐⭐⭐⭐
学习效果📚 一般📚 优秀
Git 提交❌ 随意✅ 每个 task 一次提交

💡 核心收获

1. AI 不再是"代码生成器"

传统模式下,AI 往往直接生成代码,但可能不理解需求。

Superpowers 让 AI 变成了"开发伙伴":

  • 先理解你的需求(brainstorming)
  • 自动生成设计文档
  • 制定详细的实施计划
  • 然后才一步步执行

2. 文档不是负担

以前觉得写文档浪费时间,但这次体验后明白了:

  • ✅ 设计文档让需求更清晰
  • ✅ 实施计划让开发更可控
  • ✅ 自动生成文档,零成本
  • ✅ 后续维护有据可查

3. 拆分任务的重要性

大任务拆分成 13 个小任务:

  • ✅ 每个任务 2-5 分钟
  • ✅ 每个任务一次 Git 提交
  • ✅ 容易理解和验证
  • ✅ 容易回滚和修改

4. 单文件架构的优势

对于小项目,单文件架构很高效:

  • ✅ 无需构建工具
  • ✅ 无需依赖管理
  • ✅ 直接在浏览器运行
  • ✅ 便于分享和部署

🎯 Day 1 总结

✅ 完成的目标

  1. ✅ 理解 Superpowers 的核心理念和架构
  2. ✅ 成功安装并验证插件
  3. ✅ 完成第一个项目(极简计算器)
  4. ✅ 观察技能自动触发机制
  5. ✅ 理解两种执行模式的差异

📦 项目成果

  • 代码行数:约 350 行(HTML + CSS + JS)
  • 文件数量:1 个文件(index.html)
  • 功能数量:9 个核心功能
  • 测试用例:12 个验收测试
  • Git 提交:13 次(每个 task 一次)
  • 开发时间:约 42 分钟
  • Bug 数量:0
  • 文档生成:2 个(设计文档 + 实施计划)

🤔 需要深入理解的部分

  1. ⚠️ TDD 的具体实践(RED-GREEN-REFACTOR)
  2. ⚠️ 手动分步执行模式
  3. ⚠️ Git Worktrees 的实际操作

🚀 Day 2 计划

学习重点

  1. TDD 深度实践(手动模式)

    • 一步步观察每个开发步骤
    • 理解为什么要先写测试
    • YAGNI 原则实践
  2. Git Worktrees 实战

    • 手动创建 worktree
    • 在多个 worktree 中并行工作
    • 理解上下文隔离
  3. 完成一个小项目

    • 全程使用手动模式
    • 记录每个阶段
    • 对比普通模式

推荐项目:

  • Python 字符串处理工具库
  • Node.js REST API
  • TypeScript 工具函数

📚 延伸阅读


💬 交流讨论

如果你也在学习 Superpowers,或者有任何疑问,欢迎在评论区交流!

也可以加入 Discord 社区 和其他开发者一起讨论。


📅 系列文章预告

  • Day 1: ✅ Superpowers 入门与第一个项目(本文)
  • Day 2: 📝 TDD 深度实践与 Git Worktrees(敬请期待)
  • Day 3: 🐛 系统化调试与代码审查(敬请期待)
  • Day 4: 🚀 自定义技能与高级技巧(敬请期待)

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、转发!

我是竹哥,4 周时间,系统学习 Superpowers,带你从入门到精通。


发布日期:2026-03-21 系列:Superpowers 4 周学习计划 作者:竹哥 项目:极简基础计算器 技术栈:HTML5 + CSS3 + JavaScript (ES6+)