HARD GATE: Do NOT 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.
Overview
The Brainstorming skill helps turn vague ideas into concrete, approved designs through natural collaborative dialogue. It ensures you understand requirements, constraints, and success criteria before writing a single line of code.When to Use
Use this skill before any creative work:- Creating new features
- Building components
- Adding functionality
- Modifying behavior
- Starting new projects
The Process
The brainstorming workflow follows six mandatory steps:Explore Project Context
Check files, documentation, and recent commits to understand the current state:Understanding existing patterns helps you design solutions that fit naturally.
Ask Clarifying Questions
Ask questions one at a time to refine the idea:
- Prefer multiple choice when possible (easier to answer)
- Focus on: purpose, constraints, success criteria
- Only one question per message
- If a topic needs more exploration, break it into multiple questions
- “Should this be installed at user or system level?”
- “For error handling, should we: A) retry automatically, B) return error to caller, or C) log and continue?”
- “What should this do and how should it work and what errors might happen?” (too many at once)
Propose 2-3 Approaches
Present multiple approaches with trade-offs:
- Lead with your recommended option and explain why
- Include trade-offs for each approach
- Present conversationally, not formally
Present Design
Once you understand what you’re building, present the design:
- Scale sections to complexity: A few sentences if straightforward, 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
Architecture
Architecture
High-level structure and key components:
Components
Components
Individual pieces and their responsibilities:
Data Flow
Data Flow
How data moves through the system:
Error Handling
Error Handling
What can go wrong and how you’ll handle it:
Testing
Testing
How you’ll verify it works:
Key Principles
One Question at a Time
Don’t overwhelm with multiple questions. Ask one, wait for answer, ask next. Good:Multiple Choice Preferred
Easier to answer than open-ended when possible. Good:YAGNI Ruthlessly
You Aren’t Gonna Need It. Remove unnecessary features from all designs. Example:Explore Alternatives
Always propose 2-3 approaches before settling on one.Incremental Validation
Present design section by section, get approval before moving on.Be Flexible
Go back and clarify when something doesn’t make sense. Design is iterative.Anti-Pattern: “This Is Too Simple”
Simple projects are where unexamined assumptions cause the most wasted work:- Todo list app: Seems simple, but sync strategy affects entire architecture
- Single-function utility: Seems simple, but error handling and edge cases matter
- Config change: Seems simple, but migration path and backwards compatibility matter
Process Flow
Red Flags
If you catch yourself thinking:- “This is too simple to need a design”
- “I know what they want, let’s just start coding”
- “We can figure out the details as we go”
- “Design will just slow us down”
Example: Quick Feature
User Request
User Request
“Add a —verbose flag to show more output”
Brainstorming Session
Brainstorming Session
Explore Context:Design:Even a simple flag benefits from thinking through interactions.
- Check existing flags:
--quiet,--json - Review current output format
Related Skills
- Writing Plans: The next step after brainstorming - create detailed implementation plan
- Systematic Debugging: Use similar investigative approach when debugging
Checklist
Before moving to implementation:- Explored project context (files, docs, commits)
- Asked clarifying questions (one at a time)
- Understood purpose, constraints, success criteria
- Proposed 2-3 approaches with trade-offs
- Presented design covering architecture, components, data flow, errors, testing
- Got user approval on design
- Wrote design doc to
docs/plans/YYYY-MM-DD-<topic>-design.md - Committed design doc
- Ready to invoke writing-plans skill