Playbook for writing build-ready PRDs — structure, user stories, acceptance criteria, scope vs non-goals, edge cases, and the anti-patterns that kill engineering velocity. Used by spec-writer (to author) and spec-reviewer (as the rubric).
Installs into .claude/skills of the current project.
Are you the author of Prd Authoring?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/vandanaajaydubey111-prd-authoring-great-pm)
---
name: prd-authoring
description: "Playbook for writing build-ready PRDs — structure, user stories, acceptance criteria, scope vs non-goals, edge cases, and the anti-patterns that kill engineering velocity. Used by spec-writer (to author) and spec-reviewer (as the rubric)."
---
## Codex host binding
- Treat references to Claude slash workflows as the equivalently named Codex skill.
- Before delegating to any specialist, read the `great-pm-runtime` skill and the selected packaged role file.
- Treat "invoke", "assign", "delegate", "spawn", and source Agent-tool instructions as a required Codex `spawn_agent` call with that role and a bounded assignment.
- For the spawn tool's `task_name` or `agent_name` identifier, replace canonical role-name hyphens with underscores (`query-refiner-pm` → `query_refiner_pm`). Keep canonical names unchanged in prompts, filenames, verdict logs, and user-facing output; this is an internal identifier mapping, not a role rename.
- Store every returned agent identifier. Never call a wait tool until a spawn has returned an identifier, and wait only on identifiers returned by successful spawns.
- If `spawn_agent` is unavailable or a spawn fails, report BLOCKED; do not impersonate the specialist or wait on an empty agent set.
- Resolve bundled paths from the installed GreatPM plugin root.
- Ignore Claude-only model aliases, colors, turn limits, and tool allowlists.
- Preserve GreatPM human gates, governance, state, and reporting contracts.
# PRD Authoring — playbook
A PRD is a contract. An engineer reads it and knows exactly what to build, how
to know it's done, and what is out of scope. Anything less is costly
back-and-forth.
## 1. Required sections (in order)
1. **Problem** — one sentence. The user pain, not the solution.
2. **Why now** — why this PRD this cycle, not later.
3. **Users + JTBD** — who, with what job, in what trigger.
4. **Solution overview** — 1–2 paragraphs. The shape, not every detail.
5. **User stories with Acceptance Criteria** — the meat.
6. **Scope** — what is IN this release.
7. **Non-goals** — what is OUT (the most useful section).
8. **Edge cases** — error, empty, limits, abuse.
9. **Top-3 risks (pre-mortem-lite)** — how this fails, one mitigation each.
10. **Open decisions** — every unresolved question: owner + answer-by + default.
11. **Required success metrics** — named, WITH a target and a guardrail.
12. **Definition of Done** — yes/no checklist.
Conditional 13th: **AI-feature appendix** — required whenever the feature
calls an LLM or model (see §8).
## 2. User stories — the format
`As <persona>, I want <capability>, so that <outcome>.`
Each story has Acceptance Criteria in Given / When / Then form:
> Given a logged-in user with no saved drafts,
> When they click "New",
> Then a blank editor opens and is autosaved within 2 seconds.
Acceptance criteria must be **testable** — convert to yes/no. "Quick" is not
testable; "within 2 seconds" is.
## 3. Non-goals — the most powerful section
For every feature, list what is explicitly NOT in this release. Examples:
- "Not in scope: bulk import."
- "Not in scope: mobile."
- "Not in scope: undo across sessions."
Non-goals prevent scope creep more than goals enable progress. If a non-goals
list is short or empty, the spec will silently grow during build.
## 4. Edge cases — the four categories
- **Error paths** — what if the network fails? the API returns 500? input is
malformed?
- **Empty states** — first-run, no data, deleted-everything.
- **Limits** — max size, max count, rate limits.
- **Abuse cases** — what if a hostile user does this?
Listing edge cases up front catches ~60% of the rework engineering would do.
## 5. Top-3 risks — pre-mortem-lite
Ask: "Twelve months on, this failed. Why?" Write the top 3 answers, each with
one concrete mitigation (or an explicit "accepted — no mitigation").
- Risks must be about THIS feature. Generic risks ("users might not like it")
are banned.
- A mitigation must change the plan or the spec. Restating hope ("we'll
monitor closely") is not a mitigation.
## 6. Open decisions — the honesty section
Every question the PRD does NOT settle goes here — never silently omitted.
| Decision needed | Owner | Answer-by | Default-if-unanswered |
|---|---|---|---|
Rules:
- If the answer would flip scope or build order, it is a BLOCKER: file it to
the Open-Decision Register (`bd` issue, label `open-decision`) and reference
the issue id in the PRD.
- An empty Open-decisions section is a claim that everything is settled —
spec-reviewer should treat that claim with suspicion.
This extends great-pm's core promise into Define: unknowns are tracked on the
record, never forgotten.
## 7. Success metrics — target + guardrail, not just names
Naming a metric is not enough. Each required metric carries:
- **Target** — a number + time window ("activation ≥ 40% within 7 days").
- **Guardrail** — the number that must NOT degrade ("support tickets per user
must not rise > 5%").
Pre-committing targets prevents post-launch goalpost-moving. metrics-architect
still owns the full instrumentation spec; the PRD owns the commitment.
## 8. AI-feature appendix — required for model-backed features
If the feature calls an LLM or model, the PRD must include:
- **Failure modes** — the 3 most likely wrong outputs (hallucination, stale
data, off-tone, over-refusal…).
- **Wrong-answer UX** — exactly what the user sees when the model fails:
fallback copy, confidence cues, escalation path.
- **5 eval examples** — input → expected-output pairs an engineer can turn
into tests before writing the feature.
- **Cost / latency budget** — max spend per call and the p95 latency the
feature tolerates.
A model feature specced without this appendix is a demo, not a product.
## 9. Definition of Done — a yes/no checklist
- Code merged.
- Tests pass.
- AC #1, #2, #3 verified in staging.
- Tracking events firing per the metrics plan.
- Docs updated.
- (Item-specific items — never generic "feels right".)
## 10. Anti-patterns — ban these
- **TBD / TODO / "engineering decides" / "more later" / "similar to X"** —
every one is a deferred decision the engineer will have to make for you.
Kill them in self-edit.
- **Vague adjectives without numbers** — "user-friendly", "fast", "scalable",
"reliable". Replace with a number or remove.
- **Solution buried in the Problem section** — keep Problem about the pain.
- **Acceptance criteria that cannot be tested** (yes/no rule).
- **No Non-goals section** — the silent scope-creep enabler.
- **Metrics named without targets** — "we'll track activation" defers the
definition of success to after launch.
- **Unknowns hidden outside the PRD** — every open question lives in the
Open-decisions section or it doesn't exist.
- **Model-backed feature without the AI appendix** — specs the happy path
only; the wrong-answer path is the product.
## 11. Output shape
A PRD an engineer can build from without a single clarifying question. If
they ask a clarifying question, the PRD failed.