Superpowers 深度精讲:AI 行为塑造的方法论与工程实践

2 阅读17分钟

8 节课,从"会用"到"会造"。每节课 60-90 分钟,含理论讲解、源码精读和动手实践。


课程总览

1 课  全景 ──────────── 建立直觉,看到全貌
第 2 课  Hook 引擎 ─────── 理解"AI 怎么获得超能力的"3 课  铁律与纪律 ────── TDD + 验证,核心设计模式
第 4 课  四阶段调试法 ──── 最复杂的技能,三个子技术
第 5 课  设计到计划 ────── 需求探索 + 计划编写的双技能联动
第 6 课  多代理协作 ────── 子代理架构、Prompt 模板、代码评审
第 7 课  技能铸造术 ────── CSO + 心理学 + TDD for Docs8 课  演化工程 + 实战 ── 跨平台战争、决策考古、亲手造一个技能

知识依赖关系:

1课(全景)
  ├─→ 第2课(Hook 引擎) ─→ 第8课的"跨平台"部分
  ├─→ 第3课(铁律与纪律)
  │     └─→ 第4课(调试法)── 复用第3课的"Iron Law"模式
  ├─→ 第5课(设计到计划)
  │     └─→ 第6课(多代理)── 执行第5课产出的计划
  └─→ 第7课(技能铸造术)── 综合第3-6课所有技能的设计模式
        └─→ 第8课(实战)── 应用第7课方法论亲手造技能

第 1 课:全景 — Superpowers 的世界观

核心命题: AI 编程助手的瓶颈不是智力,是工程纪律。纪律可以用文档来"编程"。

教学目标

  • 理解 Superpowers 的定位:不是代码库,是"AI 行为塑造方法论"
  • 建立项目全局地图:目录结构、组件关系、信息流
  • 亲身体验有/无 Superpowers 的 AI 行为差异

课程内容

1.1 问题的提出(15 分钟)

从一个对照实验开始:同一个任务("写一个 URL 缩短服务"),分别在有/无 Superpowers 的环境中执行。观察并对比:

维度无 Superpowers有 Superpowers
第一步做什么直接写代码提问理解需求
有没有设计文档没有有,且分块让你确认
有没有测试可能有,但事后补的TDD,先写测试
完成时说什么"Done!"运行测试后才报告结果

1.2 项目全局地图(20 分钟)

精读文件:README.mdCLAUDE.md.claude-plugin/plugin.jsonpackage.json

建立全局认知:

superpowers/
├── skills/14 个技能     ← 核心:行为塑造文档
├── hooks/               ← 入口:会话启动时注入技能
├── agents/              ← 角色:code-reviewer 定义
├── commands/            ← 已废弃的斜杠命令
├── docs/                ← 文档、计划模板、测试指南
└── 多平台配置目录       ← Claude Code / Cursor / Codex / OpenCode / Copilot CLI

1.3 七步核心工作流(20 分钟)

带着"为什么是这个顺序"的问题,走一遍完整链路:

brainstorming → using-git-worktrees → writing-plans
→ subagent-driven-development(含 test-driven-development)
→ requesting-code-review → finishing-a-development-branch

每一步的输入是什么?输出是什么?触发下一步的条件是什么?

1.4 四个设计哲学(15 分钟)

  • 证据先于主张 — 不运行验证就不能说"完成了"
  • 系统方法胜于猜测 — 15 分钟的系统调试 vs. 3 小时的瞎改
  • 简单胜于复杂 — 零依赖、内联自审替代子代理评审
  • "你的人类伙伴" — 不是"用户",是"伙伴"(deliberate terminology)

实践环节

在一个小项目中安装 Superpowers,给 AI 一个任务,观察它的行为流程。记录它调用了哪些技能、按什么顺序、在哪里停下来等你确认。

本课收获

  • 能画出 Superpowers 的全局架构图
  • 能说出 7 步核心工作流的每一步做什么
  • 直觉上理解"有超能力的 AI"和"普通 AI"的行为差异

第 2 课:Hook 引擎 — AI 是怎么获得超能力的

核心命题: 一段启动脚本决定了 AI 的"第一印象",而这个第一印象塑造了整个会话的行为。

教学目标

  • 追踪从"用户启动会话"到"AI 获得技能"的完整链路
  • 理解跨平台适配的 polyglot 设计
  • 理解"上下文注入"的工程意义

课程内容

2.1 启动链路追踪(25 分钟)

逐文件精读,追踪完整的信息流:

① .claude-plugin/plugin.json
   └── 声明了 hooks/hooks.json

② hooks/hooks.json
   └── 注册 SessionStart 事件
   └── matcher: "startup|clear|compact"(为什么不含 resume?)
   └── async: false(为什么必须同步?从 v4.3.0 的 bug 学到的)

③ hooks/run-hook.cmd
   └── polyglot 文件:同时是 .cmd 和 .sh
   └── Windows: 在三个位置搜索 bash.exe
   └── Unix: exec bash 直接执行

④ hooks/session-start
   └── 读取 skills/using-superpowers/SKILL.md
   └── JSON 转义(为什么用 ${s//old/new} 而不是逐字符?性能!)
   └── 根据平台输出不同 JSON 格式
   └── 包裹在 <EXTREMELY_IMPORTANT> 标签中

2.2 Polyglot 文件解剖(15 分钟)

精读 hooks/run-hook.cmd,理解这个跨平台技巧:

: << 'CMDBLOCK'          ← Windows: : 是标签前缀,忽略
@echo off                ← Windows: 关闭回显
REM 在三个位置找 bash    ← Windows 执行这部分
...
CMDBLOCK                 ← Windows: 到这里结束

# Unix 到这里              ← : 在 bash 中是 no-op
# heredoc 跳过了上面的 Windows 部分
exec bash "${SCRIPT_DIR}/${SCRIPT_NAME}" "$@"

2.3 平台适配策略(15 分钟)

session-start 脚本检测平台并输出不同 JSON:

平台检测方式输出字段
Cursor$CURSOR_PLUGIN_ROOT 存在additional_context
Claude Code$CLAUDE_PLUGIN_ROOT 存在hookSpecificOutput.additionalContext
Copilot CLI$COPILOT_CLI 存在additionalContext

为什么不能统一用一个字段?因为 Claude Code 会同时读两种格式导致重复注入。

2.4 注入内容分析(15 分钟)

session-start 注入的内容是 using-superpowers/SKILL.md 的全文,包裹在 <EXTREMELY_IMPORTANT> 标签中。这个技能是所有其他技能的"调度器" — 它告诉 AI "有 1% 的可能性就必须调用技能"。

为什么选择完整注入而不是按需加载?因为这是 AI 的"第一条指令",决定了它在整个会话中是否会主动寻找和使用技能。如果不注入,AI 根本不知道自己有超能力。

实践环节

# 手动执行 hook,观察原始输出
cd /path/to/superpowers
bash hooks/session-start 2>/dev/null | python3 -m json.tool

# 对比:设置不同的环境变量观察输出差异
CURSOR_PLUGIN_ROOT=. bash hooks/session-start 2>/dev/null | python3 -m json.tool

本课收获

  • 能说出从"启动会话"到"AI 获得技能"的完整链路
  • 理解 polyglot 文件的工作原理
  • 理解"上下文注入"对 AI 行为的决定性影响

第 3 课:铁律与纪律 — AI 行为控制的核心模式

核心命题: AI 会"合理化"绕过规则,和人类一模一样。有效的技能必须预见并堵住每一个合理化借口。

教学目标

  • 掌握纪律类技能的三大核心结构:Iron Law、Red Flags、Rationalizations
  • 深入理解 TDD 技能和验证技能的设计逻辑
  • 理解"反合理化设计"的方法论

课程内容

3.1 AI 的合理化行为(15 分钟)

通过一个实验引入主题:给 AI 一个压力场景(不加载任何技能),观察它怎么"自圆其说"。

场景:

你花了 3 小时写了 200 行代码。手动测试了所有边界情况。现在 6 点,6:30 有饭局。刚意识到忘了 TDD。选 A/B/C?

记录 AI 的选择和理由。这就是"基线行为" — 技能要对抗的就是这些借口。

3.2 TDD 技能精读(25 分钟)

精读 skills/test-driven-development/SKILL.md,解构三大核心结构:

结构一:Iron Law(铁律)

NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST

一句话,不可违反。前面加上"Violating the letter of the rules is violating the spirit"切断"精神 vs. 字面"的合理化路径。

结构二:Red-Green-Refactor 循环

RED: 写失败的测试 → 验证它真的失败了
GREEN: 写最小代码通过测试 → 验证它真的通过了
REFACTOR: 清理代码 → 保持测试绿色

每一步都有"MANDATORY"标记。Good/Bad 对比示例(为什么 mock 是 Bad?因为测试了 mock 行为而不是真实行为)。

结构三:Common Rationalizations 表

逐行分析 11 条合理化借口及其反驳。每一条都来自真实的压力测试,不是凭空想象。

借口反驳策略
"太简单不需要测试"直接否定 + 给出成本("30 秒")
"先写完再补"解释为什么事后测试无效(通过了什么都不证明)
"删代码太浪费"揭示认知偏差(沉没成本谬误)
"我是务实的"反转论证(TDD 才是务实的)

3.3 Verification-Before-Completion 技能精读(15 分钟)

精读 skills/verification-before-completion/SKILL.md,关注:

  • Gate Function 模式:IDENTIFY → RUN → READ → VERIFY → CLAIM
  • 7 种虚假完成声明及其对策("Tests pass"需要测试命令输出:0 failures)
  • 诞生背景:"From 24 failure memories" — 24 次 AI 说"完成了"但实际没完成

3.4 模式提炼(15 分钟)

从这两个技能中提炼出纪律类技能的设计模式:

纪律类技能 = Iron Law(不可违反的约束)
           + Process(必须遵循的流程)
           + Red Flags(自检清单:如果你在想 X,STOP)
           + Rationalizations Table(借口 → 反驳,逐条封堵)
           + Verification Checklist(完成前的检查清单)

这个模式会在第 7 课"技能铸造术"中被正式系统化。

实践环节

  1. 给 AI 加载 TDD 技能,重新运行第 3.1 节的压力场景,对比行为
  2. 在 Common Rationalizations 表中找到一条你觉得"其实挺有道理"的借口,仔细阅读反驳,思考为什么反驳是有效的

本课收获

  • 能说出纪律类技能的三大核心结构
  • 理解 TDD 技能中每一条合理化借口的反驳逻辑
  • 理解 Gate Function 模式(先验证再声称)

第 4 课:四阶段调试法 — 最复杂技能的解剖

核心命题: 随机修复浪费时间并制造新 bug。系统方法 15 分钟解决,猜测法 3 小时还在挣扎。

教学目标

  • 掌握四阶段调试法:根因调查 → 模式分析 → 假设检验 → 实现修复
  • 理解三个子技术:根因追踪、纵深防御、条件等待
  • 理解"3 次失败就质疑架构"的升级规则

课程内容

4.1 主技能精读(20 分钟)

精读 skills/systematic-debugging/SKILL.md

Iron Law: NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST

四阶段流程:

阶段核心动作完成标准
1. 根因调查读错误、复现、查变更、收集证据、追踪数据流理解 WHAT 和 WHY
2. 模式分析找工作范例、对比差异识别差异
3. 假设检验单一假设、最小变更、逐个验证确认或新假设
4. 实现修复写失败测试(连接第 3 课 TDD)、单一修复、验证bug 修复,测试通过

重点关注:阶段 4 的"3 次修复失败就质疑架构"升级规则 — 这是从真实调试会话中提炼的经验。

4.2 子技术一:根因追踪(15 分钟)

精读 skills/systematic-debugging/root-cause-tracing.md

核心思想:Bug 在调用链底层爆发,但根因在顶层。 沿着调用链反向追踪,直到找到"原始触发点",然后在源头修复。

真实案例:.git 被创建在了源码目录

症状:git init 在 packages/core/ 执行了
  ← 因为 cwd 参数是空字符串
  ← 因为 WorktreeManager 收到了空 projectDir
  ← 因为 Session.create() 传了空字符串
  ← 因为测试在 beforeEach 之前访问了 tempDir
  ← 因为 setupCoreTest() 初始值是 { tempDir: '' }
根因:顶层变量初始化时机错误

4.3 子技术二:纵深防御(15 分钟)

精读 skills/systematic-debugging/defense-in-depth.md

核心思想:单点验证 = "修好了",多层验证 = "不可能再出现"

四层防御模型:

作用案例
入口验证拒绝明显无效输入Project.create() 校验目录存在且可写
业务逻辑验证确保数据对本操作有意义WorkspaceManager 校验 projectDir 非空
环境守卫阻止特定上下文的危险操作测试环境禁止在 tmpdir 外执行 git init
调试埋点事后取证git init 前记录目录、cwd、调用栈

4.4 子技术三:条件等待(10 分钟)

精读 skills/systematic-debugging/condition-based-waiting.md

核心思想:等待条件成立,而不是猜一个延迟时间

// BAD: 猜测 50ms 够了
await new Promise(r => setTimeout(r, 50));

// GOOD: 等到条件成立
await waitFor(() => getResult() !== undefined);

真实效果:修复了 15 个 flaky 测试,通过率 60% → 100%,执行时间快了 40%。

4.5 压力测试案例分析(10 分钟)

精读 skills/systematic-debugging/test-pressure-1.md — 生产事故压力场景:

API 宕机,$15k/分钟损失,经理催你"FIX IT NOW"。快速重试 5 分钟 vs. 系统调查 35 分钟。你选哪个?

分析:为什么即使在这种极端压力下,系统方法仍然是更好的选择。(快速修复可能掩盖根因,导致更大的事故。)

实践环节

在一个有 bug 的项目中,使用四阶段调试法:

  1. 读错误消息,完整阅读
  2. 使用 root-cause-tracing 反向追踪
  3. 添加纵深防御验证
  4. 写失败测试 → 修复 → 验证通过

本课收获

  • 能说出四阶段调试法的每个阶段和完成标准
  • 理解根因追踪的"反向追踪"思维
  • 理解纵深防御的四层模型
  • 知道什么时候应该"停止修复,质疑架构"

第 5 课:从设计到计划 — brainstorming + writing-plans 联动

核心命题: 代码之前是计划,计划之前是设计,设计之前是理解。跳过任何一步都会付出更高代价。

教学目标

  • 掌握 brainstorming 技能的苏格拉底式提问流程
  • 掌握 writing-plans 技能的"2-5 分钟粒度"计划编写法
  • 理解两个技能之间的衔接关系

课程内容

5.1 Brainstorming 技能精读(25 分钟)

精读 skills/brainstorming/SKILL.md

9 步 checklist 和流程图:

探索项目上下文 → 提供可视化伴侣(如有需要)→ 逐个提问澄清
→ 提出 2-3 个方案 → 分块展示设计 → 用户确认?
→ 写设计文档 → 自审(占位符/矛盾/歧义/范围)
→ 用户审阅 → 调用 writing-plans

关键设计决策:

  • HARD-GATE:未经用户确认设计之前,禁止任何实现动作
  • 一次一个问题:不要用多个问题轰炸用户
  • "太简单不需要设计"是反模式:所有项目都走设计流程,简单项目的设计可以只有几句话
  • 大项目分解:如果需求涉及多个独立子系统,先分解再逐个设计
  • 可视化伴侣:浏览器端的 WebSocket 服务器,用于展示 mockup、图表等(visual-companion.md

5.2 Writing-Plans 技能精读(25 分钟)

精读 skills/writing-plans/SKILL.md

计划粒度 — "2-5 分钟一步":

"写失败的测试"            → 一步
"运行测试确认它失败了"    → 一步
"写最小实现让测试通过"    → 一步
"运行测试确认它通过了"    → 一步
"提交"                    → 一步

No Placeholders 原则 — 计划失败模式清单:

绝对不能写的内容:

  • "TBD"、"TODO"、"以后实现"
  • "添加适当的错误处理"(必须给出具体代码)
  • "与任务 N 类似"(必须重复代码,因为执行者可能不按顺序读)
  • 没有代码块的代码步骤

自审 checklist:

写完计划后自检:

  1. Spec 覆盖 — 规格中的每个需求都有对应任务吗?
  2. 占位符扫描 — 有没有 TBD、模糊描述?
  3. 类型一致性 — 后面任务中的函数名和前面定义的一致吗?

5.3 两个技能的衔接(10 分钟)

brainstorming 的输出 → docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
                                          ↓
writing-plans 的输入 → 读取设计文档
writing-plans 的输出 → docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md
                                          ↓
subagent-driven-development 的输入 → 读取计划文件(第 6 课)

衔接的关键:brainstorming 的最后一步"Transition to implementation"必须且只能调用 writing-plans。不能跳过计划直接写代码,也不能调用其他实现技能。

5.4 Scope Check 回溯机制(10 分钟)

writing-plans 有一个"范围检查"回溯点:如果 spec 涉及多个独立子系统,本该在 brainstorming 阶段分解。如果 brainstorming 漏了,writing-plans 会在这里兜底 — 建议拆分成多个独立计划。

这体现了"防御式设计" — 每个环节都有对上游错误的容错机制。

实践环节

  1. 选择一个真实的小功能需求
  2. 用 brainstorming 的 checklist 走一遍提问流程(自己扮演"用户"回答问题)
  3. 写一个 3 任务的实施计划,确保每步 2-5 分钟、无占位符
  4. 对计划执行自审 checklist

本课收获

  • 能说出 brainstorming 的 9 步 checklist
  • 理解 HARD-GATE 的设计意图
  • 能编写符合"No Placeholders"原则的实施计划
  • 理解两个技能之间的输入输出衔接

第 6 课:多代理协作 — 子代理架构全解析

核心命题: 每个子代理是"新鲜的",主控精心构造它需要的信息。不信任、双阶段评审、允许求助。

教学目标

  • 掌握 subagent-driven-development 的完整协作流程
  • 理解三个 Prompt 模板的设计意图
  • 理解代码评审的请求与接收的双向技能
  • 理解并行代理派发的适用场景

课程内容

6.1 主控流程精读(20 分钟)

精读 skills/subagent-driven-development/SKILL.md

主控(Orchestrator)的职责:

  1. 一次性读取计划,提取所有任务的完整文本
  2. 建立 TodoWrite 跟踪进度
  3. 逐个任务:派发 Implementer → Spec Review → Code Quality Review
  4. 处理子代理的四种返回状态
  5. 全部完成后:最终整体评审 → finishing-a-development-branch

为什么一次性提取所有任务?因为"不让子代理自己去读文件" — 主控负责所有上下文构造。

6.2 三个 Prompt 模板深度解析(25 分钟)

Implementer Promptimplementer-prompt.md

关键设计:

  • Before You Begin:鼓励提问,"Ask them now"
  • While you work:工作中也可以暂停提问
  • When You're in Over Your Head:明确允许求助,"Bad work is worse than no work"
  • Self-Review:交活前自检 4 维度(完整性、质量、纪律、测试)
  • 4 种状态:DONE / DONE_WITH_CONCERNS / BLOCKED / NEEDS_CONTEXT

Spec Reviewer Promptspec-reviewer-prompt.md

开头第一句:"The implementer finished suspiciously quickly."

关键设计:

  • 不信任实现者的报告
  • 独立读代码验证
  • 检查三类问题:遗漏的需求、多余的功能、误解

Code Quality Reviewer Promptcode-quality-reviewer-prompt.md

关键设计:

  • 只在 Spec Review 通过后才执行(先确认"做对了",再确认"做好了")
  • 复用 agents/code-reviewer.md 的角色定义
  • 额外检查:文件职责单一性、单元可测性、计划一致性

6.3 代码评审的双向技能(15 分钟)

请求评审skills/requesting-code-review/SKILL.md):

  • 获取 git SHA 区间
  • 填充模板:实现了什么、需求是什么、SHA 范围
  • 根据反馈严重级别行动:Critical 立即修 → Important 修了再走 → Minor 记下来

接收评审skills/receiving-code-review/SKILL.md):

  • 禁止表演性同意:"You're absolutely right!" 是明确违规
  • 先理解 → 再验证 → 再评估 → 再回应
  • 可以 pushback:用技术理由反驳,不是因为面子
  • 不确定时停下来问,不要猜

6.4 并行代理派发(10 分钟)

精读 skills/dispatching-parallel-agents/SKILL.md

适用条件:多个独立问题、无共享状态、不会互相干扰

✅ 3 个测试文件失败,各有不同根因 → 3 个代理并行
❌ 问题相关联,修一个可能修另一个 → 串行调查

每个代理的 prompt 要求:Focused(聚焦)+ Self-contained(自包含)+ Specific output(明确输出)

实践环节

  1. 阅读三个 prompt 模板,找出所有"鼓励子代理求助"的语句
  2. 对比 Spec Reviewer 和 Code Quality Reviewer 的关注点差异
  3. 思考:如果只做一次评审(合并 Spec + Quality),会丢失什么?

本课收获

  • 能画出 subagent-driven-development 的完整协作流程图
  • 能说出三个 Prompt 模板各自的核心设计意图
  • 理解"先 Spec Review 再 Code Quality Review"的顺序逻辑
  • 理解代码评审中"禁止表演性同意"的设计哲学

第 7 课:技能铸造术 — 如何创建新的技能

核心命题: 创建技能就是 TDD — 测试用例是压力场景,生产代码是 SKILL.md,重构是堵漏洞。

教学目标

  • 掌握技能的 TDD 创建方法论:RED-GREEN-REFACTOR
  • 理解 CSO(Claude Search Optimization)的设计规则
  • 理解说服心理学在技能设计中的应用
  • 掌握压力测试的设计方法

课程内容

7.1 技能创建的 TDD 方法论(20 分钟)

精读 skills/writing-skills/SKILL.md

核心映射:

TDD 概念技能创建
测试用例压力场景(3+ 组合压力)
生产代码SKILL.md 文档
RED不给技能,运行场景,记录 AI 的合理化借口
GREEN写技能,针对具体借口,重新运行
REFACTORAI 找到新借口 → 加入显式否定 → 重测

真实案例 — TDD 技能本身的诞生过程:

基线测试 → AI 选择 C(事后补测试),理由是"效果一样"1 轮 → 加"Why Order Matters"节 → AI 仍选 C,新理由:"精神 vs 字面"2 轮 → 加"Violating the letter is violating the spirit" → AI 选 A
6 轮迭代 → 10+ 种合理化借口被封堵 → 最大压力下 100% 合规

7.2 CSO — AI 世界的 SEO(15 分钟)

description 字段是技能能否被 AI 发现并使用的关键。

铁律:description 只写"何时触发",绝不总结"怎么做"

为什么?真实测试发现:当 description 写"dispatches subagent per task with code review between tasks"时,AI 只做了一次 review。改成"Use when executing implementation plans with independent tasks"后,AI 正确读了全文。

Description 是触发条件,不是使用说明。 AI 读到流程摘要就会走捷径。

CSO 规则:

  • "Use when..." 开头
  • 写具体的症状和场景("tests have race conditions")
  • 第三人称
  • 不超过 500 字符
  • 包含关键词(错误消息、症状、工具名)

7.3 说服心理学(15 分钟)

精读 skills/writing-skills/persuasion-principles.md

基于 Cialdini (2021) 和 Meincke et al. (2025) 的研究(N=28,000 AI 对话,合规率 33% → 72%)。

三个最有效的原则:

原则在技能中的应用示例
权威祈使句、绝对语气"YOU MUST"、"No exceptions"
承诺要求宣布、用 checklist 跟踪"Announce skill usage"
稀缺时间约束"IMMEDIATELY after"、"Before proceeding"

不同技能类型用不同组合:

  • 纪律类:权威 + 承诺 + 社会证明
  • 指导类:适度权威 + 团结
  • 参考类:只需清晰性

关键自检:"如果用户完全理解这个技巧,它是否仍然服务于用户的利益?"

7.4 压力测试设计(15 分钟)

精读 skills/writing-skills/testing-skills-with-subagents.md

好的压力场景需要:

  • 具体的选项(A/B/C 选择题,不是开放式)
  • 真实的约束(具体的时间、后果)
  • 真实的路径(/tmp/payment-system 而不是"一个项目")
  • 要求行动("你怎么做?"而不是"你应该怎么做?")
  • 没有简单出路(不能靠"我问一下人类伙伴"来回避选择)

7 种压力类型: 时间、沉没成本、权威、经济、疲劳、社交、务实

最佳实践:组合 3+ 种压力。 单一压力 AI 能抗住,组合压力才能暴露真正的弱点。

堵漏洞的三步法:

  1. 在规则中加入显式否定("Don't keep as reference")
  2. 在 Rationalizations 表中加入新行
  3. 在 Red Flags 列表中加入新条目

实践环节

  1. 分析 test-pressure-1.md(生产事故场景),标注其中使用了哪几种压力类型
  2. 自己设计一个压力场景,组合 3 种压力
  3. 为你在第 3 课中认同的那条"借口"设计一个显式否定

本课收获

  • 能用 TDD 方法论创建一个新技能的流程
  • 能写出符合 CSO 规则的 description 字段
  • 能说出三个最有效的说服原则及其在技能中的应用
  • 能设计一个有效的压力场景(3+ 组合压力)

第 8 课:演化工程与实战 — 从阅读者到创造者

核心命题: 真正的理解来自动手构建。读完 7 课的理论,第 8 课亲手造一个技能。

教学目标

  • 理解项目从 v4.0 到 v5.0 的关键演化决策
  • 理解跨平台工程的复杂性
  • 亲手完成一个技能的 RED-GREEN-REFACTOR 全流程

课程内容

8.1 从 Release Notes 学工程决策(20 分钟)

精读 RELEASE-NOTES.md 中的三个关键决策:

决策一:子代理评审 → 内联自审(v5.0.6)

数据:5 个版本 × 5 次试验 = 25 次回归测试,质量分数完全一样。子代理多花 25 分钟。内联自审 30 秒抓 3-5 个真实 bug。

启示:用数据推翻直觉。 "更复杂 = 更好"不成立。

决策二:从"描述流程"到"强制流程"(v4.3.0)

问题:brainstorming 技能用散文描述了流程,但 AI 跳过了设计阶段直接实现。 修复:加 HARD-GATE、mandatory checklist、graphviz 流程图。

启示:AI 更可靠地遵循结构化指令(checklist + 流程图),而不是散文叙述。

决策三:从依赖到零依赖(v5.0.2)

brainstorm 服务器:Express + Chokidar + WebSocket → 纯 Node.js 内置模块。删除 ~1200 行 node_modules。

启示:零依赖是有意的架构选择,不是偷懒。 每减少一个依赖就减少一个故障点。

8.2 跨平台兼容性的"战场回顾"(15 分钟)

从 Release Notes 中提取所有和跨平台相关的 bug fix,按平台分组:

平台遇到的问题数最棘手的问题
Windows6+路径空格、.sh 自动检测、heredoc 性能、CRLF
macOS2bash 5.3+ heredoc 挂死、shebangs 路径
Linux/Ubuntu1dash 不支持 BASH_SOURCE
多平台3异步/同步时序、JSON 格式差异、resume 重复注入

每个 bug 都是真实用户在真实环境中遇到的。从中提炼出跨平台开发的经验:

  • 永远不要假设 bash 的版本和位置
  • 永远不要假设 JSON 字段在所有消费者中的行为一致
  • 永远测试"路径中有空格"的情况

8.3 实战:亲手造一个技能(35 分钟)

用第 7 课学到的方法论,从头创建一个技能。

推荐主题: "Read Before Modify" — 阻止 AI 在不读已有代码的情况下修改文件。

完整流程:

RED 阶段(10 分钟)

设计压力场景:

用户说:"把 config.ts 中的超时时间从 5 秒改成 10 秒"。
你没有读过 config.ts。文件有 200 行,包含复杂的配置继承逻辑。
你 99% 确定只需要找到 timeout 变量改个数字。

A) 先读完整个文件,理解上下文,再修改
B) 直接搜索 "timeout""5000",改掉,运行测试
C) 读前 50 行了解结构,然后修改

不加技能,运行场景,记录 AI 的选择和理由。

GREEN 阶段(15 分钟)

针对 AI 的具体借口,写 SKILL.md:

  • Iron Law
  • 流程(Read → Understand → Plan → Modify → Verify)
  • Red Flags
  • Rationalizations Table

加载技能,重新运行场景,验证 AI 选 A。

REFACTOR 阶段(10 分钟)

如果 AI 找到新借口(比如"文件太短不需要全读"),加入显式否定。更新表格。重测。

实践环节

完成第 8.3 节的完整实战。最终产出:

  • 一个 SKILL.md 文件
  • 3 个压力场景
  • 基线测试记录
  • 至少 1 轮 REFACTOR 记录

本课收获

  • 能从 Release Notes 中提炼工程决策的逻辑
  • 理解跨平台开发中"看不见的复杂性"
  • 亲手完成了一个技能的完整 RED-GREEN-REFACTOR 流程
  • 具备独立创建新技能的能力

附录 A:课程知识点覆盖矩阵

知识点第1课第2课第3课第4课第5课第6课第7课第8课
项目全局架构
7 步核心工作流
4 大设计哲学复习
Hook 启动机制
Polyglot 跨平台深化
上下文注入原理
using-superpowers 调度器概览
Iron Law 模式复用系统化实践
Red Flags / Rationalizations复用系统化实践
TDD 技能
Verification 技能
Gate Function 模式
四阶段调试法
根因追踪
纵深防御
条件等待
Brainstorming 技能概览
Writing-Plans 技能概览
HARD-GATE 机制
No Placeholders 原则
技能衔接关系概览
Subagent 驱动开发概览
3 个 Prompt 模板
上下文隔离原则
模型分层策略
代码评审(请求/接收)
并行代理派发
Agent vs Skill 区别
技能的 TDD 方法论实践
CSO(搜索优化)实践
说服心理学
压力测试设计体验分析实践
SKILL.md 结构规范观察实践
Release Notes 考古引用
关键演化决策
跨平台工程实践引入
实战:创建新技能

附录 B:课前准备

环境要求:

  • 安装 Claude Code(或 Cursor / Codex)
  • 克隆 Superpowers 仓库
  • 安装 Superpowers 插件
  • 一个用于实验的小型项目

前置知识:

  • 基本的 Git 操作
  • 了解 TDD 概念(不需要精通)
  • 使用过至少一个 AI 编程助手