ccc-brainstorm · git:20261013.fbe187d · 2026-10-13 · sha256 b507b78f64cc6d21

ccc-brainstorm git:20261013.fbe187dA

Immutable. This exact content never changes and is served at /api/v1/blob/b507b78f64cc6d21.

---
name: ccc-brainstorm
description: "Design-first ideation gate: three parallel agents propose a simple, a scalable and a user-delight approach, rendered as a tradeoff matrix, then you pick a direction. No code is written. Use when the user asks how to build X, which approach to take, is torn between options, or types /ccc-brainstorm."
allowed-tools:
  - Agent
  - AskUserQuestion
  - Bash
  - Read
argument-hint: "[\"feature idea or design question in quotes\"]"
model: sonnet
effort: medium
---

# /ccc-brainstorm — three options before code

**CC Commander** · /ccc-brainstorm · three distinct approaches, a tradeoff matrix, and one locked decision before any spec or code.

Adapted from superpowers/brainstorming (MIT licensed).

## When to use / when not to

- Use for "how should I build X", "which approach should I take", "I'm torn between X and Y", "help me decide on auth / DB / design system / API shape", "explore options for", "what are my choices for".
- Skip for a bug with an obvious fix (`/ccc-review`, or just fix it), a standard pattern with a known answer, a task with one correct answer (`/ccc-plan` directly), or a mid-implementation pivot where switching costs more than the decision is worth.

## What happens

### 1. Capture the question

If an argument was given, it is the topic. Otherwise ask with the topic picker under Decision points; when the user picks a category, ask for the specifics in one plain sentence.

### 2. Gather light context (optional)

When the topic is about the current codebase, read what grounds the options and nothing more:

```bash
git rev-parse --show-toplevel 2>/dev/null && ls
cat package.json 2>/dev/null | head -40
```

Read `CLAUDE.md` or the directly relevant source with `Read`. Summarize the stack in two or three lines for the agents.

### 3. Spawn three agents in parallel

Send three `Agent` calls in one message (`subagent_type: "general-purpose"`, `model: "sonnet"`, `effort: "medium"`). Each gets:

```
Topic: {topic}
Codebase context: {stack summary, or "none"}
Return: name (5 words max), summary (2-3 sentences), pros (3 bullets), cons (3 bullets),
risks (1-2 bullets), reversibility (easy | medium | hard), est_hours (number), best_for (one line).
```

Plus the lens:

- **Agent A — simplest possible:** "Propose the most direct, boring, fewest-moving-parts solution. No abstractions, no future-proofing."
- **Agent B — scalable:** "Propose what you would build expecting 10x load or scope within 12 months."
- **Agent C — user delight first:** "Propose what a product designer focused on the developer or end-user experience would build, setting infrastructure cost aside for now."

Wait for all three. If one fails or returns an unusable shape, re-run that one agent once; do not proceed with fewer than three.

### 4. Render the tradeoff matrix

```
| Criterion      | Path A (Simple) | Path B (Scalable) | Path C (Delight) |
|----------------|-----------------|-------------------|------------------|
| Implementation | <est_hours> h   | <est_hours> h     | <est_hours> h    |
| Reversibility  | easy/medium/hard| ...               | ...              |
| Top pro        | ...             | ...               | ...              |
| Top con        | ...             | ...               | ...              |
| Top risk       | ...             | ...               | ...              |
| Best for       | ...             | ...               | ...              |
```

The matrix is reference material; the decision picker captures the choice.

### 5. Ask for the direction

Ask with the direction picker under Decision points.

### 6. Lock the decision

Output exactly:

```
## Decision
**Chosen path:** <name>
**Key tradeoff accepted:** <one sentence: what is given up and why it is worth it>
**Next step:** /ccc-plan to write a spec, or /ccc-build to scaffold
```

Worked examples: [references/examples.md](references/examples.md).

## Decision points

Topic picker (step 1, only when no argument). Put the category the conversation suggests first, marked 🟢; default to new feature design:

```
question: "What are we brainstorming?"
header: "Brainstorm"
multiSelect: false
options:
  - label: "💡 New feature design"
    description: "Explore approaches to a feature idea before writing any code."
  - label: "🏗️ Architecture choice"
    description: "Schema, service boundary, auth strategy, data model."
  - label: "🎨 UI/UX decision"
    description: "Layout, component library, interaction model, visual system."
  - label: "📊 Choosing between known approaches"
    description: "You already have 2-3 candidates and want a rigorous comparison."
```

The picker's built-in "Other" covers a free-form topic.

Direction picker (step 5). Put the path that best fits the user's stated constraints first, marked 🟢, with a one-line reason:

```
question: "Three paths explored. Which direction?"
header: "Direction"
multiSelect: false
options:
  - label: "Path A — <simple name>"
    description: "<Agent A summary, one line>"
  - label: "Path B — <scalable name>"
    description: "<Agent B summary, one line>"
  - label: "Path C — <delight name>"
    description: "<Agent C summary, one line>"
  - label: "🔄 Hybrid or re-run"
    description: "Mix elements, or re-brainstorm under a different lens (cost, speed, risk)."
```

On "Hybrid or re-run", ask in one plain sentence which parts to combine or which constraint to change, then go to step 6 (hybrid) or step 3 (re-run).

## Done when

- Three agent results were returned and the matrix rendered with all three columns filled.
- The Decision block was printed with a chosen path and an accepted tradeoff.
- `git status --porcelain` shows no change made by this skill.

## Guardrails

- Never write code, create files or edit the repository; this skill only decides.
- Never short-circuit to one or two agents; three distinct lenses are the point.
- Never present the matrix as the decision; the user's pick is.
- The agents run on `sonnet`; the user's selected session model is preserved.
- On Codex: ask the pickers as plain-text questions, and run the three lenses as three `codex exec` calls or sequentially in-thread.

## See also

- `/ccc-plan` — turn the chosen path into a plan with evals
- `/ccc-debate` — stress-test a chosen design with adversarial lenses
- `/ccc-research` — gather outside evidence before choosing
- `/ccc-build` — scaffold once the direction is locked

---

> ⚙️ **Fable contract:** plan before build · verifier ≠ worker · prove before alarm · loops need gates · leave durable state — `rules/fable-method.md`