prd-generator
π―Skillfrom indrasvat/claude-code-skills
Generates comprehensive Product Requirements Documents through interactive discovery, enabling autonomous implementation and progress tracking across multiple Claude sessions.
Part of
indrasvat/claude-code-skills(4 items)
Installation
/plugin marketplace add indrasvat/claude-code-skills/plugin install indrasvat-skills@indrasvat-skillsuv run 01-basic-tab.pyuv run 02-dev-layout.py/plugin uninstall indrasvat-skills+ 1 more commands
Skill Details
Generate comprehensive Product Requirements Documents with interactive discovery, progress tracking, and True Ralph Loop support for autonomous implementation. Use when user wants to (1) create a PRD for a new project/feature, (2) implement a PRD autonomously with fresh Claude sessions, (3) track implementation progress, (4) recover context after session loss. Creates docs/PRD.md and docs/PROGRESS.md.
Overview
# PRD Generator with True Ralph Loop
Generate production-quality PRDs through interactive discovery, then implement autonomously using fresh Claude sessions (True Ralph Loop).
When to Use
- User says: "create PRD", "generate PRD", "new project", "write requirements", "plan feature"
- User wants to implement a PRD autonomously: "implement PRD", "start ralph loop", "autonomous mode"
- User needs to check progress: "PRD status", "what's left", "implementation progress"
- User returns after break/crash: "where was I", "resume", "continue from last session"
Phase 1: Discovery (Interactive Q&A)
Before generating a PRD, gather comprehensive requirements through adaptive, collaborative questioning.
Discovery Philosophy
Be a thought partner, not an interrogator.
Many users start with only a vague idea. Your job is to:
- Help them clarify and refine their thinking
- Offer concrete suggestions when they're unsure
- Validate rough ideas and help shape them
- Make "I don't know" a safe answer that leads somewhere useful
Handling Uncertainty
When a user says "I don't know" or seems unsure:
- Offer 2-3 concrete options to choose from
- Suggest what's typical for similar projects
- Propose a sensible default they can accept or modify
- Break big questions into smaller ones
Examples:
User: "I'm not sure what tech stack to use"
β "Based on [what you've described], here are three approaches that would work well:
1. React + Node.js - Great for interactive UIs, huge ecosystem
2. Next.js - Good if you need SEO, built-in API routes
3. SvelteKit - Lighter weight, excellent performance
What feels right, or should I explain the tradeoffs?"
User: "I don't know about scale requirements"
β "Let's work backwards: Is this for personal use, a small team (<50 users), a growing startup (hundreds), or enterprise scale (thousands+)? For most new projects, starting with 'handles 100 concurrent users smoothly' is a reasonable baseline we can adjust."
User: "I have no idea what success looks like"
β "That's normal at this stage! Let me suggest some metrics based on similar projects:
- For a tool: 'Users complete [core task] in under 2 minutes'
- For an app: 'Daily active users grows 10% week over week'
- For an API: '99.9% uptime, <200ms p95 latency'
Which of these resonates, or what matters most to you?"
Question Flow
Ask questions ONE AT A TIME. Adapt based on answers. Be ready to suggest and guide.
Problem Space (Start Here - Be Exploratory)
- Tell me about what you're trying to build
- Start open-ended: "What's the idea?" or "What sparked this?"
- If vague: "Paint me a picture - what does a user do with this?"
- If stuck: Offer examples: "Is it more like [A], [B], or something different?"
- Follow-up: "What's frustrating about how people handle this today?"
- Who will use this?
- If unsure: "Let's imagine your first 10 users - who are they?"
- Offer personas: "Is this for developers, business users, consumers, or internal teams?"
- Follow-up: "How technical are they? What tools do they already use?"
- How will you know this is working?
- If stuck: "If we check in 3 months from now, what would make you say 'this was worth it'?"
- Offer metrics: "Would success be measured by time saved, revenue, user growth, or something else?"
- Follow-up: "What's the minimum outcome that would make this a win?"
Technical Context (Offer Guidance)
- What's the tech landscape?
- If undecided: "I can suggest a stack based on your constraints. Any languages/frameworks you prefer or want to avoid?"
- If existing code: "Point me to the repo or key files and I'll understand the patterns"
- Proactively suggest: "Given [requirements], I'd recommend [X] because [reason]. Thoughts?"
- Existing code or greenfield?
- If existing: Explore architecture, patterns, conventions
- If greenfield: "Great! We have flexibility. Any architectural patterns you like?"
- Read key files to understand context before asking more questions
- Scale and performance?
- If unsure: "Let's estimate: how many users in month 1? Month 6? Year 1?"
- Offer baselines: "For most new projects, designing for 1000 daily users is a safe start"
- "Any hard requirements like 'must work offline' or 'real-time updates'?"
Scope & Constraints (Help Define Boundaries)
- What should we explicitly NOT build?
- If stuck: "What features would be 'nice to have later' vs 'must have now'?"
- Suggest: "For a solid MVP, I'd suggest cutting [X] and [Y] for phase 2. Sound right?"
- "What would be gold-plating vs essential?"
- Non-functional requirements?
- Offer checklist: "Let me run through some common ones:
- Auth needed? (none / basic / OAuth / SSO)
- Accessibility level? (basic / WCAG AA / AAA)
- Compliance? (GDPR, HIPAA, SOC2, none)"
- Suggest defaults: "For most projects, I'd recommend [X]. Any reason to go stricter?"
- External dependencies?
- Proactively identify: "Based on what you've described, you'll likely need [payment API / auth provider / etc]. Any preferences?"
- "Any services you're already paying for that we should leverage?"
Verification (Guide Toward Testability)
- Testing strategy?
- If unsure: "I'll include a testing approach. Any existing test setup, or should I recommend one?"
- Suggest: "For this type of project, I'd recommend [unit tests for core logic, integration tests for API, e2e for critical flows]"
- What does 'done' look like?
- If stuck: "Let's define the launch checklist together. What MUST work on day 1?"
- Offer: "Typical launch criteria: [feature complete, tests pass, docs exist, deployed to prod]. Add or remove?"
- Edge cases and failure modes?
- Prompt thinking: "What's the worst thing that could happen? Data loss? Security breach? Downtime?"
- Suggest: "Common edge cases for this type of project: [network failures, invalid input, concurrent edits]. I'll include handling for these."
Brainstorming Mode
If the user has only a vague idea, switch to brainstorming mode:
- Explore the problem space: "Let's forget solutions for a moment. Tell me about the frustration or opportunity you've noticed."
- Generate options: "Based on that, here are 3 different products you could build: [A], [B], [C]. Which excites you most?"
- Refine iteratively: "Interesting! Let's explore [choice]. What if it also did [X]? Or would that be too much?"
- Validate direction: "So the core idea is [summary]. Before we go deeper, does that capture it?"
Advanced Discovery Techniques
Five Whys - When the problem is unclear, keep asking "why" to find the root:
```
User: "I need a dashboard"
β Why? "To see metrics"
β Why do you need to see metrics? "To know if campaigns are working"
β Why do you need to know that? "To stop wasting money on bad campaigns"
β ROOT: The real need is campaign ROI visibility, not "a dashboard"
```
Ask About Past Behavior - People remember the past better than they predict the future:
- Instead of: "Would you use a feature that does X?"
- Ask: "Tell me about the last time you tried to do X. What happened? Where did you get stuck?"
Jobs to Be Done (JTBD) - Frame requirements around the "job" users hire the product to do:
- Template: "When [situation], I want to [motivation], so I can [outcome]"
- Example: "When I'm reviewing PRs late at night, I want to quickly see what changed, so I can approve without missing bugs"
Opportunity Solution Tree - Connect outcomes to opportunities to solutions:
```
Outcome: Increase user retention
βββ Opportunity: Users forget to return
βββ Solution A: Email reminders
βββ Solution B: Mobile push notifications
βββ Opportunity: Users don't see value quickly
βββ Solution A: Improved onboarding
βββ Solution B: Quick wins in first session
```
Pre-Mortem Technique (Shreyas Doshi) - Before building, imagine it failed:
- "It's 6 months from now and this project was a disaster. What went wrong?"
- Forces realistic risk assessment upfront
Encouraging Responses
Use encouraging language throughout:
- "That's a great starting point - let's build on it"
- "Good instinct. Here's how we might refine that..."
- "That's actually a common challenge. Here's what usually works..."
- "Perfect, that tells me a lot. Now I'm curious about..."
- "Not sure? No problem - let me offer some options..."
Completeness Check
Before generating PRD, verify each section has sufficient detail:
| Section | Required Info |
|---------|--------------|
| Problem | Clear pain points, user impact |
| Users | Persona, technical level, workflow |
| Success | Measurable metrics |
| Tech | Stack, architecture decisions |
| Scope | In/out of scope explicit |
| Testing | Strategy defined |
| Done | Acceptance criteria clear |
If any section is sparse, ask targeted follow-ups.
Phase 2: PRD Generation
Once discovery is complete, generate docs/PRD.md:
```bash
mkdir -p docs
```
Use the template in [templates/PRD-TEMPLATE.md](templates/PRD-TEMPLATE.md).
Critical PRD Requirements:
- Every task must have a checkbox:
- [ ] Task description - Group tasks into numbered phases (Phase 1, Phase 2, etc.)
- Each task ID format:
Task X.Y(e.g., Task 1.1, Task 2.3) - Include testable acceptance criteria for each user story
- Explicit "Out of Scope" section to prevent scope creep
Phase 3: PROGRESS.md Creation
Immediately after PRD, create docs/PROGRESS.md:
Use the template in [templates/PROGRESS-TEMPLATE.md](templates/PROGRESS-TEMPLATE.md).
Critical PROGRESS.md Requirements:
- "Quick Context" section at top for instant orientation
- Current task clearly identified
- Recovery instructions for context loss scenarios
- Session history log for debugging
Phase 4: True Ralph Loop (Autonomous Implementation)
Why "True Ralph"?
The official Anthropic Ralph plugin uses a Stop hook that keeps Claude in the SAME session. This causes:
- Context rot from compaction over time
- "Ralph Wiggum state" - confusion from accumulated noise
- Degraded output quality after many iterations
True Ralph (Geoffrey Huntley's original vision) spawns FRESH Claude sessions:
- Each iteration has full context capacity
- No accumulated noise from previous attempts
- State persists only through files (PRD.md, PROGRESS.md, git)
Mode 1: External Script (Recommended)
When user wants to start Ralph loop, explain clearly:
```
True Ralph requires fresh Claude sessions OUTSIDE of this conversation.
This cannot run from within Claude - you need to run it from your terminal.
- Open a NEW terminal window
- Navigate to your project:
cd [PROJECT_PATH]
- Run the True Ralph Loop:
~/.claude/plugins/indrasvat-skills/skills/prd-generator/scripts/true-ralph-loop.sh -n [ITERATIONS]
- Monitor progress:
- Watch terminal output
- Check docs/PROGRESS.md
- View logs in .ralph/logs/
- Stop gracefully: Ctrl+C
```
Before handing off:
- Validate docs/PRD.md exists and has tasks
- Ensure docs/PROGRESS.md exists
- Verify git repo if applicable
- Output the exact command to run
Mode 2: tmux Detach
If user prefers tmux and it's available:
```bash
# Check tmux availability
command -v tmux &>/dev/null || { echo "tmux not installed"; exit 1; }
# Get project name for session naming
PROJECT_NAME=$(basename "$(pwd)" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
# Spawn detached session
tmux new-session -d -s "ralph-${PROJECT_NAME}" \
"~/.claude/plugins/indrasvat-skills/skills/prd-generator/scripts/true-ralph-loop.sh -n [ITERATIONS]"
echo "Ralph loop started in tmux session: ralph-${PROJECT_NAME}"
echo "Attach: tmux attach -t ralph-${PROJECT_NAME}"
echo "Kill: tmux kill-session -t ralph-${PROJECT_NAME}"
```
Phase 5: Status Check
When user asks about progress:
```bash
echo "=== PRD Status ==="
if [ -f docs/PRD.md ]; then
TOTAL=$(grep -c '^\- \[' docs/PRD.md 2>/dev/null || echo "0")
DONE=$(grep -c '^\- \[x\]' docs/PRD.md 2>/dev/null || echo "0")
PENDING=$(grep -c '^\- \[ \]' docs/PRD.md 2>/dev/null || echo "0")
echo "Total tasks: $TOTAL"
echo "Completed: $DONE"
echo "Pending: $PENDING"
if [ "$TOTAL" -gt 0 ]; then
PCT=$((DONE * 100 / TOTAL))
echo "Progress: $PCT%"
fi
else
echo "No PRD found at docs/PRD.md"
fi
echo ""
echo "=== Current State ==="
if [ -f docs/PROGRESS.md ]; then
head -25 docs/PROGRESS.md
else
echo "No PROGRESS.md found"
fi
```
Phase 6: Context Recovery
When user returns after a break, crash, or context loss:
- Read PROGRESS.md first - contains quick context and current task
- Read PRD.md - understand full requirements
- Check git log - see recent commits
- Check git status - see uncommitted changes
```bash
echo "=== Recovering Context ==="
echo ""
if [ -f docs/PROGRESS.md ]; then
echo "Quick context from PROGRESS.md:"
head -20 docs/PROGRESS.md
fi
echo ""
echo "Recent git activity:"
git log --oneline -5 2>/dev/null || echo "Not a git repo"
echo ""
echo "Uncommitted changes:"
git status -s 2>/dev/null || echo "Not a git repo"
```
Then summarize:
- Current phase and task
- What was last completed
- What should be done next
Best Practices
PRD Writing
- Use checkboxes (
- [ ]) for ALL actionable items - Group tasks logically into phases
- Each phase should be independently deployable
- Include "Out of Scope" to prevent creep
- Make acceptance criteria testable
PROGRESS.md Updates
- Update after EVERY task completion
- Move next pending task to "In Progress"
- Log blockers immediately
- Include relevant file paths and commit hashes
Ralph Loop Success
- Set realistic
--max-iterations(start with 10-15) - Ensure PRD tasks are granular (1-2 hour chunks)
- Each task should be independently verifiable
- Include test commands in PRD when applicable
Troubleshooting
"Claude keeps doing the same thing"
- Check PROGRESS.md - is the current task clearly marked?
- Regenerate PROGRESS.md with explicit task state
- Verify PRD tasks are actually checkboxed
"Ralph loop stops unexpectedly"
- Check
.ralph/logs/for the last iteration log - Verify
claudeCLI is working:claude --version - Check for syntax errors in PROGRESS.md
"Lost context after compaction"
- This is normal - use PROGRESS.md for recovery
- Run context recovery steps above
- The whole point of True Ralph is to handle this gracefully
See Also
- [
templates/PRD-TEMPLATE.md](templates/PRD-TEMPLATE.md) - Full PRD template - [
templates/PROGRESS-TEMPLATE.md](templates/PROGRESS-TEMPLATE.md) - Full progress template - [
scripts/true-ralph-loop.sh](scripts/true-ralph-loop.sh) - The True Ralph Loop script - [
references/discovery-questions.md](references/discovery-questions.md) - Extended question bank
More from this repository3
Drives iTerm2 programmatically to automate terminal tasks, run tests, inject commands, and interact with CLI/TUI applications using Python.
Deploys web apps, APIs, static sites, and edge functions to Cloudflare's free tier using wrangler and cloudflared CLIs for personal projects.
Performs selective, local AI-powered code reviews via CodeRabbit CLI, focusing on high-risk or explicitly requested code changes with a strict 1-review-per-hour limit.