---
name: prd
description: Create self-verifying PRDs for autonomous execution. Interviews users to gather requirements, then generates structured prd.json with phased implementation and appropriate testing strategies. Supports 7 task categories with type-specific workflows. Use when user says "create a prd", "prd for", "plan a feature", "plan this", "write prd", or wants to plan any multi-step implementation work.
user-invocable: true
allowed-tools:
- Read
- Glob
- Grep
- Write
- Edit
- TodoWrite
- AskUserQuestion
- Bash
- Task
---
# PRD Creation Skill
Create self-verifying PRDs for autonomous execution. This skill guides you through interviewing users and generating structured PRDs.
## Core Philosophy
You are intelligent. These guidelines inform your thinking - they don't constrain it.
- **Adapt to the user** - Every project is different. Adjust your approach.
- **Think independently** - You decide what questions to ask and when to stop.
- **Verify, don't assume** - Challenge assumptions and uncover edge cases.
- **Principles over prescriptions** - Apply mental models, not rigid scripts.
## Important Guardrails
- **Do NOT start implementing** - Your job is to create the PRD, not write code.
- **Ask questions one set at a time** - Don't overwhelm with multiple question blocks.
- **Always ask about quality gates** - This is REQUIRED for every PRD.
- **Get explicit approval before generating** - Present your understanding first.
For comprehensive reference material, read `AGENTS.md`. For specific guidance, reference the `interview/` and `categories/` directories.
---
## The Interview Process
Your goal: Extract enough information to create a PRD that an AI agent can execute successfully.
### Phase 1: Identify Task Type
Start by understanding what kind of work this is. Use AskUserQuestion with these categories:
| Category | Use For |
|----------|---------|
| Feature Development | New features, enhancements, integrations |
| Bug Fixing | Single bugs, multiple bugs, regressions |
| Research & Planning | Exploration, architecture decisions, spikes |
| Quality Assurance | Testing, code review, security audits |
| Maintenance | Docs, cleanup, refactoring, optimization |
| DevOps | Deployment, CI/CD, infrastructure |
| General | Anything else |
For detailed category guidance, see `categories/_overview.md` and individual category files.
### Phase 2: Brain Dump
Ask the user to share everything they know. Let information flow without imposing structure.
What you need to understand:
- The problem or goal
- Context and background
- Constraints and requirements
- Who benefits and how
- Files, systems, or areas involved
- Sources to reference (docs, APIs, existing code)
For guidance on gathering initial information, see `interview/brain-dump.md`.
### Phase 3: Clarifying Questions
This is where you think independently. Based on what they told you:
- What gaps remain in your understanding?
- What assumptions should you challenge?
- What could go wrong that they haven't mentioned?
- What decisions need their input vs. your judgment?
The number of rounds depends on complexity. Simple tasks: 2-3 rounds. Complex features: 6-10 rounds. You decide when you have enough.
**Ask questions one set at a time.** After each answer, decide whether to:
- Ask follow-up questions (if answers reveal complexity)
- Ask about a new aspect (if current area is clear)
- Move to confirmation phase (if you have enough context)
For guidance on formulating questions, see `interview/clarifying-questions.md`.
#### Lettered Multiple Choice Format
When appropriate, use lettered options to speed up responses:
```
1. What is the primary goal of this feature?
A. Improve user onboarding experience
B. Increase user retention
C. Reduce support burden
D. Other: [please specify]
2. Who is the target user?
A. New users only
B. Existing users only
C. All users
D. Admin users only
```
This lets users respond with "1A, 2C" for quick iteration.
#### Quality Gates Question (REQUIRED)
Always ask about quality gates - these follow a **two-tiered testing approach**:
**Tier 1: Story-Level Testing** (every story must do this)
- Write ALL tests for the feature being implemented (no tests left out)
- Run lint, typecheck, build verification
- Run ALL tests related to that story: unit tests, integration tests for the code touched, E2E tests if the story has UI
- All tests must be written AND pass before the story is complete
**Tier 2: Dedicated Testing Sessions** (end of phase or PRD)
- Run the complete test suite to ensure nothing broke
- Verify all E2E tests pass
- For features with UI: comprehensive browser verification
```
1. What quality commands should run for story-level testing?
A. pnpm typecheck && pnpm lint && pnpm test --related
B. npm run typecheck && npm run lint && npm test -- --findRelatedTests
C. bun run typecheck && bun run lint && bun test --related
D. Other: [specify your commands]
2. Does this project have E2E tests?
A. Yes - Playwright
B. Yes - Cypress
C. Yes - Other framework
D. No E2E tests yet (we should add them)
3. For UI stories, should we include browser verification?
A. Yes, use agent-browser skill to verify visually
B. No, automated tests are sufficient
```
### Phase 4: Confirm Understanding
Before generating, present your understanding:
- What you think they want (problem + solution)
- Your proposed approach
- Rough phase breakdown
- Testing and verification strategy
Get explicit approval. If they want changes, adapt and re-present.
For guidance on confirmation, see `interview/confirmation.md`.
---
## Category-Specific Guidance
Each task type has different priorities and workflows. These are thinking frameworks, not templates.
| Category | Key Focus | Reference |
|----------|-----------|-----------|
| Feature Development | Spec → Dependencies → Implementation → Verification | `categories/feature-development.md` |
| Bug Fixing | Reproduce → Investigate → Fix → Verify | `categories/bug-fixing.md` |
| Research & Planning | Requirements → Exploration → Design → Plan | `categories/research-planning.md` |
| Quality Assurance | Scan → Test → Review → Improve | `categories/quality-assurance.md` |
| Maintenance | Review → Identify → Clean → Verify | `categories/maintenance.md` |
| DevOps | Plan → Test → Execute → Verify | `categories/devops.md` |
| General | Understand → Break Down → Implement → Document | `categories/general.md` |
---
## Agent Browser CLI
Use Agent Browser CLI throughout your work for any visual or interactive components.
**When to use it:**
- Research: Explore documentation, validate approaches
- Features: Verify UI as you build, final validation against spec
- Bugs: Reproduce issues, verify fixes
- QA: Test user flows, visual validation
**Quick reference:**
```bash
agent-browser open http://localhost:3000 # Start session
agent-browser snapshot -i # Get interactive elements
agent-browser click @e5 # Click element
agent-browser fill "[name='email']" "test" # Fill input
agent-browser screenshot verify.png # Capture state
agent-browser close # Clean up
```
This is emphasized throughout all category guidance - browser verification is essential for UI work.
---
## Story Structure
Every story in the PRD needs these elements:
### Required Components
1. **Description** - WHAT is this and WHY does it matter? Not HOW.
2. **Tasks** - Step-by-step instructions. Start with context gathering, end with verification.
3. **Acceptance Criteria** - How do we know it's done? Specific, verifiable statements.
4. **Notes** - File paths, patterns to follow, warnings about pitfalls.
### Common Story Types
| Type | Purpose |
|------|---------|
| Context Gathering | First story of any phase - read, understand, document approach |
| Implementation | The actual work with verification steps |
| Checkpoint | End of phase - verify everything, document learnings |
| Browser Verification | For UI work - validate visually and interactively |
| Final Validation | Run full test suite, build, ensure passing |
| Report | Document what was done, decisions, issues |
### Ralph Loop Optimization
When creating stories, keep in mind that Ralph loops operate with these constraints:
**Each iteration starts with no memory** - The agent must read `.ralph-tui/progress.md` to understand prior work. This means:
- Story notes should include file paths, function names, and specific locations
- Reference existing patterns that the agent should follow
- Include gotchas or edge cases discovered during planning
**Progress entries must be verbose** - The template instructs agents to write detailed progress entries with:
- What was implemented (specific function names, class names)
- Files changed (with descriptions)
- Learnings (patterns, gotchas, architecture insights)
- Quality gate results
**Include this context in story notes** when relevant:
- Which files are likely to be modified
- What existing patterns to follow
- What the agent should document for future iterations
---
## Verification & Testing
Use the **two-tiered testing approach** for all PRDs:
### Tier 1: Story-Level Testing (REQUIRED for every story)
Every story must:
1. **Write tests first** - All tests related to the feature being implemented
2. **Run story-specific tests** - No test is left out from the implementation:
- Lint and typecheck
- Unit tests for new code
- Integration tests for touched code paths
- E2E tests if the story has UI components
3. **All tests must pass** - Story is not complete until tests are written AND passing
| What to Run | When |
|-------------|------|
| Lint + Typecheck | Every story |
| Unit tests for new code | Every story with new functions/components |
| Integration tests for touched code | Every story that modifies existing behavior |
| E2E tests for the feature | Every story with UI or user-facing changes |
| Build verification | Every story |
### Tier 2: Dedicated Testing Sessions (End of phase/PRD)
Include dedicated testing stories at:
- End of each implementation phase
- Final validation before PRD completion
These sessions:
- Run the **complete test suite** (not just related tests)
- Ensure **all E2E tests pass** (full coverage, not just new ones)
- Fix any regressions discovered
- For features: verify E2E tests exist and pass for all user flows
**UI work always gets browser verification** - if there's a visual component, verify it with Agent Browser CLI.
---
## Output Format
Generate two files in `docs/prds/[name]/`:
### PRD.md (Human-readable)
```markdown
# [Project Name]
## Overview
[What and why]
## Goals
[Specific outcomes]
## Quality Gates
### Story-Level Testing (every story)
- `[lint command]` - Lint check
- `[typecheck command]` - Type verification
- `[test command --related]` - Run tests related to changed files
- `[build command]` - Build verification
For stories with UI:
- Run E2E tests for the specific feature
- Verify in browser using agent-browser skill
### Dedicated Testing Sessions (end of phase)
- `[full test command]` - Complete test suite
- `[e2e test command]` - All E2E tests
- Fix any regressions before proceeding
## Non-Goals
[Out of scope]
## Technical Approach
[High-level strategy]
## Phases
[Phase breakdown with objectives]
## Testing Strategy
[How verification happens]
## Risks & Mitigations
[What could go wrong and how to handle it]
## Success Criteria
[How we know it's complete]
```
**IMPORTANT:** Wrap the final PRD.md content in `[PRD]...[/PRD]` markers for parsing:
```
[PRD]
# PRD: [Project Name]
## Overview
...
## Quality Gates
...
## User Stories
...
[/PRD]
```
### prd.json (Machine-readable)
```json
{
"name": "kebab-case-name",
"description": "Context for all tasks. Motivation, goals, reference CLAUDE.md.",
"branchName": "type/feature-name",
"userStories": [
{
"id": "US-001",
"title": "Short descriptive title",
"description": "WHAT and WHY - not HOW. Include tasks embedded here:\n\n**Tasks:**\n1. First task\n2. Second task\n3. Third task",
"acceptanceCriteria": ["First criterion", "Second criterion", "Third criterion"],
"dependsOn": [],
"notes": "File paths, patterns, warnings",
"passes": false
}
]
}
```
**Key points:**
- `tasks`: Embed formatted tasks in `description` (not available as separate field to template)
- `acceptanceCriteria`: Use array - Ralph TUI's template engine converts it to string automatically
- Template receives `{{acceptanceCriteria}}` as a pre-formatted string with checkboxes
---
## After Generation
Provide the user with:
### 1. What Was Created
- File locations for PRD.md and prd.json
- Number of stories and phases
### 2. Pre-Flight Check
**IMPORTANT:** Before starting a Ralph loop, run the pre-flight check:
```
/ralph-preflight
```
This verifies:
- No global CLAUDE.md conflict
- Config and template paths are correct
- prd.json structure is valid
- Template variables will map correctly
- Template uses optimized v2 format (no `{{recentProgress}}`, has gibberish cleanup)
- Template has verbose progress entry format for cross-iteration context
### 3. Execution Setup
Once prd.json exists and pre-flight passes:
**Option A: Simple Branch (recommended for single feature)**
```bash
# 1. Create feature branch
git checkout -b [branch-name-from-prd]
# 2. Start Ralph in tmux
tmux new-session -d -s ralph-[name] "ralph-tui run --prd docs/prds/[name]/prd.json"
tmux attach-session -t ralph-[name]
# 3. Press 's' to start, then Ctrl+B D to detach
```
**Option B: Git Worktree (for parallel development)**
```bash
# 1. Create worktree with new branch
git worktree add ../[repo]-[name] -b [branch-name-from-prd]
cd ../[repo]-[name]
# 2. Copy .ralph-tui config if not using shared config
# (worktrees share git but have separate working directories)
# 3. Start Ralph in tmux
tmux new-session -d -s ralph-[name] "ralph-tui run --prd docs/prds/[name]/prd.json"
tmux attach-session -t ralph-[name]
```
**Ask user:**
```
AskUserQuestion: "How do you want to run this?"
├── "Simple branch" (Recommended) - Single feature in current directory
├── "Git worktree" - Parallel development in isolated directory
└── "Just show me the commands" - Manual setup
```
### 4. Monitoring Notes
**To check progress**:
```bash
# Reattach to tmux session
tmux attach-session -t prd-[name]
# Detach again (leave it running)
# Press Ctrl+B, then D
# Check progress file
cat .ralph-tui/progress.md
# Check iteration logs
ls -la .ralph-tui/iterations/
```
**Recommended check intervals**:
- Simple projects: Every 30-60 minutes
- Complex projects: Every 15-30 minutes initially, then as needed
**Understanding BLOCKED states**:
- BLOCKED means the AI needs human input
- Reattach and provide the needed information
- The loop will continue once you respond
**Where progress is tracked**:
| Location | Contains |
|----------|----------|
| `.ralph-tui/progress.md` | Accumulated learnings and patterns |
| `.ralph-tui/iterations/` | Detailed logs from each iteration |
| `.ralph-tui/state.json` | Current task and completion status |
### 5. Troubleshooting
**If ralphdui is not found**:
```bash
# Install ralph-tui globally
cargo install ralph-tui
# Or use via npx (if available)
npx ralph-tui --prd docs/prds/[name]/prd.json
```
**If the loop gets stuck**:
1. Reattach to tmux session
2. Check what state it's in
3. Provide input if BLOCKED
4. If truly stuck, Ctrl+C to stop and restart
**To start over**:
```bash
# Reset progress (keeps work, restarts loop)
rm -rf .ralph-tui/
ralphdui --prd docs/prds/[name]/prd.json
```
### 6. Important Reminders
- **Keep machine running** during execution - the loop operates autonomously
- **Check back at recommended intervals** - BLOCKED tasks need human input
- **Human input may be needed** for ambiguous situations or decisions
- **Work is committed automatically** after each completed task
- **All tests must pass** for a task to be marked COMPLETE
- **The loop continues** until all tasks are done or it encounters a BLOCKED state
---
## Completion Signals
When executing PRD tasks, use these signals:
| Signal | Meaning |
|--------|---------|
| `COMPLETE` | All criteria met, tests pass |
| `BLOCKED` | Need human input to proceed |
| `SKIP` | Non-critical, can't complete after genuine attempts |
| `EJECT` | Critical failure requiring human intervention |
---
## Key Reminders
- You are intelligent - use guidelines to think, not to follow blindly
- Adapt to the user and their specific situation
- Ask good questions, but know when to stop
- Agent Browser CLI is essential for visual/interactive work
- The goal is a PRD that an AI agent can execute successfully
- When in doubt, verify. When uncertain, ask.
For comprehensive guidance, read `AGENTS.md`.