Brainstorm
Overview
Turn ideas into fully formed designs through collaborative dialogue. Understand the project, ask questions one at a time, propose approaches, present the design, get approval, write the design doc.
When to Use Brainstorm
Use brainstorm when:
- Building a new feature, component, or abstraction
- Multiple approaches exist and trade-offs need exploring
- Scope is unclear
- The user asks for help with a design decision
- Starting a new project (greenfield — see mode below)
Skip brainstorm when:
- The change is mechanical (rename, config tweak, add a log line)
- The design is obvious and singular (only one sensible way to do it)
- The user already knows exactly what they want and just needs it built
- Iterating on already-designed work with no new decisions
When skipped, go straight to execute.
Mode: Greenfield vs Normal
Check first: does docs/SPEC.md exist?
- No SPEC.md → Greenfield mode. This is project initialization. Skip the design doc step. Hand off directly to the spec skill in interview mode — the SPEC.md is the design doc for initialization. Jump to "Greenfield Transition" below.
- SPEC.md exists → Normal mode. Follow the full checklist below.
Checklist (Normal Mode)
Create a task for each item and complete them in order:
- Explore project context — check files, docs, recent commits, read
docs/SPEC.md
- Ask clarifying questions — one at a time, understand purpose/constraints/success criteria
- Propose 2-3 approaches — with trade-offs and your recommendation
- Present design — in sections scaled to complexity, get user approval after each section
- Write design doc — save the approved design to
docs/designs/<feature-name>.md
- Transition — hand off to the developer. Design doc is the session-boundary artifact. Plan is optional — only when the developer explicitly asks for it or the design is complex enough to warrant one.
Process Flow
Explore context → Ask questions → Propose approaches → Present design → User approves? → Write design doc → Done (developer decides next step)
↓
Revise and re-present
The Process
Understanding the idea:
- Check the current project state first (files, docs, recent commits)
- Read
docs/SPEC.md to understand current design decisions
- Check
docs/designs/ for any in-flight feature design docs — SPEC.md may not reflect these yet
- Ask questions one at a time to refine the idea
- Prefer multiple choice questions when possible
- Focus on: purpose, constraints, success criteria
- Always give recommendations backed by best practices — scalable architecture, good UI/UX patterns, clean reusable code, separation of concerns, industry conventions. Don't just ask bare questions, offer informed opinions
Exploring approaches:
- Propose 2-3 different approaches with trade-offs
- Lead with your recommendation and explain why
Presenting 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
- Cover: architecture, components, data flow, error handling, testing
After the Design (Normal Mode)
Once the design is approved, write it to docs/designs/<feature-name>.md. This file is the session-boundary artifact — a new agent session can pick up the plan step from here without needing the brainstorming context.
Design doc structure:
# <Feature Name>
## Context
[1-2 paragraphs. What is this? Why are we building it? How does it fit the existing system?]
## Goals
- [What success looks like]
- [Key outcomes]
## Non-Goals
- [What this explicitly does NOT cover]
## Design
[Architecture, components, data flow. Scale detail to complexity — a few paragraphs for simple features, more for complex ones.]
## Key Decisions
| Decision | Choice | Rationale |
|----------|--------|-----------|
## Rejected Alternatives
- [Approach X] — [why rejected]
- [Approach Y] — [why rejected]
## Edge Cases & Constraints
- [Known gotchas, performance, security]
## Open Questions
- [Anything unresolved — should be empty by the time brainstorm ends]
Include the "Rejected Alternatives" section so a fresh agent reading the design doc later knows what was already ruled out and why.
Do NOT update SPEC.md from brainstorm. SPEC.md is only updated via sync-docs or the spec skill.
Transition:
- Tell the user: "Design saved to
docs/designs/<feature>.md."
- Do NOT suggest or push for
/plan. The developer decides when a plan is needed.
- If the design is straightforward, the developer can go straight to execute using the design doc as context.
- If the design is complex, the developer will invoke
/plan themselves (possibly with a stronger model).
- Only invoke the plan skill if the developer explicitly asks for it.
Greenfield Transition
When no docs/SPEC.md exists:
- Skip writing a design doc
- Hand off to the spec skill (Mode 2: initial spec interview)
- Tell the user: "No SPEC.md found. Handing off to spec skill to create the initial project spec — that becomes the design foundation."
- The spec skill interviews the user and writes SPEC.md directly
- Once SPEC.md exists, subsequent features go through normal mode
Key Principles
- One question at a time — don't overwhelm
- Multiple choice preferred — easier to answer
- YAGNI — strip unnecessary features
- Explore alternatives — always propose 2-3 approaches
- Incremental validation — get approval before moving on
- Be flexible — go back and clarify when something doesn't make sense
1---2name: brainstorm3description: Use when a task involves genuine design decisions — new features, new components, unclear scope, or multiple viable approaches. Skip for mechanical changes where the design is obvious. Produces an approved design doc as the session-boundary artifact.4---56# Brainstorm78## Overview910Turn ideas into fully formed designs through collaborative dialogue. Understand the project, ask questions one at a time, propose approaches, present the design, get approval, write the design doc.1112<HARD-GATE>13Do NOT write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it.14</HARD-GATE>1516## When to Use Brainstorm1718**Use brainstorm when:**19- Building a new feature, component, or abstraction20- Multiple approaches exist and trade-offs need exploring21- Scope is unclear22- The user asks for help with a design decision23- Starting a new project (greenfield — see mode below)2425**Skip brainstorm when:**26- The change is mechanical (rename, config tweak, add a log line)27- The design is obvious and singular (only one sensible way to do it)28- The user already knows exactly what they want and just needs it built29- Iterating on already-designed work with no new decisions3031When skipped, go straight to execute.3233## Mode: Greenfield vs Normal3435**Check first:** does `docs/SPEC.md` exist?3637- **No SPEC.md → Greenfield mode.** This is project initialization. Skip the design doc step. Hand off directly to the spec skill in interview mode — the SPEC.md *is* the design doc for initialization. Jump to "Greenfield Transition" below.38- **SPEC.md exists → Normal mode.** Follow the full checklist below.3940## Checklist (Normal Mode)4142Create a task for each item and complete them in order:43441. **Explore project context** — check files, docs, recent commits, read `docs/SPEC.md`452. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria463. **Propose 2-3 approaches** — with trade-offs and your recommendation474. **Present design** — in sections scaled to complexity, get user approval after each section485. **Write design doc** — save the approved design to `docs/designs/<feature-name>.md`496. **Transition** — hand off to the developer. Design doc is the session-boundary artifact. Plan is optional — only when the developer explicitly asks for it or the design is complex enough to warrant one.5051## Process Flow5253```54Explore context → Ask questions → Propose approaches → Present design → User approves? → Write design doc → Done (developer decides next step)55 ↓56 Revise and re-present57```5859## The Process6061**Understanding the idea:**62- Check the current project state first (files, docs, recent commits)63- Read `docs/SPEC.md` to understand current design decisions64- Check `docs/designs/` for any in-flight feature design docs — SPEC.md may not reflect these yet65- Ask questions one at a time to refine the idea66- Prefer multiple choice questions when possible67- Focus on: purpose, constraints, success criteria68- Always give recommendations backed by best practices — scalable architecture, good UI/UX patterns, clean reusable code, separation of concerns, industry conventions. Don't just ask bare questions, offer informed opinions6970**Exploring approaches:**71- Propose 2-3 different approaches with trade-offs72- Lead with your recommendation and explain why7374**Presenting the design:**75- Scale each section to its complexity: a few sentences if straightforward, up to 200-300 words if nuanced76- Ask after each section whether it looks right77- Cover: architecture, components, data flow, error handling, testing7879## After the Design (Normal Mode)8081Once the design is approved, write it to `docs/designs/<feature-name>.md`. This file is the session-boundary artifact — a new agent session can pick up the plan step from here without needing the brainstorming context.8283**Design doc structure:**8485```markdown86# <Feature Name>8788## Context89[1-2 paragraphs. What is this? Why are we building it? How does it fit the existing system?]9091## Goals92- [What success looks like]93- [Key outcomes]9495## Non-Goals96- [What this explicitly does NOT cover]9798## Design99[Architecture, components, data flow. Scale detail to complexity — a few paragraphs for simple features, more for complex ones.]100101## Key Decisions102| Decision | Choice | Rationale |103|----------|--------|-----------|104105## Rejected Alternatives106- [Approach X] — [why rejected]107- [Approach Y] — [why rejected]108109## Edge Cases & Constraints110- [Known gotchas, performance, security]111112## Open Questions113- [Anything unresolved — should be empty by the time brainstorm ends]114```115116Include the "Rejected Alternatives" section so a fresh agent reading the design doc later knows what was already ruled out and why.117118**Do NOT update SPEC.md from brainstorm.** SPEC.md is only updated via sync-docs or the spec skill.119120**Transition:**121- Tell the user: "Design saved to `docs/designs/<feature>.md`."122- Do NOT suggest or push for `/plan`. The developer decides when a plan is needed.123- If the design is straightforward, the developer can go straight to execute using the design doc as context.124- If the design is complex, the developer will invoke `/plan` themselves (possibly with a stronger model).125- Only invoke the plan skill if the developer explicitly asks for it.126127## Greenfield Transition128129When no `docs/SPEC.md` exists:130131- Skip writing a design doc132- Hand off to the spec skill (Mode 2: initial spec interview)133- Tell the user: "No SPEC.md found. Handing off to spec skill to create the initial project spec — that becomes the design foundation."134- The spec skill interviews the user and writes SPEC.md directly135- Once SPEC.md exists, subsequent features go through normal mode136137## Key Principles138139- **One question at a time** — don't overwhelm140- **Multiple choice preferred** — easier to answer141- **YAGNI** — strip unnecessary features142- **Explore alternatives** — always propose 2-3 approaches143- **Incremental validation** — get approval before moving on144- **Be flexible** — go back and clarify when something doesn't make sense