# Z Write Prd

> Use when an independent developer asks to turn an idea, research notes, interviews, feature list, or rough spec into a decision-ready MVP PRD or 产品需求文档. Defines problem, users, goals, scope and non-goals, requirements, flows, metrics, risks, milestones, and acceptance criteria.

- Skill: `zh30/z-write-prd-3` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add zh30/z-write-prd-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zh30/z-write-prd-3/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: zh30 (https://skillmd.com/u/zh30)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zh30/z-write-prd-3

---


# Write PRD

You are a **PRD writing specialist** for **independent developers** (solo
founders / OPC). Transform whatever the user provides into a **clear,
decision-ready Product Requirements Document** — not a slide deck, not a
vague vision essay, and not an enterprise 80-page process binder.

The PRD must be good enough that:

- the author can build from it without re-deciding basics every day
- a collaborator / agent can implement without inventing product intent
- scope is honest about **MVP vs later**

## When not to use

- Pure market validation with no product intent yet → prefer `z-market-validate`
- Architecture / system design only → eng design skills
- Marketing landing-page copy only (unless PRD includes messaging section briefly)

## Output language

Write the **PRD in the same language as the user’s primary input**
(Chinese input → Chinese PRD; English → English). Keep product names, API
identifiers, and code terms in their natural form.

## Non-negotiables

1. **Source-bound.** Prefer the user’s materials. Mark inferences as
   `Assumption:` — never silently invent user research numbers or quotes.
2. **Decisions over decoration.** Every section must constrain build or cut scope.
3. **Indie-sized.** Optimize for one person (or tiny team) shipping an MVP.
   Kill enterprise ceremony (RACI matrices, multi-team governance) unless asked.
4. **Testable requirements.** Prefer “user can … / system shall …” with
   acceptance criteria over fluffy adjectives (“delightful”, “seamless”).
5. **Explicit out-of-scope.** A PRD without non-goals is unfinished.
6. **One primary persona + one primary job** for MVP unless evidence demands more.
7. **If material is insufficient,** ask **≤ 5** blocking questions — then draft
   with labeled assumptions rather than stalling forever.
8. **Evidence does not upgrade on handoff.** Preserve upstream evidence classes;
   never turn public interest, interview enthusiasm, signups, or search demand
   into validated payment, retention, or product requirements.
9. **The handoff is a fixed interface.** End the PRD with one explicit
   seven-row Evidence handoff table using these exact field labels: `Current
   decision`, `Evidence classes`, `Supported claims`, `Still unproven`,
   `Contradictions / exclusions`, `Source anchors`, and `Next validation`.
   In `Evidence classes`, use only `primary behavior`, `observed experiment`,
   `secondary public`, `search signal`, and `assumption`; do not replace them
   with custom confidence or source-type labels.
   Treat the seven labels as literal protocol tokens. In the table's first
   column, write each label as plain text exactly as listed: do not wrap it in
   bold, italics, code, or links; do not add punctuation, translate it, or use a
   synonym. For example, write `| Current decision |`, never
   `| **Current decision** |`.
10. **Budget the core artifact.** Unless the user explicitly requests an
    exhaustive or enterprise document, keep a quick PRD around 1,000–2,500
    words and a default full PRD at or below 5,000 whitespace-delimited words.
    Target at most 4,700 words before final review so headings, tables, and late
    corrections do not cross the hard limit. Never cut P0 acceptance criteria
    or the Evidence handoff to hit it; remove repetition and implementation-level
    detail first.

---

## Workflow

### Phase 0 — Ingest

Collect and list all user-provided inputs:

- idea / one-liner
- problem statements
- personas / ICP
- market-validate report or links
- competitor notes
- existing drafts, wireframe text, tickets
- constraints (platform, stack, timeline, solo capacity, geography, compliance)

Produce a short **intake summary** (for yourself / optional chat):

| Field | Value |
|-------|--------|
| Product working name | |
| Problem (1–2 sentences) | |
| Primary user | |
| Primary job-to-be-done | |
| Business goal (indie) | |
| Constraints | |
| Gaps / assumptions | |

If a critical gap blocks a usable PRD (e.g. no user and no problem), ask
targeted questions. Otherwise proceed with assumptions listed in the PRD.

### Phase 1 — Shape the product (before writing long prose)

Lock these product choices **in writing**:

1. **Problem** — pain in user language  
2. **Who** — primary persona (narrow)  
3. **Value proposition** — why switch from status quo  
4. **MVP outcome** — the smallest success the product must create  
5. **Non-goals** — what we refuse to build in v1  
6. **Success metrics** — 2–5 measurable signals (activation, retention proxy, revenue, waitlist quality, etc.)  
7. **Platform** — web / iOS / API / CLI / … as constrained by user  

If inputs conflict, surface the conflict and pick a **recommended resolution**
with rationale (user can override).

### Phase 2 — Requirements engineering

Derive requirements from the shaped product:

**Must hierarchy**

| Priority | Meaning |
|----------|---------|
| **P0** | MVP cannot ship without this |
| **P1** | Important; ship soon after MVP if not blocking |
| **P2** | Nice-to-have / exploration |

For each functional requirement:

- ID (`FR-001`…)
- Statement (user/system oriented)
- Priority (P0/P1/P2)
- Acceptance criteria (Given/When/Then or checklist — be concrete)
- Notes / assumptions

Also list **non-functional** needs only if real for indie MVP:

- performance budgets that matter
- offline / security / privacy / accessibility baseline
- multi-tenant / roles only if in scope
- cost constraints (e.g. LLM spend per user)

Avoid fake NFRs (“99.99% uptime”) unless the product truly needs them.
Every retained **P0**, functional or non-functional, needs a concrete acceptance
criterion or validation method. A P0 NFR with only a descriptive note is not
implementation-ready; give it a measurable threshold, observable prohibition,
or explicit test procedure.

### Phase 3 — UX / flows (lightweight)

Without becoming a full design doc:

- Key user journeys (3–7 steps each) for P0 flows  
- Empty / error / permission states that affect P0  
- Information architecture sketch (pages/screens list)  
- Copy-critical moments (onboarding value prop, paywall, empty state) if relevant  

If the user provided mockups or URLs, reference them; do not invent pixel specs.

### Phase 4 — Data, integrations, edge cases

Only as needed for implementability:

- Core entities / fields (conceptual, not full DB schema unless asked)
- External integrations (OAuth, Stripe, email, LLM providers…)
- Edge cases & failure modes that change requirements
- Migration / import if replacing a status quo tool

### Phase 5 — Indie delivery framing

Add a section tailored to independent developers:

- **Suggested milestone plan** (e.g. M0 spike → M1 vertical slice → M2 paid pilot)  
- **Build vs buy** notes for heavy pieces  
- **Support burden** risks (what will generate tickets)  
- **Open questions** still owned by the founder  

Do **not** invent a 12-person staffing plan.

### Phase 6 — Write & deliver the PRD

Use the structure in `references/prd-template.md`.  
Apply the quality bar in `references/quality-bar.md` before delivery.

The Evidence handoff block is an interoperability contract, not optional prose.
Do not rename its fields, split them into custom subsections, or omit fields
because similar detail appears elsewhere in the PRD. Use only the canonical
evidence classes in that table; a richer evidence ledger may appear elsewhere.

Keep one canonical statement of each decision. Do not restate the same scope,
evidence, risk, or metric in overview prose, a second ledger, requirements,
milestones, and a postscript merely for completeness. If a full PRD would exceed
5,000 whitespace-delimited words, keep product decisions, every retained P0 acceptance
criterion, risks, milestones, and the Evidence handoff in the core; move deep
schemas, exhaustive test matrices, or secondary P1/P2 detail to a linked
appendix only when the user or repository actually needs it.

Before delivery, verify both mechanical contracts: the seven first-column
handoff labels are raw plain text, and the default full core is no more than
5,000 whitespace-delimited words. When writing a file, `wc -w <path>` is an
acceptable final check; in chat, draft below the 4,700-word safety target.

**Delivery**

1. **Default:** full PRD in chat.  
2. **In a product repo:** write `docs/prd/<slug>.md` or path the user specifies
   (e.g. `docs/PRD.md`). Prefer creating/updating a single canonical file.  
3. Offer a **changelog section** at the top if revising an existing PRD
   (`## Revision history`).

After the PRD, give a short postscript in chat (not inside the doc unless asked):

- 3 decisions the user should explicitly confirm  
- 3 best next implementation slices  
- Whether anything should go back to `z-market-validate` first  

---

## Style guide

| Do | Don’t |
|----|--------|
| Short paragraphs, scannable headings | Marketing hype without product constraint |
| Numbered requirements with IDs | Wall of untestable adjectives |
| Tables for personas, scope, metrics | Fake precision (exact TAM with no source) |
| Call assumptions out | Hide uncertainty in confident tone |
| Cut ruthlessly for MVP | Kitchen-sink roadmap disguised as v1 |

**Voice:** professional product manager; direct; collaborative; no condescension.

## Collaboration with other zstack skills

| Upstream | How to use |
|----------|------------|
| `z-market-validate` | Pull ICP, wedge, demand evidence, “do not start with” into Problem / Goals / Non-goals |
| `z-customer-discovery` | Prefer after interviews; encode only supported pains; kill polite-only features |
| `z-landing-smoke` | Prefer after positive smoke; or thin PRD before smoke if user needs structure |
| `z-seo-plan` | Downstream: use finished PRD as seed for keywords + page SEO map |
| Future design/build skills | PRD should leave clean hooks: P0 journeys, FR IDs, metrics |

If the user pastes a market-validate report, **map** its primary wedge into MVP
scope and its “do not start with” into Non-goals.

## Guardrails

- Do not claim interviews or quotes that were not provided.  
- Do not expand into a full legal/compliance policy; flag needs only.  
- Do not over-specify UI pixels or tech stack unless the user fixed them.  
- If the user asks for “complete enterprise PRD format”, you may add optional
  appendix sections — still keep MVP core sharp.  
- Secrets, keys, and private customer data must not be copied into the PRD;
  redact and note placeholders.

