prd-generator

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.

16 stars

Best use case

prd-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using prd-generator should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/prd-generator/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/product/prd-generator/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/prd-generator/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How prd-generator Compares

Feature / Agentprd-generatorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 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:

1. **Offer 2-3 concrete options** to choose from
2. **Suggest what's typical** for similar projects
3. **Propose a sensible default** they can accept or modify
4. **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)**

1. **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?"

2. **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?"

3. **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)**

4. **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?"

5. **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

6. **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)**

7. **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?"

8. **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?"

9. **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)**

10. **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]"

11. **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?"

12. **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:

1. **Explore the problem space**: "Let's forget solutions for a moment. Tell me about the frustration or opportunity you've noticed."

2. **Generate options**: "Based on that, here are 3 different products you could build: [A], [B], [C]. Which excites you most?"

3. **Refine iteratively**: "Interesting! Let's explore [choice]. What if it also did [X]? Or would that be too much?"

4. **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.

1. Open a NEW terminal window

2. Navigate to your project:
   cd [PROJECT_PATH]

3. Run the True Ralph Loop:
   ~/.claude/plugins/indrasvat-skills/skills/prd-generator/scripts/true-ralph-loop.sh -n [ITERATIONS]

4. Monitor progress:
   - Watch terminal output
   - Check docs/PROGRESS.md
   - View logs in .ralph/logs/

5. Stop gracefully: Ctrl+C
```

Before handing off:
1. Validate docs/PRD.md exists and has tasks
2. Ensure docs/PROGRESS.md exists
3. Verify git repo if applicable
4. 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:

1. **Read PROGRESS.md first** - contains quick context and current task
2. **Read PRD.md** - understand full requirements
3. **Check git log** - see recent commits
4. **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 `claude` CLI 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

Related Skills

presentation-generator

16
from diegosouzapw/awesome-omni-skill

Google Slides presentation creation for PM deliverables. Use when creating presentations from PRDs, pitching ideas, stakeholder updates, or product roadmaps. Triggers on "presentation", "slides", "pitch deck", "stakeholder meeting", "Google Slides".

app-icon-generator

16
from diegosouzapw/awesome-omni-skill

Generates app icons in all required sizes for iOS, Android, and PWA from a single source image. Use when user asks to "generate app icons", "create ios icons", "android app icons", "favicon", or "pwa icons".

bac-presentation-generator

16
from diegosouzapw/awesome-omni-skill

Transforms markdown files into brand-compliant BAC HTML presentations with professional styling, proper typography, and integrated branding. Supports manual browser-based PDF export.

angular-component-generator

16
from diegosouzapw/awesome-omni-skill

Generate Angular components with TypeScript, templates, and styles. Triggers on "create angular component", "generate ng component", "angular module", "ng generate".

ai-image-asset-generator

16
from diegosouzapw/awesome-omni-skill

This skill should be used when generating AI image assets for websites, landing pages, or applications. It automatically analyzes page requirements, generates images using Gemini API, removes backgrounds, converts to SVG for interactivity, and places assets in frontend code. Ideal for creating hero images, icons, backgrounds, product mockups, and infographic elements. Use this skill when users need image assets for their web projects.

readme-generator

16
from diegosouzapw/awesome-omni-skill

Generate a production-quality README.md by analyzing project structure, framework, and code

Onboarding Guide Generator

16
from diegosouzapw/awesome-omni-skill

Generate onboarding guides for new team members based on project structure

changelog-generator

16
from diegosouzapw/awesome-omni-skill

Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.

agent-context-generator

16
from diegosouzapw/awesome-omni-skill

Generate project-level AGENTS.md guides that capture conventions, workflows, and required follow-up tasks. Use when a repository needs clear agent onboarding covering structure, tooling, testing, task flow, README expectations, and conventional commit summaries.

adr-generator

16
from diegosouzapw/awesome-omni-skill

Specialized skill for generating and managing Architecture Decision Records (ADRs). Supports Nygard, MADR, and custom templates with auto-numbering, linking, and status management.

ln-731-docker-generator

16
from diegosouzapw/awesome-omni-skill

Generates Docker and docker-compose configuration for multi-container development

k8s-yaml-generator

16
from diegosouzapw/awesome-omni-skill

Comprehensive toolkit for generating, validating, and managing Kubernetes YAML resources. Use this skill when creating Kubernetes manifests (Deployments, Services, ConfigMaps, StatefulSets, etc.), working with Custom Resource Definitions (CRDs), or generating production-ready K8s configurations.