PRD Workflow in Cursor
Your PM drops a Slack message: “We need a notification system. Email, push, SMS. User preferences. Delivery tracking. Can you scope it?” You open Cursor and start typing code. Three hours later, you have half an email service, no tests, and a growing realization that you never thought through how SMS delivery confirmations would work. The PRD-to-Plan-to-Todo workflow exists to prevent exactly this. It forces you to think before you code, and it uses Cursor’s Plan mode to make that thinking fast and structured.
What You’ll Walk Away With
Section titled “What You’ll Walk Away With”- A repeatable 3-phase workflow: PRD, then Plan, then Todo — each using a different Cursor mode
- Cursor-specific shortcuts for switching between Plan mode and Agent mode at the right moments
- A PRD template you can paste into any new feature conversation
- The ability to save plans to
.cursor/plans/for team reference and future context
Phase 1: Write the PRD in Agent Chat
Section titled “Phase 1: Write the PRD in Agent Chat”The PRD does not need to be a 20-page document. It needs to be specific enough that you (and the AI) agree on what “done” looks like before any code gets written.
Open Agent mode (Cmd+I) and start by asking the AI to help you draft the requirements.
The key instruction at the end — “Ask me clarifying questions” — prevents the AI from making assumptions. It will ask about your existing infrastructure, authentication model, database setup, and volume expectations. Answer these questions. Every answer you provide here is context the AI uses to generate better code later.
PRD Quality Checklist
Section titled “PRD Quality Checklist”Before moving to Phase 2, make sure your PRD includes:
- Specific acceptance criteria, not vague goals. “Users can toggle email/SMS/push per notification type” not “users manage preferences”
- Error scenarios. What happens when SendGrid is down? When a phone number is invalid?
- Non-functional requirements. How many notifications per second? What is the acceptable delivery latency?
- Out of scope. Explicitly stating what you are not building prevents scope creep during implementation
Phase 2: Plan with Plan Mode
Section titled “Phase 2: Plan with Plan Mode”Now switch from Agent mode to Plan mode. Press Shift+Tab in the agent input to toggle to Plan mode. Cursor also auto-suggests Plan mode when it detects complex tasks.
In Plan mode, the agent will:
- Research your codebase to understand existing patterns
- Ask clarifying questions about implementation details
- Generate a detailed technical plan
- Wait for your approval before writing any code
Save the Plan
Section titled “Save the Plan”Once the plan looks right, save it to your workspace. Click “Save to workspace” in the plan output. This stores the plan in .cursor/plans/, which serves two purposes:
- Team documentation — other developers can read the plan before reviewing your PR
- Future context — you can reference the plan with
@in later conversations if you need to resume work
Iterate the Plan Before Building
Section titled “Iterate the Plan Before Building”This is the most underused step. Review the plan critically:
- Does the implementation order make sense? Can you start the frontend before the API is ready, or is there a hard dependency?
- Are there simpler alternatives the AI missed?
- Does the plan align with your existing architecture, or is it introducing new patterns unnecessarily?
Edit the plan in chat. Tell the agent what to change. Only move to Phase 3 when the plan is something you would confidently hand to a colleague.
Phase 3: Build from the Todo List
Section titled “Phase 3: Build from the Todo List”Switch back to Agent mode (press Shift+Tab or select from the mode picker with Cmd+.). Now work through the plan systematically.
-
Ask the agent to create a todo list from the plan
Convert the implementation plan into a markdown todo list with checkboxes.Group tasks by phase. Each task should be completable in 1-4 hours.Include acceptance criteria for each task. -
Start with the first task
Let's implement the first task: Create database migrations for thenotification tables. Follow our existing migration patterns in src/db/migrations/. -
Verify before moving on
Run the migration and show me the resulting schema.Then run our existing tests to make sure nothing is broken. -
Commit at milestones
After completing each phase, commit your changes. Cursor creates checkpoints automatically, but git commits give you a named, shareable restoration point.
-
Reference the plan for context
If the agent loses track of the bigger picture in a long conversation, start a new chat and reference the plan:
@.cursor/plans/notification-system.mdWe've completed phases 1 and 2. Let's start phase 3: implementing thedelivery workers. Begin with the EmailWorker.
Using Checkpoints for Safety
Section titled “Using Checkpoints for Safety”Cursor creates a checkpoint before every set of changes the agent makes. If a task goes off the rails:
- Press Escape to stop the agent mid-execution
- Click the Restore button next to the checkpoint in the conversation
- Refine your prompt and try again
This is faster than manually reverting files. Use it aggressively — there is no penalty for restoring a checkpoint.
The Workflow in Practice
Section titled “The Workflow in Practice”Here is what a real session looks like, compressed:
[Plan Mode] "I need to add Stripe webhook handling for subscription events.Our existing payment code is in src/services/billing/. Generate a plan."
[Plan Mode] Agent asks: "Do you want idempotent webhook handling?Do you already have a webhook_logs table?"
[Plan Mode] You answer: "Yes to idempotent handling. No webhook_logstable yet -- include that in the plan."
[Plan Mode] Agent generates plan with 4 phases, 12 tasks.
You review, adjust the order of two tasks, approve.
[Agent Mode] "Start with task 1: create the webhook_logs migration."Agent creates migration, runs it, shows schema.
[Agent Mode] "Task 2: create the webhook endpoint with signature verification."Agent implements, writes tests, runs them. Two tests fail.Agent fixes implementation, reruns. All green.
[Agent Mode] Repeat for remaining tasks...When This Breaks
Section titled “When This Breaks”The plan is too generic: This usually means your PRD lacked specifics. Go back to Phase 1 and add concrete acceptance criteria, technology choices, and constraints.
The agent diverges from the plan during implementation: Start a new chat, reference the plan with @, and give it a specific task from the todo list. Long conversations cause drift — short, focused conversations with explicit context produce better results.
The plan does not fit your architecture: The agent can only match patterns it has seen. If your architecture is unusual, add a project rule describing it (see Project Rules) and regenerate the plan.
Tasks take longer than estimated: The todo list is a guide, not a contract. If a task is larger than expected, ask the agent to break it into sub-tasks.