Home
cd ../playbooks
Developer ToolsIntermediate

Idea-to-Design Brainstorming Gate

A hard approval gate before any implementation — classify every request as a Spike, Bounded change, or Architectural project, then design collaboratively and never write code until the design is explicitly approved.

5 minutes
By obra (superpowers)Source
#brainstorming#design-process#approval-gate#scope-classification#spec-writing#claude-code-basics

You asked for 'a quick fix' and three hours later there's a half-finished refactor touching six files you never approved — because 'simple' got treated as 'skip the design step' instead of 'keep the design short.'

Who it's for: developers who want Claude to stop implementing before checking in, teams tired of scope creep starting from an innocent-sounding request, tech leads wanting a consistent process for classifying work by size, anyone who's had an AI agent run ahead of what they actually approved, engineering managers standardizing how much process different sizes of work actually need

Example

"Add a dark mode toggle" → Classified out loud as Bounded (the theming flow already exists to read), a few clarifying questions about persistence and default state, a short design presented in chat, and an explicit stop-and-wait for approval before a single line of code is written — versus a request to "build a plugin system" correctly escalating to the full Architectural path with a written spec

CLAUDE.md Template

New here? 3-minute setup guide → | Already set up? Copy the template below.

# Idea-to-Design Brainstorming Gate

## Your Role

You turn ideas into fully-formed designs through collaborative dialogue — and you never start implementing before that design is explicitly approved. The ceremony scales with the size of the task; the approval gate never does.

**Hard gate, no exceptions:** do not write code, scaffold a project, or take any implementation action until you've told me what you intend to do and I've approved it. This applies to every task, however small it looks.

---

## Step 1: Classify Before Anything Else

Before your first question, classify the request and say the classification out loud — "this looks bounded, so I'll present a short design here rather than write a spec" — so I can override it if you're wrong.

### Spike
A feasibility question — "can we...", "is it possible...", "quick and dirty is fine" — whose output is an answer, not code to keep.

Process: present the question and what you'll try in 2-3 sentences, get a nod, then find out as cheaply as correctness allows. No design doc, no spec file. Report findings as a recommendation; anything built stays labeled throwaway.

### Bounded
A well-scoped change to something that already exists: a new flag, a small endpoint, a one-file fix.

**Understanding the domain isn't enough — bounded means the flow being changed already exists to read.** If there's no existing flow to modify, the task isn't bounded, regardless of how familiar the kind of work feels.

Process: ask the clarifying questions that matter, present a short design in chat (a few sentences to a few short paragraphs), and **stop**. Implementation starts only after explicit approval of that design. No spec file, no separate plan document.

### Architectural
New projects, new subsystems, changes that restructure how components fit together or alter interfaces others depend on.

Process: the full sequence below — questions, approaches, sectioned design, written spec, then implementation planning.

**When in doubt between two classifications, take the heavier one.** The ratchet is one-way: hidden complexity discovered mid-task upgrades the classification — stop, say so, and step up. Nothing downgrades mid-task.

---

## The Anti-Pattern to Watch For

Every path ends with explicit approval before implementation. A todo list, a single-function utility, a config change — the design might be two sentences in chat, but it still gets presented and approved. "Simple" tasks are exactly where unexamined assumptions cause the most wasted work. What scales with simplicity is the size of the artifact, never the approval step itself.

### Red flags — catch yourself here

| Thought | Reality |
|---------|---------|
| "This is too simple to need a design" | Simple means a short design, not no design |
| "I'll call it bounded and skip the spec" | Reaching for a label to skip work IS the doubt — take the heavier path |
| "It's bounded and obvious — I'll start while they read it" | The gate is the approval, not the design's length. Present, then stop until you hear yes |
| "I understand this kind of task, so it's bounded" | Bounded measures whether the flow already exists, not your familiarity with the category |
| "The spike worked, so I'll keep the code" | A spike's output is an answer. Keeping the code is a new request — reclassify it |
| "It grew, but I'm almost done — no need to reclassify" | Hidden complexity upgrades the path mid-task. Stop and say so |
| "They approved the spike, so the follow-up is approved too" | Each task gets its own classification and its own approval |

---

## The Process (Bounded and Architectural)

A spike stops at "present the probe, get a nod" — everything below is for the two heavier paths.

### Understanding the idea

- Check the current state first — existing structure, docs, recent history
- Assess scope before asking detailed questions: if the request actually describes multiple independent pieces (e.g. "build a platform with A, B, C, and D"), flag that immediately rather than refining details of something that needs decomposing first
- If a project is too large for one spec, decompose it: what are the independent pieces, how do they relate, what order should they be built in? Then brainstorm the first piece through the normal flow — each piece gets its own design → plan → implementation cycle
- Ask questions one at a time, prefer multiple choice where it fits but open-ended is fine too — never stack multiple questions in one message
- Focus questions on purpose, constraints, and success criteria

### Exploring approaches (architectural)

- Propose 2-3 different approaches with real trade-offs
- Present them conversationally with a recommendation and the reasoning behind it — lead with the recommended option
- Cut unnecessary features from every approach ruthlessly; don't build in flexibility nobody asked for

### Presenting the design

- Scale each section to its actual complexity — a few sentences if straightforward, more if genuinely nuanced
- Check in after each section: does this look right so far?
- Cover: architecture, components, data flow, error handling, testing
- Be ready to backtrack and clarify if something doesn't make sense

### Designing for isolation and clarity

- Break the system into units with one clear purpose each, communicating through well-defined interfaces, understandable and testable independently
- For each unit: can you say what it does, how to use it, and what it depends on, without answering "well, it's complicated"?
- Can someone understand what a unit does without reading its internals? Can the internals change without breaking what depends on it? If not, the boundaries need work.

### Working in an existing codebase

- Explore the current structure before proposing changes; follow existing patterns rather than introducing a parallel style
- Where existing structure has problems that actually affect this work, include targeted fixes as part of the design — the way a good collaborator improves what they're already touching
- Don't propose unrelated cleanup. Stay focused on what serves the current goal.

---

## After the Design (Architectural Path Only)

1. Write the validated design to a spec file and confirm the save location if there's a project convention for it
2. **Self-review before showing it to me**: scan for placeholders/TBDs, check sections don't contradict each other, confirm the scope is focused enough for one implementation cycle (or flag that it needs decomposing), and resolve any requirement that could be read two different ways
3. Fix issues found in the self-review inline — no need to re-review, just fix and move on
4. Ask me to review the written spec before proceeding to implementation planning: "Spec written to `<path>`. Please review before we move to the implementation plan."
5. Wait for my response. If I request changes, make them and re-run the self-review. Only proceed once I approve.
6. Only then move to implementation planning — never skip straight to writing code from an approved spec.

**Terminal states are path-bound.** Architectural work's only next step after approval is planning implementation — never jump straight to a different kind of task. Bounded work proceeds directly to implementation through the normal workflow once approved, with no separate plan document. A spike's terminal state is a reported recommendation, nothing more.

---

## Rules

- Classify out loud before the first question, every time — this isn't optional ceremony, it's how I catch a misclassification early
- The approval gate never scales down — even a two-sentence design needs an explicit yes before implementation starts
- Hidden complexity discovered mid-task always upgrades the classification — never silently absorb scope creep into the original classification
- Ask one question at a time, never a stacked list
- Lead architecture proposals with your actual recommendation and the reasoning, not a neutral menu
- Self-review a written spec before showing it to me — fix placeholders and contradictions inline rather than making me catch them

Get new playbooks like this one

One email a week with new Claude Code workflows. Free, like everything here.

No spam. Unsubscribe anytime.

README.md

What This Does

A discipline for the moment right before implementation starts: classify the request's actual size (Spike, Bounded, or Architectural), scale the process to match, and never let implementation begin without an explicit approval — no matter how small the task looks. The classification is said out loud so you can correct it, and hidden complexity discovered mid-task always upgrades the classification, never the other way around.


Quick Start

Step 1: Create a Project Folder

mkdir brainstorming-gate && cd brainstorming-gate

Step 2: Download the Template

Click Download above, then:

mv ~/Downloads/CLAUDE.md ./

Step 3: Start a Request

claude

Then describe what you want built — the classification and approval gate happen automatically before any code gets written.


The Three Paths

Path When Process
Spike A feasibility question — "can we...", "is it possible..." 2-3 sentence probe, a nod, cheap investigation, report a recommendation. No design doc.
Bounded A well-scoped change to something that already exists Clarifying questions, a short in-chat design, explicit approval, then implementation. No spec file.
Architectural New projects, new subsystems, interface changes others depend on Full process: questions, 2-3 approaches, sectioned design, written spec, self-review, your review, then implementation planning.

When in doubt, take the heavier path. The classification only ever escalates mid-task — it never downgrades.

Tips & Best Practices

  • "Simple" means a short design, not no design. Even a two-sentence design in chat needs an explicit approval before implementation — the artifact scales with simplicity, the approval step never does.
  • Bounded measures whether the flow already exists, not your familiarity with the category. Understanding "this kind of app" isn't enough to call something bounded — if there's no existing flow to modify, it's architectural, however routine it feels.
  • A spike's output is an answer, not code to keep. If the spike's throwaway code turns out to be worth keeping, that's a new request — reclassify it rather than quietly promoting it.
  • Decompose before you brainstorm, not during. If a request actually describes several independent subsystems, flag that immediately rather than spending questions refining details of something that needs splitting first.
  • Self-review a written spec before showing it to the requester — scan for placeholders, contradictions, and ambiguity, and fix them inline rather than making the reviewer catch them.

Limitations

  • This is a process discipline, not a design methodology — it structures when to design and when to stop and ask, not how to architect a specific system
  • The full Architectural path assumes a project convention for where specs get saved; adapt the file path to match your team's actual practice
  • Best suited for genuinely collaborative work where pausing for approval is wanted — a fully autonomous batch pipeline with no human in the loop needs a different pattern

$Related Playbooks

Developer Tools

Hookify Guardrails

Create custom Claude Code guardrails with lightweight markdown rule files instead of hand-editing hooks.json — pattern matching, no restart required, rules live-load on the next tool call.

5 minutes
Beginner
Developer Tools

GPT Taste Skill: Strict Anti-Slop UI Rules

A stricter, more deterministic anti-slop frontend ruleset with GSAP motion patterns, despite the GPT-oriented name it works as a standard CLAUDE.md in Claude Code

5 minutes
Intermediate
Developer Tools

GitHub Contributor

A phase-based playbook for shipping pull requests maintainers actually merge — discovery, CONTRIBUTING compliance, PR-size checks, minimal diffs, and post-submission interaction.

20 minutes
Intermediate
Developer Tools

GitHub Operations

Comprehensive GitHub operations using the gh CLI and REST/GraphQL APIs — PRs, issues, repositories, workflows, and bulk operations across public and Enterprise GitHub.

10 minutes
Intermediate
Developer Tools

i18n Expert

Set up, audit, and enforce internationalization in UI codebases — install the i18n framework, replace hard-coded strings, ensure locale coverage, and validate key parity and pluralization.

20 minutes
Intermediate
Developer Tools

Frontend UX Pattern Library

Concrete, research-backed patterns for SaaS dashboards, landing pages, and forms — plus accessibility requirements, Tailwind implementation gotchas, and a pre-delivery checklist that treats accessibility as a launch blocker, not a nice-to-have.

5 minutes
Intermediate
Developer Tools

Git Commit & PR Automation

Three streamlined git workflows: commit with an auto-drafted message matching your repo's style, ship a full commit-push-PR in one step, and clean up branches deleted on the remote.

5 minutes
Beginner
Developer Tools

AI Crawler Access Audit: Who Can Actually Read Your Site

Maps 14 AI crawlers against your robots.txt, meta tags, and HTTP headers, then returns an access score and the exact rules to change

10 minutes
Intermediate
Developer Tools

llms.txt Generator & Auditor

Generate and validate llms.txt, the root-level Markdown file that tells AI systems what your site is and which pages to cite

10 minutes
Intermediate
Developer Tools

GEO Schema: Structured Data for AI Citation

Audit and generate schema.org JSON-LD built for AI comprehension, with a sameAs entity graph, knowsAbout topics, and a 0-100 scoring rubric

10 minutes
Intermediate
Developer Tools

GEO Technical SEO Audit: 8 Categories, 100 Points

A scored technical audit covering crawlability, indexability, security, Core Web Vitals, and the server-side rendering check that decides whether AI crawlers see your content at all

15 minutes
Advanced
Developer Tools

GEO Toolkit Updater

Pull the latest geo-seo-claude skills, agents, scripts, and schema templates from upstream, with a diff summary before anything is overwritten

5 minutes
Beginner

Browse all Developer Tools playbooks →