Superpowers:brainstorming技能详解

2 阅读8分钟

一、定位与作用

brainstorming 是 Superpowers 技能系统中的设计探索技能,专门负责将模糊的想法转化为清晰的设计方案。它的核心定位是:

"帮助通过自然的协作对话,将想法转化为完整的设计和规范文档"

一句话总结先想清楚,再动手做


二、核心铁律(HARD-GATE)

Markdown

<HARD-GATE>
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.
</HARD-GATE>

核心含义

  • 在呈现设计方案并获得用户批准之前,绝对不能

    • 调用任何实现技能
    • 写任何代码
    • 搭建任何项目结构
    • 采取任何实现行动

这条规则没有例外,无论项目看起来多么简单。


三、反模式:常见误区

Markdown

## Anti-Pattern: "This Is Too Simple To Need A Design"

误区想法:"这个太简单了,不需要设计"

反驳理由

  • 每个项目都要经过这个流程
  • 待办清单、单函数工具、配置变更——都需要
  • "简单"项目恰恰是最容易因为未经审视的假设而浪费工作的地方
  • 设计可以很短(真正简单的项目几句话就行),但必须呈现并获得批准

四、检查清单(9个步骤)

brainstorming 技能要求按顺序完成以下任务:

步骤任务关键要点
1️⃣探索项目上下文检查文件、文档、最近提交
2️⃣提供视觉伴侣(如需要)独立消息,不与其他内容混合
3️⃣提出澄清问题一次一个,理解目的/约束/成功标准
4️⃣提出 2-3 个方案包含权衡分析和推荐建议
5️⃣呈现设计方案按复杂度分节,每节后获取批准
6️⃣编写设计文档保存到指定路径并提交 git
7️⃣规范自检快速检查占位符、矛盾、歧义、范围
8️⃣用户审查规范让用户审查文件后再继续
9️⃣过渡到实现调用 writing-plans 技能

五、流程图详解

Plain Text

┌─────────────────────────┐
│ Explore project context │
│ (探索项目上下文)        │
└──────────┬──────────────┘
           │
           ▼
    ┌────────────────────┐
    │ Visual questions    │
    │ ahead?              │
    │ (有视觉问题吗?)    │
    └─────┬─────────┬─────┘
          │         │
        是│        否│
          ▼         ▼
┌─────────────────┐  ┌──────────────────────┐
│ Offer Visual     │  │ Ask clarifying       │
│ Companion        │  │ questions             │
│ (独立消息)      │  │ (澄清问题)            │
└────────┬────────┘  └──────────┬───────────┘
         │                      │
         └──────────────────────┘
                    │
                    ▼
         ┌─────────────────────┐
         │ Propose 2-3          │
         │ approaches           │
         │ (提出 2-3 个方案)    │
         └──────────┬──────────┘
                    │
                    ▼
         ┌─────────────────────┐
         │ Present design       │
         │ sections             │
         │ (呈现设计方案)      │
         └──────────┬──────────┘
                    │
                    ▼
         ┌─────────────────────┐
         │ User approves        │
         │ design?              │
         └──────┬─────────┬─────┘
                │         │
             是 │        否│
                ▼         ▼
        ┌──────────────┐  (回到上一节重新呈现)
        │ Write design │
        │ doc          │
        │ (编写设计文档)│
        └──────┬───────┘
               │
               ▼
        ┌──────────────┐
        │ Spec          │
        │ self-review   │
        │ (规范自检)    │
        └──────┬───────┘
               │
               ▼
        ┌──────────────┐
        │ User reviews │
        │ spec?        │
        └──────┬───────┘
               │
         ┌─────┴─────┐
         │           │
       是│          否│
         │           │
         ▼           ▼
┌────────────────┐  (修改文档,重新审查)
│ Invoke         │
│ writing-plans  │
│ skill          │
│ (调用写计划技能)│
└────────────────┘

六、每一步骤详细说明

步骤 1️⃣:探索项目上下文

任务:了解当前项目状态

具体操作

  • 检查项目文件结构
  • 查看相关文档
  • 查看最近的 git 提交记录
  • 理解项目的现有架构

为什么重要

  • 避免重复造轮子
  • 遵循现有模式
  • 发现可能影响工作的现有问题

步骤 2️⃣:提供视觉伴侣(如需要)

条件:如果即将讨论的内容涉及视觉问题

触发时机

  • 需要展示原型
  • 需要展示布局图
  • 需要展示架构图
  • 需要视觉对比

关键规则

  • 这个提议必须是独立的消息
  • 不能与其他内容(澄清问题、上下文摘要等)混合
  • 等待用户响应后再继续
  • 如果用户拒绝,用纯文本继续头脑风暴

示例提议

"我们正在讨论的部分,如果能在网络浏览器中展示,可能更容易解释。我可以整理原型、图表、对比和其他视觉内容。这个功能还很新,可能比较消耗资源。想试试吗?(需要打开本地 URL)"


步骤 3️⃣:提出澄清问题

核心原则:一次只问一个问题

问题类型

  • 多选题(优先使用):更容易回答
  • 开放式问题:也可以使用

聚焦内容

  • 目的(Purpose) :为什么要做这个?
  • 约束(Constraints) :有什么限制?
  • 成功标准(Success Criteria) :怎么才算成功?

重要提醒

  • 如果一个主题需要更多探索,把它分解成多个问题
  • 不要一次问多个问题,让用户逐一回答

步骤 4️⃣:提出 2-3 个方案

要求:提供 2-3 个不同的方案

每个方案需要包含

  • 方案描述
  • 优点
  • 缺点
  • 权衡分析

呈现方式

  • 对话式呈现
  • 明确推荐方案并解释原因
  • 先呈现推荐方案

步骤 5️⃣:呈现设计方案

原则:按复杂度调整篇幅

  • 简单的部分:几句话
  • 复杂的部分:200-300 字

需要覆盖的内容

  • 架构:整体结构
  • 组件:各个部分
  • 数据流:数据如何流动
  • 错误处理:如何处理错误
  • 测试:如何测试

迭代审批

  • 每呈现一节后,询问用户是否正确
  • 准备好在用户有疑问时返回澄清

步骤 6️⃣:编写设计文档

保存位置

Plain Text

docs/superpowers/specs/YYYY-MM-DD--design.md

例外:如果用户在 CLAUDE.md 中有偏好设置,按用户的设置来

提交要求

  • 提交设计文档到 git

步骤 7️⃣:规范自检

检查清单

检查项问题行动
占位符扫描有"TBD"、"TODO"、不完整部分或模糊需求吗?修复它们
内部一致性各部分之间有矛盾吗?架构和功能描述匹配吗?修复矛盾
范围检查这个范围是否足够单一实现计划,还是需要分解?必要时分解
歧义检查任何需求能被两种不同方式理解吗?选一个并明确

行动:发现问题就立即修复,不需要重新审查


步骤 8️⃣:用户审查规范

标准询问

"规范已编写并提交到 <path>。请审查一下,如果在开始编写实现计划之前有任何想修改的地方,告诉我。"

等待用户响应

  • 如果用户要求修改 → 修改后重新审查
  • 只有用户批准后才能继续

步骤 9️⃣:过渡到实现

唯一选择:调用 writing-plans 技能

重要提醒

  • 不要调用 frontend-design、mcp-builder 或任何其他实现技能
  • brainstorming 之后唯一的下一步是 writing-plans

七、关键设计原则

原则说明为什么重要
一次一个问题不要用多个问题淹没用户确保理解和专注
多选题优先比开放式问题更容易回答提高效率,减少歧义
YAGNI 原则从所有设计中删除不必要的功能保持简洁,专注核心
探索替代方案在确定之前总是提出 2-3 个方案确保选择最佳方案
增量验证呈现设计,获得批准后再继续避免返工
保持灵活当有问题时返回澄清确保真正理解

八、设计隔离与清晰原则

brainstorming 技能强调设计要模块化

设计原则

  • 将系统分解为更小的单元
  • 每个单元有单一、明确的目的
  • 通过明确定义的接口通信
  • 可以独立理解和测试

每个单元需要能回答

  1. 它做什么?
  2. 你如何使用它?
  3. 它依赖什么?

模块化检查

  • 别人能否不阅读内部实现就理解它的功能?
  • 你能否在不破坏依赖者的情况下修改内部实现?
  • 如果不能,边界需要调整。

为什么重要

  • 更小的、有边界的单元更容易处理
  • 你能更好地理解可以一次性掌握上下文范围的代码
  • 当文件变大时,往往是它做得太多的信号

九、与现有代码库协作

探索当前结构

  • 在提出更改之前,先探索当前结构
  • 遵循现有模式

处理现有代码问题

  • 如果现有代码有问题影响工作,将其作为设计的一部分
  • 就像一个好的开发者在工作时改进代码一样
  • 提出有针对性的改进

不要做的事情

  • 不要提出无关的重构
  • 保持专注于当前目标

十、Visual Companion 视觉伴侣

什么是视觉伴侣

  • 基于浏览器的原型展示工具
  • 可用于展示mockup、图表和视觉选项
  • 是一个工具,不是模式

使用决策

  • 每个问题独立决定是否使用浏览器
  • 测试:用户通过看比读更能理解吗?

适合视觉化

  • mockup、原型
  • 布局对比
  • 架构图
  • 并排视觉设计

适合文本

  • 需求问题
  • 概念选择
  • 权衡列表
  • A/B/C/D 文本选项
  • 范围决策

示例判断

  • "在这个语境中,'个性'意味着什么?" → 概念问题 → 用终端
  • "哪个向导布局更好?" → 视觉问题 → 用浏览器

十一、工作流程总结

Plain Text

想法输入
    ↓
探索项目上下文
    ↓
(可能有)视觉伴侣提议
    ↓
澄清问题(一次一个)
    ↓
提出 2-3 个方案 + 推荐
    ↓
用户批准设计方案
    ↓
编写设计文档
    ↓
规范自检(修复问题)
    ↓
用户审查并批准
    ↓
调用 writing-plans 技能 ← 终止状态

十二、与其他技能的关系

关系说明
前置于writing-plans(唯一下一步)
需要项目上下文探索能力
后续实现提供清晰的设计基础
不使用任何实现技能(frontend-design、mcp-builder 等)

十三、核心价值总结

brainstorming 技能的核心价值在于:

  1. 防止返工:通过提前设计,避免实现后发现方向错误
  2. 确保理解:通过提问确保真正理解需求
  3. 探索最佳方案:通过多方案比较,选择最优解
  4. 保持简洁:通过 YAGNI 原则,专注于核心功能
  5. 用户参与:通过审批流程,确保用户满意
  6. 文档化:留下可追溯的设计文档