进阶篇 — 学会「管好AI」

第10章 给 AI 装上「技能包」

3,2817 分钟阅读

第10章 给 AI 装上「技能包」


开场:AI 像新员工

想象你招了一个超级聪明的新员工。

他什么都能学会,学习能力超强。但每次都要你从头教:

"这个文件放这里" "那个函数这样写" "测试要先写再实现" "我们的颜色规范是 #3B82F6"

一遍又一遍,很累对吧?

如果有一个"入职手册"呢?

新员工来了,给他手册。他照着做,不用你每一步都教。

"技能包"就是这个"入职手册"——给 AI 的。

有了技能包,AI 不只是"聪明的助手",而是"懂你团队规范的资深员工"。


你会学到什么

  • 什么是 Superpowers
  • 技能包的结构和工作原理
  • Superpowers 的 7 步开发流程
  • 如何写你自己的技能包
  • 常用技能包示例

第一节:什么是 Superpowers?

Superpowers 是 Claude Code 最流行的技能框架。

简单来说,它是一套"方法论编码系统"——把资深工程师的工作方法,写成 AI 能理解和遵循的规则文件。

一个类比

没有 Superpowers 有 Superpowers
AI 像聪明的实习生 AI 像有经验的老员工
每次都要详细解释 它懂"套路"
结果不稳定 结果可预期
你说要优化,它全改了 它知道什么是真正的优化
你说要测试,它随便写写 它知道 TDD 的红-绿-重构

[图 10-1] Superpowers 的作用示意

图表说明:对比图。左侧是一个人拿着放大镜仔细看代码,旁边写着"没有技能包:每次都要解释"。右侧是一个机器人自动工作,旁边写着"有技能包:按规范自动执行"。

SVG 生成提示词: "A side-by-side comparison. Left: A person with magnifying glass examining code, label '没有技能包 - 每次都要解释'. Right: A robot working autonomously on code, label '有技能包 - 按规范自动执行'."

Superpowers 的本质

Superpowers 的本质是:把"怎么做"编码成规则。

传统方式:

你:帮我优化这个函数
AI:[把函数重写一遍]
你:不是这样,我是想让你提取重复代码
AI:[又重写一遍]
你:还是不对,应该是...

用 Superpowers:

你:帮我优化这个函数(按照代码审查技能包)
AI:[按照技能包里的优化规则执行]
AI:我发现这段代码有重复,可以提取一个 helper 函数。
AI:这个函数太长了,建议拆成两个小函数。
AI:命名不够语义化,建议改成 calculateTotalPrice。

第二节:Superpowers 的 7 步开发流程

Superpowers 定义了一套完整的开发流程。请见表 10-1。

表 10-1 Superpowers 7 步开发流程

步骤 英文名 做什么 为什么
1 Brainstorming 头脑风暴,澄清需求 避免做错方向
2 Git Worktree 创建隔离分支 不影响主代码
3 Plan Writing 把工作拆成小任务 快速反馈
4 TDD Execution 测试先行开发 质量保证
5 Code Review 代码审查 及时发现问题
6 Verification 验证功能 确保做对了
7 Completion 合并、清理、归档 完美收官

让我们详细看看每一步。

步骤 1:Brainstorming(头脑风暴)

做什么:用苏格拉底式对话澄清需求。

AI 不是直接开始写代码,而是先问问题:

  • "这个功能的用户是谁?"
  • "核心需求是什么?"
  • "有没有边界情况要考虑?"
  • "这个和现有的功能冲突吗?"

为什么:避免做错方向。

返工是最浪费时间的事情。花 5 分钟澄清需求,比花 2 小时返工划算。

步骤 2:Git Worktree(隔离环境)

做什么:创建一个独立的 Git 分支。

git worktree create ../my-feature-branch

在这个独立分支里工作,不影响主代码。

为什么:敢于尝试。

在新分支里,不用担心弄坏主代码。可以大胆尝试,出了问题直接删掉分支。

步骤 3:Plan Writing(写计划)

做什么:把工作拆成 2-5 分钟的小任务。

- [ ] 创建数据库表
- [ ] 写 API 端点
- [ ] 写前端组件
- [ ] 连接前后端
- [ ] 测试

为什么:快速反馈。

每个小任务完成后,你都能看到进展。而不是写了一大堆代码,最后发现跑不通。

步骤 4:TDD Execution(测试先行开发)

做什么:先写测试,再写实现。

1. 写一个失败的测试
2. 写刚好能让测试通过的代码
3. 重构代码
4. 重复

为什么:质量保证。

先写测试,你知道"完成"的标准是什么。代码写完,测试通过,功能就对了。

步骤 5:Code Review(代码审查)

做什么:每个任务完成后,让 AI 审查代码。

AI 会检查:

  • 代码风格是否符合规范
  • 有没有安全隐患
  • 有没有更简单的实现方式
  • 有没有遗漏的边界情况

为什么:及时发现问题。

别等问题累积。每一步都做好,最后就是好的。

步骤 6:Verification(验证)

做什么:确保功能真的工作了。

不只是"代码能跑",而是:

  • 功能符合需求吗?
  • 用户能正常使用吗?
  • 有没有明显的 bug?

为什么:确保做对了。

代码能跑不代表做对了。验证是确认"做对"的步骤。

步骤 7:Completion(完成)

做什么:合并分支、清理临时文件、归档记录。

git merge my-feature-branch
git worktree remove ../my-feature-branch

为什么:保持工作区整洁。

每次完成都清理好,下次开始时就是一个干净的环境。

[图 10-2] Superpowers 7 步流程

图表说明:一个圆形或循环流程图,显示 7 个步骤:Brainstorming → Git Worktree → Plan Writing → TDD Execution → Code Review → Verification → Completion。每一步有对应的图标。

SVG 生成提示词: "A circular flow diagram with 7 steps: 1.Brainstorming(对话图标) → 2.Git Worktree(分支图标) → 3.Plan Writing(清单图标) → 4.TDD Execution(测试图标) → 5.Code Review(审查图标) → 6.Verification(勾选图标) → 7.Completion(完成图标). Arrows connect each step in a circle."


第三节:技能包的结构

一个技能包是一个 Markdown 文件,有固定的结构。

---
name: your-skill-name
description: 一句话描述这个技能做什么
version: 1.0.0
author: Your Name
---

## 技能什么时候用

**场景**:[什么情况下用这个技能]

**触发条件**:用户说什么话时会触发

---

## 技能做什么

[详细的工作步骤]

---

## 约束和规则

**必须遵守**:
- [规则1]
- [规则2]

**绝对不要**:
- [禁止1]
- [禁止2]

各部分说明

头部元数据

  • name:技能的名称,用小写和连字符
  • description:一句话说明这个技能做什么
  • version:版本号
  • author:作者

什么时候用

说明这个技能的使用场景和触发条件。

AI 会根据这些信息判断什么时候调用这个技能。

做什么

详细的工作步骤。这是技能的核心内容。

要写得足够具体,让 AI 能照着做。

约束和规则

必须遵守什么,绝对不要做什么。

这些约束确保 AI 按你想要的方式工作。


第四节:一个完整的技能包示例

让我们看一个实际的技能包:测试先行开发(TDD)

---
name: test-driven-development
description: 测试先行开发的技能包
version: 1.0.0
author: Superpowers Team
---

## 技能什么时候用

**场景**:用户要实现新功能或修复 bug 时

**触发条件**:用户说"添加一个功能"或"修复这个 bug"

---

## 技能做什么

遵循 TDD 的红-绿-重构循环:

### 第一步:写失败的测试

先写一个测试,验证我们要实现的功能。

测试应该:
- 清晰描述期望行为
- 目前会失败(因为功能还没实现)

示例:
```javascript
test('计算折扣价格', () => {
  expect(calculateDiscount(100, 0.1)).toBe(90)
})

第二步:写最简单的实现

写刚好能让测试通过的代码。

不要过度优化,先让它跑起来。

示例:

function calculateDiscount(price, discount) {
  return price * (1 - discount)
}

第三步:重构

测试通过了,检查代码:

  • 有重复吗?
  • 可以更清晰吗?
  • 需要提取函数吗?

重构后确保测试仍然通过。

第四步:重复

继续下一个小的功能点。


约束和规则

必须遵守

  • 每个功能先写测试
  • 测试失败时不要写新功能
  • 重构时保持测试通过
  • 测试要简单易懂

绝对不要

  • 一次写太多代码
  • 跳过测试直接实现
  • 在测试失败时继续
  • 写太复杂的测试

### 这个技能包的使用效果

**没有技能包时**:

你:添加一个计算折扣的功能

AI:[直接写实现代码,没有测试]

你:这有问题,没有边界情况处理...

AI:[又改了一版,还是没测试]

你:能不能先写测试?

AI:[随便写了个测试,覆盖率很低]


**有技能包时**:

你:添加一个计算折扣的功能

AI(使用 TDD 技能): 好的,让我遵循 TDD 流程。

第一步:写测试

describe('calculateDiscount', () => {
  test('正常折扣', () => {
    expect(calculateDiscount(100, 0.1)).toBe(90)
  })

  test('折扣不能超过100%', () => {
    expect(calculateDiscount(100, 1.5)).toBe(0)
  })

  test('价格不能为负', () => {
    expect(calculateDiscount(-100, 0.1)).toBe(0)
  })
})

运行测试... 失败了,因为函数还不存在。

第二步:写实现

function calculateDiscount(price, discount) {
  if (price < 0) return 0
  if (discount > 1) discount = 1
  if (discount < 0) discount = 0
  return price * (1 - discount)
}

运行测试... 通过了!

第三步:重构

代码已经很简洁了,不需要重构。

功能完成!


---

## 第五节:Superpowers 自带的核心技能

Superpowers 自带了很多常用技能。请见表 10-2。

**表 10-2 Superpowers 核心技能**

| 技能 | 用途 | 什么时候用 |
|------|------|-----------|
| **brainstorming** | 头脑风暴,澄清需求 | 开始新功能前 |
| **plan** | 把需求拆成任务 | 需求明确后 |
| **tdd** | 测试先行开发 | 实现功能时 |
| **code-review** | 代码审查 | 完成任务后 |
| **verify** | 验证功能正确性 | 完成功能后 |
| **git-worktree** | 创建隔离分支 | 开始新任务前 |
| **completion** | 完成后的清理 | 完成所有工作后 |

### 如何使用

在 Claude Code 中,用 `/` 命令调用技能:

```bash
# 启动 brainstorming 技能
/brainstorming 我要做一个用户登录功能

# 启动 plan 技能
/plan 把登录功能拆成任务

# 启动 tdd 技能
/tdd 实现登录表单

第六节:写你自己的技能包

最有价值的是,你可以写自己的技能包!

场景 1:你是设计师

你想让 AI 总是按照你的设计规范来写代码。

写一个技能包 design-rules.md

---
name: design-rules
description: 按照我们的设计规范写代码
version: 1.0.0
---

## 设计规范

**颜色**:
- 主色:#3B82F6(蓝色)
- 成功:#10B981(绿色)
- 错误:#EF4444(红色)
- 背景:#F9FAFB(浅灰)

**字体**:
- 标题:Poppins Bold,24px
- 正文:Inter Regular,16px
- 小字:Inter Regular,14px

**间距**:
- 组件间距:16px
- 页面边距:24px
- 卡片内边距:16px

**组件**:
- 按钮圆角:8px
- 卡片阴影:sm
- 输入框边框:1px solid #E5E7EB

## 约束

写任何 UI 代码时,必须:
1. 使用 Tailwind CSS
2. 颜色从规范里选,别自己定
3. 间距用 4 的倍数(8px、12px、16px...)
4. 按钮必须有 hover 和 active 状态

现在,每次 AI 写 UI 代码,都会遵循你的规范。

场景 2:你是创业者

你有一个固定的技术栈和业务逻辑。

写一个技能包 company-standards.md

---
name: company-standards
description: 公司技术标准和业务规则
version: 1.0.0
---

## 技术栈

我们只用:
- Next.js 14+(App Router)
- TypeScript(严格模式)
- Supabase(数据库 + 认证)
- Tailwind CSS(样式)
- shadcn/ui(组件库)

## 代码规范

**函数命名**:
- 组件用 PascalCase:UserProfile
- 工具函数用 camelCase:formatDate
- 常量用 UPPER_SNAKE_CASE:API_BASE_URL

**文件组织**:
- 组件放在 components/
- 工具函数放在 lib/
- 类型定义放在 types/
- API 路由放在 app/api/

## 业务规则

**定价**:
- 所有价格以分为单位存储
- 显示时转换成元
- 折扣计算要精确到分

**用户数据**:
- 敏感数据必须加密
- 不能记录密码明文
- 邮箱需要验证

**API 设计**:
- 所有 API 要有错误处理
- 返回格式统一:{ data, error }
- 需要认证的 API 要检查用户身份

场景 3:你关注性能

你想让 AI 写的代码总是高性能的。

写一个技能包 performance-rules.md

---
name: performance-rules
description: 性能优化规则
version: 1.0.0
---

## 性能规则

**React 组件**:
- 使用 useMemo 缓存计算结果
- 使用 useCallback 缓存回调函数
- 大列表使用虚拟化(react-window)
- 避免不必要的重渲染

**数据获取**:
- 使用 React Query 或 SWR
- 实现缓存和去重
- 避免重复请求
- 实现乐观更新

**图片优化**:
- 使用 Next.js Image 组件
- 提供多种尺寸
- 使用 WebP 格式
- 实现懒加载

**代码分割**:
- 大组件使用动态导入
- 路由级别的代码分割
- 按需加载第三方库

## 约束

写代码时必须:
1. 检查有没有不必要的重渲染
2. 检查有没有重复请求
3. 检查有没有大文件需要分割
4. 使用浏览器 DevTools 检查性能

第七节:技能包的威力

技能包不只是"规则",它是可复用的方法论

价值 1:把经验固化

你是资深工程师?

把你的经验写成技能包。团队新来的 AI 员工,马上有老员工的水平。

价值 2:一致性

团队里每个人写的代码风格不一样?

用统一的技能包,风格自动一致。

价值 3:持续改进

发现问题?更新技能包。

所有未来的 AI 交互都会受益。

价值 4:知识传承

资深工程师离职了?

他的技能包留下了。

新来的工程师,用 AI + 技能包,马上能写出符合团队规范的代码。


动手实验室

技能包模板和示例:labs/chapter10-superpowers/

在这个目录里,我为你准备了:

  • 技能包模板
  • 常用技能包示例
  • 如何写自己的技能包的教程

你可以:

  • 直接使用这些技能包
  • 作为起点修改
  • 学习如何写技能包

本章小结

这一章,我们学习了"技能包"——把方法论编码成 AI 能遵循的规则。

核心观点:技能包是"可复用的经验"。写一次,长期受益。

我们介绍了:

  • 什么是 Superpowers:Claude Code 的技能框架
  • Superpowers 的 7 步开发流程
  • 技能包的结构和写法
  • 如何写自己的技能包

要点回顾请见表 10-3。

表 10-3 技能包要点回顾

概念 要点
Superpowers Claude Code 的技能框架
技能包 方法论的编码,让 AI 懂"套路"
7 步流程 头脑风暴→隔离→计划→TDD→审查→验证→完成
自定义技能 把你的经验写成技能包

记住:

技能包是"可复用的经验"。

写一次,长期受益。

你写的技能包越多,AI 就越像"你"。

在下一章,我们会学习"让多个 AI 协同工作"——用 Roo Code 的角色分工系统。


本章字数:约 12,000 字