Execute an implementation plan with rigorous validation loops. Use when the user wants to implement or execute a plan file, build a planned feature, or invokes /prp-implement.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Plan: $ARGUMENTS
Execute the plan end-to-end with rigorous self-validation. You are autonomous.
Core Philosophy: Validation loops catch mistakes early. Run checks after every change. Fix issues immediately. The goal is a working implementation, not just code that exists.
Golden Rule: If a validation fails, fix it before moving on. Never accumulate broken state.
Check for these files to determine the project's toolchain:
| File Found | Package Manager | Runner |
|---|---|---|
bun.lockb | bun | bun / bun run |
pnpm-lock.yaml | pnpm | pnpm / pnpm run |
yarn.lock | yarn | yarn / yarn run |
package-lock.json | npm | npm run |
pyproject.toml | uv/pip | uv run / python |
Cargo.toml | cargo | cargo |
go.mod | go | go |
Store the detected runner - use it for all subsequent commands.
Determine the base branch for branching and syncing:
$ARGUMENTS contains --base <branch>, extract that value and remove the flag from the plan path argumentgit symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@'git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}'mainStore as {base-branch} — use this value for ALL branch comparisons, rebasing, and syncing. Never hardcode main or master.
Check package.json (or equivalent) for available scripts:
type-check, typecheck, tsclint, lint:fixtest, test:unit, test:integrationbuild, compileUse the plan's "Validation Commands" section - it should specify exact commands for this project.
cat $ARGUMENTSLocate and understand:
If plan not found:
Error: Plan not found at $ARGUMENTS
Create a plan first: /prp-plan "feature description"PHASE_1_CHECKPOINT:
git branch --show-current
git status --porcelain
git worktree list| Current State | Action |
|---|---|
| In worktree | Use it (log: "Using worktree") |
| On {base-branch}, clean | Create branch: git checkout -b feature/{plan-slug} |
| On {base-branch}, dirty | STOP: "Stash or commit changes first" |
| On feature branch | Use it (log: "Using existing branch") |
git fetch origin
git pull --rebase origin {base-branch} 2>/dev/null || truePHASE_2_CHECKPOINT:
For each task in the plan's Step-by-Step Tasks section:
After EVERY file change, run the type-check command from the plan's Validation Commands section.
Common patterns:
{runner} run type-check (JS/TS projects)mypy . (Python)cargo check (Rust)go build ./... (Go)If types fail:
Log each task as you complete it:
Task 1: CREATE src/features/x/models.ts ✅
Task 2: CREATE src/features/x/service.ts ✅
Task 3: UPDATE src/routes/index.ts ✅Update the plan's status markers as you go (newer templates use [ ] / [wip] / [x] / [f]): set a task to [wip] when you start it and [x] when its validation passes — or [f] if it cannot be made to pass (record why in the plan's Agent Notes and continue). Save the plan file after each change so progress survives an interruption. Plans without markers: skip this.
Deviation Handling: If you must deviate from the plan:
PHASE_3_CHECKPOINT:
Run the type-check and lint commands from the plan's Validation Commands section.
Common patterns:
{runner} run type-check && {runner} run lintruff check . && mypy .cargo check && cargo clippygo vet ./...Must pass with zero errors.
If lint errors:
{runner} run lint:fix, ruff check --fix .)You MUST write or update tests for new code. This is not optional.
Test requirements:
Write tests, then run the test command from the plan.
Common patterns:
{runner} test or {runner} run testpytest or uv run pytestcargo testgo test ./...If tests fail:
Run the build command from the plan's Validation Commands section.
Common patterns:
{runner} run builduv buildcargo build --releasego build ./...Must complete without errors.
If the plan involves API/server changes, use the integration test commands from the plan.
Example pattern:
# Start server in background (command varies by project)
{runner} run dev &
SERVER_PID=$!
sleep 3
# Test endpoints (adjust URL/port per project config)
curl -s http://localhost:{port}/health | jq
# Stop server
kill $SERVER_PIDRun any edge case tests specified in the plan.
PHASE_4_CHECKPOINT:
# --- PRP store resolver (canonical; keep byte-identical across skills) ---
_gd="$(git rev-parse --path-format=absolute --git-common-dir 2>/dev/null)"
case "$_gd" in */.git) _root="${_gd%/.git}" ;; "") _root="$PWD" ;; *) _root="$_gd" ;; esac
_root="$(cd "$_root" && pwd -P)"
_name="$(basename "$_root" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/^-*//;s/-*$//')"
PRP_DIR="${PRP_HOME:-$HOME/.prp}/${_name:-project}-$(printf %s "$_root" | git hash-object --stdin | cut -c1-8)"
mkdir -p "$PRP_DIR"; [ -f "$PRP_DIR/project.json" ] || printf '{"path": "%s", "name": "%s"}\n' "$_root" "${_name:-project}" > "$PRP_DIR/project.json"
mkdir -p "$PRP_DIR/reports"Path: $PRP_DIR/reports/{plan-name}-report.md
# Implementation Report
**Plan**: `$ARGUMENTS`
**Source Issue**: #{number} (if applicable)
**Branch**: `{branch-name}`
**Date**: {YYYY-MM-DD}
**Status**: {COMPLETE | PARTIAL}
---
## Summary
{Brief description of what was implemented}
---
## Assessment vs Reality
Compare the original investigation's assessment with what actually happened:
| Metric | Predicted | Actual | Reasoning |
| ---------- | ----------- | -------- | ------------------------------------------------------------------------------ |
| Complexity | {from plan} | {actual} | {Why it matched or differed - e.g., "discovered additional integration point"} |
| Confidence | {from plan} | {actual} | {e.g., "root cause was correct" or "had to pivot because X"} |
**If implementation deviated from the plan, explain why:**
- {What changed and why - based on what you discovered during implementation}
---
## Tasks Completed
| # | Task | File | Status |
| --- | ------------------ | ---------- | ------ |
| 1 | {task description} | `src/x.ts` | ✅ |
| 2 | {task description} | `src/y.ts` | ✅ |
---
## Validation Results
| Check | Result | Details |
| ----------- | ------ | --------------------- |
| Type check | ✅ | No errors |
| Lint | ✅ | 0 errors, N warnings |
| Unit tests | ✅ | X passed, 0 failed |
| Build | ✅ | Compiled successfully |
| Integration | ✅/⏭️ | {result or "N/A"} |
---
## Files Changed
| File | Action | Lines |
| ---------- | ------ | --------- |
| `src/x.ts` | CREATE | +{N} |
| `src/y.ts` | UPDATE | +{N}/-{M} |
---
## Deviations from Plan
{List any deviations with rationale, or "None"}
---
## Issues Encountered
{List any issues and how they were resolved, or "None"}
---
## Tests Written
| Test File | Test Cases |
| --------------- | ------------------------ |
| `src/x.test.ts` | {list of test functions} |
---
## Next Steps
- [ ] Review implementation
- [ ] Create PR: `gh pr create` (if applicable)
- [ ] Merge when approvedCheck if plan was generated from a PRD:
Source PRD: referenceIf PRD source exists:
in-progress to completeIf the plan has a ## Lifecycle (append-only) / ## Amendments section (newer template), update it before archiving — append-only, never overwrite existing entries:
Older plans without these sections: skip this step.
Only archive a plan that already lives in the project's store; leave a plan supplied from any other path in place.
PLAN_PATH="$(cd "$(dirname "$ARGUMENTS")" && pwd -P)/$(basename "$ARGUMENTS")"
case "$PLAN_PATH" in
"$PRP_DIR"/plans/*)
mkdir -p "$PRP_DIR/plans/completed"
mv "$PLAN_PATH" "$PRP_DIR/plans/completed/"
;;
*) echo "Plan is outside the PRP store; leaving it in place: $PLAN_PATH" ;;
esacPHASE_5_CHECKPOINT:
$PRP_DIR/reports/## Implementation Complete
**Plan**: `$ARGUMENTS`
**Source Issue**: #{number} (if applicable)
**Branch**: `{branch-name}`
**Status**: ✅ Complete
### Validation Summary
| Check | Result |
| ---------- | --------------- |
| Type check | ✅ |
| Lint | ✅ |
| Tests | ✅ ({N} passed) |
| Build | ✅ |
### Files Changed
- {N} files created
- {M} files updated
- {K} tests written
### Deviations
{If none: "Implementation matched the plan."}
{If any: Brief summary of what changed and why}
### Artifacts
- Report: `{expanded absolute path to $PRP_DIR/reports/{name}-report.md}`
- Plan archived to: `{expanded absolute path to $PRP_DIR/plans/completed/}` (only when the input plan already lives in the store)
{If from PRD:}
### PRD Progress
**PRD**: `{prd-file-path}`
**Phase Completed**: #{number} - {phase name}
| # | Phase | Status |
|---|-------|--------|
{Updated phases table showing progress}
**Next Phase**: {next pending phase, or "All phases complete!"}
{If next phase can parallel: "Note: Phase {X} can also start now (parallel)"}
To continue: `/prp-plan {prd-path}`
### Next Steps
1. Review the report (especially if deviations noted)
2. Create PR: `gh pr create` or `/prp-pr`
3. Merge when approved
{If more phases: "4. Continue with next phase: `/prp-plan {prd-path}`"}1142738
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.