Skip to main content
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
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 Process

The brainstorming workflow follows six mandatory steps:
1

Explore Project Context

Check files, documentation, and recent commits to understand the current state:
Understanding existing patterns helps you design solutions that fit naturally.
2

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
Good 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?”
Poor questions:
  • “What should this do and how should it work and what errors might happen?” (too many at once)
3

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
Example:
4

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
Design sections:
High-level structure and key components:
Individual pieces and their responsibilities:
How data moves through the system:
What can go wrong and how you’ll handle it:
How you’ll verify it works:
5

Write Design Document

Save the validated design:
Commit the design document:
6

Transition to Implementation

The only next step is invoking the writing-plans skill:
Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skill you invoke after brainstorming is writing-plans.

Key Principles

One Question at a Time

Don’t overwhelm with multiple questions. Ask one, wait for answer, ask next. Good:
Bad:

Multiple Choice Preferred

Easier to answer than open-ended when possible. Good:
Bad:

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”

Never skip the design process because a project seems 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
The design can be short (a few sentences for truly simple projects), but you MUST present it and get approval.

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”
STOP. These are rationalizations. Follow the process.

Example: Quick Feature

“Add a —verbose flag to show more output”
Explore Context:
  • Check existing flags: --quiet, --json
  • Review current output format
Clarifying Questions:
Design:
Even a simple flag benefits from thinking through interactions.

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
The time spent on brainstorming is saved many times over by avoiding wrong implementations, missed requirements, and architectural dead ends.