Superpowers - Day 4:阅读核心技能源码

19 阅读19分钟

Superpowers 学习笔记 - Day 4:阅读核心技能源码

📅 日期

2026-03-22


🎯 今日目标

Day 4-5:学习使用指南(2-3 小时)

  • 阅读 using-superpowers/SKILL.md
  • 了解技能自动触发机制
  • 理解不同场景下会触发哪些技能

核心技能概览

技能触发时机作用
brainstorming项目开始前需求澄清、探索方案
writing-plans设计确认后生成详细实施计划
test-driven-development实施阶段TDD 循环(红-绿-重构)
subagent-driven-development执行阶段子代理协作完成任务
systematic-debugging出现问题时4 阶段根因分析
requesting-code-review任务之间代码审查请求
receiving-code-review收到反馈时回应审查意见

📖 核心技能深度解析

1️⃣ using-superpowers(使用指南)

技能名称: using-superpowers
描述: 启动任何对话时使用 - 建立如何查找和使用技能


🔴 极其重要的规则

If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.

IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.

  • 这不是可协商的
  • 这不是可选项
  • 你不能通过理性化来逃避这个规则

📋 指令优先级

Superpowers 技能覆盖默认系统提示行为,但 用户指令总是具有最高优先级

  1. 用户的显式指令(CLAUDE.md, GEMINI.md, AGENTS.md, 直接请求)— 最高优先级
  2. Superpowers 技能 — 在与默认系统行为冲突时覆盖
  3. 默认系统提示 — 最低优先级

例子: 如果 CLAUDE.md 说"不要使用 TDD"而技能说"始终使用 TDD",遵循用户的指令。用户是控制者。


🔄 技能调用流程
graph TD
    A[用户消息] --> B{任何技能可能适用?}
    B -->|是,甚至1%| C[调用 Skill 工具]
    B -->|绝对不| D[回应包括澄清]
    C --> E[宣布:使用技能来...]
    E --> F{有检查清单?}
    F -->|是| G[为每项创建 TodoWrite]
    F -->|否| H[完全遵循技能]
    G --> H
    H --> I[回应包括澄清]

⚠️ 红旗警示

这些想法意味着停止——你在合理化:

想法现实
"这只是个简单问题"问题就是任务。检查技能。
"我需要更多上下文"技能检查在澄清问题之前。
"让我先探索代码库"技能告诉你如何探索。先检查。
"我可以快速检查 git/文件"文件缺少对话上下文。先检查技能。
"让我先收集信息"技能告诉你如何收集信息。
"这不需要正式技能"如果技能存在,就使用它。
"我记得这个技能"技能会演变。阅读当前版本。
"这不算任务"行动 = 任务。检查技能。
"技能大材小用"简单的事情会变复杂。使用它。
"我就先做这一件事"在做任何事情之前先检查。
"这感觉很高效"不受纪律的行动浪费时间。技能防止这种情况。
"我知道这意味着什么"知道概念 ≠ 使用技能。调用它。

🎯 技能优先级

当多个技能可能适用时,使用这个顺序:

  1. 流程技能优先(brainstorming, debugging)— 这些决定如何处理任务
  2. 实现技能其次(frontend-design, mcp-builder)— 这些指导执行

例子:

  • "让我们构建 X" → brainstorming 优先,然后实现技能
  • "修复这个 bug" → debugging 优先,然后领域特定技能

📊 技能类型

刚性(TDD, debugging):完全遵循。不要通过纪律来适应。

灵活(patterns):根据上下文适应原则。

技能本身会告诉你它是哪种。


2️⃣ brainstorming(头脑风暴)

技能名称: brainstorming
描述: 你必须在任何创造性工作之前使用这个 — 创建功能、构建组件、添加功能或修改行为。在实现之前探索用户意图、需求和设计。


🚪 硬门规则

Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it.

This applies to EVERY project regardless of perceived simplicity.


✅ 检查清单

你必须为这些项目中的每一项创建一个任务并按顺序完成:

  1. 探索项目上下文 — 检查文件、文档、最近提交
  2. 提供视觉伴侣(如果话题将涉及视觉问题)— 这是它自己的消息,不与澄清问题结合
  3. 问澄清问题 — 一次一个,理解目的/约束/成功标准
  4. 提出 2-3 种方法 — 包含权衡和你的建议
  5. 展示设计 — 按其复杂性缩放的部分,在每部分后获得用户批准
  6. 编写设计文档 — 保存到 docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md 并提交
  7. 规范审查循环 — 使用精心制作的审查上下文派发 spec-document-reviewer 子代理;修复问题并重新派发直到批准(最多 3 次迭代,然后暴露给人类)
  8. 用户审查编写的规范 — 在继续之前请用户审查规范文件
  9. 过渡到实施 — 调用 writing-plans 技能创建实施计划

🔄 流程图
graph TD
    A[探索项目上下文] --> B{有视觉问题?}
    B -->|是| C[提供视觉伴侣]
    B -->|否| D[问澄清问题]
    C --> D
    D --> E[提出 2-3 种方法]
    E --> F[展示设计部分]
    F --> G{用户批准设计?}
    G -->|否| F
    G -->|是| H[编写设计文档]
    H --> I[规范审查循环]
    I --> J{规范审查通过?}
    J -->|发现问题| H
    J -->|批准| K{用户审查规范?}
    K -->|要求更改| H
    K -->|批准| L[调用 writing-plans]

🎯 关键原则
  • 一次一个问题 — 不要用多个问题压倒用户
  • 多选优先 — 如果可能,比开放式更容易回答
  • YAGNI 残酷 — 从所有设计中移除不必要的功能
  • 探索替代方案 — 在确定之前总是提出 2-3 种方法
  • 增量验证 — 展示设计,在继续之前获得批准
  • 灵活 — 当某些事情没有意义时,回去澄清

💡 视觉伴侣

用于在头脑风暴期间显示模拟图、图表和视觉选项的基于浏览器的伴侣。可用作工具 — 不是模式。

提供伴侣: 当你预计即将到来问题将涉及视觉内容(模拟图、布局、图表)时,一次征求同意:

"我们要做的一些事情如果我可以在这个网页浏览器中展示给你,可能会更容易解释。我可以在进行过程中整理模拟图、图表、比较和其他视觉效果。这个功能仍然很新,可能会很消耗令牌。想试试吗?(需要打开本地 URL)"

此提供必须是它自己的消息。 不要将它与澄清问题、上下文摘要或任何其他内容结合。


3️⃣ writing-plans(编写计划)

技能名称: writing-plans
描述: 在接触代码之前,当你有规范或多步骤任务的需求时使用


📋 概述

编写全面的实施计划,假设工程师对我们的代码库零上下文,品味可疑。记录他们需要知道的一切:每个任务要接触哪些文件、代码、测试、他们可能需要检查的文档、如何测试它。将整个计划作为小任务给他们。DRY。YAGNI。TDD。频繁提交。

宣布开始时: "我正在使用 writing-plans 技能创建实施计划。"

上下文: 这应该在专用工作树中运行(由 brainstorming 技能创建)。

保存计划到: docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md


🎯 范围检查

如果规范涵盖多个独立子系统,它应该在头脑风暴期间分解为子项目规范。如果不是,建议将其分解为单独的计划 — 每个子系统一个。每个计划应该自己产生可工作的、可测试的软件。


📁 文件结构

在定义任务之前,映射将创建或修改哪些文件以及每个文件负责什么。这是分解决策被锁定的地方。

  • 设计具有清晰边界和定义良好接口的单元。每个文件应该有一个明确的职责。
  • 你推理最好的代码是你可以在上下文中一次性理解的代码,当文件专注时你的编辑更可靠。更喜欢更小、专注的文件而不是做太多事情的大文件。
  • 一起改变的文件应该在一起。按职责分割,而不是按技术层。
  • 在现有代码库中,遵循既定模式。如果代码库使用大文件,不要单方面重构 — 但如果你正在修改的文件变得笨拙,包括计划中的拆分是合理的。

📦 小任务粒度

每个步骤是一个动作(2-5 分钟):

  • "编写失败的测试" — 步骤
  • "运行它以确保失败" — 步骤
  • "编写最小代码通过测试" — 步骤
  • "运行测试并确保它们通过" — 步骤
  • "提交" — 步骤

📄 计划文档结构
### Task N: [Component Name]

**Files:**
- Create: `exact/path/to/file.py`
- Modify: `exact/path/to/existing.py:123-145`
- Test: `tests/exact/path/to/test.py`

- [ ] **Step 1: Write failing test**

```python
def test_specific_behavior():
    result = function(input)
    assert result == expected
  • Step 2: Run test to verify it fails

Run: pytest tests/path/test.py::test_name -v Expected: FAIL with "function not defined"

  • Step 3: Write minimal implementation
def function(input):
    return expected
  • Step 4: Run test to verify it passes

Run: pytest tests/path/test.py::test_name -v Expected: PASS

  • Step 5: Commit
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"

---

#### 🔍 计划审查循环

编写完整计划后:

1. 派发单个 plan-document-reviewer 子代理,使用精心制作的审查上下文  从不是你的会话历史。这使审查者专注于计划,而不是你的思维过程。
   - 提供:计划文档路径,规范文档路径
2. 如果  发现问题:修复,为整个计划重新派发审查者
3. 如果  批准:继续执行交接

---

#### 🚀 执行交接

保存计划后,提供执行选择:

> "计划已完成并保存到 `docs/superpowers/plans/<filename>.md`。两种执行选项:"
> 
> "**1. 子代理驱动(推荐)** — 我为每个任务派发一个新的子代理,任务之间审查,快速迭代"
> 
> "**2. 内联执行** — 使用 executing-plans 在此会话中执行任务,带检查点的批量执行"
> 
> "**哪种方法?**"

---

### 4️⃣ test-driven-development(测试驱动开发)

**技能名称:** `test-driven-development`  
**描述:** 在编写实现代码之前实施任何功能或 bug 修复时使用

---

#### 📋 概述

先写测试。看着它失败。编写最小代码通过。

**核心原则:** 如果你没有看到测试失败,你就不知道它是否测试正确的事情。

**违反规则的文字就是违反规则的精神。**

---

#### 🚪 铁律

没有失败测试没有生产代码


在测试之前写代码?删除它。重新开始。

**没有例外:**
- 不要保留它作为"参考"
- 不要在编写测试时"适应"它
- 不要看它
- 删除意味着删除

从测试开始实现。就这样。

---

### 5️⃣ subagent-driven-development(子代理驱动开发)

**技能名称:** `subagent-driven-development`  
**描述:** 在当前会话中使用独立任务执行实施计划时使用

---

#### 📋 概述

通过为每个任务派发新的子代理来执行计划,每个任务后进行两阶段审查:首先是规范合规性审查,然后是代码质量审查。

**为什么使用子代理:** 你将任务委托给具有隔离上下文的专业代理。通过精确制作它们的指令和上下文,你确保它们保持专注并成功完成任务。它们不应继承你会话的上下文或历史  你构建它们确切需要的内容。这也为协调工作保留了你自己的上下文。

**核心原则:** 每个任务的新子代理 + 两阶段审查(规范然后质量)= 高质量,快速迭代

---

#### 🔄 完整流程

每个任务循环:
1. **派发实现者子代理** - 实现功能
2. **实现者问问题?** - 回答并重新派发
3. **实现者实现、测试、提交、自审查**
4. **派发规范审查者子代理** - 检查是否符合规范
5. **规范审查通过?** - 否:修复并重新审查;是:继续
6. **派发代码质量审查者子代理** - 检查代码质量
7. **代码质量通过?** - 否:修复并重新审查;是:任务完成

所有任务完成后:
1. **派发最终代码审查者** - 审查整个实现
2. **使用 finishing-a-development-branch** - 完成分支

---

#### 🎯 模型选择

使用能处理每个角色的最弱模型以节省成本并提高速度。

- **机械实现任务**(独立函数、清晰规范、1-2 个文件):使用快速、便宜的模型
- **集成和判断任务**(多文件协调、模式匹配、调试):使用标准模型
- **架构、设计和审查任务**:使用最可用的 capable 模型

---

#### 📊 子代理状态处理

**DONE**:继续进行规范合规性审查

**DONE_WITH_CONCERNS**:实现者完成了工作但标记了疑虑。在继续之前阅读疑虑。

**NEEDS_CONTEXT**:实现者需要未提供的信息。提供缺失的上下文并重新派发

**BLOCKED**:实现者无法完成任务。评估阻塞性:
1. 如果是上下文问题,提供更多上下文并使用相同模型重新派发
2. 如果任务需要更多推理,使用更 capable 模型重新派发
3. 如果任务太大,将其分解为更小的部分
4. 如果计划本身错误,升级到人类

---

### 6️⃣ systematic-debugging(系统化调试)

**技能名称:** `systematic-debugging`  
**描述:** 在遇到任何 bug、测试失败或意外行为时,在提出修复之前使用

---

#### 📋 概述

随机修复浪费时间并创建新的 bug。快速补丁掩盖潜在问题。

**核心原则:** 在尝试修复之前始终找到根本原因。症状修复就是失败。

**违反此流程的文字就是违反调试的精神。**

---

#### 🚪 铁律

没有根本原因调查就没有修复


如果你没有完成第 1 阶段,你就不能提出修复。

---

#### 🔄 四个阶段

**阶段 1:根本原因调查**
1. 仔细阅读错误消息
2. 一致地重现
3. 检查最近的更改
4. 在多组件系统中收集证据

**阶段 2:模式分析**
1. 找到工作示例
2. 与参考比较
3. 识别差异
4. 理解依赖关系

**阶段 3:假设和测试**
1. 形成单个假设
2. 最小化测试
3. 在继续之前验证
4. 当你不知道时说"我不理解 X"

**阶段 4:实现**
1. 创建失败的测试用例
2. 实现单个修复
3. 验证修复
4. 如果修复不起作用且已尝试 3+ 次:质疑架构

---

#### ⚠️ 红旗警示

- "现在快速修复,稍后调查"
- "试试改变 X 看看是否有效"
- "添加多个更改,运行测试"
- "跳过测试,我会手动验证"
- "这可能是 X,让我修复那个"
- "我不完全理解但这可能有效"

**所有这些都意味着:停止。返回阶段 1。**

---

### 7️⃣ requesting-code-review(请求代码审查)

**技能名称:** `requesting-code-review`  
**描述:** 在完成任务、实现主要功能或合并之前使用,以验证工作满足需求

---

#### 📋 概述

派发 superpowers:code-reviewer 子代理在问题级联之前捕获它们。审查者获得精确制作的上下文进行评估  从不是你会话的历史。这使审查者专注于工作产品,而不是你的思维过程,并为持续工作保留你自己的上下文。

**核心原则:尽早审查,经常审查。**

---

#### 🔄 何时请求审查

**强制要求:**
- 子代理驱动开发中的每个任务后
- 完成主要功能后
- 合并到主分支之前

**可选但有价值:**
- 卡住时(新鲜视角)
- 重构之前(基准检查)
- 修复复杂 bug 

---

#### 📋 如何请求

1. **获取 git SHA**
```bash
BASE_SHA=$(git rev-parse HEAD~1)  # 或 origin/main
HEAD_SHA=$(git rev-parse HEAD)
  1. 派发 code-reviewer 子代理

    • WHAT_WAS_IMPLEMENTED:你刚刚构建了什么
    • PLAN_OR_REQUIREMENTS:它应该做什么
    • BASE_SHA:开始提交
    • HEAD_SHA:结束提交
    • DESCRIPTION:简要摘要
  2. 对反馈采取行动

    • 立即修复关键问题
    • 在继续之前修复重要问题
    • 稍后记录次要问题
    • 如果审查者错误则推回(带推理)

8️⃣ using-git-worktrees(使用 Git 工作树)

技能名称: using-git-worktrees
描述: 在开始需要与当前工作空间隔离的功能工作时,或在执行实施计划之前使用 — 创建具有智能目录选择和安全验证的隔离 git worktrees


📋 概述

Git worktrees 创建共享同一存储库的隔离工作空间,允许在不切换的情况下同时在多个分支上工作。

核心原则: 系统化目录选择 + 安全验证 = 可靠隔离。


🔄 目录选择过程

按优先级顺序:

  1. 检查现有目录

    • .worktrees/(首选,隐藏)
    • worktrees/(替代)
    • 如果两者都存在,.worktrees/ 获胜
  2. 检查 CLAUDE.md

    • 如果指定了偏好,使用它而不问
  3. 询问用户

    • 如果没有目录存在且没有 CLAUDE.md 偏好:
      • .worktrees/(项目本地,隐藏)
      • ~/.config/superpowers/worktrees/<project-name>/(全局位置)

✅ 安全验证

对于项目本地目录(.worktrees 或 worktrees): 必须在创建 worktree 之前验证目录被忽略:

git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null

如果未被忽略:

  1. 将适当行添加到 .gitignore
  2. 提交更改
  3. 继续工作树创建

为什么关键: 防止意外将工作树内容提交到存储库。


🔄 创建步骤
  1. 检测项目名称
project=$(basename "$(git rev-parse --show-toplevel)")
  1. 创建 worktree
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
  1. 运行项目设置 自动检测并运行适当设置:
  • Node.js:npm install
  • Python:pip install -r requirements.txt
  • Rust:cargo build
  • Go:go mod download
  1. 验证清洁基线 运行测试以确保 worktree 以清洁状态开始

  2. 报告位置

Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>

🔄 RED-GREEN-REFACTOR 循环
graph LR
    A[RED<br/>编写失败的测试] --> B{验证失败<br/>正确}
    B -->|是| C[GREEN<br/>最小代码]
    B -->|否| A
    C --> D{验证通过<br/>全部绿色}
    D -->|是| E[REFACTOR<br/>清理]
    D -->|否| C
    E --> D
    D --> F[下一个]
    F --> A
RED - 编写失败的测试

编写一个最小的测试展示应该发生什么。

要求:

  • 一种行为
  • 清晰的名称
  • 真实代码(除非不可避免否则没有模拟)
验证 RED - 看着它失败

强制要求。从不跳过。

npm test path/to/test.test.ts

确认:

  • 测试失败(不是错误)
  • 失败消息是预期的
  • 失败因为功能缺失(不是拼写错误)

GREEN - 最小代码

编写最简单的代码通过测试。

不要添加功能、重构其他代码或超越测试"改进"。

验证 GREEN - 看着它通过

强制要求。

npm test path/to/test.test.ts

确认:

  • 测试通过
  • 其他测试仍然通过
  • 输出 pristine(没有错误、警告)

REFACTOR - 清理

绿色之后:

  • 移除重复
  • 改进名称
  • 提取辅助函数

保持测试绿色。不要添加行为。


🧪 良好测试
质量良好不好
最小一件事。名称中有"and"?拆分它。test('validates email and domain and whitespace')
清晰名称描述行为test('test1')
显示意图展示所需 API掩盖代码应该做什么

❌ 红旗 - 停止并重新开始
  • 测试之前的代码
  • 实现后的测试
  • 测试立即通过
  • 无法解释为什么测试失败
  • 测试"稍后"添加
  • 合理化"就这一次"
  • "我已经手动测试过它"
  • "测试后达到相同目标"
  • "这是关于精神不是仪式"
  • "保留为参考"或"适应现有代码"
  • "已经花了 X 小时,删除是浪费"
  • "TDD 是教条的,我是务实的"
  • "这是不同的因为..."

所有这些都意味着:删除代码。用 TDD 重新开始。


📊 技能触发时机总结

场景应该触发的技能说明
用户说"帮我规划这个项目"brainstorming需要澄清需求和设计
用户说"帮我实现这个功能"brainstorming → writing-plans先设计,再规划
开始写代码时test-driven-development必须 TDD 循环
开始实施前using-git-worktrees创建隔离工作空间
有实施计划且任务独立subagent-driven-development子代理执行 + 两阶段审查
发现 bugsystematic-debugging → test-driven-development先调试,再修复
完成任务/功能/合并前requesting-code-review派发代码审查者
收到代码审查反馈receiving-code-review回应审查意见
多个任务需要并行执行dispatching-parallel-agents派发并行子代理
任务全部完成finishing-a-development-branch完成分支管理

💡 核心收获

1. 技能调用的严格性

  • 1% 规则:如果技能可能适用,必须调用
  • 优先级明确:用户指令 > Superpowers 技能 > 默认系统
  • 流程技能优先:先确定如何处理,再确定如何实施

2. brainstorming 的严谨性

  • 硬门规则:设计批准前不能写任何代码
  • 逐步验证:每部分设计都需要用户批准
  • 规范审查循环:派发子代理审查设计文档

3. writing-plans 的详细性

  • 小任务粒度:每个步骤 2-5 分钟
  • 完整信息:包括文件路径、代码、命令、预期输出
  • 审查循环:派发子代理审查实施计划

4. TDD 的强制性

  • 铁律:没有失败测试没有生产代码
  • 完整循环:RED → 验证 RED → GREEN → 验证 GREEN → REFACTOR
  • 无例外:违反规则 = 删除代码重新开始

🎯 Day 4 总结

✅ 完成情况

  • 阅读 using-superpowers/SKILL.md
  • 阅读 brainstorming/SKILL.md
  • 阅读 writing-plans/SKILL.md
  • 阅读 test-driven-development/SKILL.md
  • 理解技能自动触发机制
  • 理解技能优先级

🌟 核心发现

  1. 技能调用的严格性 — 1% 规则确保不会遗漏适用的技能
  2. 设计优先原则 — brainstorming 的硬门规则确保先设计再实现
  3. 计划详细性 — writing-plans 要求 2-5 分钟的小任务粒度
  4. TDD 强制性 — 铁律确保测试先行开发

🎓 学到的经验

  • Superpowers 的工作流程非常严谨和系统化
  • 每个技能都有明确的触发条件和工作流程
  • 用户指令始终具有最高优先级
  • 技能之间有清晰的优先级和协作关系

🚀 准备进入 Day 5

明天学习重点:

  • 继续阅读核心技能源码
  • 理解更多技能的工作流程
  • 深入理解技能的激活条件

记录时间:2026-03-22 状态:Day 4 完成 ✅