关于 brainstorming
通过协作对话将想法整理为设计和规格说明,并在实施前完成审核。流程包括了解项目背景、逐个澄清问题、比较方案、分阶段确认设计,以及移交至计划制定。
主要功能
- 01探索项目背景
- 02逐个提出澄清问题
- 03比较设计方案
- 04分阶段确认设计
- 05审查规格并移交计划制定
适用场景
- 01澄清新项目的需求
- 02比较并选择实施方案
- 03在制定计划前准备已确认的设计
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-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];
"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" -> "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
规格说明自审: 写完规格说明文档后,以全新的视角审阅:
- 占位符检查: 是否有“TBD”“TODO”、不完整的章节或含糊的要求?请修正。
- 内部一致性: 是否有章节相互矛盾?架构是否与功能描述相符?
- 范围检查: 是否足够聚焦,可以制定单个实施计划,还是需要拆分?
- 歧义检查: 是否有要求可能被理解为两种不同的意思?如果有,请择一并明确说明。
直接修正所有问题。无需重新审阅,修正后继续。
用户审核关卡: 规格说明通过审核后,请用户审阅已写好的规格说明,再继续:
“规格说明已写好并提交到
<path>。请审阅,并告知我在开始编写实施计划前是否需要进行任何修改。”
等待用户回复。如果用户要求修改,请进行修改并重新运行规格说明审核流程。只有在用户批准后才能继续。
实施:
- 调用
writing-plans技能,制定详细的实施计划 - 不要调用任何其他技能。下一步必须是
writing-plans。
核心原则
- 一次只问一个问题——不要用多个问题让用户应接不暇
- 优先使用选择题——条件允许时,选择题比开放式问题更容易回答
- 严格遵循 YAGNI——从所有设计中移除不必要的功能
- 探索备选方案——确定方案前,始终提出 2–3 种方法
- 增量验证——先展示设计并获得批准,再继续
- 保持灵活——遇到不合理之处时,回头澄清
视觉辅助工具
基于浏览器的辅助工具,可在头脑风暴期间展示模型图、图表和视觉方案。它是一种工具,而非模式。接受使用该辅助工具,意味着在适合用视觉方式呈现的问题中可以使用它;并不意味着每个问题都要通过浏览器处理。
适时提供辅助工具: 不要一开始就主动提供。等到确实有某个问题更适合展示而非口头描述时再提供——必须是真正涉及模型图、布局或图表的问题,而不只是涉及 UI 的话题。首次遇到这种情况时,单独发送一条消息进行询问:
“接下来的内容可能更适合展示给你看——我可以在浏览器标签页中逐步整理模型图、图表和对比方案。这项功能还比较新,可能会消耗较多 token。你想使用吗?我会为你打开它。”
必须单独发送这条询问。 只发送询问,不要附带澄清问题、总结或其他内容。等待用户回复。如果用户接受,请使用 --open 启动服务器,以便浏览器自动打开并显示第一个页面。如果用户拒绝,则继续纯文本交流,除非用户主动提出,否则不要再次提供。
按问题决定: 即使用户接受了辅助工具,也要针对每个问题决定使用浏览器还是终端。判断标准是:用户通过观看是否比阅读更容易理解?
- 使用浏览器呈现视觉内容——模型图、线框图、布局对比、架构图、并排视觉设计
- 使用终端呈现文本内容——需求问题、概念选择、权衡列表、A/B/C/D 文本选项、范围决策
问题涉及 UI,并不意味着它自动就是视觉问题。“这里的个性指什么?”属于概念问题,应使用终端。“哪种向导布局效果更好?”属于视觉问题,应使用浏览器。
如果用户同意使用辅助工具,请先阅读详细指南再继续:
skills/brainstorming/visual-companion.md