If you have a team template, its sections replace these. Otherwise this is the structure, in dependency order:
| # | Section | Must cover | Depends on |
|---|---|---|---|
| 1 | Problem Statement | who has it, what it is, why painful, evidence | — |
| 2 | Target Users & Personas | primary/secondary personas, jobs-to-be-done | 1 |
| 3 | Strategic Context | business goals, market opportunity, competition, why now | 1 |
| 4 | Solution Overview | description, key user flows, key features | 1, 2 |
| 5 | Success Metrics | primary metric (current -> target), secondary, failure signals | 3, 4 |
| 6 | Requirements | user stories + acceptance criteria, constraints | 4 |
| 7 | Out of Scope | what we are not building, and why | 4 |
| 8 | Open Questions & Risks | questions with owners, top risks | all |
| 9 | Executive Summary | problem + solution + impact in one paragraph | all (write last) |
## [N]. [Section Name]
[The section content, in prose and bullets appropriate to it]
**Assumptions in this section:**
- [labeled item, or "none"]
**Open Questions in this section:**
- [labeled item, or "none"]
**Sources used:** [which base-camp items and materials]/goal Write a complete PRD for [initiative] using the canonical sections in this session and my discovery notes.
/loop Review every section. Improve anything weak. Repeat until complete.
You get a document. You also get the persona rediscovered nine times, critique applied to fog, and a full re-run when one section goes sideways.
/goal Produce a PRD for [initiative]: every section drafted from
approved context, in the dependency order of the section table, with
my sign-off per section, in the section output format.
Base camp (calculate once):
- Target persona and environment: [fill or point to session]
- Problem / unmet need, with evidence: [fill]
- Desired customer and business outcomes: [fill]
- Constraints and non-negotiables: [fill]
- Decisions already made and approved: [fill]
Index before drafting (build once; do not rescan source material
unless I say "refresh"):
For each section in the table, list which session materials feed it,
which decisions already cover it, and any unresolved question
blocking it.
/loop One section per turn, in table order (1 through 8; write 9,
the Executive Summary, last).
For each section:
1. Cheap check: is its dependency approved? If not, stop and say
which one.
2. Cheap check: do required elements and evidence exist in the base
camp/index, or would this section be strategic fog? Flag gaps
before drafting around them.
3. Draft ONLY this section, in the section output format, from the
base camp plus this section's index entries.
4. Ask me: "Modify, or continue to [next section name]?" Wait.
5. On approval, compact: carry forward the decisions this section
settled — not its full text — and update the index.
Loop controls:
- No look-ahead drafting.
- If a section fails my review twice, stop and ask me what good
looks like before a third attempt.
The section table becomes data; the drafting instructions stay markdown; the loop is one line.
{% set routine_version = "prd-section-loop-v1.0" %}
{% set sections = [
{"n": 1, "name": "Problem Statement",
"covers": "who has it, what it is, why painful, evidence",
"after": []},
{"n": 2, "name": "Target Users & Personas",
"covers": "primary/secondary personas, jobs-to-be-done",
"after": [1]},
{"n": 3, "name": "Strategic Context",
"covers": "business goals, market opportunity, competition, why now",
"after": [1]},
{"n": 4, "name": "Solution Overview",
"covers": "description, key user flows, key features",
"after": [1, 2]},
{"n": 5, "name": "Success Metrics",
"covers": "primary metric current->target, secondary, failure signals",
"after": [3, 4]},
{"n": 6, "name": "Requirements",
"covers": "user stories + acceptance criteria, constraints",
"after": [4]},
{"n": 7, "name": "Out of Scope",
"covers": "what we are not building, and why",
"after": [4]},
{"n": 8, "name": "Open Questions & Risks",
"covers": "questions with owners, top risks",
"after": [1, 2, 3, 4, 5, 6, 7]},
{"n": 9, "name": "Executive Summary",
"covers": "problem + solution + impact, one paragraph",
"after": [1, 2, 3, 4, 5, 6, 7, 8]}
] %}
{% for section in sections %}
## Draft section {{ section.n }} of {{ sections | length }}:
{{ section.name }}
{% if section.after %}
Confirm sections {{ section.after | join(", ") }} are approved
before drafting. If not, STOP and say which.
{% endif %}
Draft only this section. It must cover: {{ section.covers }}.
Use the base camp plus this section's index entries — nothing else.
Never invent facts, data, approvals, or commitments.
Render in the section output format:
## {{ section.n }}. {{ section.name }}
[content]
**Assumptions in this section:** [labeled, or "none"]
**Open Questions in this section:** [labeled, or "none"]
**Sources used:** [list]
Then ask: "Modify, or continue to the next section?" Wait for
approval. On approval, compact the settled decisions into the base
camp.
{% else %}
STOP: the section list is empty — load the canonical table or the
team template first.
{% endfor %}
Generated by {{ routine_version }} from template
{{ template_name | default("canonical-9-section") }}.Offer exactly 4 next options:
- Assemble approved sections into the full document + closing self-critique (Recommended)
- Rerun just the weakest section with tightened context
- Generate the validation plan for all logged Assumptions
- Promote this to a named /routine with your template baked into the sections data structure
Ask the user to reply with 1, 2, 3, 4, 1 and 3, or a
custom path.