doc-prd
Create a Product Requirements Document (PRD) - Layer 2 of the SDD flow, defining product features, personas, success metrics, and acceptance criteria from an upstream BRD. Use after a BRD exists and before EARS. Single-document authoring primitive; for end-to-end or batch generation the autopilot (doc-prd-autopilot) drives this skill.
Works with
Agent Skills format with YAML frontmatter. Claude Code reads it as-is.
---
name: "doc-prd"
description: "Create a Product Requirements Document (PRD) - Layer 2 of the SDD flow, defining product features, personas, success metrics, and acceptance criteria from an upstream BRD. Use after a BRD exists and before EARS. Single-document authoring primitive; for end-to-end or batch generation the autopilot (doc-prd-autopilot) drives this skill."
license: "MIT"
---
# doc-prd
## Purpose
Create a **Product Requirements Document (PRD)** — Layer 2 of the SDD flow.
A PRD defines product features, personas, success metrics, and acceptance
criteria at the **C4 Container** level (what the product does, not how).
**Layer**: 2 (Container level). **Upstream**: BRD.
**Downstream**: EARS → BDD → ADR → SPEC → TDD → IPLAN → Code.
One PRD per BRD iteration cycle (MVP → PROD → new MVP). New scope gets a new
PRD; link cycles with `@depends: PRD-NN`.
## When to Use
Use `doc-prd` when:
- A BRD exists and you need to define product features and user requirements.
- Translating business needs into product capabilities, personas, and KPIs.
- Elaborating BRD §8 architecture topics into technical options for ADR.
For end-to-end generation from a BRD, a prompt, or an IPLAN, use
`../doc-prd-autopilot/SKILL.md`.
## Prerequisites
PRD requires an upstream BRD. Before writing, read:
1. **Upstream BRD** — the BRD that drives this PRD. If it is split into section
files (`docs/01_BRD/BRD-NN_{slug}/`), read **all** files as one logical
document.
2. **Template (source of truth):** `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/PRD-TEMPLATE.yaml`
3. **Layer README:** `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/README.md`
4. **ID & tag standards:** `${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md`
5. **Authoring style:** `${CLAUDE_PLUGIN_ROOT}/framework/governance/AUTHORING_STYLE.md`
Confirm no ID collision: `ls docs/02_PRD/ 2>/dev/null`. Reference only BRD
elements that exist; never invent placeholders like `BRD-XXX` or `TBD`. The PRD
ID need not match the BRD ID (PRD-09 may implement BRD-16).
## Layer Guidance
### Content boundaries (decide what belongs here)
PRD is the **Container** level. Keep product capabilities, user journeys, and
error handling; push everything else downstream.
| Content | Belongs in |
|---------|-----------|
| Product features, personas, KPIs, journeys | **PRD** (this layer) |
| `WHEN-THE-SHALL-WITHIN` formal requirements | EARS (Layer 3) |
| `Given-When-Then` executable scenarios | BDD (Layer 4) |
| Architecture decisions | ADR (Layer 5) |
| Schemas, endpoints, infra config | SPEC (Layer 6) |
### Required structure (15 sections)
`document_control` comes **first** (product name, version, status, dates,
author/reviewer/approver, `@brd:` reference, EARS-Ready score, revision
history). Then:
2. Executive Summary (incl. MVP hypothesis) · 3. Problem Statement ·
4. Target Audience & User Personas · 5. Success Metrics & KPIs ·
6. Goals & Objectives · 7. Scope & Requirements · 8. User Stories & User Roles ·
9. Functional Requirements (incl. **user journey** + diagram contract) ·
10. **Customer-Facing Content & Messaging** · 11. Acceptance Criteria ·
12. Constraints & Assumptions · 13. Risk Assessment · 14. Traceability
(incl. **ADR topic elaboration**) · 15. Glossary.
See `PRD-TEMPLATE.yaml` for per-section content and embedded `_guidance`.
### Section 8 — User Stories (layer separation, mandatory note)
Hold **role definitions and story summaries** (`As a [role], I want
[capability] so that [benefit]`) with product-level acceptance criteria only.
Include the note: *detailed behaviors live in EARS; executable scenarios live
in BDD.* Do **not** write WHEN-THE-SHALL or Given-When-Then here.
### Section 10 — Customer-Facing Content (mandatory, blocking)
Must carry substantive content in **at least 3** categories: product
positioning, key messaging, feature descriptions, documentation, help text,
error messages, success confirmations, onboarding, release notes.
Placeholder-only content is a blocking error.
### Section 14 — ADR topic elaboration
Elaborate BRD §8 topics with **technical options and evaluation criteria**.
Layer separation: BRD = *what & why* · PRD = *how to evaluate* · ADR = *the
decision*. **Do not reference ADR numbers** — ADRs do not exist yet.
### Element IDs and tags
- Hierarchical element IDs: `PRD.{doc_id}.{section_id}.{hash}` (e.g.
`PRD.01.09.b3f2`). Emit a **stable 4-hex-char identifier** per element, distinct within its section (`HASH01`); extend to 8 on collision. Do **not** compute SHA-256 in this prompt — the hash form is the canonicalization TARGET produced by a deterministic tool pass, and byte-exact field extraction is defined for BRD §7 only (Phase 2+ for PRD). Authority: `framework/governance/ID_NAMING_STANDARDS.md`.
`SS` is the **section the element lives in** — no numeric type-codes.
- PRD is Layer 2, so it carries **`@brd:`** tags (e.g.
`@brd: BRD.01.07.a7f3`). Downstream artifacts tag it: `@prd: PRD.01.09.b3f2`.
- **Removed patterns** (do not use): `FR-XXX`, `US-XXX`, `AC-XXX`, `F-XXX`, and
the legacy 3-segment `PRD.NN.xxxx`.
- Quantitative values that may change use `@threshold: PRD.NN.{category}.{key}`
(categories: quota, risk, perf, timeout, rate).
## Creation Process
1. **Read the parent BRD** — all section files as one document; extract
objectives, stakeholders, success criteria, and §8 topics.
2. **Reserve ID** — next free `PRD-NN` (two digits: `PRD-01`, `PRD-99`,
`PRD-102`).
*Per-layer independence (CLEANUP-PR-F item 18):* pick the next-free
number in YOUR layer's index — the upstream's number is NOT your number
(doc numbers are per-layer sequential and independent; see
`framework/governance/ID_NAMING_STANDARDS.md` §Cross-layer cardinality).
3. **Create the nested folder** — every PRD lives in
`docs/02_PRD/PRD-NN_{slug}/` regardless of size. Monolithic:
`PRD-NN_{slug}.md` inside it; section-based (>25 KB): `PRD-NN.S_{section}.md`
- index from `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/PRD-00_index.TEMPLATE.md`.
4. **Document Control first**, then complete all 15 sections from the template.
5. **Fill §10** (≥3 customer-facing categories); **elaborate §14** ADR topics
without ADR numbers.
6. **Add `@brd:` tags** resolving to existing BRD elements.
7. **Update the PRD index** `docs/02_PRD/PRD-00_index.md` and add this PRD to
the parent BRD's Downstream Artifacts in the same change.
8. **Validate** (below) and commit the PRD, index, and BRD update together.
## Validation
**This skill is the validator** (no runtime code). Apply against `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/README.md` and `${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md`.
- [ ] Document Control is the first section, with `@brd:` reference and
EARS-Ready score.
- [ ] All 15 sections present and non-empty.
- [ ] §10 has substantive content in ≥3 categories (not placeholders).
- [ ] §8 holds PRD-level summaries only, with the layer-separation note.
- [ ] §14 elaborates ADR topics; no ADR numbers referenced.
- [ ] Element IDs match `PRD.NN.SS.xxxx`; `SS` equals the host section; no
removed patterns.
- [ ] `@brd:` tags resolve to existing BRD elements.
- [ ] Traceability / index updated; parent BRD updated; no broken links.
- [ ] Diagram contract: `@diagram: c4-l2` and `@diagram: dfd-l2` present (use
`../charts-flow/SKILL.md`); sequence diagrams include `alt/else`.
| Code | Meaning | Severity |
|------|---------|----------|
| XDOC-002 | Missing required upstream tag (`@brd`) | error |
| XDOC-006 | Tag format invalid | error |
| XDOC-008 | Broken internal link | error |
| XDOC-009 | Missing traceability section | error |
**Quality gate (blocking):** EARS-Ready score ≥ 90/100 before moving on. If
issues are found, fix and re-check; if unfixable, log for manual review.
## Next Skill
`../doc-ears/SKILL.md` — the EARS references this PRD (`@prd: PRD.NN.SS.xxxx`)
and formalizes PRD features into `WHEN-THE-SHALL-WITHIN` requirements. (Per the
necessary-upstream contract, EARS itself only requires `@prd`; upstream BRD
lineage is reachable transitively via the @-tag chain.)
## Adaptation
Read `.aidoc/profile.yaml`; honor only this skill's knobs
(`section_toggles`, `glossary`). Ignore unknown keys; absent a profile, use
framework defaults. Authority:
`${CLAUDE_PLUGIN_ROOT}/framework/governance/ADAPTATION.md`.
## Related Resources
- Template / authoring rules: `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/PRD-TEMPLATE.yaml`
- Layer README: `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/README.md`
- Index template: `${CLAUDE_PLUGIN_ROOT}/framework/layers/02_PRD/PRD-00_index.TEMPLATE.md`
- ID & tag standards: `${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md`
- Upstream BRD: `../doc-brd/SKILL.md`
- Quality gate: `../doc-prd-audit/SKILL.md` · Fixes: `../doc-prd-fixer/SKILL.md`
- Generation pipeline: `../doc-prd-autopilot/SKILL.md`
## Quick Reference
| | |
|---|---|
| **Purpose** | Define product features, personas, and KPIs |
| **Layer** | 2 (Container) |
| **Upstream tags** | `@brd` (per necessary-upstream contract) |
| **Key decision** | What stays PRD-level vs pushes downstream |
| **Must include** | Document Control (first), §10 (≥3 categories), §14 ADR topics, 15 sections |
| **Next** | `doc-ears` |More General & Other skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

