brainstorming
obra/superpowers
구현 작업이 시작되기 전에 아이디어를 완성도 높은 설계 및 사양으로 구체화할 수 있도록 협력적인 대화를 이끌어 나갑니다.
...모든 것을 확장하십시오Brainstorming 아이디어를 디자인으로
자연스러운 협업 대화를 통해 아이디어를 완성도 높은 디자인과 사양으로 구현하는 데 도움을 드립니다.
먼저 현재 프로젝트의 맥락을 파악한 후, 질문을 하나씩 던져 아이디어를 구체화하세요. 무엇을 구축할지 명확히 이해했다면, 디자인을 제시하고 사용자의 승인을 받으세요.
반패턴: “이건 너무 단순해서 디자인이 필요 없을 정도야”
모든 프로젝트는 이 과정을 거칩니다. 할 일 목록, 단일 기능 유틸리티, 설정 변경 등 모든 프로젝트가 그렇습니다. “간단한” 프로젝트일수록 검증되지 않은 가정으로 인해 가장 많은 작업 낭비가 발생합니다. 디자인은 짧아도 괜찮지만(정말 간단한 프로젝트의 경우 몇 문장 정도), 반드시 이를 제시하고 승인을 받아야 합니다.
체크리스트
다음 항목 각각에 대해 작업을 생성하고 순서대로 완료해야 합니다:
- 프로젝트 맥락 파악 — 파일, 문서, 최근 커밋 확인
- 시각적 보조 자료를 ‘필요한 시점’에 제공하십시오 — 미리 제공해서는 안 됩니다. 설명보다 시각적으로 보여주는 것이 진정으로 더 명확할 만한 질문이 처음 발생할 때, 그때(별도의 메시지로) 제공하십시오. 승인이 나면 해당 브라우저 탭이 자동으로 열립니다. 시각적 질문이 전혀 발생하지 않는다면, 절대 제공하지 마십시오. 아래의 ‘시각적 보조 자료’ 섹션을 참조하십시오.
- 명확화를 위한 질문하기 — 한 번에 하나씩, 목적/제약 조건/성공 기준을 파악하십시오
- 2~3가지 접근 방식 제안 — 장단점과 함께 귀하의 권장 사항 제시
- 설계를 제시하십시오 — 복잡도에 맞춰 섹션별로 나누고, 각 섹션마다 사용자의 승인을 받으십시오
- 디자인 문서 작성 —
docs/superpowers/specs/YYYY-MM-DD-에 저장하고 커밋하십시오-design.md - 사양서 자체 검토 — 자리 표시자, 모순, 모호성, 범위(아래 참조)에 대해 인라인으로 빠르게 확인
- 사용자가 작성된 사양서 검토 — 진행하기 전에 사용자에게 사양서 검토를 요청하십시오
- 구현 단계로 전환 — writing-plans 스킬을 활용하여 구현 계획을 수립
프로세스 흐름
digraph 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 .- (사양 파일 위치에 대한 사용자 기본 설정이 이 기본값보다 우선합니다)
- 가능하다면 ‘elements-of-style:writing-clearly-and-concise’ 기법을 활용하십시오
- 설계 문서를 git에 커밋하십시오
사양서 자체 검토: 사양서 작성을 마친 후, 새로운 시각으로 내용을 살펴보세요:
- 플래시홀더 점검: ‘TBD’, ‘TODO’, 미완성 섹션 또는 모호한 요구사항이 있습니까? 이를 수정하십시오.
- 내부 일관성: 서로 모순되는 섹션이 있습니까? 아키텍처가 기능 설명과 일치합니까?
- 범위 확인: 단일 구현 계획으로 충분히 집중되어 있는지, 아니면 세분화가 필요한지 확인하십시오.
- 모호성 확인: 어떤 요구사항이 두 가지 다른 방식으로 해석될 여지가 있나요? 그렇다면 그중 하나를 선택하여 명확히 명시하세요.
문제는 바로 수정하세요. 다시 검토할 필요는 없습니다. 수정하고 다음 단계로 넘어가세요.
사용자 검토 단계: 사양 검토 루프가 완료된 후, 다음 단계로 진행하기 전에 사용자에게 작성된 사양을 검토해 달라고 요청하세요:
"사양서가 작성되어
. 구현 계획서를 작성하기 전에 검토해 주시고, 변경 사항이 있으면 알려주세요."
사용자의 응답을 기다리십시오. 사용자가 변경을 요청하면 해당 내용을 수정하고 사양 검토 루프를 다시 진행하십시오. 사용자가 승인한 후에만 다음 단계로 진행하십시오.
구현:
- writing-plans 스킬을 호출하여 상세한 구현 계획을 작성하십시오
- 다른 스킬은 호출하지 마십시오. ‘writing-plans’가 다음 단계입니다.
핵심 원칙
- 한 번에 한 가지 질문만 하세요 - 여러 가지 질문으로 사용자를 부담스럽게 하지 마세요
- 가능하면 객관식 질문을 선호하십시오 - 가능할 경우 주관식보다 답변하기 쉽습니다
- YAGNI 원칙을 철저히 적용하십시오 - 모든 설계에서 불필요한 기능을 제거하십시오
- 대안을 모색하십시오 — 결정을 내리기 전에 항상 2~3가지 접근 방식을 제안하십시오
- 점진적 검증 - 다음 단계로 넘어가기 전에 설계를 제시하고 승인을 받으세요
- 유연하게 대처하세요 - 이해가 안 되는 부분이 있으면 다시 돌아가 명확히 하세요
시각적 보조 도구
brainstorming 에서 모형, 다이어그램, 시각적 옵션을 보여주기 위한 브라우저 기반 보조 도구입니다. 모드(mode)가 아닌 도구(tool) 형태로 제공됩니다. 이 보조 도구를 허용한다는 것은 시각적 표현이 도움이 되는 질문에 한해 사용할 수 있음을 의미하며, 모든 질문이 브라우저를 통해 처리된다는 뜻은 아닙니다.
보조 도구 제안(필요 시 즉시): 미리 제안하지 마세요. 단순히 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
복사





집
