docs/PLAN-PRD-PATTERN.md
A lightweight, SDLC-aligned planning workflow where each phase of the lifecycle produces a committable markdown staging file that the next command consumes.
Short version:
/plan-prdwrites a PRD,/planwrites a plan, thetdd-workflowskill implements it, and/prships it. Each arrow is a file on disk, not a conversation in memory.
Every planning artifact is a plain .md file under .claude/:
.claude/
prds/ # Product Requirements Documents from /plan-prd
plans/ # Implementation plans from /plan
reviews/ # Code review artifacts from /code-review
These files are:
$ARGUMENTS, so the toolchain composes via paths rather than in-context state.┌───────────────────────────┐
│ /plan-prd "<idea>" │ Requirements phase
│ → .claude/prds/X.prd.md │ Problem · Users · Hypothesis · Scope
└─────────────┬─────────────┘
│
▼
┌───────────────────────────┐
│ /plan <prd-path> │ Design phase
│ → .claude/plans/X.plan.md│ Patterns · Files · Tasks · Validation
└─────────────┬─────────────┘
│
▼
┌───────────────────────────┐
│ tdd-workflow skill │ Implementation phase
│ → code + tests │ Test-first, minimal diff
└─────────────┬─────────────┘
│
▼
┌───────────────────────────┐
│ /pr │ Delivery phase
│ → GitHub PR │ Links back to PRD + plan
└───────────────────────────┘
Each box is a gate. You can:
/plan free-form text and ignore /plan-prd./plan "refactor X" produces a conversational plan with no artifact./plan-prd Is Additional to /planThey answer different questions. Mixing them causes scope creep.
| Command | Answers | SDLC Phase | Artifact |
|---|---|---|---|
/plan-prd | What problem? For whom? How do we know we're done? | Requirements | .claude/prds/{name}.prd.md |
/plan | What files, patterns, and tasks satisfy the requirement? | Design + Implementation strategy | .claude/plans/{name}.plan.md (PRD mode) or inline (text mode) |
/prp-prd → /prp-plan pair demonstrated (8-phase interrogation with implementation-phase tables mixed into requirements)./plan alone is enough. Forcing a PRD on every change is bureaucracy.Use /plan-prd when:
Use /plan directly when:
/plan and skip /plan-prd.# 1. Draft the PRD
/plan-prd "Per-user rate limits on the public API"
# → .claude/prds/per-user-rate-limits.prd.md created
# Answer the framing questions, provide evidence, define hypothesis and scope.
# 2. Pick the next pending milestone and produce a plan
/plan .claude/prds/per-user-rate-limits.prd.md
# → .claude/plans/per-user-rate-limits.plan.md created
# The plan includes patterns to mirror, files to change, and validation commands.
# PRD's Delivery Milestones table updates the selected row to `in-progress`.
# 3. Implement test-first
Use the tdd-workflow skill
# 4. Open the PR
/pr
# → PR body auto-references .claude/prds/... and .claude/plans/...
/plan "Add retry with exponential backoff to the notifier"
# Conversational planning, no artifact.
# Confirm, then use the tdd-workflow skill.
# PRD was written by someone else, lives in your repo
/plan docs/rfcs/0042-rate-limiting.prd.md
/plan detects any .prd.md path and switches to artifact mode, parsing the Delivery Milestones table.
/plan programmatically picks the next pending milestone; /pr programmatically links artifacts in the PR body. No prompt engineering required./plan-prd — requirements (this pattern entry point)./plan — planning (consumes PRDs or free-form text).tdd-workflow skill — test-first implementation./pr — open a PR that references PRDs and plans./code-review — reviews local diffs or PRs; auto-detects .claude/prds/ and .claude/plans/ as context.This pattern adds ECC-native staging-file commands alongside the existing prp-* command set. The legacy PRP commands remain available for deeper PRP workflows and for users who already have .claude/PRPs/ artifacts.
/plan-prd is the lean requirements entry point for .claude/prds/./plan can consume .prd.md files and produce .claude/plans/ artifacts without requiring the legacy PRP directory layout./pr is the ECC-native PR creation command and can reference .claude/prds/ and .claude/plans/./prp-prd, /prp-plan, /prp-implement, /prp-commit, and /prp-pr remain valid legacy/deep workflow commands.