I kept hitting the same wall. I'd have a "perfect" app idea in my head, get excited, and start building from scratch with no real preparation. Halfway through, I'd get stuck — rewriting half the code and throwing away the other half.
For a long time I blamed the tools. But the problem wasn't the AI's code. It was me. When I didn't give Claude a proper plan, it designed things its own way: a different data model, a different structure than I had in mind. Then I'd spend the rest of the project chasing it and fixing things.
So I asked two communities how they write that first plan. The answers changed how I work. Here's the workflow I landed on.
1. Stop trying to write the perfect plan
The most freeing advice I got: keep the first spec ugly and short. I'd been frozen because I thought the design had to be perfect and cover everything. It doesn't — and it can't. An app isn't finished at the start; it's finished at the end, based on what the user actually needs. Everything changes along the way.
A good starting skeleton is just: user type, the main job, three to five screens, data objects, the ugly failure cases, and what not to build yet.
2. Write down what NOT to build
This was the part that surprised me most. I always thought you only describe what the app should do and how the agent should work. It never occurred to me to write down what it should not do.
That's exactly why the model kept inventing scope I never asked for. Lines like "no payments in v1" or "no social login yet" aren't documentation fluff — they're guardrails. The moment you remove them, the agent rediscovers the idea and spends your afternoon on it. So keep your non-goals in the spec until the thing ships, and move them into your CLAUDE.md so they stick across every prompt.
3. Don't write the plan alone — let the AI build it with you
Instead of forcing a flawless document out of my own head, I now let the plan emerge through a conversation. I describe the rough idea and ask the agent to flesh it out, propose the data model and screens, and ask me the questions it needs before writing anything.
One warning from experience: if you just let two models brainstorm freely, you end up with a huge document full of praise about how brilliant your idea is. Useless. The fix is to give the agent rules on how to push back. Always ask for pros and cons. Always ask for alternatives. Always ask why. If the AI agrees with everything, you're not getting a design partner — you're getting a cheerleader.
4. Use Plan Mode for the empty page
Here's the piece that tied it all together: Claude Code's Plan Mode works even when you have no code at all.
I used to think Plan Mode was only for changes inside an existing project. It's not. Open an empty folder, switch to Plan Mode (Shift+Tab), and describe your idea. Claude won't touch a single file — it explores, proposes a structure, and surfaces the decisions it would otherwise make silently. You review the plan, push back, and only approve it when it matches what's in your head.
That's the step I was missing. The decisions the agent used to invent for me now show up before a single line of code exists.
The workflow, end to end
- Open Plan Mode on an empty folder and describe the rough idea.
- Let the agent ask questions and propose a short, ugly spec.
- Demand pros, cons, and alternatives — make it challenge the idea.
- Ask what it would not build yet, and capture those non-goals.
- Move the permanent rules and non-goals into
CLAUDE.md. - Approve the plan, then build.
I'm not trying to write the perfect plan anymore. I bring the intent — the agent helps me find the plan. That one shift fixed the whole problem.
Top comments (1)
Interesting perspective. I'm curious how many developers actually maintain a living spec or CLAUDE.md throughout a project. It seems like most AI coding issues come from context drift rather than coding ability.