# Brainstorm

> Brainstorm Skill

- Skill: `ace-step/brainstorm` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ace-step/brainstorm`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ace-step/brainstorm/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ace-step (https://skillmd.com/u/ace-step)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ace-step/brainstorm

---

# Brainstorm Skill

> Multi-approach exploration protocol. Use when there are multiple valid ways to solve
> a problem and you need to pick the best one — not just the first one that comes to mind.
>
> **Use this when**: The task has 2+ viable approaches and the wrong choice would be
> expensive to reverse (architecture, data model, complex UI pattern).
>
> **Don't use this when**: There's an obvious approach, or the task is small enough
> that any approach works. Don't brainstorm how to add a CSS class.

## When to Trigger

1. **Architecture decision**: New store shape, new service, new component hierarchy
2. **Algorithm choice**: Multiple valid approaches with different tradeoffs
3. **UI pattern decision**: Modal vs. panel vs. inline? Drag vs. click? Canvas vs. DOM?
4. **Integration approach**: How to connect a new feature with existing systems
5. **Performance tradeoff**: Eager vs. lazy, cache vs. recompute, sync vs. async

## Protocol (4 steps, under 5 minutes)

### Step 1: Define the Decision

Write in this format:
```
DECISION: [What specifically needs to be decided]
CONSTRAINTS: [Non-negotiable requirements]
CONTEXT: [What already exists that this must work with]
```

Example:
```
DECISION: How to implement undo/redo for track operations
CONSTRAINTS: Must handle 100+ operations, must work with Zustand, must support grouped operations
CONTEXT: Existing projectStore with track/clip actions, no current undo system
```

### Step 2: Generate 2-3 Approaches

For each approach, write exactly:
- **Name**: Short descriptive name
- **How it works**: 2-3 sentences
- **Pros**: What's good about it
- **Cons**: What's risky or costly
- **Effort**: S / M / L

Use WebSearch if you need to verify feasibility of an approach.

**Rules**:
- Minimum 2 approaches, maximum 4. Don't pad with bad options.
- At least one approach should be the "simple/boring" option.
- At least one approach should be the "ideal if we had unlimited time" option.
- Don't include approaches that violate the constraints.

### Step 3: Score and Select

Score each approach on:
| Criterion | Weight | Description |
|-----------|--------|-------------|
| Correctness | 3x | Does it actually solve the problem fully? |
| Simplicity | 2x | How easy to implement and maintain? |
| Compatibility | 2x | How well does it fit with existing code? |
| Extensibility | 1x | How easy to extend later? |

Pick the highest-scoring approach. If two are tied, pick the simpler one.

### Step 4: Document the Decision (brief)

Add a comment at the top of the primary file:
```typescript
// Architecture decision: [approach name]
// Alternatives considered: [other names]
// Rationale: [1 sentence why this one won]
```

For significant decisions (new store, new service, new data model), also record in
`.llm/decisions.md` with the full scoring table.

## Anti-Patterns

- **Analysis paralysis**: Spending 20 minutes comparing approaches for a 10-minute task.
  If the task is small, skip brainstorming and just do it.
- **Phantom options**: Including an approach you'd never actually pick just to have 3 options.
  Two genuine options is better than three with one filler.
- **Ignoring the codebase**: Proposing an approach that conflicts with existing patterns.
  Always check what patterns the codebase already uses.
- **Premature optimization**: Picking the "fastest" approach when any approach is fast enough.
  Optimize for maintainability first.
- **Committee of one**: Brainstorming without constraints leads to scope creep.
  Always define constraints first.

## Integration with Other Skills

- If an approach requires research: use `/quick-research` inline
- If the decision involves UI: check `.claude/references/design-patterns.md`
- If the decision involves store shape: check `.claude/references/store-api.md`
- After deciding, proceed with TDD implementation per `do-todo` workflow

