关于 brainstorming
brainstorming 是将项目构想整理为经确认设计和规格说明的协作技能。它引导 Agent 收集背景、逐项澄清需求、比较方案、审核设计,并转入实施规划。
主要功能
- 01探索项目背景
- 02逐次提出澄清问题
- 03比较方案及其取舍
- 04提交设计供确认
- 05编写并审查设计规格
- 06转入实施规划
适用场景
- 01编码前澄清需求
- 02拆分大型项目
- 03确认架构与范围
- 04实施前审查设计
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ julianromli/ ai-skills --skill brainstorming安装后在 Claude Code 中输入/brainstorming确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
spec-document-reviewer-prompt.mdvisual-companion.mdscripts/frame-template.htmlhelper.jsserver.cjsstart-server.shstop-server.sh详细介绍
将想法构思成设计方案
通过自然的协作对话,帮助将想法打磨成完整的设计方案和规格说明。
先了解当前项目的背景,然后一次提出一个问题来完善想法。了解要构建的内容后,展示设计方案并征求用户批准。
在展示设计方案并获得用户批准之前,不要调用任何实现技能、编写代码、搭建任何项目脚手架或采取任何实现行动。无论项目看起来多么简单,这条规则都适用。反面模式:“这太简单了,不需要设计”
每个项目都必须遵循此流程。待办清单、单功能实用程序、配置更改——所有项目都一样。“简单”的项目最容易因未经审视的假设而造成大量无谓工作。设计方案可以很简短(对于确实简单的项目,几句话即可),但你必须展示方案并获得批准。
检查清单
你必须为以下各项分别创建任务,并按顺序完成:
- 探索项目背景 — 检查文件、文档和近期提交
- 提供视觉辅助材料(如果主题涉及视觉问题)— 必须单独发送消息,不能与澄清问题合并。请参阅下方的“视觉辅助材料”部分。
- 提出澄清问题 — 一次一个,了解目的、约束条件和成功标准
- 提出 2-3 种方案 — 说明各自的权衡,并给出推荐方案
- 展示设计方案 — 按复杂程度划分章节,逐节征求用户批准
- 编写设计文档 — 保存到
docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md并提交 - 自我审查规格说明 — 快速检查占位符、矛盾、歧义和范围(见下文)
- 用户审阅书面规格说明 — 请用户在继续之前审阅规格说明文件
- 过渡到实现阶段 — 调用 writing-plans 技能以创建实现计划
流程
digraph brainstorming {
"Explore project context" [shape=box];
"Visual questions ahead?" [shape=diamond];
"Offer Visual Companion\n(own message, no other content)" [shape=box];
"Ask clarifying questions" [shape=box];
"Propose 2-3 approaches" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Write design doc" [shape=box];
"Spec self-review\n(fix inline)" [shape=box];
"User reviews spec?" [shape=diamond];
"Invoke writing-plans skill" [shape=doublecircle];
"Explore project context" -> "Visual questions ahead?";
"Visual questions ahead?" -> "Offer Visual Companion\n(own message, no other content)" [label="yes"];
"Visual questions ahead?" -> "Ask clarifying questions" [label="no"];
"Offer Visual Companion\n(own message, no other content)" -> "Ask clarifying questions";
"Ask clarifying questions" -> "Propose 2-3 approaches";
"Propose 2-3 approaches" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Write design doc" [label="yes"];
"Write design doc" -> "Spec self-review\n(fix inline)";
"Spec self-review\n(fix inline)" -> "User reviews spec?";
"User reviews spec?" -> "Write design doc" [label="changes requested"];
"User reviews spec?" -> "Invoke writing-plans skill" [label="approved"];
}
流程的终止状态是调用 writing-plans。 不要调用 frontend-design、mcp-builder 或任何其他实现技能。构思之后唯一可以调用的技能是 writing-plans。
流程
理解想法:
- 先查看当前项目状态(文件、文档、近期提交)。
- 在询问详细问题之前,先评估范围:如果请求描述了多个相互独立的子系统(例如“构建一个包含聊天、文件存储、计费和分析功能的平台”),请立即指出。对于需要先拆分的项目,不要花时间通过提问细化其详情。
- 如果项目对于单份规格说明来说过于庞大,请帮助用户将其拆分为多个子项目:哪些部分相互独立,它们之间有什么关系,应该按什么顺序构建?然后通过常规设计流程讨论第一个子项目。每个子项目都有自己的规格说明 → 计划 → 实施周期。
- 对于范围合适的项目,每次只问一个问题来细化想法。
- 尽可能优先使用选择题,但开放式问题也可以。
- 每条消息只问一个问题;如果某个主题需要进一步探讨,就将其拆分成多个问题。
- 专注于理解:目的、约束和成功标准。
探索方案:
- 提出 2-3 种不同的方案,并说明各自的权衡。
- 以对话的方式介绍选项,给出你的建议和理由。
- 先介绍你推荐的选项,并解释原因。
呈现设计:
- 确认自己已经理解要构建的内容后,再呈现设计。
- 根据各部分的复杂程度调整篇幅:简单的部分用几句话说明,复杂的部分最多写 200-300 字。
- 每介绍完一部分,都询问目前看来是否合适。
- 涵盖:架构、组件、数据流、错误处理和测试。
- 如果有内容说不通,要准备好返回并澄清。
为隔离性和清晰性而设计:
- 将系统拆分为更小的单元,每个单元都有明确的用途,通过定义清晰的接口进行通信,并且能够独立理解和测试。
- 对每个单元,你都应该能够回答:它做什么、如何使用,以及依赖什么?
- 不看内部实现,别人能理解一个单元的作用吗?你能在不破坏使用方的情况下更改内部实现吗?如果不能,就需要改进边界。
- 更小且边界清晰的单元也更便于你开展工作——你可以一次在上下文中掌握的代码,更有利于你推理;文件职责明确时,你的修改也更可靠。文件变得庞大时,通常意味着它承担了过多职责。
在现有代码库中工作:
- 提出更改方案前,先了解当前结构。遵循现有模式。
- 如果现有代码中的问题会影响当前工作(例如,文件过于庞大、边界不清晰、职责纠缠),请将有针对性的改进纳入设计,就像优秀的开发者会改进自己正在处理的代码一样。
- 不要提议无关的重构。专注于服务当前目标的内容。
设计之后
文档:
- 将经过验证的设计(规范)写入
docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md- (用户对规范文件位置的偏好优先于此默认位置)
- 如果可用,请使用 elements-of-style:writing-clearly-and-concisely 技能
- 将设计文档提交到 git
规范自审: 写完规范文档后,以全新的视角检查:
- 占位符扫描: 是否有任何“待定”“待办”、未完成的部分或含糊的要求?修复它们。
- 内部一致性: 各章节之间是否存在矛盾?架构是否与功能描述相符?
- 范围检查: 这是否足够聚焦,可以制定单个实现计划?还是需要拆分?
- 歧义检查: 是否有任何要求可能被理解为两种不同的意思?如果有,选择一种并明确说明。
直接在原文中修复所有问题。无需重新审查——修复后继续。
用户审查关卡: 规范审查循环通过后,请用户审查已编写的规范,再继续:
“规范已编写并提交到
<path>。请审查并告知我,在开始编写实现计划之前是否需要进行任何更改。”
等待用户回复。如果用户要求更改,就进行修改并重新运行规范审查循环。只有在用户批准后才能继续。
实现:
- 调用 writing-plans 技能,创建详细的实现计划
- 不要调用其他任何技能。下一步只能是 writing-plans。
核心原则
- 一次只问一个问题——不要一次提出多个问题,以免让用户应接不暇
- 优先选择题——条件允许时,选择题比开放式问题更容易回答
- 严格遵循 YAGNI——从所有设计中删除不必要的功能
- 探索替代方案——确定方案前,始终提出 2–3 种方案
- 增量验证——展示设计,并在继续之前获得批准
- 保持灵活——遇到不合理之处时,返回并澄清
视觉辅助工具
这是一个基于浏览器的辅助工具,可在头脑风暴期间展示模型图、图表和视觉选项。它是一种工具,而不是一种模式。接受使用该辅助工具,意味着在适合视觉呈现的问题中可以使用它;并不意味着每个问题都要通过浏览器处理。
提供使用辅助工具: 如果你预计接下来的问题会涉及视觉内容(模型图、布局、图表),请主动提出一次以征求同意:
“我们正在处理的某些内容,如果能在网页浏览器中展示,可能会更容易解释。我可以在讨论过程中制作模型图、图表、对比图和其他视觉内容。此功能仍较新,可能会消耗较多 token。想试试吗?(需要打开本地 URL)”
此提议必须单独发送一条消息。 不要将它与澄清问题、背景摘要或任何其他内容合并。消息中只能包含上面的提议,不得包含其他内容。等待用户回复后再继续。如果用户拒绝,就继续使用纯文本进行头脑风暴。
针对每个问题分别决定: 即使用户接受了,也要针对每个问题分别决定使用浏览器还是终端。判断标准是:用户通过观看是否会比阅读更容易理解?
- 使用浏览器处理本身具有视觉属性的内容——模型图、线框图、布局对比、架构图、并排展示的视觉设计
- 使用终端处理文本内容——需求问题、概念选择、权衡列表、A/B/C/D 文本选项、范围决策
问题涉及 UI 并不意味着它自动属于视觉问题。“这里的个性指什么?”是一个概念问题——使用终端。“哪种向导布局更合适?”是一个视觉问题——使用浏览器。
如果用户同意使用辅助工具,请在继续之前阅读详细指南:
skills/brainstorming/visual-companion.md