~/idea-to-plan.md zeroemdashes.com
Claude Code · AI Workflow

From idea
to plan.

How to take a raw idea and turn it into a reviewed spec and a build-ready implementation plan, without writing a line of production code until the thinking is done.

A worked example

This guide accompanies Spec-Driven Development for Dummies: Go Beyond Vibe Coding, a free Maven lightning lesson:

maven.com/p/424204/spec-driven-development-for-dummies-go-beyond-vibe-coding

Future free sessions are on the calendar at zeroemdashes.com/maven.

The principle

Resist the urge to build.

The fastest way to waste an afternoon is to start coding a feature you haven't designed. Unexamined assumptions are cheapest to fix while they're still words on a screen, and most expensive once they're baked into files and tests.

This guide walks the exact path one session took: from "let's brainstorm some new skins for my game" to a committed spec and a ten-task, test-driven implementation plan. The example is a visual skin for a Flutter game, but the process is the point, not the skin.

The shape of it
Each phase produces an artifact the next phase depends on. Idea → questions → mockups → spec → review → plan. Nothing irreversible happens until the very end, so every assumption gets caught while it's still cheap.
01
Brainstorm
02
Show it
03
Spec it
04
Self-review
05
Agent review
06
Plan it
The six phases
01
Phase 01 of 06
Brainstorm the idea first
What it is

Before any code, a structured back-and-forth that turns a vague idea into a concrete design. The rule that makes it work: one question at a time. Multiple-choice where possible, open-ended where needed, always building on the last answer. The process skill runs first and decides how to approach everything after it.

How it runs
What happened in the session

The idea started as "brainstorm new skins." The first direction offered (elemental, urban, organic, dark-fantasy) got rejected outright. Then "something blue, underwater", but a near-identical skin was already specced, so the next question surfaced that overlap instead of charging ahead. That redirected to green / nature → jungle → dappled canopy. Each turn narrowed by exactly one decision.

Why one question at a time
A wrong assumption caught on question two saves every question built on top of it. The "underwater" turn is the proof: surfacing the existing overlap killed a duplicate before it cost anything.
02
Phase 02 of 06
Show it, don't describe it
What it is

A visual companion: a local browser page where mockups, palette swatches, and side-by-side options render live. It's a tool, not a mode. Accepting it means it's available. Every question still gets decided on its own merits.

The test for every question
What happened in the session

Theme clusters, jungle moods, four Snark designs, three ground treatments, and the final three-part design were all shown as rendered mini-scenes with real colour. Picking became pointing at a card. Scope and approach questions, like which background technique to use, stayed in the terminal as plain trade-off lists.

# a visual question, rendered as cards in the browser
Dappled Canopy  · daylight shafts, lime/jade, warm
Night Jungle    · pitch-dark, fireflies, electric lime
Tropical Rain   · rainfall, teal-green, moody

# a conceptual question, kept in the terminal
A) animated shafts + pollen  (recommended)
B) leaf parallax + pollen
C) static scene, heavy pollen
The payoff
You catch "that's not what I pictured" in seconds, not after it's built. Seeing a wrong option is faster than reading a right description.
03
Phase 03 of 06
Write the spec, then commit it
What it is

Once the design is agreed section by section, it gets written down as a real document and committed to git. The spec is the contract: colour values, file names, behaviours, and acceptance criteria, all explicit. No "TBD", no "handle edge cases."

What happened in the session

The validated design became a dated spec file with a palette table, per-component rendering notes, a full file list, and a checklist of acceptance criteria. It was committed before any review so there was a clean baseline to diff against.

docs/superpowers/specs/
  2026-06-12-canopy-skin-design.md  → committed
Why commit before reviewing
A committed baseline means every fix afterwards is a visible diff. You can see exactly what the review changed.
04
Phase 04 of 06
Self-review with fresh eyes
What it is

An immediate, manual pass over the spec you just wrote, against a fixed checklist. Cheap, fast, and it catches the obvious before a heavier review spends effort on it.

The four checks
What happened in the session

The self-review confirmed the two pollen systems were intentionally distinct, all colours were explicit hex, and scope was a single skin. It read clean, which is exactly the point. The cheap pass clears the deck so the expensive pass finds the real problems.

The limit of self-review
You can't catch what you can't see. A spec can read perfectly and still reference an enum value or a method that doesn't actually exist in the codebase. That's the next phase's job.
05
Phase 05 of 06
Send a subagent to review it
What it is

A specialist agent reads the spec and the real source files it depends on, then reports blocking issues versus suggestions. It has fresh context and no attachment to the spec, so it checks claims the author takes for granted.

What happened in the session

An engineering-review agent read the spec alongside the actual interface and the reference implementation. It returned a YELLOW verdict with three hard blockers, every one of them a thing that reads fine but cannot be built as written.

Verdict: YELLOW
3 blockers · fix before implementation
remainder · resolve in-flight

All three were fixed in the spec and re-committed as a separate diff, so the correction history is legible.

Why this phase earns its keep
Three blockers caught here cost a few edits. The same three caught mid-build cost a developer a confused hour each, then a re-review. Fresh, codebase-aware eyes find what the author is blind to.
06
Phase 06 of 06
Turn the spec into a plan
What it is

The corrected spec becomes a step-by-step implementation plan written for someone with zero context. Bite-sized tasks, test-driven, full code in every step, a commit at the end of each. No "implement the rest" hand-waving.

The grain of a task
Step 1 write the failing test
Step 2 run it to confirm it fails
Step 3 minimal code to pass
Step 4 run it to confirm it passes
Step 5 commit
What happened in the session

The spec became a ten-task plan, each task a single file or behaviour, every step carrying the actual code to paste. A final self-review against the spec caught two colour overrides the plan had missed and added them before the plan was committed.

Why this much detail
A plan this concrete can be handed to a fresh agent per task, or executed in one sitting. Either way the thinking is already done. Building becomes transcription, not invention.
What you end up with

Every phase leaves an artifact.

The idea becomes a chain of committed, reviewable files. Pick up the thread anywhere.

idea
"new skins for my game", one line in the terminal.
mockups
Rendered options in the browser. The design, agreed visually.
spec.md
Committed contract: palette, files, acceptance criteria.
review fixes
Separate diff: 3 blockers corrected, history legible.
plan.md
10 TDD tasks, full code, ready to build.
Human in the loop

Always review spec.md and plan.md.

A human reads and approves the two artifacts that carry every decision, the spec and the plan, before any code is built. The AI drafts. You decide.

Vibe coding
80%
20%
80% AI building, often the wrong thing. 20% you course-correcting after the fact.
Spec-driven development
80%
20%
80% defining the spec up front. 20% AI building the right thing, once.
"Reading's fine. Watching a human do it live is better."
zeroemdashes.com/maven →
Snark · resident commentary
idea-to-plan / guide zeroemdashes.com