feat: add PRP workflow commands adapted from PRPs-agentic-eng (#848)

* feat: add PRP workflow commands adapted from PRPs-agentic-eng

Add 5 new PRP workflow commands and extend 2 existing commands:

New commands:
- prp-prd.md: Interactive PRD generator with 8 phases
- prp-plan.md: Deep implementation planning with codebase analysis
- prp-implement.md: Plan executor with rigorous validation loops
- prp-commit.md: Quick commit with natural language file targeting
- prp-pr.md: GitHub PR creation from current branch

Extended commands:
- code-review.md: Added GitHub PR review mode alongside local review
- plan.md: Added cross-reference to /prp-plan for deeper planning

Adapted from PRPs-agentic-eng by Wirasm. Sub-agents remapped to
inline Claude instructions. ECC conventions applied throughout
(YAML frontmatter, Phase headings, tables, no XML tags).

Artifacts stored in .claude/PRPs/{prds,plans,reports,reviews}/.

* fix: address PR #848 review feedback

- Remove external URLs from all 6 command files (keep attribution text)
- Quote $ARGUMENTS in prp-implement.md to handle paths with spaces
- Fix empty git add expansion in prp-commit.md (use xargs -r)
- Rewrite sub-agent language in prp-prd.md as direct instructions
- Fix code-review.md: add full-file fetch for PR reviews, replace
  || fallback chains with project-type detection, use proper GitHub
  API for inline review comments
- Fix nested backticks in prp-plan.md Plan Template (use 4-backtick fence)
- Clarify $ARGUMENTS parsing in prp-pr.md for base branch + flags
- Fix fragile integration test pattern in prp-implement.md (proper
  PID tracking, wait-for-ready loop, clean shutdown)

* fix: address second-pass review feedback on PR #848

- Add required 'side' field to GitHub review comments API call (code-review.md)
- Replace GNU-only xargs -r with portable alternative (prp-commit.md)
- Add failure check after server readiness timeout (prp-implement.md)
- Fix unsafe word-splitting in file-fetch loop using read -r (code-review.md)
- Make git reset pathspec tolerant of zero matches (prp-commit.md)
- Quote PRD file path in cat command (prp-plan.md)
- Fix plan filename placeholder inconsistency (prp-plan.md)
- Add PR template directory scan before fixed-path fallbacks (prp-pr.md)
This commit is contained in:
Matt Mo
2026-03-31 14:12:23 -07:00
committed by GitHub
parent f90f269b92
commit c02d6e9f94
7 changed files with 1891 additions and 10 deletions

View File

@@ -1,10 +1,41 @@
---
description: Code review — local uncommitted changes or GitHub PR (pass PR number/URL for PR mode)
argument-hint: [pr-number | pr-url | blank for local review]
---
# Code Review
Comprehensive security and quality review of uncommitted changes:
> PR review mode adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
1. Get changed files: git diff --name-only HEAD
**Input**: $ARGUMENTS
2. For each changed file, check for:
---
## Mode Selection
If `$ARGUMENTS` contains a PR number, PR URL, or `--pr`:
→ Jump to **PR Review Mode** below.
Otherwise:
→ Use **Local Review Mode**.
---
## Local Review Mode
Comprehensive security and quality review of uncommitted changes.
### Phase 1 — GATHER
```bash
git diff --name-only HEAD
```
If no changed files, stop: "Nothing to review."
### Phase 2 — REVIEW
Read each changed file in full. Check for:
**Security Issues (CRITICAL):**
- Hardcoded credentials, API keys, tokens
@@ -29,12 +60,230 @@ Comprehensive security and quality review of uncommitted changes:
- Missing tests for new code
- Accessibility issues (a11y)
3. Generate report with:
- Severity: CRITICAL, HIGH, MEDIUM, LOW
- File location and line numbers
- Issue description
- Suggested fix
### Phase 3 — REPORT
4. Block commit if CRITICAL or HIGH issues found
Generate report with:
- Severity: CRITICAL, HIGH, MEDIUM, LOW
- File location and line numbers
- Issue description
- Suggested fix
Never approve code with security vulnerabilities!
Block commit if CRITICAL or HIGH issues found.
Never approve code with security vulnerabilities.
---
## PR Review Mode
Comprehensive GitHub PR review — fetches diff, reads full files, runs validation, posts review.
### Phase 1 — FETCH
Parse input to determine PR:
| Input | Action |
|---|---|
| Number (e.g. `42`) | Use as PR number |
| URL (`github.com/.../pull/42`) | Extract PR number |
| Branch name | Find PR via `gh pr list --head <branch>` |
```bash
gh pr view <NUMBER> --json number,title,body,author,baseRefName,headRefName,changedFiles,additions,deletions
gh pr diff <NUMBER>
```
If PR not found, stop with error. Store PR metadata for later phases.
### Phase 2 — CONTEXT
Build review context:
1. **Project rules** — Read `CLAUDE.md`, `.claude/docs/`, and any contributing guidelines
2. **PRP artifacts** — Check `.claude/PRPs/reports/` and `.claude/PRPs/plans/` for implementation context related to this PR
3. **PR intent** — Parse PR description for goals, linked issues, test plans
4. **Changed files** — List all modified files and categorize by type (source, test, config, docs)
### Phase 3 — REVIEW
Read each changed file **in full** (not just the diff hunks — you need surrounding context).
For PR reviews, fetch the full file contents at the PR head revision:
```bash
gh pr diff <NUMBER> --name-only | while IFS= read -r file; do
gh api "repos/{owner}/{repo}/contents/$file?ref=<head-branch>" --jq '.content' | base64 -d
done
```
Apply the review checklist across 7 categories:
| Category | What to Check |
|---|---|
| **Correctness** | Logic errors, off-by-ones, null handling, edge cases, race conditions |
| **Type Safety** | Type mismatches, unsafe casts, `any` usage, missing generics |
| **Pattern Compliance** | Matches project conventions (naming, file structure, error handling, imports) |
| **Security** | Injection, auth gaps, secret exposure, SSRF, path traversal, XSS |
| **Performance** | N+1 queries, missing indexes, unbounded loops, memory leaks, large payloads |
| **Completeness** | Missing tests, missing error handling, incomplete migrations, missing docs |
| **Maintainability** | Dead code, magic numbers, deep nesting, unclear naming, missing types |
Assign severity to each finding:
| Severity | Meaning | Action |
|---|---|---|
| **CRITICAL** | Security vulnerability or data loss risk | Must fix before merge |
| **HIGH** | Bug or logic error likely to cause issues | Should fix before merge |
| **MEDIUM** | Code quality issue or missing best practice | Fix recommended |
| **LOW** | Style nit or minor suggestion | Optional |
### Phase 4 — VALIDATE
Run available validation commands:
Detect the project type from config files (`package.json`, `Cargo.toml`, `go.mod`, `pyproject.toml`, etc.), then run the appropriate commands:
**Node.js / TypeScript** (has `package.json`):
```bash
npm run typecheck 2>/dev/null || npx tsc --noEmit 2>/dev/null # Type check
npm run lint # Lint
npm test # Tests
npm run build # Build
```
**Rust** (has `Cargo.toml`):
```bash
cargo clippy -- -D warnings # Lint
cargo test # Tests
cargo build # Build
```
**Go** (has `go.mod`):
```bash
go vet ./... # Lint
go test ./... # Tests
go build ./... # Build
```
**Python** (has `pyproject.toml` / `setup.py`):
```bash
pytest # Tests
```
Run only the commands that apply to the detected project type. Record pass/fail for each.
### Phase 5 — DECIDE
Form recommendation based on findings:
| Condition | Decision |
|---|---|
| Zero CRITICAL/HIGH issues, validation passes | **APPROVE** |
| Only MEDIUM/LOW issues, validation passes | **APPROVE** with comments |
| Any HIGH issues or validation failures | **REQUEST CHANGES** |
| Any CRITICAL issues | **BLOCK** — must fix before merge |
Special cases:
- Draft PR → Always use **COMMENT** (not approve/block)
- Only docs/config changes → Lighter review, focus on correctness
- Explicit `--approve` or `--request-changes` flag → Override decision (but still report all findings)
### Phase 6 — REPORT
Create review artifact at `.claude/PRPs/reviews/pr-<NUMBER>-review.md`:
```markdown
# PR Review: #<NUMBER> — <TITLE>
**Reviewed**: <date>
**Author**: <author>
**Branch**: <head> → <base>
**Decision**: APPROVE | REQUEST CHANGES | BLOCK
## Summary
<1-2 sentence overall assessment>
## Findings
### CRITICAL
<findings or "None">
### HIGH
<findings or "None">
### MEDIUM
<findings or "None">
### LOW
<findings or "None">
## Validation Results
| Check | Result |
|---|---|
| Type check | ✅ Pass / ❌ Fail / ⏭️ Skipped |
| Lint | ✅ / ❌ / ⏭️ |
| Tests | ✅ / ❌ / ⏭️ |
| Build | ✅ / ❌ / ⏭️ |
## Files Reviewed
<list of files with change type: Added/Modified/Deleted>
```
### Phase 7 — PUBLISH
Post the review to GitHub:
```bash
# If APPROVE
gh pr review <NUMBER> --approve --body "<summary of review>"
# If REQUEST CHANGES
gh pr review <NUMBER> --request-changes --body "<summary with required fixes>"
# If COMMENT only (draft PR or informational)
gh pr review <NUMBER> --comment --body "<summary>"
```
For inline comments on specific lines, use the GitHub review comments API:
```bash
gh api "repos/{owner}/{repo}/pulls/<NUMBER>/comments" \
-f body="<comment>" \
-f path="<file>" \
-F line=<line-number> \
-f side="RIGHT" \
-f commit_id="$(gh pr view <NUMBER> --json headRefOid --jq .headRefOid)"
```
Alternatively, post a single review with multiple inline comments at once:
```bash
gh api "repos/{owner}/{repo}/pulls/<NUMBER>/reviews" \
-f event="COMMENT" \
-f body="<overall summary>" \
--input comments.json # [{"path": "file", "line": N, "body": "comment"}, ...]
```
### Phase 8 — OUTPUT
Report to user:
```
PR #<NUMBER>: <TITLE>
Decision: <APPROVE|REQUEST_CHANGES|BLOCK>
Issues: <critical_count> critical, <high_count> high, <medium_count> medium, <low_count> low
Validation: <pass_count>/<total_count> checks passed
Artifacts:
Review: .claude/PRPs/reviews/pr-<NUMBER>-review.md
GitHub: <PR URL>
Next steps:
- <contextual suggestions based on decision>
```
---
## Edge Cases
- **No `gh` CLI**: Fall back to local-only review (read the diff, skip GitHub publish). Warn user.
- **Diverged branches**: Suggest `git fetch origin && git rebase origin/<base>` before review.
- **Large PRs (>50 files)**: Warn about review scope. Focus on source changes first, then tests, then config/docs.

View File

@@ -107,6 +107,8 @@ After planning:
- Use `/build-fix` if build errors occur
- Use `/code-review` to review completed implementation
> **Need deeper planning?** Use `/prp-plan` for artifact-producing planning with PRD integration, codebase analysis, and pattern extraction. Use `/prp-implement` to execute those plans with rigorous validation loops.
## Related Agents
This command invokes the `planner` agent provided by ECC.

112
commands/prp-commit.md Normal file
View File

@@ -0,0 +1,112 @@
---
description: Quick commit with natural language file targeting — describe what to commit in plain English
argument-hint: [target description] (blank = all changes)
---
# Smart Commit
> Adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
**Input**: $ARGUMENTS
---
## Phase 1 — ASSESS
```bash
git status --short
```
If output is empty → stop: "Nothing to commit."
Show the user a summary of what's changed (added, modified, deleted, untracked).
---
## Phase 2 — INTERPRET & STAGE
Interpret `$ARGUMENTS` to determine what to stage:
| Input | Interpretation | Git Command |
|---|---|---|
| *(blank / empty)* | Stage everything | `git add -A` |
| `staged` | Use whatever is already staged | *(no git add)* |
| `*.ts` or `*.py` etc. | Stage matching glob | `git add '*.ts'` |
| `except tests` | Stage all, then unstage tests | `git add -A && git reset -- '**/*.test.*' '**/*.spec.*' '**/test_*' 2>/dev/null \|\| true` |
| `only new files` | Stage untracked files only | `git ls-files --others --exclude-standard \| grep . && git ls-files --others --exclude-standard \| xargs git add` |
| `the auth changes` | Interpret from status/diff — find auth-related files | `git add <matched files>` |
| Specific filenames | Stage those files | `git add <files>` |
For natural language inputs (like "the auth changes"), cross-reference the `git status` output and `git diff` to identify relevant files. Show the user which files you're staging and why.
```bash
git add <determined files>
```
After staging, verify:
```bash
git diff --cached --stat
```
If nothing staged, stop: "No files matched your description."
---
## Phase 3 — COMMIT
Craft a single-line commit message in imperative mood:
```
{type}: {description}
```
Types:
- `feat` — New feature or capability
- `fix` — Bug fix
- `refactor` — Code restructuring without behavior change
- `docs` — Documentation changes
- `test` — Adding or updating tests
- `chore` — Build, config, dependencies
- `perf` — Performance improvement
- `ci` — CI/CD changes
Rules:
- Imperative mood ("add feature" not "added feature")
- Lowercase after the type prefix
- No period at the end
- Under 72 characters
- Describe WHAT changed, not HOW
```bash
git commit -m "{type}: {description}"
```
---
## Phase 4 — OUTPUT
Report to user:
```
Committed: {hash_short}
Message: {type}: {description}
Files: {count} file(s) changed
Next steps:
- git push → push to remote
- /prp-pr → create a pull request
- /code-review → review before pushing
```
---
## Examples
| You say | What happens |
|---|---|
| `/prp-commit` | Stages all, auto-generates message |
| `/prp-commit staged` | Commits only what's already staged |
| `/prp-commit *.ts` | Stages all TypeScript files, commits |
| `/prp-commit except tests` | Stages everything except test files |
| `/prp-commit the database migration` | Finds DB migration files from status, stages them |
| `/prp-commit only new files` | Stages untracked files only |

385
commands/prp-implement.md Normal file
View File

@@ -0,0 +1,385 @@
---
description: Execute an implementation plan with rigorous validation loops
argument-hint: <path/to/plan.md>
---
> Adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
# PRP Implement
Execute a plan file step-by-step with continuous validation. Every change is verified immediately — never accumulate broken state.
**Core Philosophy**: Validation loops catch mistakes early. Run checks after every change. Fix issues immediately.
**Golden Rule**: If a validation fails, fix it before moving on. Never accumulate broken state.
---
## Phase 0 — DETECT
### Package Manager Detection
| File Exists | Package Manager | Runner |
|---|---|---|
| `bun.lockb` | bun | `bun run` |
| `pnpm-lock.yaml` | pnpm | `pnpm run` |
| `yarn.lock` | yarn | `yarn` |
| `package-lock.json` | npm | `npm run` |
| `pyproject.toml` or `requirements.txt` | uv / pip | `uv run` or `python -m` |
| `Cargo.toml` | cargo | `cargo` |
| `go.mod` | go | `go` |
### Validation Scripts
Check `package.json` (or equivalent) for available scripts:
```bash
# For Node.js projects
cat package.json | grep -A 20 '"scripts"'
```
Note available commands for: type-check, lint, test, build.
---
## Phase 1 — LOAD
Read the plan file:
```bash
cat "$ARGUMENTS"
```
Extract these sections from the plan:
- **Summary** — What is being built
- **Patterns to Mirror** — Code conventions to follow
- **Files to Change** — What to create or modify
- **Step-by-Step Tasks** — Implementation sequence
- **Validation Commands** — How to verify correctness
- **Acceptance Criteria** — Definition of done
If the file doesn't exist or isn't a valid plan:
```
Error: Plan file not found or invalid.
Run /prp-plan <feature-description> to create a plan first.
```
**CHECKPOINT**: Plan loaded. All sections identified. Tasks extracted.
---
## Phase 2 — PREPARE
### Git State
```bash
git branch --show-current
git status --porcelain
```
### Branch Decision
| Current State | Action |
|---|---|
| On feature branch | Use current branch |
| On main, clean working tree | Create feature branch: `git checkout -b feat/{plan-name}` |
| On main, dirty working tree | **STOP** — Ask user to stash or commit first |
| In a git worktree for this feature | Use the worktree |
### Sync Remote
```bash
git pull --rebase origin $(git branch --show-current) 2>/dev/null || true
```
**CHECKPOINT**: On correct branch. Working tree ready. Remote synced.
---
## Phase 3 — EXECUTE
Process each task from the plan sequentially.
### Per-Task Loop
For each task in **Step-by-Step Tasks**:
1. **Read MIRROR reference** — Open the pattern file referenced in the task's MIRROR field. Understand the convention before writing code.
2. **Implement** — Write the code following the pattern exactly. Apply GOTCHA warnings. Use specified IMPORTS.
3. **Validate immediately** — After EVERY file change:
```bash
# Run type-check (adjust command per project)
[type-check command from Phase 0]
```
If type-check fails → fix the error before moving to the next file.
4. **Track progress** — Log: `✅ Task N: [task name] — complete`
### Handling Deviations
If implementation must deviate from the plan:
- Note **WHAT** changed
- Note **WHY** it changed
- Continue with the corrected approach
- These deviations will be captured in the report
**CHECKPOINT**: All tasks executed. Deviations logged.
---
## Phase 4 — VALIDATE
Run all validation levels from the plan. Fix issues at each level before proceeding.
### Level 1: Static Analysis
```bash
# Type checking — zero errors required
[project type-check command]
# Linting — fix automatically where possible
[project lint command]
[project lint-fix command]
```
If lint errors remain after auto-fix, fix manually.
### Level 2: Unit Tests
Write tests for every new function (as specified in the plan's Testing Strategy).
```bash
[project test command for affected area]
```
- Every function needs at least one test
- Cover edge cases listed in the plan
- If a test fails → fix the implementation (not the test, unless the test is wrong)
### Level 3: Build Check
```bash
[project build command]
```
Build must succeed with zero errors.
### Level 4: Integration Testing (if applicable)
```bash
# Start server, run tests, stop server
[project dev server command] &
SERVER_PID=$!
# Wait for server to be ready (adjust port as needed)
SERVER_READY=0
for i in $(seq 1 30); do
if curl -sf http://localhost:PORT/health >/dev/null 2>&1; then
SERVER_READY=1
break
fi
sleep 1
done
if [ "$SERVER_READY" -ne 1 ]; then
kill "$SERVER_PID" 2>/dev/null || true
echo "ERROR: Server failed to start within 30s" >&2
exit 1
fi
[integration test command]
TEST_EXIT=$?
kill "$SERVER_PID" 2>/dev/null || true
wait "$SERVER_PID" 2>/dev/null || true
exit "$TEST_EXIT"
```
### Level 5: Edge Case Testing
Run through edge cases from the plan's Testing Strategy checklist.
**CHECKPOINT**: All 5 validation levels pass. Zero errors.
---
## Phase 5 — REPORT
### Create Implementation Report
```bash
mkdir -p .claude/PRPs/reports
```
Write report to `.claude/PRPs/reports/{plan-name}-report.md`:
```markdown
# Implementation Report: [Feature Name]
## Summary
[What was implemented]
## Assessment vs Reality
| Metric | Predicted (Plan) | Actual |
|---|---|---|
| Complexity | [from plan] | [actual] |
| Confidence | [from plan] | [actual] |
| Files Changed | [from plan] | [actual count] |
## Tasks Completed
| # | Task | Status | Notes |
|---|---|---|---|
| 1 | [task name] | ✅ Complete | |
| 2 | [task name] | ✅ Complete | Deviated — [reason] |
## Validation Results
| Level | Status | Notes |
|---|---|---|
| Static Analysis | ✅ Pass | |
| Unit Tests | ✅ Pass | N tests written |
| Build | ✅ Pass | |
| Integration | ✅ Pass | or N/A |
| Edge Cases | ✅ Pass | |
## Files Changed
| File | Action | Lines |
|---|---|---|
| `path/to/file` | CREATED | +N |
| `path/to/file` | UPDATED | +N / -M |
## Deviations from Plan
[List any deviations with WHAT and WHY, or "None"]
## Issues Encountered
[List any problems and how they were resolved, or "None"]
## Tests Written
| Test File | Tests | Coverage |
|---|---|---|
| `path/to/test` | N tests | [area covered] |
## Next Steps
- [ ] Code review via `/code-review`
- [ ] Create PR via `/prp-pr`
```
### Update PRD (if applicable)
If this implementation was for a PRD phase:
1. Update the phase status from `in-progress` to `complete`
2. Add report path as reference
### Archive Plan
```bash
mkdir -p .claude/PRPs/plans/completed
mv "$ARGUMENTS" .claude/PRPs/plans/completed/
```
**CHECKPOINT**: Report created. PRD updated. Plan archived.
---
## Phase 6 — OUTPUT
Report to user:
```
## Implementation Complete
- **Plan**: [plan file path] → archived to completed/
- **Branch**: [current branch name]
- **Status**: ✅ All tasks complete
### Validation Summary
| Check | Status |
|---|---|
| Type Check | ✅ |
| Lint | ✅ |
| Tests | ✅ (N written) |
| Build | ✅ |
| Integration | ✅ or N/A |
### Files Changed
- [N] files created, [M] files updated
### Deviations
[Summary or "None — implemented exactly as planned"]
### Artifacts
- Report: `.claude/PRPs/reports/{name}-report.md`
- Archived Plan: `.claude/PRPs/plans/completed/{name}.plan.md`
### PRD Progress (if applicable)
| Phase | Status |
|---|---|
| Phase 1 | ✅ Complete |
| Phase 2 | ⏳ Next |
| ... | ... |
> Next step: Run `/prp-pr` to create a pull request, or `/code-review` to review changes first.
```
---
## Handling Failures
### Type Check Fails
1. Read the error message carefully
2. Fix the type error in the source file
3. Re-run type-check
4. Continue only when clean
### Tests Fail
1. Identify whether the bug is in the implementation or the test
2. Fix the root cause (usually the implementation)
3. Re-run tests
4. Continue only when green
### Lint Fails
1. Run auto-fix first
2. If errors remain, fix manually
3. Re-run lint
4. Continue only when clean
### Build Fails
1. Usually a type or import issue — check error message
2. Fix the offending file
3. Re-run build
4. Continue only when successful
### Integration Test Fails
1. Check server started correctly
2. Verify endpoint/route exists
3. Check request format matches expected
4. Fix and re-run
---
## Success Criteria
- **TASKS_COMPLETE**: All tasks from the plan executed
- **TYPES_PASS**: Zero type errors
- **LINT_PASS**: Zero lint errors
- **TESTS_PASS**: All tests green, new tests written
- **BUILD_PASS**: Build succeeds
- **REPORT_CREATED**: Implementation report saved
- **PLAN_ARCHIVED**: Plan moved to `completed/`
---
## Next Steps
- Run `/code-review` to review changes before committing
- Run `/prp-commit` to commit with a descriptive message
- Run `/prp-pr` to create a pull request
- Run `/prp-plan <next-phase>` if the PRD has more phases

502
commands/prp-plan.md Normal file
View File

@@ -0,0 +1,502 @@
---
description: Create comprehensive feature implementation plan with codebase analysis and pattern extraction
argument-hint: <feature description | path/to/prd.md>
---
> Adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
# PRP Plan
Create a detailed, self-contained implementation plan that captures all codebase patterns, conventions, and context needed to implement a feature in a single pass.
**Core Philosophy**: A great plan contains everything needed to implement without asking further questions. Every pattern, every convention, every gotcha — captured once, referenced throughout.
**Golden Rule**: If you would need to search the codebase during implementation, capture that knowledge NOW in the plan.
---
## Phase 0 — DETECT
Determine input type from `$ARGUMENTS`:
| Input Pattern | Detection | Action |
|---|---|---|
| Path ending in `.prd.md` | File path to PRD | Parse PRD, find next pending phase |
| Path to `.md` with "Implementation Phases" | PRD-like document | Parse phases, find next pending |
| Path to any other file | Reference file | Read file for context, treat as free-form |
| Free-form text | Feature description | Proceed directly to Phase 1 |
| Empty / blank | No input | Ask user what feature to plan |
### PRD Parsing (when input is a PRD)
1. Read the PRD file with `cat "$PRD_PATH"`
2. Parse the **Implementation Phases** section
3. Find phases by status:
- Look for `pending` phases
- Check dependency chains (a phase may depend on prior phases being `complete`)
- Select the **next eligible pending phase**
4. Extract from the selected phase:
- Phase name and description
- Acceptance criteria
- Dependencies on prior phases
- Any scope notes or constraints
5. Use the phase description as the feature to plan
If no pending phases remain, report that all phases are complete.
---
## Phase 1 — PARSE
Extract and clarify the feature requirements.
### Feature Understanding
From the input (PRD phase or free-form description), identify:
- **What** is being built (concrete deliverable)
- **Why** it matters (user value)
- **Who** uses it (target user/system)
- **Where** it fits (which part of the codebase)
### User Story
Format as:
```
As a [type of user],
I want [capability],
So that [benefit].
```
### Complexity Assessment
| Level | Indicators | Typical Scope |
|---|---|---|
| **Small** | Single file, isolated change, no new dependencies | 1-3 files, <100 lines |
| **Medium** | Multiple files, follows existing patterns, minor new concepts | 3-10 files, 100-500 lines |
| **Large** | Cross-cutting concerns, new patterns, external integrations | 10+ files, 500+ lines |
| **XL** | Architectural changes, new subsystems, migration needed | 20+ files, consider splitting |
### Ambiguity Gate
If any of these are unclear, **STOP and ask the user** before proceeding:
- The core deliverable is vague
- Success criteria are undefined
- There are multiple valid interpretations
- Technical approach has major unknowns
Do NOT guess. Ask. A plan built on assumptions fails during implementation.
---
## Phase 2 — EXPLORE
Gather deep codebase intelligence. Search the codebase directly for each category below.
### Codebase Search (8 Categories)
For each category, search using grep, find, and file reading:
1. **Similar Implementations** — Find existing features that resemble the planned one. Look for analogous patterns, endpoints, components, or modules.
2. **Naming Conventions** — Identify how files, functions, variables, classes, and exports are named in the relevant area of the codebase.
3. **Error Handling** — Find how errors are caught, propagated, logged, and returned to users in similar code paths.
4. **Logging Patterns** — Identify what gets logged, at what level, and in what format.
5. **Type Definitions** — Find relevant types, interfaces, schemas, and how they're organized.
6. **Test Patterns** — Find how similar features are tested. Note test file locations, naming, setup/teardown patterns, and assertion styles.
7. **Configuration** — Find relevant config files, environment variables, and feature flags.
8. **Dependencies** — Identify packages, imports, and internal modules used by similar features.
### Codebase Analysis (5 Traces)
Read relevant files to trace:
1. **Entry Points** — How does a request/action enter the system and reach the area you're modifying?
2. **Data Flow** — How does data move through the relevant code paths?
3. **State Changes** — What state is modified and where?
4. **Contracts** — What interfaces, APIs, or protocols must be honored?
5. **Patterns** — What architectural patterns are used (repository, service, controller, etc.)?
### Unified Discovery Table
Compile findings into a single reference:
| Category | File:Lines | Pattern | Key Snippet |
|---|---|---|---|
| Naming | `src/services/userService.ts:1-5` | camelCase services, PascalCase types | `export class UserService` |
| Error | `src/middleware/errorHandler.ts:10-25` | Custom AppError class | `throw new AppError(...)` |
| ... | ... | ... | ... |
---
## Phase 3 — RESEARCH
If the feature involves external libraries, APIs, or unfamiliar technology:
1. Search the web for official documentation
2. Find usage examples and best practices
3. Identify version-specific gotchas
Format each finding as:
```
KEY_INSIGHT: [what you learned]
APPLIES_TO: [which part of the plan this affects]
GOTCHA: [any warnings or version-specific issues]
```
If the feature uses only well-understood internal patterns, skip this phase and note: "No external research needed — feature uses established internal patterns."
---
## Phase 4 — DESIGN
### UX Transformation (if applicable)
Document the before/after user experience:
**Before:**
```
┌─────────────────────────────┐
│ [Current user experience] │
│ Show the current flow, │
│ what the user sees/does │
└─────────────────────────────┘
```
**After:**
```
┌─────────────────────────────┐
│ [New user experience] │
│ Show the improved flow, │
│ what changes for the user │
└─────────────────────────────┘
```
### Interaction Changes
| Touchpoint | Before | After | Notes |
|---|---|---|---|
| ... | ... | ... | ... |
If the feature is purely backend/internal with no UX change, note: "Internal change — no user-facing UX transformation."
---
## Phase 5 — ARCHITECT
### Strategic Design
Define the implementation approach:
- **Approach**: High-level strategy (e.g., "Add new service layer following existing repository pattern")
- **Alternatives Considered**: What other approaches were evaluated and why they were rejected
- **Scope**: Concrete boundaries of what WILL be built
- **NOT Building**: Explicit list of what is OUT OF SCOPE (prevents scope creep during implementation)
---
## Phase 6 — GENERATE
Write the full plan document using the template below. Save to `.claude/PRPs/plans/{kebab-case-feature-name}.plan.md`.
Create the directory if it doesn't exist:
```bash
mkdir -p .claude/PRPs/plans
```
### Plan Template
````markdown
# Plan: [Feature Name]
## Summary
[2-3 sentence overview]
## User Story
As a [user], I want [capability], so that [benefit].
## Problem → Solution
[Current state] → [Desired state]
## Metadata
- **Complexity**: [Small | Medium | Large | XL]
- **Source PRD**: [path or "N/A"]
- **PRD Phase**: [phase name or "N/A"]
- **Estimated Files**: [count]
---
## UX Design
### Before
[ASCII diagram or "N/A — internal change"]
### After
[ASCII diagram or "N/A — internal change"]
### Interaction Changes
| Touchpoint | Before | After | Notes |
|---|---|---|---|
---
## Mandatory Reading
Files that MUST be read before implementing:
| Priority | File | Lines | Why |
|---|---|---|---|
| P0 (critical) | `path/to/file` | 1-50 | Core pattern to follow |
| P1 (important) | `path/to/file` | 10-30 | Related types |
| P2 (reference) | `path/to/file` | all | Similar implementation |
## External Documentation
| Topic | Source | Key Takeaway |
|---|---|---|
| ... | ... | ... |
---
## Patterns to Mirror
Code patterns discovered in the codebase. Follow these exactly.
### NAMING_CONVENTION
// SOURCE: [file:lines]
[actual code snippet showing the naming pattern]
### ERROR_HANDLING
// SOURCE: [file:lines]
[actual code snippet showing error handling]
### LOGGING_PATTERN
// SOURCE: [file:lines]
[actual code snippet showing logging]
### REPOSITORY_PATTERN
// SOURCE: [file:lines]
[actual code snippet showing data access]
### SERVICE_PATTERN
// SOURCE: [file:lines]
[actual code snippet showing service layer]
### TEST_STRUCTURE
// SOURCE: [file:lines]
[actual code snippet showing test setup]
---
## Files to Change
| File | Action | Justification |
|---|---|---|
| `path/to/file.ts` | CREATE | New service for feature |
| `path/to/existing.ts` | UPDATE | Add new method |
## NOT Building
- [Explicit item 1 that is out of scope]
- [Explicit item 2 that is out of scope]
---
## Step-by-Step Tasks
### Task 1: [Name]
- **ACTION**: [What to do]
- **IMPLEMENT**: [Specific code/logic to write]
- **MIRROR**: [Pattern from Patterns to Mirror section to follow]
- **IMPORTS**: [Required imports]
- **GOTCHA**: [Known pitfall to avoid]
- **VALIDATE**: [How to verify this task is correct]
### Task 2: [Name]
- **ACTION**: ...
- **IMPLEMENT**: ...
- **MIRROR**: ...
- **IMPORTS**: ...
- **GOTCHA**: ...
- **VALIDATE**: ...
[Continue for all tasks...]
---
## Testing Strategy
### Unit Tests
| Test | Input | Expected Output | Edge Case? |
|---|---|---|---|
| ... | ... | ... | ... |
### Edge Cases Checklist
- [ ] Empty input
- [ ] Maximum size input
- [ ] Invalid types
- [ ] Concurrent access
- [ ] Network failure (if applicable)
- [ ] Permission denied
---
## Validation Commands
### Static Analysis
```bash
# Run type checker
[project-specific type check command]
```
EXPECT: Zero type errors
### Unit Tests
```bash
# Run tests for affected area
[project-specific test command]
```
EXPECT: All tests pass
### Full Test Suite
```bash
# Run complete test suite
[project-specific full test command]
```
EXPECT: No regressions
### Database Validation (if applicable)
```bash
# Verify schema/migrations
[project-specific db command]
```
EXPECT: Schema up to date
### Browser Validation (if applicable)
```bash
# Start dev server and verify
[project-specific dev server command]
```
EXPECT: Feature works as designed
### Manual Validation
- [ ] [Step-by-step manual verification checklist]
---
## Acceptance Criteria
- [ ] All tasks completed
- [ ] All validation commands pass
- [ ] Tests written and passing
- [ ] No type errors
- [ ] No lint errors
- [ ] Matches UX design (if applicable)
## Completion Checklist
- [ ] Code follows discovered patterns
- [ ] Error handling matches codebase style
- [ ] Logging follows codebase conventions
- [ ] Tests follow test patterns
- [ ] No hardcoded values
- [ ] Documentation updated (if needed)
- [ ] No unnecessary scope additions
- [ ] Self-contained — no questions needed during implementation
## Risks
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| ... | ... | ... | ... |
## Notes
[Any additional context, decisions, or observations]
```
---
## Output
### Save the Plan
Write the generated plan to:
```
.claude/PRPs/plans/{kebab-case-feature-name}.plan.md
```
### Update PRD (if input was a PRD)
If this plan was generated from a PRD phase:
1. Update the phase status from `pending` to `in-progress`
2. Add the plan file path as a reference in the phase
### Report to User
```
## Plan Created
- **File**: .claude/PRPs/plans/{kebab-case-feature-name}.plan.md
- **Source PRD**: [path or "N/A"]
- **Phase**: [phase name or "standalone"]
- **Complexity**: [level]
- **Scope**: [N files, M tasks]
- **Key Patterns**: [top 3 discovered patterns]
- **External Research**: [topics researched or "none needed"]
- **Risks**: [top risk or "none identified"]
- **Confidence Score**: [1-10] — likelihood of single-pass implementation
> Next step: Run `/prp-implement .claude/PRPs/plans/{name}.plan.md` to execute this plan.
```
---
## Verification
Before finalizing, verify the plan against these checklists:
### Context Completeness
- [ ] All relevant files discovered and documented
- [ ] Naming conventions captured with examples
- [ ] Error handling patterns documented
- [ ] Test patterns identified
- [ ] Dependencies listed
### Implementation Readiness
- [ ] Every task has ACTION, IMPLEMENT, MIRROR, and VALIDATE
- [ ] No task requires additional codebase searching
- [ ] Import paths are specified
- [ ] GOTCHAs documented where applicable
### Pattern Faithfulness
- [ ] Code snippets are actual codebase examples (not invented)
- [ ] SOURCE references point to real files and line numbers
- [ ] Patterns cover naming, errors, logging, data access, and tests
- [ ] New code will be indistinguishable from existing code
### Validation Coverage
- [ ] Static analysis commands specified
- [ ] Test commands specified
- [ ] Build verification included
### UX Clarity
- [ ] Before/after states documented (or marked N/A)
- [ ] Interaction changes listed
- [ ] Edge cases for UX identified
### No Prior Knowledge Test
A developer unfamiliar with this codebase should be able to implement the feature using ONLY this plan, without searching the codebase or asking questions. If not, add the missing context.
---
## Next Steps
- Run `/prp-implement <plan-path>` to execute this plan
- Run `/plan` for quick conversational planning without artifacts
- Run `/prp-prd` to create a PRD first if scope is unclear
````

184
commands/prp-pr.md Normal file
View File

@@ -0,0 +1,184 @@
---
description: Create a GitHub PR from current branch with unpushed commits — discovers templates, analyzes changes, pushes
argument-hint: [base-branch] (default: main)
---
# Create Pull Request
> Adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
**Input**: `$ARGUMENTS` — optional, may contain a base branch name and/or flags (e.g., `--draft`).
**Parse `$ARGUMENTS`**:
- Extract any recognized flags (`--draft`)
- Treat remaining non-flag text as the base branch name
- Default base branch to `main` if none specified
---
## Phase 1 — VALIDATE
Check preconditions:
```bash
git branch --show-current
git status --short
git log origin/<base>..HEAD --oneline
```
| Check | Condition | Action if Failed |
|---|---|---|
| Not on base branch | Current branch ≠ base | Stop: "Switch to a feature branch first." |
| Clean working directory | No uncommitted changes | Warn: "You have uncommitted changes. Commit or stash first. Use `/prp-commit` to commit." |
| Has commits ahead | `git log origin/<base>..HEAD` not empty | Stop: "No commits ahead of `<base>`. Nothing to PR." |
| No existing PR | `gh pr list --head <branch> --json number` is empty | Stop: "PR already exists: #<number>. Use `gh pr view <number> --web` to open it." |
If all checks pass, proceed.
---
## Phase 2 — DISCOVER
### PR Template
Search for PR template in order:
1. `.github/PULL_REQUEST_TEMPLATE/` directory — if exists, list files and let user choose (or use `default.md`)
2. `.github/PULL_REQUEST_TEMPLATE.md`
3. `.github/pull_request_template.md`
4. `docs/pull_request_template.md`
If found, read it and use its structure for the PR body.
### Commit Analysis
```bash
git log origin/<base>..HEAD --format="%h %s" --reverse
```
Analyze commits to determine:
- **PR title**: Use conventional commit format with type prefix — `feat: ...`, `fix: ...`, etc.
- If multiple types, use the dominant one
- If single commit, use its message as-is
- **Change summary**: Group commits by type/area
### File Analysis
```bash
git diff origin/<base>..HEAD --stat
git diff origin/<base>..HEAD --name-only
```
Categorize changed files: source, tests, docs, config, migrations.
### PRP Artifacts
Check for related PRP artifacts:
- `.claude/PRPs/reports/` — Implementation reports
- `.claude/PRPs/plans/` — Plans that were executed
- `.claude/PRPs/prds/` — Related PRDs
Reference these in the PR body if they exist.
---
## Phase 3 — PUSH
```bash
git push -u origin HEAD
```
If push fails due to divergence:
```bash
git fetch origin
git rebase origin/<base>
git push -u origin HEAD
```
If rebase conflicts occur, stop and inform the user.
---
## Phase 4 — CREATE
### With Template
If a PR template was found in Phase 2, fill in each section using the commit and file analysis. Preserve all template sections — leave sections as "N/A" if not applicable rather than removing them.
### Without Template
Use this default format:
```markdown
## Summary
<1-2 sentence description of what this PR does and why>
## Changes
<bulleted list of changes grouped by area>
## Files Changed
<table or list of changed files with change type: Added/Modified/Deleted>
## Testing
<description of how changes were tested, or "Needs testing">
## Related Issues
<linked issues with Closes/Fixes/Relates to #N, or "None">
```
### Create the PR
```bash
gh pr create \
--title "<PR title>" \
--base <base-branch> \
--body "<PR body>"
# Add --draft if the --draft flag was parsed from $ARGUMENTS
```
---
## Phase 5 — VERIFY
```bash
gh pr view --json number,url,title,state,baseRefName,headRefName,additions,deletions,changedFiles
gh pr checks --json name,status,conclusion 2>/dev/null || true
```
---
## Phase 6 — OUTPUT
Report to user:
```
PR #<number>: <title>
URL: <url>
Branch: <head> → <base>
Changes: +<additions> -<deletions> across <changedFiles> files
CI Checks: <status summary or "pending" or "none configured">
Artifacts referenced:
- <any PRP reports/plans linked in PR body>
Next steps:
- gh pr view <number> --web → open in browser
- /code-review <number> → review the PR
- gh pr merge <number> → merge when ready
```
---
## Edge Cases
- **No `gh` CLI**: Stop with: "GitHub CLI (`gh`) is required. Install: https://cli.github.com/"
- **Not authenticated**: Stop with: "Run `gh auth login` first."
- **Force push needed**: If remote has diverged and rebase was done, use `git push --force-with-lease` (never `--force`).
- **Multiple PR templates**: If `.github/PULL_REQUEST_TEMPLATE/` has multiple files, list them and ask user to choose.
- **Large PR (>20 files)**: Warn about PR size. Suggest splitting if changes are logically separable.

447
commands/prp-prd.md Normal file
View File

@@ -0,0 +1,447 @@
---
description: Interactive PRD generator - problem-first, hypothesis-driven product spec with back-and-forth questioning
argument-hint: [feature/product idea] (blank = start with questions)
---
# Product Requirements Document Generator
> Adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
**Input**: $ARGUMENTS
---
## Your Role
You are a sharp product manager who:
- Starts with PROBLEMS, not solutions
- Demands evidence before building
- Thinks in hypotheses, not specs
- Asks clarifying questions before assuming
- Acknowledges uncertainty honestly
**Anti-pattern**: Don't fill sections with fluff. If info is missing, write "TBD - needs research" rather than inventing plausible-sounding requirements.
---
## Process Overview
```
QUESTION SET 1 → GROUNDING → QUESTION SET 2 → RESEARCH → QUESTION SET 3 → GENERATE
```
Each question set builds on previous answers. Grounding phases validate assumptions.
---
## Phase 1: INITIATE - Core Problem
**If no input provided**, ask:
> **What do you want to build?**
> Describe the product, feature, or capability in a few sentences.
**If input provided**, confirm understanding by restating:
> I understand you want to build: {restated understanding}
> Is this correct, or should I adjust my understanding?
**GATE**: Wait for user response before proceeding.
---
## Phase 2: FOUNDATION - Problem Discovery
Ask these questions (present all at once, user can answer together):
> **Foundation Questions:**
>
> 1. **Who** has this problem? Be specific - not just "users" but what type of person/role?
>
> 2. **What** problem are they facing? Describe the observable pain, not the assumed need.
>
> 3. **Why** can't they solve it today? What alternatives exist and why do they fail?
>
> 4. **Why now?** What changed that makes this worth building?
>
> 5. **How** will you know if you solved it? What would success look like?
**GATE**: Wait for user responses before proceeding.
---
## Phase 3: GROUNDING - Market & Context Research
After foundation answers, conduct research:
**Research market context:**
1. Find similar products/features in the market
2. Identify how competitors solve this problem
3. Note common patterns and anti-patterns
4. Check for recent trends or changes in this space
Compile findings with direct links, key insights, and any gaps in available information.
**If a codebase exists, explore it in parallel:**
1. Find existing functionality relevant to the product/feature idea
2. Identify patterns that could be leveraged
3. Note technical constraints or opportunities
Record file locations, code patterns, and conventions observed.
**Summarize findings to user:**
> **What I found:**
> - {Market insight 1}
> - {Competitor approach}
> - {Relevant pattern from codebase, if applicable}
>
> Does this change or refine your thinking?
**GATE**: Brief pause for user input (can be "continue" or adjustments).
---
## Phase 4: DEEP DIVE - Vision & Users
Based on foundation + research, ask:
> **Vision & Users:**
>
> 1. **Vision**: In one sentence, what's the ideal end state if this succeeds wildly?
>
> 2. **Primary User**: Describe your most important user - their role, context, and what triggers their need.
>
> 3. **Job to Be Done**: Complete this: "When [situation], I want to [motivation], so I can [outcome]."
>
> 4. **Non-Users**: Who is explicitly NOT the target? Who should we ignore?
>
> 5. **Constraints**: What limitations exist? (time, budget, technical, regulatory)
**GATE**: Wait for user responses before proceeding.
---
## Phase 5: GROUNDING - Technical Feasibility
**If a codebase exists, perform two parallel investigations:**
Investigation 1 — Explore feasibility:
1. Identify existing infrastructure that can be leveraged
2. Find similar patterns already implemented
3. Map integration points and dependencies
4. Locate relevant configuration and type definitions
Record file locations, code patterns, and conventions observed.
Investigation 2 — Analyze constraints:
1. Trace how existing related features are implemented end-to-end
2. Map data flow through potential integration points
3. Identify architectural patterns and boundaries
4. Estimate complexity based on similar features
Document what exists with precise file:line references. No suggestions.
**If no codebase, research technical approaches:**
1. Find technical approaches others have used
2. Identify common implementation patterns
3. Note known technical challenges and pitfalls
Compile findings with citations and gap analysis.
**Summarize to user:**
> **Technical Context:**
> - Feasibility: {HIGH/MEDIUM/LOW} because {reason}
> - Can leverage: {existing patterns/infrastructure}
> - Key technical risk: {main concern}
>
> Any technical constraints I should know about?
**GATE**: Brief pause for user input.
---
## Phase 6: DECISIONS - Scope & Approach
Ask final clarifying questions:
> **Scope & Approach:**
>
> 1. **MVP Definition**: What's the absolute minimum to test if this works?
>
> 2. **Must Have vs Nice to Have**: What 2-3 things MUST be in v1? What can wait?
>
> 3. **Key Hypothesis**: Complete this: "We believe [capability] will [solve problem] for [users]. We'll know we're right when [measurable outcome]."
>
> 4. **Out of Scope**: What are you explicitly NOT building (even if users ask)?
>
> 5. **Open Questions**: What uncertainties could change the approach?
**GATE**: Wait for user responses before generating.
---
## Phase 7: GENERATE - Write PRD
**Output path**: `.claude/PRPs/prds/{kebab-case-name}.prd.md`
Create directory if needed: `mkdir -p .claude/PRPs/prds`
### PRD Template
```markdown
# {Product/Feature Name}
## Problem Statement
{2-3 sentences: Who has what problem, and what's the cost of not solving it?}
## Evidence
- {User quote, data point, or observation that proves this problem exists}
- {Another piece of evidence}
- {If none: "Assumption - needs validation through [method]"}
## Proposed Solution
{One paragraph: What we're building and why this approach over alternatives}
## Key Hypothesis
We believe {capability} will {solve problem} for {users}.
We'll know we're right when {measurable outcome}.
## What We're NOT Building
- {Out of scope item 1} - {why}
- {Out of scope item 2} - {why}
## Success Metrics
| Metric | Target | How Measured |
|--------|--------|--------------|
| {Primary metric} | {Specific number} | {Method} |
| {Secondary metric} | {Specific number} | {Method} |
## Open Questions
- [ ] {Unresolved question 1}
- [ ] {Unresolved question 2}
---
## Users & Context
**Primary User**
- **Who**: {Specific description}
- **Current behavior**: {What they do today}
- **Trigger**: {What moment triggers the need}
- **Success state**: {What "done" looks like}
**Job to Be Done**
When {situation}, I want to {motivation}, so I can {outcome}.
**Non-Users**
{Who this is NOT for and why}
---
## Solution Detail
### Core Capabilities (MoSCoW)
| Priority | Capability | Rationale |
|----------|------------|-----------|
| Must | {Feature} | {Why essential} |
| Must | {Feature} | {Why essential} |
| Should | {Feature} | {Why important but not blocking} |
| Could | {Feature} | {Nice to have} |
| Won't | {Feature} | {Explicitly deferred and why} |
### MVP Scope
{What's the minimum to validate the hypothesis}
### User Flow
{Critical path - shortest journey to value}
---
## Technical Approach
**Feasibility**: {HIGH/MEDIUM/LOW}
**Architecture Notes**
- {Key technical decision and why}
- {Dependency or integration point}
**Technical Risks**
| Risk | Likelihood | Mitigation |
|------|------------|------------|
| {Risk} | {H/M/L} | {How to handle} |
---
## Implementation Phases
<!--
STATUS: pending | in-progress | complete
PARALLEL: phases that can run concurrently (e.g., "with 3" or "-")
DEPENDS: phases that must complete first (e.g., "1, 2" or "-")
PRP: link to generated plan file once created
-->
| # | Phase | Description | Status | Parallel | Depends | PRP Plan |
|---|-------|-------------|--------|----------|---------|----------|
| 1 | {Phase name} | {What this phase delivers} | pending | - | - | - |
| 2 | {Phase name} | {What this phase delivers} | pending | - | 1 | - |
| 3 | {Phase name} | {What this phase delivers} | pending | with 4 | 2 | - |
| 4 | {Phase name} | {What this phase delivers} | pending | with 3 | 2 | - |
| 5 | {Phase name} | {What this phase delivers} | pending | - | 3, 4 | - |
### Phase Details
**Phase 1: {Name}**
- **Goal**: {What we're trying to achieve}
- **Scope**: {Bounded deliverables}
- **Success signal**: {How we know it's done}
**Phase 2: {Name}**
- **Goal**: {What we're trying to achieve}
- **Scope**: {Bounded deliverables}
- **Success signal**: {How we know it's done}
{Continue for each phase...}
### Parallelism Notes
{Explain which phases can run in parallel and why}
---
## Decisions Log
| Decision | Choice | Alternatives | Rationale |
|----------|--------|--------------|-----------|
| {Decision} | {Choice} | {Options considered} | {Why this one} |
---
## Research Summary
**Market Context**
{Key findings from market research}
**Technical Context**
{Key findings from technical exploration}
---
*Generated: {timestamp}*
*Status: DRAFT - needs validation*
```
---
## Phase 8: OUTPUT - Summary
After generating, report:
```markdown
## PRD Created
**File**: `.claude/PRPs/prds/{name}.prd.md`
### Summary
**Problem**: {One line}
**Solution**: {One line}
**Key Metric**: {Primary success metric}
### Validation Status
| Section | Status |
|---------|--------|
| Problem Statement | {Validated/Assumption} |
| User Research | {Done/Needed} |
| Technical Feasibility | {Assessed/TBD} |
| Success Metrics | {Defined/Needs refinement} |
### Open Questions ({count})
{List the open questions that need answers}
### Recommended Next Step
{One of: user research, technical spike, prototype, stakeholder review, etc.}
### Implementation Phases
| # | Phase | Status | Can Parallel |
|---|-------|--------|--------------|
{Table of phases from PRD}
### To Start Implementation
Run: `/prp-plan .claude/PRPs/prds/{name}.prd.md`
This will automatically select the next pending phase and create an implementation plan.
```
---
## Question Flow Summary
```
┌─────────────────────────────────────────────────────────┐
│ INITIATE: "What do you want to build?" │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ FOUNDATION: Who, What, Why, Why now, How to measure │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ GROUNDING: Market research, competitor analysis │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ DEEP DIVE: Vision, Primary user, JTBD, Constraints │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ GROUNDING: Technical feasibility, codebase exploration │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ DECISIONS: MVP, Must-haves, Hypothesis, Out of scope │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ GENERATE: Write PRD to .claude/PRPs/prds/ │
└─────────────────────────────────────────────────────────┘
```
---
## Integration with ECC
After PRD generation:
- Use `/prp-plan` to create implementation plans from PRD phases
- Use `/plan` for simpler planning without PRD structure
- Use `/save-session` to preserve PRD context across sessions
## Success Criteria
- **PROBLEM_VALIDATED**: Problem is specific and evidenced (or marked as assumption)
- **USER_DEFINED**: Primary user is concrete, not generic
- **HYPOTHESIS_CLEAR**: Testable hypothesis with measurable outcome
- **SCOPE_BOUNDED**: Clear must-haves and explicit out-of-scope
- **QUESTIONS_ACKNOWLEDGED**: Uncertainties are listed, not hidden
- **ACTIONABLE**: A skeptic could understand why this is worth building