- name:
- pdd-build
- description:
- Execute a completed PDD implementation plan step-by-step with validation gates.
- kind:
- sop
PDD Build
Overview
This SOP takes a completed PDD project (design doc + implementation plan) and executes the implementation plan step-by-step using subagents. Each step is built by a subagent, then verified against user-defined "done" criteria before advancing. The user defines how completion is validated — automated tests, manual testing via tmux, browser validation via Playwriter, visual inspection, or any combination.
Parameters
- project_dir (required): Path to the PDD project directory (e.g.,
.agents/planning/2026-02-10-review-extension)
- validation_strategy (required): How the agent should verify each step is done. The user must explain this in detail.
- start_step (optional, default: 1): Step number to start from (for resuming interrupted builds)
Constraints for parameter acquisition:
- You MUST ask for all required parameters upfront in a single prompt
- You MUST verify the project_dir contains the expected PDD artifacts before proceeding:
design/detailed-design.md must exist
implementation/plan.md must exist and contain a checklist
- You MUST ask the user to describe their validation strategy in detail — this is the critical input
- The user MUST explain how the agent should know a step is done. Examples:
- "Run
npm test and all tests must pass"
- "Open a tmux session and test the CLI command as a user"
- "Use the playwriter skill to open the browser and verify the UI renders correctly"
- "Run the extension with
pi -e ./index.ts in a tmux window and execute /review test.md"
- A combination: "Run unit tests, then use playwriter to check the browser UI"
- You MUST confirm you understand the validation strategy by summarizing it back
- You MUST NOT proceed without explicit user confirmation of the validation strategy
- You MUST check the implementation plan checklist for already-completed steps and offer to resume from the next incomplete step
Steps
1. Load and Parse the Implementation Plan
Read the PDD artifacts and prepare for execution.
Constraints:
- You MUST read the following files:
{project_dir}/design/detailed-design.md
{project_dir}/implementation/plan.md
- Any research files in
{project_dir}/research/
- You MUST parse the checklist from
plan.md to determine which steps are complete and which remain
- You MUST parse each step's details: objective, guidance, tests, integration notes, demo description
- You MUST present a summary to the user:
- Total steps, completed steps, remaining steps
- The validation strategy as understood
- Estimated scope of work
- You MUST ask for confirmation before starting execution
- You MUST NOT begin execution without explicit user go-ahead
2. Prepare the Build Context
Assemble the context documents that each subagent will need.
Constraints:
- You MUST create a build context file at
{project_dir}/implementation/build-context.md containing:
- The full detailed design (or a focused summary if the design is very large)
- The validation strategy
- The current state of the implementation (which steps are done)
- Any relevant research findings
- You MUST identify file paths and directories the subagents will need to create or modify
- You MUST verify that prerequisites exist (e.g.,
package.json, directory structure, dependencies)
- You SHOULD create any prerequisite files or directories that don't exist yet
- You MUST load any skills referenced in the validation strategy (e.g., playwriter, clipboard, notification)
3. Execute Steps
Execute each implementation step using a subagent, then validate.
Constraints:
- You MUST execute steps sequentially unless the user explicitly approved parallel execution
- For each step, you MUST follow this exact process:
3a. Brief the Subagent
- You MUST construct a clear, self-contained prompt for the subagent that includes:
- The step objective and guidance from the implementation plan
- Relevant sections of the design doc (not the entire doc — only what's needed for this step)
- The current file state (what exists, what was built in previous steps)
- Explicit instructions on what files to create or modify
- The test/verification criteria for this step
- You MUST NOT include the entire design doc in every subagent prompt — extract only relevant sections
- You MUST include the project's file structure context so the subagent knows where things are
3b. Launch the Subagent
- You MUST use the
subagent tool to execute the step
- You SHOULD use async mode for steps that are expected to take a long time
- You MUST monitor the subagent's progress if running async (check status periodically)
- You MUST capture the subagent's output for review
3c. Verify the Step
-
You MUST verify the step is complete using the user-defined validation strategy
-
You MUST NOT skip validation — this is the critical gate
-
Validation methods (use whichever the user specified):
Automated tests:
- Run the test command (e.g.,
npm test, pytest, etc.)
- All tests must pass
- Check test output for failures
Tmux manual testing:
- Use
rho_subagent to open a tmux window with the test scenario
- Or use
bash to run commands in a tmux session
- Verify expected output or behavior
Playwriter browser validation:
- Load the playwriter skill
- Navigate to the relevant URL
- Verify UI elements render correctly
- Check for visual regressions or interaction issues
File verification:
- Read created/modified files to verify they match expectations
- Check that code compiles/parses correctly
- Verify file structure matches the design
Combination:
- Execute each validation method in sequence
- All must pass for the step to be considered done
3d. Handle Failures
- If validation fails, you MUST:
- Analyze the failure — what went wrong?
- Determine if it's a subagent error (bad code) or a design issue (spec is wrong)
- For subagent errors: retry the step with additional context about the failure (max 2 retries)
- For design issues: STOP and notify the user — do not attempt to fix design problems autonomously
- Include the failure details and any error output in the retry prompt
- You MUST NOT retry more than 2 times per step without user intervention
- You MUST NOT silently skip failed validation
- After 2 failed retries, you MUST stop and present the situation to the user with:
- What was attempted
- What failed and why
- The subagent's output
- Your recommendation for how to proceed
3e. Update the Checklist
- On successful validation, you MUST update the checklist in
plan.md to mark the step as complete ([x])
- You MUST write a brief status note to
{project_dir}/implementation/build-log.md with:
- Step number and name
- Timestamp
- Validation result
- Any notable decisions or deviations
- You MUST notify the user of progress (e.g., "Step 3/12 complete: Web UI shell")
4. Integration Validation
After all steps are complete, validate the full system.
Constraints:
- You MUST run the complete validation strategy against the finished implementation
- You MUST verify that all checklist items are marked complete
- You MUST test the end-to-end flow described in the design doc
- You SHOULD run any additional integration tests that span multiple steps
- If integration issues are found, you MUST:
- Identify which step(s) are affected
- Determine the fix
- Either fix directly or launch a targeted subagent
- Re-validate after fixing
5. Report Results
Present a final summary to the user.
Constraints:
- You MUST create a build report at
{project_dir}/implementation/build-report.md containing:
- Total steps executed
- Steps that passed on first attempt vs. required retries
- Any deviations from the original design
- Known issues or limitations discovered during build
- Validation results summary
- You MUST present the report to the user in conversation
- You MUST highlight any areas that need manual attention
- You MUST suggest next steps (e.g., "TUI mode follow-up", "deploy to global extensions", etc.)
Examples
Example 1: CLI Extension with Tests
Project dir: .agents/planning/2026-02-10-review-extension
Validation strategy: Run `npm test` in the extension directory after each step.
For steps that add UI, also run `pi -e ./index.ts` in a tmux window and
execute the /review command to verify it works interactively.
Example 2: Browser UI with Playwriter
Project dir: .agents/planning/2026-02-10-review-extension
Validation strategy: After each step that changes the UI, use the playwriter
skill to open http://localhost:<port> and verify:
- The page loads without console errors
- Key elements are visible (sidebar, code viewer, buttons)
- Interactions work (click file, click line number, type comment)
For non-UI steps, verify files exist and code parses without errors.
Example 3: Full Manual Testing
Project dir: .agents/planning/2026-02-10-review-extension
Validation strategy: After each step, open a tmux split and run the
extension. Test it as a user would — try the happy path, try edge cases,
try to break it. Report what works and what doesn't. Use the notification
skill to alert me if a step fails after retries.
Example 4: Hybrid
Project dir: .agents/planning/2026-02-10-review-extension
Validation strategy:
- Steps 1-2: verify files exist and `npm install` succeeds
- Steps 3-6: use playwriter to check the browser UI renders
- Steps 7-8: use playwriter to test submit/cancel WebSocket flow
- Steps 9-10: run `pi -e ./index.ts` in tmux and test /review command
- Steps 11-12: full playwriter mobile viewport test + manual tmux test
Troubleshooting
Subagent Produces Wrong Code
- Include more design context in the retry prompt
- Reference specific sections of the design doc
- Include the error output verbatim
- If the subagent consistently misunderstands, break the step into smaller sub-steps
Validation Is Flaky
- Add retries with delays for timing-sensitive checks (e.g., server startup)
- For browser validation, add explicit waits for elements
- For tmux testing, allow time for commands to complete
Step Dependencies Are Wrong
- If a step fails because a previous step's output is wrong, fix the earlier step first
- Update the build log to note the dependency issue
- Re-run both steps in order
Design Doc Has Gaps
- STOP — do not guess at missing requirements
- Note the gap in the build log
- Ask the user for clarification
- Resume after the gap is resolved