PRD to Plan to Todo: Structured Development in Claude Code
Your PM drops a two-page product requirements document in Slack. It describes a new notification system — email digests, in-app alerts, preference management, the works. You could start coding immediately and figure it out as you go. Or you could have Claude Code break it down into an architecture plan, decompose it into discrete tasks, and then implement each one systematically while tracking progress. The second approach ships faster and with fewer rewrites.
This guide shows you the Claude Code-specific workflow for going from requirements document to working, tested code.
What You’ll Walk Away With
Section titled “What You’ll Walk Away With”- A repeatable three-phase workflow: PRD analysis, plan generation, task-by-task implementation
- Prompts that produce structured plans instead of immediate (often wrong) code
- Understanding of Claude Code’s task tracking system
- A plan file you can share with your team for review before writing a single line
The Three-Phase Workflow
Section titled “The Three-Phase Workflow”Phase 1: Feed Claude the Requirements
Section titled “Phase 1: Feed Claude the Requirements”Start by giving Claude your requirements and explicitly asking for analysis, not implementation:
The key instruction is “before writing any code.” Without it, Claude often jumps straight to implementation. Being explicit about wanting analysis first produces dramatically better results.
Phase 2: Generate the Plan
Section titled “Phase 2: Generate the Plan”Once Claude understands the requirements, ask it to create a structured implementation plan:
Claude will produce a numbered plan with file-level detail. Review it, push back on anything that does not look right, and refine before moving forward.
Phase 3: Execute with Task Tracking
Section titled “Phase 3: Execute with Task Tracking”Claude Code has a built-in task tracking system. Ask Claude to convert the plan into tasks and then work through them:
Convert this plan into tasks and start implementing step 1.After completing each step, update the task status and moveto the next one. Wait for my approval after each major step.Claude will create tasks, implement each step, mark them complete, and move to the next. You can check progress at any time:
Show me the current task list with statuses.Plan Mode: Forced Planning
Section titled “Plan Mode: Forced Planning”Claude Code has a dedicated Plan mode that forces Claude to plan before acting. In Plan mode, Claude describes what it intends to do and waits for your explicit approval before making any changes.
In the VS Code extension: Click the mode indicator at the bottom of the prompt box and select “Plan.”
In the CLI: Use the /config command to switch to plan mode, or start with:
claude --permission-mode planIn Plan mode, Claude will:
- Analyze your request
- Produce a detailed plan listing all files and changes
- Wait for you to approve, modify, or reject
- Only then begin implementation
This is particularly useful for large features where you want to review the approach before any code is written.
Working with External PRD Files
Section titled “Working with External PRD Files”If your PRD is in a separate document, reference it directly:
Read @docs/prd-notification-system.md and create an implementationplan for the notification system described there. Do not write anycode yet -- I want to review the plan first.Or paste the requirements inline — Claude handles both approaches equally well.
Storing Plans for Team Review
Section titled “Storing Plans for Team Review”Claude Code can save plans to files for team review:
Save this implementation plan to ./plans/notification-system.mdso my team can review it before we start coding.You can configure a custom plans directory in settings:
{ "plansDirectory": "./plans"}This is useful for teams that want to review implementation plans in pull requests before the actual implementation begins.
Real Example: Notification System
Section titled “Real Example: Notification System”Here is how the workflow looks for a real feature:
You:
I need to add an email notification system. Users should be able to:- Set notification preferences (email frequency: immediate, daily digest, weekly)- Receive notifications for: new comments, mentions, task assignments- Unsubscribe from specific notification types- View notification history in the app
We use Next.js with Drizzle ORM and Resend for email.Claude produces:
- Analysis identifying that you need a notifications table, a preferences table, email templates, and a cron job for digests
- Architecture plan with specific files to create and modify
- Task list:
- Task 1: Database schema (notifications, notification_preferences tables)
- Task 2: Preference API endpoints (GET/PUT /api/notifications/preferences)
- Task 3: Notification creation service
- Task 4: Email templates (immediate, daily digest, weekly digest)
- Task 5: Digest cron job
- Task 6: Notification history UI component
- Task 7: Unsubscribe handler
- Task 8: Tests for each component
You review, approve, and Claude starts implementing task by task.
Iterating on Plans
Section titled “Iterating on Plans”Plans are not set in stone. Common adjustments during review:
Move task 5 (cron job) to a later phase. For now, only implementimmediate notifications. Also, add input validation to task 2.Task 3 looks too big. Break it into separate tasks for eachnotification type (comments, mentions, task assignments).Claude adjusts the plan and task list accordingly.
When This Breaks
Section titled “When This Breaks”Claude jumps to code instead of planning — You were not explicit enough. Always include phrases like “do not write any code yet” or “I want to review the plan first.” Plan mode also prevents this by design.
The plan is too vague — Ask for more detail: “For task 3, tell me exactly which functions you will create, what their signatures will be, and how they connect to existing code.”
Tasks get out of order — If Claude starts implementing a task that depends on an unfinished one, interrupt and redirect: “Stop. Task 4 depends on task 2 which is not complete. Go back and finish task 2 first.”
Plan does not match your architecture — This usually means your CLAUDE.md is missing architectural details. Add patterns like “all database queries go through the repository pattern” or “use server actions, not API routes” to guide the plan.
What’s Next
Section titled “What’s Next”For complex architectural decisions within your plan, use extended thinking to get Claude’s deepest reasoning.