Skip to content
Agentic Levels
  • New to AI?
  • Assessment
  • Levels
  • Lessons
  • Tracks
  • Resources
  • Reference
  • What's New
  • What's Next
  • More
    Tool SetupCompareAboutThanksFAQPricingPreferences
  • New to AI?
  • Assessment
  • Levels
  • Lessons
  • Tracks
  • Resources
  • Reference
  • Tool Setup
  • Compare
  • What's New
  • About
  • Thanks
  • FAQ
  • What's Next
  • Pricing

© 2026 Fuentes Studio·Privacy·Terms

yourCouncil
Ready to help
✦

What do you want to understand?

Ask anything about what you're learning.

L3Lesson 2

Plan Before You Code

After this, you'll be able to use plan mode to catch a model misunderstanding before it edits a dozen files, saving you the cost of undoing confident but wrong changes.

Before you start

Complete Tell the Model What to Look At first; this lesson builds on @ references so the plan the model produces is grounded in the actual files you pointed at.

The idea

Plan mode is the habit of asking the model to outline its approach before it writes a single line of code. Most agent IDEs have this as a first-class feature: in Cursor you can ask for a plan explicitly, in Claude Code you can say "think through this before you start." The model describes what it intends to do and you review it. Then you say go.

Here is the before and after: A developer asked Claude Code to "refactor the data layer to use the new API client." Claude produced a 3-bullet plan: update the fetch utility, update every call site, and update the tests. The developer read bullet 2 and realized the model had identified 12 call sites but missed the 3 in the admin panel (a separate subdirectory). That gap would have left the admin panel calling the old client silently. One plan review, 30 seconds, prevented a silent regression across three screens.

The cost asymmetry is dramatic. Reading a plan takes 30 seconds. Reviewing a plan that reveals a misunderstanding takes 2 minutes. Undoing 12 incorrect file edits because you skipped the plan takes 45 minutes and usually requires git reset. Plans are cheap. Unplanning is expensive.

Try it (18 min)

Watch out for

  • Skipping the plan on tasks that feel simple. Simple tasks have the most embarrassing regressions when the model guesses wrong about scope.
  • Approving the plan without reading it. If you do not read it, you do not have a plan, you just have extra tokens.
  • Asking for a plan and then letting the model immediately start coding in the same message. Explicitly say: "Write the plan only. Wait for my approval before writing any code."
  • Treating the plan as final. It is a starting point for a conversation. Push back on anything that looks off.
  • Only using plan mode for big tasks. A 3-bullet plan on a medium task catches the most common class of mistakes: wrong scope assumption.

Paste this into Claude:

I want to practice plan mode on a real task. Here is the task: [describe a change that touches more than two files, e.g. "add an email field to the User type, update the registration form, update the API endpoint that saves the user, and update the tests"]. Before you make any changes, write a plan: (1) List every file you will touch and what specifically changes in each one. (2) List the order you will make the changes, so nothing breaks mid-refactor. (3) Tell me what you are uncertain about or what you need clarified before you start. Do not write any code yet. I want to review the plan first.

What good looks like:

  • You received a plan listing specific files and specific changes before any code was written
  • You reviewed the plan and found at least one file or edge case the model identified that you had not thought of
  • You found at least one gap in the plan and corrected it before the model started coding
  • After approving the plan, the implementation required fewer back-and-forth correction turns than a typical unplanned task
  • You can explain in one sentence why reviewing a plan is cheaper than reviewing completed code

What a good response looks like:

Here is my plan for adding the email field across your project. I will not write any code until you approve this.

1. src/models/User.ts: Add `email: string` to the User interface after `username`. Mark it required.
2. src/api/users.ts: Update the `validateUserInput` helper to include email as a required field. Update the database insert on line 51 to include email. Add email to the `sanitizeUser` allowlist on line 67 (currently missing, which would silently drop it from API responses).
3. src/components/UserForm.tsx: Add a controlled email input following the existing useState pattern for username and password.
4. tests/api/users.test.ts: Update the user shape assertion on line 22. One existing test will fail without this.

Order: models first, then API, then UI, then tests. This order means no file references a type or field that doesn't exist yet.

Uncertainties before I start: Does the email field need to be unique in the database, or is that enforced elsewhere? And should the email be editable after registration, or is it set once at creation?

When this breaks

  • Breaks when the plan is too abstract to falsify ("update the relevant files, then update the tests") because there is nothing concrete to disagree with and the misunderstanding only surfaces in code.
  • Breaks when you approve the plan without listing your own expected file set first because the model's omissions read as completeness when you have no baseline to compare against.
  • Degrades when you treat the plan as a contract rather than a draft because the model keeps following a wrong premise even after you spot a gap mid-implementation.

Claude can do it for you

Before any multi-file task, say to Claude: "Before you write any code, give me a numbered plan: every file you will touch, what changes in each one, what order you will make them, and what you are uncertain about. Wait for my go-ahead before starting." That sentence is the whole habit.

You can now

Produce a plan for a multi-file change that lists every file, the specific edit in each, the order of changes, and at least one explicit uncertainty the model wants resolved before coding.

Key takeaways

30 seconds reading a plan is worth 45 minutes of undoing wrong code. Ask for the plan first. Always.

  • Plan mode forces the model to commit to a scope on paper before it commits one to code
  • The cost asymmetry is huge: 30 seconds of plan review beats 45 minutes of git reset
  • Demand specificity. Files, edits, order, and uncertainties. Vague plans hide the same scope errors you were trying to catch
  • A 3-bullet plan on a medium task catches the most common failure: the model and you disagreed about scope from the start

Go deeper

  • Anthropic Prompt Engineering: Chain of Thought
  • Claude Code memory and CLAUDE.md docs
  • 12-Factor Agents: own your context window