8.7 KiB
description, argument-hint
| description | argument-hint |
|---|---|
| Execute an implementation plan with rigorous validation loops | <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:
# 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:
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
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
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:
-
Read MIRROR reference — Open the pattern file referenced in the task's MIRROR field. Understand the convention before writing code.
-
Implement — Write the code following the pattern exactly. Apply GOTCHA warnings. Use specified IMPORTS.
-
Validate immediately — After EVERY file change:
# 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.
-
Track progress — Log:
[done] 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
# 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).
[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
[project build command]
Build must succeed with zero errors.
Level 4: Integration Testing (if applicable)
# 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
mkdir -p .claude/PRPs/reports
Write report to .claude/PRPs/reports/{plan-name}-report.md:
# 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] | [done] Complete | |
| 2 | [task name] | [done] Complete | Deviated — [reason] |
## Validation Results
| Level | Status | Notes |
|---|---|---|
| Static Analysis | [done] Pass | |
| Unit Tests | [done] Pass | N tests written |
| Build | [done] Pass | |
| Integration | [done] Pass | or N/A |
| Edge Cases | [done] 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:
- Update the phase status from
in-progresstocomplete - Add report path as reference
Archive Plan
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**: [done] All tasks complete
### Validation Summary
| Check | Status |
|---|---|
| Type Check | [done] |
| Lint | [done] |
| Tests | [done] (N written) |
| Build | [done] |
| Integration | [done] 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 | [done] 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
- Read the error message carefully
- Fix the type error in the source file
- Re-run type-check
- Continue only when clean
Tests Fail
- Identify whether the bug is in the implementation or the test
- Fix the root cause (usually the implementation)
- Re-run tests
- Continue only when green
Lint Fails
- Run auto-fix first
- If errors remain, fix manually
- Re-run lint
- Continue only when clean
Build Fails
- Usually a type or import issue — check error message
- Fix the offending file
- Re-run build
- Continue only when successful
Integration Test Fails
- Check server started correctly
- Verify endpoint/route exists
- Check request format matches expected
- 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-reviewto review changes before committing - Run
/prp-committo commit with a descriptive message - Run
/prp-prto create a pull request - Run
/prp-plan <next-phase>if the PRD has more phases