| name | prd |
| description | Generate a Product Requirements Document for a new feature. Use when planning a feature, starting a new project, or asked to create a PRD. Triggers on: create a prd, write prd for, plan this feature, requirements for, spec out.
|
PRD Generator
Create detailed Product Requirements Documents that are clear, actionable, and suitable for implementation.
The Job
- Receive a feature description from the user
- Ask 3-5 essential clarifying questions (with lettered options)
- Generate a structured PRD based on answers
- Save to
.ralph/prd-[feature-name].md
Important: Do NOT start implementing. Just create the PRD.
Step 1: Clarifying Questions
Ask only critical questions where the initial prompt is ambiguous. Focus on:
- Problem/Goal: What problem does this solve?
- Core Functionality: What are the key actions?
- Scope/Boundaries: What should it NOT do?
- Success Criteria: How do we know it's done?
Format Questions Like This:
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
3. What is the scope?
A. Minimal viable version
B. Full-featured implementation
C. Just the backend/API
D. Just the UI
This lets users respond with "1A, 2C, 3B" for quick iteration. Remember to indent the options.
Step 2: PRD Structure
Generate the PRD with these sections:
1. Introduction/Overview
Brief description of the feature and the problem it solves.
2. Goals
Specific, measurable objectives (bullet list).
3. User Stories
Each story needs:
- Title: Short descriptive name
- Description: "As a [user], I want [feature] so that [benefit]"
- Acceptance Criteria: Verifiable checklist of what "done" means
Each story should be small enough to implement in one focused session.
Format:
### US-001: [Title]
**Description:** As a [user], I want [feature] so that [benefit].
**Acceptance Criteria:**
- [ ] Specific verifiable criterion
- [ ] Another criterion
- [ ] Typecheck passes
<% if (playwright === 'cli') { -%>
- [ ] **[UI stories only]** Verify in browser using Playwright CLI
<% } else if (playwright === 'mcp') { -%>
- [ ] **[UI stories only]** Verify in browser using Playwright MCP tools
<% } else if (playwright) { -%>
- [ ] **[UI stories only]** Verify in browser
<% } -%>
Important:
- Acceptance criteria must be verifiable, not vague. "Works correctly" is bad. "Button shows confirmation dialog before deleting" is good.
<% if (playwright === 'cli') { -%>
- For any story with UI changes: Always include "Verify in browser using Playwright CLI" as acceptance criteria.
<% } else if (playwright === 'mcp') { -%>
- For any story with UI changes: Always include "Verify in browser using Playwright MCP tools" as acceptance criteria.
<% } else if (playwright) { -%>
- For any story with UI changes: Always include "Verify in browser" as acceptance criteria.
<% } -%>
4. Functional Requirements
Numbered list of specific functionalities.
5. Non-Goals (Out of Scope)
What this feature will NOT include.
6. Design Considerations (Optional)
UI/UX requirements, mockup links, existing components to reuse.
7. Technical Considerations (Optional)
Known constraints, dependencies, integration points, performance requirements.
8. Success Metrics
How success will be measured.
9. Open Questions
Remaining questions or areas needing clarification.
Writing for Autonomous Agents
The PRD reader may be a junior developer or AI agent. Therefore:
- Be explicit and unambiguous
- Avoid jargon or explain it
- Provide enough detail to understand purpose and core logic
- Number requirements for easy reference
- Use concrete examples where helpful
Backpressure Commands
When writing acceptance criteria that include quality checks, use project-specific commands:
<% if (typeof backpressureCommands !== 'undefined' && backpressureCommands.length > 0) { -%>
<% for (const cmd of backpressureCommands) { -%>
- <%= cmd.name %>:
<%= cmd.command %>
<% } -%>
<% } else { -%>
No backpressure commands configured. Check fabis-ralph-loop.config.ts to add quality checks.
<% } -%>
Output
- Format: Markdown (
.md)
- Location:
.ralph/
- Filename:
prd-[feature-name].md (kebab-case)
Checklist
Before saving the PRD: