Skip to content

Plan with Cursor: an accepted plan before any code

The Cursor planning section is three guides for developers and tech leads that turn a goal into an accepted plan before the agent edits any file: starting a new project, designing a database schema, and choosing an architecture. Each guide uses Plan Mode, which Cursor describes as creating “detailed implementation plans before writing any code”.

You asked Cursor’s agent for “team invitations”, and an hour later the branch holds 30 changed files built on a roles table nobody agreed on. The code compiles; the shape is wrong. Planning moves your review to a one-page plan with testable acceptance criteria, and the diff is checked against that contract.

Prerequisite: Cursor installed and signed in, and your test, lint and type-check commands written into a project rule. If you have not done that yet, start with the Cursor quick start.

Your situationStart withWhat you leave with
You are starting from an empty directory with a rough product briefStart a new project with Cursor’s agentA written PRD, project rules, and a running scaffold committed to Git
Your feature needs new tables, or you are changing a schema that holds dataDesign a database schema with Cursordocs/data-model.md, constraint tests and reversible migrations
You must choose between designs, or split or migrate a systemDesign system architecture with Cursor’s agentA signed ADR, a rule that carries it, and CI checks that enforce it
You have a feature request inside an existing codebaseTurn a PRD into a plan in CursorA plan and a todo list the agent works through

Use this sequence in any of the guides above. A plan is worth accepting only when a tool can check every claim in it.

  1. Put the goal and its constraints in a file, such as docs/intents/FEATURE.md, so the plan has a source you can point at. The plan stage of the method defines what that intent file holds.
  2. Open a new chat and switch the agent to Plan Mode. Paste the first prompt below. The agent reads code and writes a plan, ending with the open questions the prompt asks for; it edits nothing.
  3. Answer the open questions in the intent file, not in chat, then ask for a revised plan.
  4. Run the second prompt so a second pass attacks the plan before you accept it.
  5. Leave Plan Mode and ask the agent to save the accepted plan as docs/plans/FEATURE.md before its first edit.
  6. Build from that file one milestone at a time, on its own branch or worktree; see checkpoints and branching.

How do you check the result without reading every line?

Section titled “How do you check the result without reading every line?”

The plan becomes the contract, and gates check the code against it:

  • Tests first. Each acceptance criterion names a test that fails before the change. A red-to-green run is evidence the behaviour changed; see executable acceptance criteria.
  • Scope. The diff touches only files in the plan’s scope list. git diff --stat main...HEAD shows that in one screen.
  • Machine gates. Type check, lint and the full suite are required CI checks; the agent’s local run is only a preview.
  • Sign-off. The developer accepts a feature plan; a tech lead accepts any plan that changes an architecture decision. After the build, reviewers read the plan, the test names and the CI result, and open the diff only where the evidence bundle is thin.

The reasoning behind this shift is in evidence, not diffs.

What goes wrong when you plan with Cursor?

Section titled “What goes wrong when you plan with Cursor?”
SymptomLikely causeRecovery
The plan is a generic outlineThe prompt named a goal, not sections and constraintsUse the first prompt and point it at the intent file
The plan cites functions that do not existClaims written from assumptionRun the review prompt and reject any plan with a wrong citation
The agent edited files during planningThe chat was not in Plan ModeDiscard the edits with git restore . (or git stash), then restart the chat in Plan Mode; see checkpoints and branching for Cursor’s own undo
Implementation drifts from the planThe plan lived only in chatSave it to docs/plans/, and start each build chat with “Follow docs/plans/FEATURE.md; stop and ask before deviating”
Each new chat re-litigates settled choicesDecisions were never written where the agent reads themRecord them in an ADR and a project rule, as the architecture guide shows