brainstorming
obra/superpowers
引導協作對話,在任何實施工作開始之前,將構想轉化為完整的設計與規格。
...展開全部Brainstorming 將構想轉化為設計
透過自然的協作對話,協助將構想轉化為完整的設計與規格。
首先了解當前專案的背景,接著逐一提問以精煉構想。一旦釐清要開發的內容,便呈現設計並取得使用者認可。
反模式:「這太簡單了,不需要設計」
每個專案都會經歷這個過程。無論是待辦清單、單一功能的工具程式,還是設定變更——無一例外。「簡單」的專案往往正是那些未經檢視的假設造成最多無謂工作的地方。設計文件可以很簡短(對於真正簡單的專案,幾句話就夠了),但你必須提出設計並獲得批准。
檢查清單
您必須針對以下每一項建立任務,並依序完成:
- 探索專案背景— 檢查檔案、文件及最近的提交紀錄
- 適時提供視覺輔助——切勿預先提供。當問題首次出現時,若以視覺呈現確實比文字描述更清晰,請在該時機提供(以獨立訊息形式);經核准後,瀏覽器分頁會自動為您開啟。若從未出現需要視覺輔助的問題,則永遠不要提供。請參閱下文的「視覺輔助」章節。
- 提出澄清問題— 一次一個,釐清目的/限制條件/成功標準
- 提出 2 至 3 種解決方案— 包含各方案的取捨及您的建議
- 呈現設計— 依複雜度分段展示,每完成一節後徵求使用者確認
- 撰寫設計文件— 儲存至
docs/superpowers/specs/YYYY-MM-DD-並提交-design.md - 規格書自我審查— 快速內嵌檢查占位符、矛盾、歧義及範圍(詳見下方)
- 請使用者審閱已撰寫的規格文件— 在繼續進行前,請使用者審閱規格檔案
- 過渡至實作階段— 運用 writing-plans 技能來建立實作計畫
流程圖
有向圖brainstorming {
"探索專案背景" [shape=box];
"提出澄清問題" [shape=box];
"提出 2-3 種解決方案" [shape=box];
"呈現設計章節" [shape=box];
"使用者核准設計?" [shape=diamond];
"撰寫設計文件" [shape=box];
"規格書自我審閱\n(內嵌修正)" [shape=box];
"使用者審閱規格書?" [shape=diamond];
"運用撰寫計畫技巧" [shape=doublecircle];
「探索專案背景」→「提出澄清問題」;
「提出澄清問題」→「提出 2-3 種方案」;
「提出 2-3 種方案」→「呈現設計章節」;
"呈現設計章節" -> "使用者是否批准設計?";
"使用者是否批准設計?" -> "呈現設計章節" [label="否,需修改"];
"使用者是否批准設計?" -> 「撰寫設計文件」 [label="是"];
「撰寫設計文件」 -> 「規格書自我審查\n(內嵌修正)」;
「規格書自我審查\n(內嵌修正)」 -> 「使用者審閱規格書?」;
"使用者審閱規格書?" -> "撰寫設計文件" [label="要求修改"];
"使用者審閱規格書?" -> "呼叫 writing-plans 技能" [label="已核准"];
}
終端狀態是呼叫 writing-plans。切勿呼叫 frontend-design、mcp-builder 或任何其他實作技能。在執行brainstorming 之後,您唯一可呼叫的技能是 writing-plans。
流程
理解核心概念:
- 首先檢查當前專案狀態(檔案、文件、近期提交)
- 在提出詳細問題之前,先評估範圍:若請求描述了多個獨立的子系統(例如:「建立一個包含聊天、檔案儲存、計費和分析功能的平台」),請立即標記此情況。不要花時間詢問需要先進行分解的專案細節。
- 若專案規模過大,無法納入單一規格說明書中,請協助使用者將其分解為子專案:哪些是獨立的模組?它們之間有何關聯?應按什麼順序建置?接著透過標準設計流程,針對第一個子專案進行腦力激盪。每個子專案皆需經過專屬的「規格 → 規劃 → 實作」循環。
- 對於範圍適當的專案,請一次只提一個問題來釐清構想
- 若情況允許,應優先採用多選題,但開放式問題亦無妨
- 每則訊息僅提出一個問題——若某個主題需要進一步探討,請將其拆分為多個問題
- 著重於理解:目的、限制條件、成功標準
探索解決方案:
- 提出 2 至 3 種不同的解決方案,並說明其利弊權衡
- 以對話形式呈現各選項,並附上您的建議及理由
- 首先提出您推薦的方案,並說明理由
呈現設計:
- 當您確信已理解要建構的內容後,即可呈現設計
- 根據各部分的複雜程度調整篇幅:若內容簡單明瞭,只需幾句話;若涉及細微差別,則可擴充至 200 至 300 字
- 在每個部分結束後,先詢問目前呈現的內容是否合理
- 涵蓋內容:架構、組件、資料流、錯誤處理、測試
- 若內容有不明確之處,請準備好回頭澄清
以隔離與清晰為設計原則:
- 將系統拆分為較小的單元,每個單元皆具有一個明確的目的,透過明確定義的介面進行通訊,且能夠獨立理解與測試
- 對於每個單元,你都應該能夠回答:它做什麼、如何使用它,以及它依賴什麼?
- 他人是否能在不閱讀其內部實現的情況下,理解該單元的功能?您是否能在不影響使用者前提下修改內部實現?若無法做到,則需重新調整邊界。
- 較小且邊界明確的單元也更容易處理——當你能將程式碼整體置於上下文中理解時,推論會更精準;而當檔案內容專注時,你的修改也會更可靠。當檔案變得過大時,這通常是它承擔了過多功能的訊號。
在現有程式碼庫中工作:
- 在提出變更前,先探索現有結構。遵循現有的模式。
- 若現有程式碼存在影響工作的問題(例如:檔案過於龐大、邊界不明確、職責糾結),請將針對性的改進納入設計之中——這正是優秀開發者改進所處理程式碼的方式。
- 切勿提出無關的重構建議。應專注於能達成當前目標的解決方案。
設計完成後
文件編寫:
- 將經過驗證的設計(規格)寫入
docs/superpowers/specs/YYYY-MM-DD--design.md - (若使用者偏好設定中指定了規格檔位置,則該設定將覆寫此預設值)
- 若具備相關能力,請運用「元素風格指南:清晰簡潔寫作」的技巧
- 將設計文件提交至 Git
規格書自我審閱: 撰寫完規格書後,請以全新的視角重新檢視:
- 占位符檢查:是否有任何「待定(TBD)」、「待辦(TODO)」、未完成的段落或模糊的要求?請予以修正。
- 內部一致性:是否有任何段落相互矛盾?架構是否與功能描述相符?
- 範圍檢查:此文件是否足夠聚焦以制定單一實作計畫,還是需要進行分解?
- 模糊性檢查:是否有任何需求可能被解讀為兩種不同的方式?若有,請選定其中一種並明確表述。
直接在文件中修正任何問題。無需重新審閱——修正後即可繼續進行。
使用者審查關卡: 在規格審查循環通過後,請使用者審閱書面規格,然後再繼續進行:
「規格書已撰寫完畢並提交至
。請您審閱,並在我們開始撰寫實作計畫前,告知是否有任何修改需求。」
等待用戶的回覆。若用戶要求修改,請進行修改並重新執行規格審查循環。僅在用戶批准後才繼續進行。
實作:
- 呼叫「writing-plans」技能以建立詳細的實作計畫
- 請勿呼叫任何其他技能。「writing-plans」是下一步驟。
關鍵原則
- 一次只提一個問題—— 避免因同時提出多個問題而讓使用者感到不知所措
- 優先採用多選題——在可行情況下,比開放式問題更容易回答
- 毫不留情地遵循 YAGNI 原則— 從所有設計中移除不必要的功能
- 探索替代方案— 確定方案前,務必提出 2 至 3 種做法
- 逐步驗證——先提出設計方案,獲得批准後再繼續
- 保持彈性——若某處不合邏輯,應回頭釐清
視覺輔助工具
一款基於瀏覽器的輔助工具,用於在「brainstorming 」過程中展示原型、圖表及視覺選項。此工具以獨立工具形式提供,而非系統模式。接受此輔助工具,表示它僅用於能從視覺呈現中受益的問題;這絕不意味著每個問題都必須透過瀏覽器處理。
提供輔助工具(適時提供):切勿在初期就主動提出。請等待直到該問題確實「展示」比「口頭說明」更清晰時——例如涉及真實原型/版面配置/圖表的問題,而非單純的 UI議題。當這種情況首次出現時,請以獨立訊息的形式提出:
「接下來這部分,如果我示範給您看可能會更容易理解——我可以邊討論邊在瀏覽器分頁中組合原型、圖表和對比內容。這項功能還很新,且可能會消耗大量代幣。您需要我這樣做嗎?我會為您開啟。」
這項提議必須以獨立訊息的形式呈現。僅包含提議內容——不包含任何澄清問題、摘要或其他內容。等待使用者的回應。若對方接受,請使用--open 參數啟動伺服器,讓瀏覽器自動開啟至首個畫面。若對方拒絕,請繼續僅以文字形式進行,除非對方主動提出,否則不要再次提議。
逐題決策:即使使用者已接受,仍需針對每個問題分別決定是使用瀏覽器還是終端機。判斷標準:使用者透過視覺呈現理解起來是否比閱讀文字更清楚?
- 對於具有視覺性的內容,應使用瀏覽器——例如:原型圖、線框圖、版面配置比較、架構圖、並排視覺設計
- 針對純文字內容,請使用終端機——例如需求問題、概念選擇、取捨清單、A/B/C/D 文字選項、範圍決策
關於 UI 主題的問題並不一定就是視覺性問題。「在此語境下,『個性』指什麼?」是個概念性問題——請使用終端機。「哪種向導佈局效果更好?」則是視覺性問題——請使用瀏覽器。
若對方同意使用這份輔助指南,請在繼續之前先閱讀詳細指南:
skills/brainstorming/visual-companion.md
---
name: brainstorming
description: Guides collaborative dialogue to turn ideas into fully formed designs and specs before any implementation begins.
---
# Brainstorming Ideas Into Designs
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Start by understanding the current project context, then ask questions one at a time to refine the idea. Once you understand what you're building, present the design and get user approval.
<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>
## Anti-Pattern: "This Is Too Simple To Need A Design"
Every project goes through this process. A todo list, a single-function utility, a config change — all of them. "Simple" projects are where unexamined assumptions cause the most wasted work. The design can be short (a few sentences for truly simple projects), but you MUST present it and get approval.
## Checklist
You MUST create a task for each of these items and complete them in order:
1. **Explore project context** — check files, docs, recent commits
2. **Offer the visual companion just-in-time** — NOT upfront. The first time a question would genuinely be clearer shown than described, offer it then (its own message); on approval its browser tab opens for you. If no visual question ever arises, never offer it. See the Visual Companion section below.
3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
4. **Propose 2-3 approaches** — with trade-offs and your recommendation
5. **Present design** — in sections scaled to their complexity, get user approval after each section
6. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
7. **Spec self-review** — quick inline check for placeholders, contradictions, ambiguity, scope (see below)
8. **User reviews written spec** — ask user to review the spec file before proceeding
9. **Transition to implementation** — invoke writing-plans skill to create implementation plan
## Process Flow
```dot
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"];
}
```
**The terminal state is invoking writing-plans.** Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skill you invoke after brainstorming is writing-plans.
## The Process
**Understanding the idea:**
- Check out the current project state first (files, docs, recent commits)
- Before asking detailed questions, assess scope: if the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend questions refining details of a project that needs to be decomposed first.
- If the project is too large for a single spec, help the user decompose into sub-projects: what are the independent pieces, how do they relate, what order should they be built? Then brainstorm the first sub-project through the normal design flow. Each sub-project gets its own spec → plan → implementation cycle.
- For appropriately-scoped projects, ask questions one at a time to refine the idea
- Prefer multiple choice questions when possible, but open-ended is fine too
- Only one question per message - if a topic needs more exploration, break it into multiple questions
- Focus on understanding: purpose, constraints, success criteria
**Exploring approaches:**
- Propose 2-3 different approaches with trade-offs
- Present options conversationally with your recommendation and reasoning
- Lead with your recommended option and explain why
**Presenting the design:**
- Once you believe you understand what you're building, present the design
- Scale each section to its complexity: a few sentences if straightforward, up to 200-300 words if nuanced
- Ask after each section whether it looks right so far
- Cover: architecture, components, data flow, error handling, testing
- Be ready to go back and clarify if something doesn't make sense
**Design for isolation and clarity:**
- Break the system into smaller units that each have one clear purpose, communicate through well-defined interfaces, and can be understood and tested independently
- For each unit, you should be able to answer: what does it do, how do you use it, and what does it depend on?
- Can someone understand what a unit does without reading its internals? Can you change the internals without breaking consumers? If not, the boundaries need work.
- Smaller, well-bounded units are also easier for you to work with - you reason better about code you can hold in context at once, and your edits are more reliable when files are focused. When a file grows large, that's often a signal that it's doing too much.
**Working in existing codebases:**
- Explore the current structure before proposing changes. Follow existing patterns.
- Where existing code has problems that affect the work (e.g., a file that's grown too large, unclear boundaries, tangled responsibilities), include targeted improvements as part of the design - the way a good developer improves code they're working in.
- Don't propose unrelated refactoring. Stay focused on what serves the current goal.
## After the Design
**Documentation:**
- Write the validated design (spec) to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`
- (User preferences for spec location override this default)
- Use elements-of-style:writing-clearly-and-concisely skill if available
- Commit the design document to git
**Spec Self-Review:**
After writing the spec document, look at it with fresh eyes:
1. **Placeholder scan:** Any "TBD", "TODO", incomplete sections, or vague requirements? Fix them.
2. **Internal consistency:** Do any sections contradict each other? Does the architecture match the feature descriptions?
3. **Scope check:** Is this focused enough for a single implementation plan, or does it need decomposition?
4. **Ambiguity check:** Could any requirement be interpreted two different ways? If so, pick one and make it explicit.
Fix any issues inline. No need to re-review — just fix and move on.
**User Review Gate:**
After the spec review loop passes, ask the user to review the written spec before proceeding:
> "Spec written and committed to `<path>`. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
Wait for the user's response. If they request changes, make them and re-run the spec review loop. Only proceed once the user approves.
**Implementation:**
- Invoke the writing-plans skill to create a detailed implementation plan
- Do NOT invoke any other skill. writing-plans is the next step.
## Key Principles
- **One question at a time** - Don't overwhelm with multiple questions
- **Multiple choice preferred** - Easier to answer than open-ended when possible
- **YAGNI ruthlessly** - Remove unnecessary features from all designs
- **Explore alternatives** - Always propose 2-3 approaches before settling
- **Incremental validation** - Present design, get approval before moving on
- **Be flexible** - Go back and clarify when something doesn't make sense
## Visual Companion
A browser-based companion for showing mockups, diagrams, and visual options during brainstorming. Available as a tool — not a mode. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
**Offering the companion (just-in-time):** Do NOT offer it upfront. Wait until a question would genuinely be clearer shown than told — a real mockup / layout / diagram question, not merely a UI *topic*. The first time that happens, offer it then, as its own message:
> "This next part might be easier if I show you — I can put together mockups, diagrams, and comparisons in a browser tab as we go. It's still new and can be token-intensive. Want me to? I'll open it for you."
**This offer MUST be its own message.** Only the offer — no clarifying question, summary, or other content. Wait for the user's response. If they accept, start the server with `--open` so their browser opens to the first screen automatically. If they decline, continue text-only and don't offer again unless they raise it.
**Per-question decision:** Even after the user accepts, decide FOR EACH QUESTION whether to use the browser or the terminal. The test: **would the user understand this better by seeing it than reading it?**
- **Use the browser** for content that IS visual — mockups, wireframes, layout comparisons, architecture diagrams, side-by-side visual designs
- **Use the terminal** for content that is text — requirements questions, conceptual choices, tradeoff lists, A/B/C/D text options, scope decisions
A question about a UI topic is not automatically a visual question. "What does personality mean in this context?" is a conceptual question — use the terminal. "Which wizard layout works better?" is a visual question — use the browser.
If they agree to the companion, read the detailed guide before proceeding:
`skills/brainstorming/visual-companion.md`
所有檔案
0 個檔案安裝 brainstorming
請下載技能檔案,並將其解壓縮至您的 .claude/skills/ 目錄中。
下載 ZIP複製儲存庫並將技能檔案複製到您的專案中。
git clone https://github.com/obra/superpowers/tree/main/skills/brainstorming # Copy SKILL.md to your .claude/skills/ directory
複製





首頁
