create-prd
Draft PRD with scope, stories, acceptance criteria, verification. Use when shaping a new feature or spec.
Best use case
create-prd is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Draft PRD with scope, stories, acceptance criteria, verification. Use when shaping a new feature or spec.
Teams using create-prd 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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/create-prd/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How create-prd Compares
| Feature / Agent | create-prd | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Draft PRD with scope, stories, acceptance criteria, verification. Use when shaping a new feature or spec.
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
# Create PRD
## Quick Start
1. Copy the template: `assets/prd-template.md`
2. Fill it out in the target dossier:
- Single-PRD dossier: `prd.md`
- Multi-PRD dossier:
- Overall / spine PRD at the dossier root: `prd-overall.md`
- Slice PRDs under `prds/`: `prds/<slice_id>_<slug>/prd.md`
Notes:
- Lowest-level PRD filenames are always `prd.md` (no `prd-slice-*` filenames).
- Use a short kebab-case slug like `auth-token-rotation` or `invoice-pdf-export`.
3. Pull all details from shaping inputs into the PRD so it’s implementable without extra context (no information loss)
## PRD Slicing Rubric (Reusable)
### Rules of thumb (thin PRDs)
- One PRD should deliver **one user-visible affordance** (or one backend capability with a **measurable, observable effect**), not a whole workflow.
- Each PRD must have **measurable acceptance criteria** tied to at least one **replayable verification pack** (fixture data, synthetic dataset, scripted scenario, etc.).
- Keep PRDs **vertical-ish**: UI + a thin API/data change where needed, but avoid building platform layers unless they **directly unblock the next slice**.
- If a PRD introduces a new failure mode, it must also introduce the **UX to surface it** (no silent failures).
- Prefer **scaffold then replace**: ship a deterministic baseline behind stable contracts first, then swap in ML/OCR/retrieval/LLM (or other complex components) behind the same interface.
### Examples (good slices)
- "UI affordance X triggers state Y, persists, and is visible after refresh."
- "API returns payload + stable checksum/hash so clients can detect mismatches."
- "Verifier rejects records on checksum mismatch and surfaces a user-visible error state."
- "Parser extracts a single structured list into a table with row-level provenance."
### Examples (bad slices)
- "Build ingestion + parsing + retrieval + drafting + verification + export" (too many risks bundled).
- "Implement an autonomous multi-agent copilot" (non-deterministic + typically too broad for a single slice).
- "Add full template/customisation system" (platform work without proving the core loop).
### Red flags a PRD is too fat
- Touches 3+ major subsystems/components in one go.
- Needs more than 1-2 new schemas or widespread data model churn.
- Acceptance criteria can't be tested against a pack/fixture/script.
- Contains multiple hard unknowns at once (new parsing + matching + verification together).
### Minimum PRD structure (every PRD)
The minimum structure is defined by `assets/prd-template.md` and must include:
- Introduction/Overview (problem + goal)
- Goals
- User stories
- Functional requirements (numbered)
- Non-goals (out of scope)
- Success metrics
- Open questions
Additionally, every PRD must include:
- Acceptance criteria + verification plan (pack/fixture/script)
- Failure states + user-visible UX (no silent failures)
- Metrics/logging (at least 1 signal)
- Rollback/disable path (feature flag or safe default)
- A lightweight "Sources" section pointing to shaping inputs (brief/breadboard/spike/risk-register)
## Inputs
One or more of the following:
- Problem statement + target users
- Success metric
- Constraints, risks, dependencies
- Any existing verification packs/fixtures/scripts (or willingness to create a minimal one)
## No Context Loss (Requirement)
If any of the following shaping files exist, no information should be lost from them:
- `brief.md`
- `breadboard-pack.md`
- `spike-investigation.md`
- `risk-register.md`
Guidance:
- Prefer integrating shaping details directly into the PRD sections (requirements, risks, constraints, UX, verification).
- Add a short "Sources" section with links/paths to the shaping files you used.
- If a detail does not fit cleanly into a PRD section, add it to the appendix as notes or key excerpts. Avoid dumping large verbatim blocks by default.
- Each PRD must be implementable without needing additional context outside the PRD.
Try find this information:
- `brief.md`
- `breadboard-pack.md`
- `spike-investigation.md`
- `risk-register.md`
Where unclear, use the `ask-questions-if-underspecified` skill.
## Outputs
- Single-PRD dossier: `prd.md` in the dossier root.
- Multi-PRD dossier:
- Overall / spine PRD in the dossier root as `prd-overall.md`.
- Slice PRDs under `prds/<slice_id>_<slug>/prd.md`.
## Steps
1. Ask 3-5 clarifying questions (answerable as 1A, 2B) that force a thin slice:
- What is the single user-visible affordance (or single observable backend capability)?
- What is the primary observable effect (what changes, where can we see it)?
- What pack/fixture/script will we use to verify acceptance criteria?
- What new failure modes does this introduce, and how should UX surface them?
- What is the rollback/disable path (flag/default-off/fallback)?
2. Run the slicing rubric:
- If the scope triggers a red flag, propose a split into PRD-1/PRD-2/... and proceed with the smallest slice that unblocks the next.
3. Use the PRD template at `assets/prd-template.md`.
4. Fill sections (short, explicit; keep the template headings):
- Introduction/Overview + goals
- In scope + non-goals (out of scope)
- User stories (US-001...), one sprint-sized
- Functional requirements (FR-001...)
- Acceptance criteria + verification plan per story (measurable; tied to a pack/fixture/script)
- Failure states and UX (no silent failures)
- Metrics/logging + rollback/disable path
- Risks + dependencies
- Success metrics + open questions
- Sources: link to shaping inputs used
- Appendix (optional): shaping notes / key excerpts when needed (see "No Context Loss")
5. Ensure criteria map to verification; split oversized stories. If generating multiple PRDs:
- Create the overall/spine PRD at the dossier root as `prd-overall.md`.
- Create each slice PRD under `prds/<slice_id>_<slug>/prd.md` (one folder per slice).
Each PRD must be independently implementable and must not lose shaping input information.
## Verification
- PRD delivers one affordance / one observable capability.
- Acceptance criteria measurable, testable, and tied to at least one pack/fixture/script.
- Acceptance criteria mapped to verification (tests/build/smoke/scripts).
- Failure modes surfaced in UX (no silent failures).
- At least 1 metric/log signal is specified.
- Rollback/disable path is explicit (flag or safe default).
- Stories small, priority ordered.
- Location matches `docs/AGENTS.md`.
- If there are multiple PRDs for a dossier:
- the overall/spine PRD is `prd-overall.md` in the dossier root
- each slice lives under `prds/<slice_id>_<slug>/prd.md` (folder-per-slice; lowest-level PRD filename is always `prd.md`)
- Sources section links to shaping inputs used.
- No information is lost from shaping inputs (details are integrated into the PRD or captured in the appendix).Related Skills
create-agent-skills
Expert guidance for creating, writing, and refining Claude Code Skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices.
create-json-prd
Generate a Product Requirements Document (PRD) as JSON for Ralph by converting an existing PRD markdown file. Triggers on: create a prd, write prd for, plan this feature, requirements for, spec out.
create-cli
Design command-line interface parameters and UX: arguments, flags, subcommands, help text, output formats, error messages, exit codes, prompts, config/env precedence, and safe/dry-run behavior. Use when you’re designing a CLI spec (before implementation) or refactoring an existing CLI’s surface area for consistency, composability, and discoverability.
skill-creator
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
modular-skills-architect
Map and refactor an agent context ecosystem: skills, commands/workflows, hooks, agent files, AGENTS.md templates, and docs. Output system map, module/dependency design, Register updates, and a concrete split/consolidate/rename/delete plan. Use when routing or ownership is messy.
heal-skill
This skill should be used when fixing incorrect SKILL.md files with outdated instructions or APIs.
agent-native-audit
Comprehensive agent-native architecture audit with scored principles and multi-slice review. Use for system-wide health checks or periodic audits.
write-judge-prompt
Design LLM-as-Judge evaluators for subjective criteria that code-based checks cannot handle. Use when a failure mode requires interpretation (tone, faithfulness, relevance, completeness). Do NOT use when the failure mode can be checked with code (regex, schema validation, execution tests). Do NOT use when you need to validate or calibrate the judge — use validate-evaluator instead.
validate-evaluator
Calibrate an LLM judge against human labels using data splits, TPR/TNR, and bias correction. Use after writing a judge prompt (write-judge-prompt) when you need to verify alignment before trusting its outputs. Do NOT use for code-based evaluators (those are deterministic; test with standard unit tests).
generate-synthetic-data
Create diverse synthetic test inputs for LLM pipeline evaluation using dimension-based tuple generation. Use when bootstrapping an eval dataset, when real user data is sparse, or when stress-testing specific failure hypotheses. Do NOT use when you already have 100+ representative real traces (use stratified sampling instead), or when the task is collecting production logs.
evaluate-rag
Guides evaluation of RAG pipeline retrieval and generation quality. Use when evaluating a retrieval-augmented generation system, measuring retrieval quality, assessing generation faithfulness or relevance, generating synthetic QA pairs for retrieval testing, or optimizing chunking strategies.
eval-audit
Audit an LLM eval pipeline and surface problems: missing error analysis, unvalidated judges, vanity metrics, etc. Use when inheriting an eval system, when unsure whether evals are trustworthy, or as a starting point when no eval infrastructure exists. Do NOT use when the goal is to build a new evaluator from scratch (use error-analysis, write-judge-prompt, or validate-evaluator instead).