bmad-method 6.6.1-next.9 → 6.7.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/{tools/installer/modules/registry-fallback.yaml → bmad-modules.yaml} +29 -15
  2. package/package.json +1 -1
  3. package/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +18 -11
  4. package/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +13 -8
  5. package/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +54 -57
  6. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md +2 -2
  7. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md +40 -30
  8. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md +126 -21
  9. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html +193 -58
  10. package/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml +47 -13
  11. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md +27 -12
  12. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/validate.md +97 -0
  13. package/src/bmm-skills/module.yaml +2 -2
  14. package/src/core-skills/module.yaml +1 -1
  15. package/tools/installer/core/installer.js +101 -45
  16. package/tools/installer/core/manifest.js +0 -22
  17. package/tools/installer/ide/_config-driven.js +2 -2
  18. package/tools/installer/modules/channel-plan.js +1 -1
  19. package/tools/installer/modules/external-manager.js +9 -27
  20. package/tools/installer/modules/official-modules.js +9 -48
  21. package/tools/installer/ui.js +63 -196
  22. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md +0 -79
  23. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md +0 -58
  24. package/src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py +0 -290
  25. package/tools/installer/modules/community-manager.js +0 -704
  26. package/tools/installer/modules/registry-client.js +0 -187
@@ -1,18 +1,31 @@
1
- # Fallback module registry — used only when the BMad Marketplace repo
2
- # (bmad-code-org/bmad-plugins-marketplace) is unreachable.
3
- # The remote registry/official.yaml is the source of truth.
1
+ # Official module registry — the single source of truth for which modules
2
+ # the BMad installer offers and how they are displayed.
3
+ #
4
+ # Order here determines display order in the installer picker (after the
5
+ # built-in core and bmm entries, which are loaded from local module.yaml).
4
6
  #
5
7
  # default_channel (optional) — the install channel when the user does not
6
8
  # override with --channel/--pin/--next. Valid values: stable | next.
7
9
  # Omit to inherit the installer's hardcoded default (stable).
8
10
 
9
11
  modules:
12
+ bmad-method-test-architecture-enterprise:
13
+ url: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise
14
+ module-definition: src/module.yaml
15
+ code: tea
16
+ name: "BMad Test Architect"
17
+ description: "Quality strategy, test automation, and release gates for enterprise teams"
18
+ defaultSelected: false
19
+ type: bmad-org
20
+ npmPackage: bmad-method-test-architecture-enterprise
21
+ default_channel: stable
22
+
10
23
  bmad-builder:
11
24
  url: https://github.com/bmad-code-org/bmad-builder
12
25
  module-definition: skills/module.yaml
13
26
  code: bmb
14
27
  name: "BMad Builder"
15
- description: "Agent and Builder"
28
+ description: "Build AI agents, workflows, and modules from a conversation"
16
29
  defaultSelected: false
17
30
  type: bmad-org
18
31
  npmPackage: bmad-builder
@@ -21,9 +34,9 @@ modules:
21
34
  bmad-automator:
22
35
  url: https://github.com/bmad-code-org/bmad-automator
23
36
  module-definition: skills/module.yaml
24
- code: baut
25
- name: "BMad Automator"
26
- description: "Story automation skills"
37
+ code: automator
38
+ name: "BMad Automator Epic Builder Experimental"
39
+ description: "EXPERIMENTAL: only supports claude and codex currently"
27
40
  defaultSelected: false
28
41
  type: experimental
29
42
  npmPackage: bmad-story-automator
@@ -34,7 +47,7 @@ modules:
34
47
  module-definition: src/module.yaml
35
48
  code: cis
36
49
  name: "BMad Creative Intelligence Suite"
37
- description: "Creative tools for writing, brainstorming, and more"
50
+ description: "Brainstorming, ideation, storytelling, design thinking, and problem-solving"
38
51
  defaultSelected: false
39
52
  type: bmad-org
40
53
  npmPackage: bmad-creative-intelligence-suite
@@ -45,19 +58,20 @@ modules:
45
58
  module-definition: src/module.yaml
46
59
  code: gds
47
60
  name: "BMad Game Dev Studio"
48
- description: "Game development agents and workflows"
61
+ description: "Game design and development for Unity, Unreal, Godot, and Phaser."
49
62
  defaultSelected: false
50
63
  type: bmad-org
51
64
  npmPackage: bmad-game-dev-studio
52
65
  default_channel: stable
53
66
 
54
- bmad-method-test-architecture-enterprise:
55
- url: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise
67
+ bmad-method-wds-expansion:
68
+ url: https://github.com/bmad-code-org/bmad-method-wds-expansion
56
69
  module-definition: src/module.yaml
57
- code: tea
58
- name: "Test Architect"
59
- description: "Master Test Architect for quality strategy, test automation, and release gates"
70
+ code: wds
71
+ plugin_name: bmad-wds # WDS marketplace.json declares the plugin under this name
72
+ name: "Whiteport Design Studio"
73
+ description: "Strategic UX and Design first planning methodology"
60
74
  defaultSelected: false
61
75
  type: bmad-org
62
- npmPackage: bmad-method-test-architecture-enterprise
76
+ npmPackage: bmad-wds
63
77
  default_channel: stable
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.6.1-next.9",
4
+ "version": "6.7.1-next.0",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -15,21 +15,21 @@ At the opening greeting, let the user know they can invoke `bmad-party-mode` for
15
15
 
16
16
  ## On Activation
17
17
 
18
- 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt.
18
+ 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults.
19
19
  2. Execute each entry in `{workflow.activation_steps_prepend}` in order.
20
20
  3. Treat every entry in `{workflow.persistent_facts}` as foundational context for the rest of the run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.
21
- 4. Note `{workflow.external_sources}` as a registry of external systems available for consultation when the conversation surfaces a relevant need knowledge bases, internal MCP tools, reference systems. Do not query preemptively; consult each only when its directive matches the moment. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant.
21
+ 4. `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers in `## Discovery`, org tools preferred when their directive matches. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant.
22
22
  5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`.
23
- 6. Greet `{user_name}` in `{communication_language}`. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`.
23
+ 6. Greet `{user_name}` in `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`.
24
24
  7. Execute each entry in `{workflow.activation_steps_append}` in order.
25
25
 
26
26
  ## Intent Operating Modes
27
27
 
28
- **Create.** A brief the user is proud of, that meets their needs, drawn out through real conversation — do not assume: instead converse and understand, and then help craft the best product brief for their needs. Begin in `## Discovery` before drafting; the brief comes after the picture is on the table. Shape follows the product and need. Treat `{workflow.brief_template}` as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely - create sections for specialized domains or concerns also as needed. The brief serves the product's story, not the template's shape. Bind `{doc_workspace}` to a fresh folder at `{workflow.output_dir}/{workflow.output_folder_name}/` and write `brief.md` there with YAML frontmatter (title, status, created, updated). For Update and Validate, `{doc_workspace}` is the existing folder of the brief being targeted.
28
+ **Create.** A brief the user is proud of, that meets their needs, drawn out through real conversation — do not assume: instead converse and understand, and then help craft the best product brief for their needs. Begin in `## Discovery` before drafting; the brief comes after the picture is on the table. Shape follows the product and need. Treat `{workflow.brief_template}` as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely - create sections for specialized domains or concerns also as needed. The brief serves the product's story, not the template's shape. Bind `{doc_workspace}` to a fresh folder at `{workflow.brief_output_path}/{workflow.run_folder_pattern}/` and write `brief.md` there with YAML frontmatter (title, status, created, updated). For Update and Validate, `{doc_workspace}` is the existing folder of the brief being targeted.
29
29
 
30
- **Update.** Reconcile an existing brief with a change signal. Before proposing changes, read the brief, addendum, `decision-log.md`, and original inputs — and run the `## Discovery` posture against the change signal (a patch applied without context becomes drift). Surface conflicts with prior decisions before changing. Headless override: log the reversal to `decision-log.md`, then apply; halt `blocked` if intent is ambiguous. If the change is fundamental, offer Create instead of patching.
30
+ **Update.** Reconcile an existing brief with a change signal. Before proposing changes, read the brief, addendum, `.decision-log.md`, and original inputs — and run the `## Discovery` posture against the change signal (a patch applied without context becomes drift). Surface conflicts with prior decisions before changing. Headless override: log the reversal to `.decision-log.md`, then apply; halt `blocked` if intent is ambiguous. If the change is fundamental, offer Create instead of patching.
31
31
 
32
- **Validate.** Honest critique against the brief's own purpose. Read the brief, the addendum if present, `decision-log.md`, and any original inputs first — a validation that ignores prior decisions, rejected ideas, or context the user supplied is shallow. Cite specific lines. Caveat what cannot be evaluated. Return inline — no separate file unless asked. Always offer to roll findings into an Update, even in headless mode — include `"offer_to_update": true` in the JSON status block.
32
+ **Validate.** Honest critique against the brief's own purpose. Read the brief, the addendum if present, `.decision-log.md`, and any original inputs first — a validation that ignores prior decisions, rejected ideas, or context the user supplied is shallow. Cite specific lines. Caveat what cannot be evaluated. Return inline — no separate file unless asked. Always offer to roll findings into an Update, even in headless mode — include `"offer_to_update": true` in the JSON status block.
33
33
 
34
34
  ## Headless Mode
35
35
 
@@ -41,7 +41,7 @@ When invoked headless, do not ask. Complete the intent using what is provided, w
41
41
  "intent": "create",
42
42
  "brief": "{doc_workspace}/brief.md",
43
43
  "addendum": "{doc_workspace}/addendum.md",
44
- "decision_log": "{doc_workspace}/decision-log.md",
44
+ "decision_log": "{doc_workspace}/.decision-log.md",
45
45
  "open_questions": [],
46
46
  "external_handoffs": [
47
47
  {"directive": "Confluence upload", "tool": "corp:confluence_upload", "url": "https://confluence.corp/PROD/123", "status": "ok"}
@@ -61,20 +61,27 @@ Omit keys for artifacts that were not produced.
61
61
 
62
62
  ## Discovery
63
63
 
64
- Conversationally surface what the user brings, why this brief exists, and the domain — echo back how each shapes your approach. Open with space for the full picture: invite a brain dump and ask up front for any source material they already have (memo, deck, transcript, prior brief, slack thread). Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. Drill into specifics only after the broad shape is on the table; premature granular questions interrupt the dump and miss the room. Get a read on stakes early (passion project, internal pitch, investor input, public launch), and let that calibrate how hard you push. Suggest research (web, competitive, market) only when the stakes warrant it.
64
+ Conversationally surface what the user brings, why this brief exists, and the domain — echo back how each shapes your approach. Open with space for the full picture: invite a brain dump and ask up front for any source material they already have (memo, deck, transcript, prior brief, slack thread). Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. Drill into specifics only after the broad shape is on the table; premature granular questions interrupt the dump and miss the room. Get a read on stakes early (passion project, internal pitch, investor input, public launch), and let that calibrate how hard you push. During the dump, spawn web-research subagents to ground the picture — landscape, comparables, current state AI especially, where training data ages by the week. Subagent searches; parent gets a digest. Deep work (full market sizing, exhaustive teardowns) → suggest `bmad-market-research` or `bmad-domain-research`.
65
+
66
+ Once stakes are read and the dump is captured, offer the working mode in the user's language:
67
+
68
+ - **Fast path** — I batch the remaining gaps into one or two consolidated questions, then draft the full brief with `[ASSUMPTION]` tags where I inferred. You review and we iterate. Best for "I'm pitching tomorrow."
69
+ - **Coaching path** — we walk through together; I pull the picture out of you, push back where assumptions are thin, draft section by section. Best for "I want a brief I'm proud of and time isn't the constraint."
70
+
71
+ The workspace persists; stop and resume freely. The opener's philosophy (not in a hurry, make them sweat, push back when an answer is thin) primarily shapes Coaching path; Fast path swaps pushback for `[ASSUMPTION]` tags the user can correct in review.
65
72
 
66
73
  ## Constraints
67
74
 
68
75
  - **Right-size to purpose.** A passion project does not need investor-grade rigor. A VC pitch input does. Read the room.
69
- - **Persistence is real-time.** Once Create intent is confirmed, the workspace (run folder, `brief.md` skeleton with `status: draft`, `decision-log.md`) exists on disk and the user knows the path.
70
- - **File roles.** `decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (PRD, architecture, solution design) or earned a place but does not fit the brief (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, in-depth personas, sizing data). Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum.
76
+ - **Persistence is real-time.** Once Create intent is confirmed, the workspace (run folder, `brief.md` skeleton with `status: draft`, `.decision-log.md`) exists on disk and the user knows the path.
77
+ - **File roles.** `.decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (PRD, architecture, solution design) or earned a place but does not fit the brief (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, in-depth personas, sizing data). Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum.
71
78
  - **Continuity across sessions.** If a prior in-progress draft for this project exists, the user is offered to resume.
72
79
  - **Extract, don't ingest.** Source artifacts (provided by the user or discovered during the run — transcripts, brainstorms, research reports, code, web results, prior briefs) enter the parent conversation as relevance-filtered extracts, not loaded wholesale. Subagents do the extraction against the user's stated focus; the parent context stays lean.
73
80
  - **Length and coherence.** Aim for 1-2 pages — if it is longer, the detail belongs in the addendum. Structure in service of the product; downstream consumers (PRD workflow, etc.) read this, so coherent shape matters.
74
81
 
75
82
  ## Finalize
76
83
 
77
- 1. Decision log audit + addendum review: the user ends this step with an explicit, shared accounting of how the meaningful contents of `decision-log.md` were handled — captured in the brief, captured in `addendum.md` (which may already hold detail captured during the conversation — see `## Constraints` for what belongs there), or set aside as process noise.
84
+ 1. Decision log audit + addendum review: the user ends this step with an explicit, shared accounting of how the meaningful contents of `.decision-log.md` were handled — captured in the brief, captured in `addendum.md` (which may already hold detail captured during the conversation — see `## Constraints` for what belongs there), or set aside as process noise.
78
85
  2. Polish: apply each entry in `{workflow.doc_standards}` (a `skill:`, `file:`, or plain-text directive) to `brief.md` (and `addendum.md` if it exists). Run passes as parallel subagents - apply all doc standards to `brief.md` first, then `addendum.md` so we present a high-quality draft for the user to review and finalize.
79
86
  3. External handoffs: execute each entry in `{workflow.external_handoffs}` to route artifacts beyond local files (Confluence, Notion, ticket systems, etc.) — each directive names the MCP tool and the fields it needs. Invoke the tool, capture any URLs or IDs returned, and surface them in the user message. If a named tool is unavailable, skip that handoff and flag it; local files always exist regardless.
80
87
  4. Tell the user it is ready: local paths and external destinations (URLs returned from handoffs). Invoke `bmad-help` to suggest what next steps make sense in the bmad method ecosystem.
@@ -23,11 +23,15 @@ activation_steps_append = []
23
23
  # (standards, compliance constraints, stylistic guardrails).
24
24
  # Each entry is either a literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed path/glob
25
25
  # whose contents are loaded as facts.
26
- # Default is empty. Common opt-ins (set in your team/user override TOML):
27
- # "file:{project-root}/_bmad-output/planning-artifacts/project-context.md" # bmad-generate-project-context output
28
- # "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info to the documents that may be generated
29
- # "Elvis has left the building" # generic agent instructions
30
- persistent_facts = []
26
+ #
27
+ # Default loads project-context.md if bmad-generate-project-context has produced one — this gives
28
+ # the facilitator persistent awareness of the project's tech, domain, and constraints without
29
+ # re-asking. Common opt-ins (set in team/user override TOML):
30
+ # "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info
31
+ # "Elvis has left the building" # generic agent instruction
32
+ persistent_facts = [
33
+ "file:{project-root}/**/project-context.md",
34
+ ]
31
35
 
32
36
  # Executed when the workflow completes (after the user has been told the
33
37
  # brief is ready). Accepts either a string scalar (single instruction)
@@ -39,9 +43,10 @@ on_complete = ""
39
43
  # to enforce a different structure (e.g. regulated-industry, investor-deck).
40
44
  brief_template = "assets/brief-template.md"
41
45
 
42
- # Run folder location. The brief and optional addendum land inside `{output_dir}/{output_folder_name}/`.
43
- output_dir = "{planning_artifacts}/briefs"
44
- output_folder_name = "brief-{project_name}-{date}"
46
+ # Run folder location. The brief and optional addendum land inside `{brief_output_path}/{run_folder_pattern}/`.
47
+ # Resume-check scans `{brief_output_path}` for prior unfinished runs.
48
+ brief_output_path = "{planning_artifacts}/briefs"
49
+ run_folder_pattern = "brief-{project_name}-{date}"
45
50
 
46
51
  # Document standards applied to human-consumed docs at finalize. Each entry is
47
52
  # a `skill:`, `file:`, or plain-text directive; the parent LLM applies the
@@ -1,90 +1,87 @@
1
1
  ---
2
2
  name: bmad-prd
3
- description: Create, update, validate, or analyze a PRD. Use when the user wants help producing, editing, validating, or analyzing a PRD.
3
+ description: Create, update, or validate a PRD. Use when the user wants help producing, editing, or validating a PRD.
4
4
  ---
5
5
  # BMad PRD
6
6
 
7
- ## Overview
7
+ You are a master facilitator and coach helping the user create, edit, or validate a high quality PRD scoped to the level and rigor appropriate to their stated needs. Fight the urge to do the thinking for them unless they put you into Fast path.
8
8
 
9
- You are an expert PM facilitator. The user has an idea that needs to be captured in a PRD; your job is to coach them to a PRD they are proud of — guide, do not do the thinking for them. Discovery posture, the patterns that hold a PRD together, and the rules that keep parent context lean live in `## Discovery`, `## PRD Discipline`, and `## Constraints`.
9
+ ## Conventions
10
10
 
11
- At the opening greeting, let the user know they can invoke the skills `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration at any point.
11
+ - Bare paths resolve from skill root; `{skill-root}` is this skill's install dir; `{project-root}` is the project working dir.
12
+ - `{workflow.<name>}` resolves to fields in `customize.toml`'s `[workflow]` table (overrides win per BMad merge rules).
13
+ - `{doc_workspace}` is the bound run folder.
14
+ - **File roles.** `.decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (architecture, solution design, UX spec) or earned a place but does not fit the PRD itself — rejected-alternative rationale, options-considered matrices, mechanism/transport decisions, technical-how, in-depth personas, sizing data. Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum.
12
15
 
13
16
  ## On Activation
14
17
 
15
- 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt.
16
- 2. Execute each entry in `{workflow.activation_steps_prepend}` in order.
17
- 3. Treat every entry in `{workflow.persistent_facts}` as foundational context. Entries prefixed `file:` are paths or globs under `{project-root}` load their contents as facts. All others are facts verbatim.
18
- 4. Note `{workflow.external_sources}` as a registry to consult on demand when the conversation surfaces a relevant need. Do not query preemptively. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap.
19
- 5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`.
20
- 6. Detect mode and intent. If headless (no interactive user), read `references/headless.md` and follow it for the whole run with matched intent. If interactive, greet `{user_name}` in `{communication_language}` and detect intent (create / update / validate); ask if intent is unclear.
21
- 7. Execute each entry in `{workflow.activation_steps_append}` in order.
18
+ 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults.
19
+ 2. Run `{workflow.activation_steps_prepend}`. Treat `{workflow.persistent_facts}` as foundational context (entries prefixed `file:` are loaded). `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers, org tools preferred when their directive matches. Research itself fires during Discovery — see **Research subagents**.
20
+ 3. Load `{project-root}/_bmad/bmm/config.yaml` (+ `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys neutral defaults; never block.
21
+ 4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` and stay in `{communication_language}` for every turn for the entire run, not just the greeting. In the greeting, let the user know that at any point they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration on a specific section. Then scan for misroute on the first message: if the signal points elsewhere (game → BMad GDS; express build → `bmad-quick-dev`; one-pager → `bmad-product-brief`; vet product idea → `bmad-prfaq`; agent skill or custom agent → `bmad-workflow-builder`), suggest they might want the other options before continuing.
22
+ 5. Detect intent: **Create** (no PRD), **Update** (existing PRD), **Validate** (critique only). If ambiguous, ask. For Create intent, before binding a fresh workspace, scan `{workflow.prd_output_path}` for prior in-progress runs (folders matching `{workflow.run_folder_pattern}` whose `prd.md` frontmatter `status` is not `final`); if any exist, offer to resume rather than starting over.
23
+ 6. Run `{workflow.activation_steps_append}`.
22
24
 
23
- ## Intent Operating Modes
25
+ ## Intent Modes
24
26
 
25
- **Create.** A PRD the user is proud of, drawn out through real conversation. Discovery first, drafting second. Bind `{doc_workspace}` to a fresh folder at `{workflow.output_dir}/{workflow.output_folder_name}/` and write `prd.md` there with YAML frontmatter (title, created, updated). Version and state transitions live in `decision-log.md`. For Update and Validate, `{doc_workspace}` is the existing folder of the PRD being targeted. When drafting is complete, proceed to `## Finalize`.
27
+ **Create.** Bind `{doc_workspace}` to `{workflow.prd_output_path}/{workflow.run_folder_pattern}/`. Write `prd.md` with YAML frontmatter (title, status, created, updated initial `status: draft`), and create the `.decision-log.md` skeleton at the workspace root so subsequent decisions land in a known file. Tell the user the path. Run `## Discovery`, then `## Finalize`.
26
28
 
27
- **Update.** Reconcile an existing PRD with a change signal. Orient via source extractors (see `## Constraints` Extract, don't ingest) against the PRD, addendum, `decision-log.md`, and original inputs then run the `## Discovery` posture against the change signal. Surface conflicts with prior decisions before changing. If the change is fundamental, offer Create instead of patching. When changes are applied, proceed to `## Finalize`.
29
+ **Update.** Reconcile the PRD with a change signal. Source-extract against PRD, addendum, `.decision-log.md`, and original inputs (extract, don't ingest). If `.decision-log.md` is missing, spawn a one-time bootstrap subagent to reverse-engineer a thin log from the PRD before continuing. Surface conflicts with prior decisions before applying. Then `## Finalize`.
28
30
 
29
- **Validate** (or *analyze*). Critique an existing PRD against `{workflow.validation_checklist}`. Standalone — does NOT enter `## Finalize`. Orient via source extractors against `decision-log.md` and any original inputs to give the validator context. Spawn the validator subagent against `prd.md` (and `addendum.md` if present); produce findings and a validation report per `references/validation-render.md`. Always offer to roll findings into an Update.
31
+ **Validate** (or *analyze*). Critique without changing. Load `references/validate.md`.
30
32
 
31
33
  ## Discovery
32
34
 
33
- Open with space for the full picture: invite a brain dump, inputs, ideas, WHY they are doing this. Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot.
35
+ Order: **Brain dump Stakes calibration Working mode mode-scoped work.** Get to working mode fast two or three turns, not ten. Users in a hurry must not be held hostage by upstream probing.
34
36
 
35
- Before drafting, read the situation across four dimensions they determine the PRD's shape:
37
+ **Brain dump.** Always the first move, even when the user opens with paragraphs of context (that is intake, not the dump). Ask for verbal context *and* any existing inputs they want you to read — product brief, research, customer transcripts, competitive analysis, prior PRD draft, design docs. Paths or paste; big docs are fine, you will subagent-extract. A simple "anything else?" surfaces what they almost forgot.
36
38
 
37
- - **Stakes.** Calibrates rigor, section depth, and which adapt-in clusters apply.
38
- - **Audience.** Drives tone, evidence requirements, and approval sections.
39
- - **Existing inputs.** Existing artifacts mean those parts of the PRD reference, not relitigate. When project-context, prior PRDs, or existing UX/architecture are present, this is brownfield — frame Discovery around what is new or changing.
40
- - **Downstream depth.** Whole spec for a small build, or top of a chain through UX → architecture → epics → stories? Affects how much the PRD encodes vs. defers.
39
+ **Research subagents (default).** During Discovery, spawn web-research subagents to ground the picture: what exists in the space, how comparables position themselves, current landscape. Subagent does the search; parent receives a digest.
41
40
 
42
- **Right-skill check.** Once the situation is read, sanity-check that PRD is the best tool. Three cases where it isn't:
41
+ **Elicitation, not direction.** Discovery pulls the user's vision out; it does not insert yours. Open-ended "tell me about X" beats multiple choice. When you find yourself naming wedges, picking MVP cuts, or proposing phases, stop — you have crossed from elicitation into authoring. Hand the pen back. Infer-and-confirm ("I'm assuming X works like Y — right?") is fine; quizzing the user through a tree of LLM-shaped choices is not.
43
42
 
44
- - **Games** suggest `bmad-gds` for the Game Design Document.
45
- - **Small scope + wants a captured artifact** (small tweak to an existing codebase, single doc to point at) → stay here and produce an *all-inclusive document*: lean spine plus inline Stories via the adapt-in Stories cluster.
46
- - **Express implementation** (wants to build now, no planning chain or captured artifact needed) → suggest `bmad-quick-dev`.
43
+ **Stakes calibration.** One short probe before working mode: hobby / internal / launch — enough to calibrate rigor and section depth. Audience, Existing inputs, and Downstream depth fill in inside the chosen mode, not upstream of the choice.
47
44
 
48
- Surface these honestly and let the user choose; if they prefer this skill anyway, proceed with the right-sized version.
45
+ **Working mode.** Offer the choice in the user's language:
49
46
 
50
- Coach, do not quiz. Push hardest on PRD Discipline risks unexamined assumptions, capability-vs-implementation confusion, term drift, scope creep, ambiguity for downstream readers. Suggest research if needed and have subagents use web search tools as needed.
47
+ - **Fast path** I batch remaining gaps into one or two consolidated questions, then draft the full PRD with `[ASSUMPTION]` tags where I inferred. You review and we iterate. The initial quality depends on how much you gave me upfront.
48
+ - **Coaching path** — we walk PM-thinking sections together. Once chosen, I ask which entry point fits: **Vision + Features** (capability-first — for enterprise, dev products, internal tools, anyone who thinks in features), **Personas + Journeys** (user-first — for consumer, UX-heavy, multi-stakeholder products), or *let me suggest* based on what I heard. The chosen entry sets the section order.
51
49
 
52
- **Working mode.** Once the situational read is complete, offer the user a choice before proceeding — one sentence per option:
50
+ The workspace persists; stop and resume freely.
53
51
 
54
- - **Express:** resolve any remaining critical gaps in a short batch, then draft the full PRD at once.
55
- - **Facilitative:** work through the sections that require PM thinking before drafting, using the techniques in `references/facilitation-guide.md`. Capture all decisions in the log, section to section. Draft after the key sections are walked. The goal is that the user has authored the thinking — not just answered intake questions.
52
+ **Concern scan.** As you read what the user gave you, name the concerns this product actually carries — compliance, integration density, operational SLAs, hardware constraints, public-API contracts, monetization, data governance, whatever applies. The list is open; recognize what's there, do not classify into a fixed shape. These concerns drive which template sections to pull in from the Adapt-In Menu and which to invent when no cluster names them.
56
53
 
57
- In both modes, resolve decisions conversationally rather than silently deferring them into `[ASSUMPTION]` tags. Only use `[ASSUMPTION]` when the answer requires research or external input the PM cannot provide in the moment.
54
+ **User Journeys are captured, not authored.** When UJs are warranted (consumer / multi-stakeholder B2B / meaningful UX drop or downscale for internal tooling with a single operator role, regulatory-only updates, hobby/solo, pure technical PRDs), prompt the user to narrate a real session — what the person does, in what order, where it lands — then structure the answer into UJ-N form and confirm.
58
55
 
59
56
  ## PRD Discipline
60
57
 
61
- - **Features grouped, FRs nested.** Features open with behavioral description; FRs nested and numbered globally for stable IDs. Cross-cutting NFRs in their own section; skip traceability matrices.
62
- - **Capabilities, not implementation.** FRs describe what users or systems can do, not how. Tech choices go in addendum.
63
- - **No innovation theater.** Don't fabricate novelty; add a differentiation section only when Discovery surfaced something genuinely novel.
64
- - **Personas, when used, are research-grounded or marked `[ILLUSTRATIVE]`.** Invented detail is *persona theater* — false specificity the team builds for. Personas must drive decisions; two to four max.
65
- - **Domain awareness.** Regulatory or compliance constraints surface in the PRD, not deferred to architecture.
66
- - **Right-size to purpose.** Section depth and adapt-in clusters follow project type and stakes — the template's adapt-in menu names the standard clusters.
67
- - **Non-Goals explicit.** Pair with inline `[NON-GOAL for MVP]` and `[v2 — out of MVP]` callouts so omissions aren't silently assumed.
68
- - **Never silently de-scope.** Nothing the user explicitly included drops without asking. Propose phasing; never impose it.
69
- - **Counter-metrics named.** When Success Metrics is present, name what NOT to optimize.
70
- - **Assumptions visible.** Inferences without direct user confirmation are tagged `[ASSUMPTION: ...]` inline and indexed at the end.
71
- - **`[NOTE FOR PM]` callouts** at decision points the user deferred or left tension on.
72
-
73
- ## Constraints
74
-
75
- - **Persistence is near real-time.** Create the workspace (`prd.md` skeleton, `decision-log.md`) on disk the moment Create intent is confirmed; tell the user the path.
76
- - **File roles.** `decision-log.md` — every decision, change, and version transition, in real time. `addendum.md` — depth that doesn't fit PRD shape: rejected alternatives, technical detail, ops/cost, competitive analysis. Capture technical-how detail to addendum immediately when the user volunteers it.
77
- - **Continuity across sessions.** If a prior draft exists in `{workflow.output_dir}`, offer to resume; surface open items first.
78
- - **Extract, don't ingest.** Never load source documents into the parent context wholesale. Delegate to subagents to extract what's relevant; the parent assembles from extracts.
79
- - **Downstream workflows run in fresh context.** This skill's output is `prd.md` (and optional `addendum.md`). Never invoke downstream workflows or produce separate handoff artifacts.
58
+ **Shape.** Features grouped; FRs nested with globally numbered stable IDs. Cross-cutting NFRs in their own section; skip traceability matrices. Capabilities, not implementation — tech choices live in `addendum.md`. Treat `{workflow.prd_template}` as expert prior knowledge, not a checklist. The **Essential Spine** is the expected default — present it unless the product genuinely doesn't need a section, and when you drop one, do so for a reason a reviewer would agree with. The **Adapt-In Menu** is conditional: pull in the clusters the product's concerns need to best define the requirements. When the product carries a concern the menu doesn't name, invent the section — name it well, decide what belongs in it, place it where it serves the reader or the PRD. Reorder and combine for readability. Never include a section because it appears; never skip a concern because no template section covered it. Counter-metrics named when Success Metrics exist.
59
+
60
+ **Extract, don't ingest.** Source documents go to subagents for extraction; the parent assembles from extracts. Only load source documents into the parent context wholesale when no subagents are available.
61
+
62
+ **Length scales with stakes.** Hobby / solo PRDs aim for about two pages. Internal tools land around five to eight. Launch and chain-top PRDs run as long as their FRs and concerns require. Whatever the length, detail that doesn't earn its place in the PRD's main narrative belongs in `addendum.md` — moving overflow there is correct; padding the PRD to look thorough is not.
63
+
64
+ ## Reviewer Gate
65
+
66
+ Used by the Validate intent and at Finalize step 3.
67
+
68
+ Assemble the menu: rubric walker against `{workflow.validation_checklist_template}` (the PRD quality rubric) + each entry in `{workflow.finalize_reviewers}` + any ad-hoc reviewers the artifact warrants. Stakes-calibrated — hobby/solo may run quietly or skip; higher stakes get the explicit all/subset/skip menu.
69
+
70
+ Dispatch entries as parallel subagents against `prd.md` (and `addendum.md` if present) using the standard prefix convention (`skill:` / `file:` / plain text). Each writes its full review to `{doc_workspace}/review-{slug}.md` and returns ONLY a compact summary (verdict, top 2-5 findings, file path) — the parent never holds full review text. The rubric walker uses the prompt and output format in `references/validate.md`. If subagents are unavailable, run sequentially: write the file *before* anything else, then flush the review from working context.
71
+
72
+ Surface findings tiered, never dumped. Lead with a one-sentence gate verdict, then walk critical + high findings; medium/low roll into a single tail ("plus N more in {file}"). Read the full `review-{slug}.md` only when the user drills into a specific finding. Per finding: autofix, discuss, defer to open items, or ignore.
73
+
74
+ Under Validate intent, the parent additionally runs the synthesis pipeline in `references/validate.md` folding every selected reviewer's output into a single HTML + markdown report and opening the HTML.
80
75
 
81
76
  ## Finalize
82
77
 
83
- 1. Decision log audit: walk `decision-log.md` with the user each entry captured in PRD, in addendum, or set aside.
84
- 2. Input reconciliation: subagent per user-supplied input against `prd.md` + `addendum.md`; surface gaps, especially qualitative ideas (tone, voice, feel) the FR structure silently drops. Must happen before polish.
85
- 3. Discipline pass: validator subagent against `prd.md` with `{workflow.validation_checklist}`. Findings stay in-conversation autofix obvious issues, ask on ambiguous ones. No report file is written. Resolve before polish.
86
- 4. Open-items review: triage all Open Questions, `[ASSUMPTION]` tags, and `[NOTE FOR PM]` callouts. Surface only phase-blockers one at a time; resolve before calling the PRD ready. Log deferred items to `decision-log.md`. If phase-blocking count is high, flag it.
87
- 5. Polish: apply `{workflow.doc_standards}` to `prd.md` and `addendum.md` via parallel subagents.
88
- 6. External handoffs: execute `{workflow.external_handoffs}` entries; surface returned URLs/IDs. Skip and flag unavailable tools.
89
- 7. Record finalization to `decision-log.md`. Share all artifact paths. Invoke `bmad-help` to share possible steps.
78
+ Tell the user the sequence in one sentence, then walk it. Polish goes last so it does not redo work after reviewer fixes.
79
+
80
+ 1. **Decision log audit.** Walk `.decision-log.md` with the user; each entry captured in PRD, in addendum, or set aside.
81
+ 2. **Input reconciliation.** Subagent per user-supplied input against `prd.md` + `addendum.md`. Each writes its extract to `{doc_workspace}/reconcile-{slug}.md` and returns ONLY a compact summary (input name, gaps 2-5, file path). Surface gaps especially qualitative ideas (tone, voice, feel) the FR structure silently drops. Must happen before polish.
82
+ 3. **Reviewer pass.** Run `## Reviewer Gate`. Resolve before polish.
83
+ 4. **Triage open items.** All Open Questions, `[ASSUMPTION]` tags, `[NOTE FOR PM]` callouts. Phase-blockers (would make the PRD unsafe for UX/architecture/epics) surfaced one at a time and resolved; non-blockers deferred with owner + revisit condition logged to `.decision-log.md`. If phase-blocker count is high, flag it.
84
+ 5. **Polish.** Apply `{workflow.doc_standards}` to `prd.md` and `addendum.md` in declared order (structural passes before prose — prose should not polish soon-to-be-cut text). Parallelize across documents, sequential within.
85
+ 6. **External handoffs.** Execute `{workflow.external_handoffs}`; surface returned URLs/IDs. Skip and flag unavailable tools.
86
+ 7. **Close.** Set `prd.md` frontmatter `status: final` and `updated` to `{date}` so future invocations distinguish this PRD from in-progress drafts. Record finalization to `.decision-log.md`. Share artifact paths. Common next: `bmad-create-ux-design`, `bmad-create-architecture`, `bmad-create-epics-and-stories`; invoke `bmad-help` for authoritative routing.
90
87
  8. Run `{workflow.on_complete}` if non-empty.
@@ -18,7 +18,7 @@ Every headless run ends with one of these payloads. Omit keys for artifacts not
18
18
  "intent": "create",
19
19
  "prd": "{doc_workspace}/prd.md",
20
20
  "addendum": "{doc_workspace}/addendum.md",
21
- "decision_log": "{doc_workspace}/decision-log.md",
21
+ "decision_log": "{doc_workspace}/.decision-log.md",
22
22
  "open_questions": [],
23
23
  "assumptions": [],
24
24
  "external_handoffs": [
@@ -34,7 +34,7 @@ Every headless run ends with one of these payloads. Omit keys for artifacts not
34
34
  "status": "complete",
35
35
  "intent": "update",
36
36
  "prd": "{doc_workspace}/prd.md",
37
- "decision_log": "{doc_workspace}/decision-log.md",
37
+ "decision_log": "{doc_workspace}/.decision-log.md",
38
38
  "changes_summary": "1-3 sentences describing what changed and why",
39
39
  "conflicts_with_prior_decisions": [],
40
40
  "open_questions": [],
@@ -1,8 +1,4 @@
1
- # PRD Template — A Menu, Not a Skeleton
2
-
3
- This is a menu of sections the facilitator picks from based on what the product, the stakes, the audience, and the existing inputs actually need. Hobby projects use the essential spine and stop. Enterprise initiatives, regulated submissions, and consumer launches add clusters from the adapt-in menu below. **Never include a section just because it appears here.** Drop, reorder, rename, combine — whatever the PRD needs.
4
-
5
- ---
1
+ # PRD Template
6
2
 
7
3
  ## Essential Spine *(almost always present)*
8
4
 
@@ -34,15 +30,30 @@ updated: {YYYY-MM-DD}
34
30
  [Who this is explicitly not for in v1.]
35
31
 
36
32
  ### 2.4 Key User Journeys
37
- *Named flows the product enables one line each, numbered globally as UJ-1 through UJ-N for downstream traceability. Detailed flow design (steps, screens, edge flows) is the job of the UX workflow, not this PRD. Features in §4 may reference journeys by ID inline ("realizes UJ-3").*
33
+ *Named-persona narratives the product enables. Numbered globally as UJ-1 through UJ-N. FRs reference journeys by ID inline ("realizes UJ-3"); SMs may also cross-reference. If a UX doc already exists, mirror its UJ IDs here and point to the source.*
34
+
35
+ **Default shape:** a named scene with entry state, path, climax, and resolution. Each beat forces specificity the team would otherwise leave implicit — auth assumptions, screen order, what tells the user value landed. Read together as a short narrative; the example below shows the form.
38
36
 
39
- - **UJ-1** — [Named flow, one line: who does what, to what end.]
40
- - **UJ-2** ...
37
+ - **UJ-1. {One-line title persona doing the thing.}**
38
+ - **Persona + context:** one line, grounded enough to explain the *why*.
39
+ - **Entry state:** authenticated? which surface? coming from where?
40
+ - **Path:** 3-5 concrete beats — taps, screens, decisions.
41
+ - **Climax:** the moment value is delivered and how the user knows.
42
+ - **Resolution:** state they're left in, what's next.
43
+ - **Edge case** *(optional)*: one real failure mode and what the user does next.
41
44
 
42
- [For hobby/utility projects, 1-3 journeys may be enough. For complex multi-feature products (onboarding, checkout, multi-step approvals), expand. For libraries/CLIs with minimal flow, reduce to a single line or collapse into §2.2 JTBD.]
45
+ *Written out, that becomes:*
46
+ > **UJ-3. Priya checks the trip damage before she's even home.**
47
+ > Priya, budgeting on a single income with a new baby, finishes a grocery run and gets in the car. Already authenticated via biometric on a previous session. She opens the app, taps the FAB camera, and scans the receipt. The app OCRs the total and shows a single-screen overlay: this trip $84.20, weekly cap $250, $172.10 remaining, three days left in the week. She closes the app and drives home. **Edge case:** if she scanned a receipt earlier today, the app asks whether this replaces or adds to that trip before counting it against the cap.
48
+
49
+ - **UJ-2. ...**
50
+
51
+ **Scope dial:**
52
+ - **Lighter** — hobby/solo, library/CLI, or when the UJ is essentially a JTBD restated: a single sentence works (`{Persona}, {context}, {what they do and why}.`).
53
+ - **Heavier** — auth, multi-device handoff, complex navigation, or anything feeding downstream UX/architecture: add a numbered Flow, an Edge cases list, and a capability → FR mapping (`The system must {capability}. → FR-N`).
43
54
 
44
55
  ## 3. Glossary
45
- *Downstream workflows and readers must use these terms exactly.*
56
+ *Downstream workflows and readers must use these terms exactly. FRs, UJs, and SMs use Glossary terms verbatim; introducing a synonym anywhere in the PRD is a discipline violation. If §4 introduces a new domain noun, add it to the Glossary in the same pass.*
46
57
 
47
58
  - **Term** — Definition. Relationships to other Glossary terms. Cardinality where relevant.
48
59
  - **Term** — ...
@@ -53,11 +64,22 @@ updated: {YYYY-MM-DD}
53
64
  *Each subsection is a coherent feature: behavioral description first, FRs nested under it, optional feature-specific NFRs and notes. FRs are numbered globally (FR-1 through FR-N) so downstream artifacts have stable references even if features get reorganized. Reference user journeys by ID inline ("realizes UJ-2") where the chain matters.*
54
65
 
55
66
  ### 4.1 {Feature Name}
56
- **Description:** [Behavioral narrative — how this feature works, who uses it, the user experience, edge cases. Use Glossary terms exactly. Embed inline `[ASSUMPTION: ...]` tags where you inferred without confirmation.]
67
+ **Description:** [Behavioral narrative — how this feature works, who uses it, the user experience, edge cases. Realizes UJ-X, UJ-Y. Use Glossary terms exactly. Embed inline `[ASSUMPTION: ...]` tags where you inferred without confirmation.]
57
68
 
58
69
  **Functional Requirements:**
59
- - **FR-1** — [Actor] can [capability] [under conditions / with measurement].
60
- - **FR-2** ...
70
+
71
+ #### FR-1: {Short capability name}
72
+
73
+ [Actor] can [capability] [under conditions]. Realizes UJ-X.
74
+
75
+ **Consequences (testable):**
76
+ - {Specific testable condition, e.g. "System returns HTTP 429 when request rate exceeds 100/sec per merchant."}
77
+ - {Another testable condition.}
78
+
79
+ **Out of Scope:** *(optional — what this FR explicitly does NOT cover)*
80
+ - {bound}
81
+
82
+ #### FR-2: ...
61
83
 
62
84
  **Feature-specific NFRs:** *(only if any apply uniquely to this feature)*
63
85
  - Performance / security / accessibility / etc. specific to this feature.
@@ -80,14 +102,16 @@ updated: {YYYY-MM-DD}
80
102
 
81
103
  ## 7. Success Metrics
82
104
 
105
+ *Each SM cross-references the FR(s) it validates. Counter-metrics counterbalance specific primary or secondary metrics.*
106
+
83
107
  **Primary**
84
- - Metric — definition, target.
108
+ - **SM-1**: Metric — definition, target. Validates FR-X, FR-Y.
85
109
 
86
110
  **Secondary**
87
- - Metric — definition, target.
111
+ - **SM-2**: Metric — definition, target. Validates FR-Z.
88
112
 
89
113
  **Counter-metrics (do not optimize)**
90
- - Metric — why this should *not* be optimized.
114
+ - **SM-C1**: Metric — why this should *not* be optimized. Counterbalances SM-1.
91
115
 
92
116
  [Length scales with stakes. Hobby/utility PRD: a single sentence may be enough ("Success: I use this weekly and don't abandon it after a month"). Public launch / enterprise: full quantitative breakdown with measurement methods. Counter-metrics are as load-bearing as primary metrics — they prevent the architect from optimizing the wrong thing and the dev from gaming the wrong target.]
93
117
 
@@ -142,17 +166,3 @@ updated: {YYYY-MM-DD}
142
166
  ### Small-scope all-inclusive *(use when scope is 1-2 stories' worth and the user wants a single captured artifact — chosen during the Right-skill check in Discovery)*
143
167
  - **Stories** — story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-quick-dev` is the better path — this cluster is only for "I want a doc *and* the stories."
144
168
 
145
- ---
146
-
147
- ## Notes for the facilitator
148
-
149
- - **The essential spine is the floor, not the ceiling.** A hobby PRD might keep all ten sections short. An enterprise PRD layers many clusters from the adapt-in menu.
150
- - **§3 Glossary before §4 Features.** Mechanics never introduce a new domain noun without adding it to the Glossary in the same pass. Persona, JTBD, and Journeys may use Glossary terms before §3 formally defines them — context is inferable; the Glossary is for downstream anchoring.
151
- - **§2.4 Key User Journeys are brief.** One line each. Numbered globally (UJ-1 through UJ-N) so architecture, epics, stories, and tickets can reference them by stable ID. Detailed flow design happens in the UX workflow — not here.
152
- - **§4 Features pattern at every scale.** Description → FRs nested → optional NFRs → optional notes. Hobby PRD: one short paragraph and three FRs per feature. Enterprise feature: multi-paragraph description, fifteen FRs, several feature-specific NFRs, open questions. Same shape, different depth.
153
- - **`[ASSUMPTION]`, `[NON-GOAL]`, `[v2 — out of MVP]`, `[NOTE FOR PM]` callouts are first-class.** They signal to downstream readers and the next session of work. Every `[ASSUMPTION]` lands in §9 Assumptions Index.
154
- - **When UX is *input* to the PRD** (journeys already designed elsewhere): §2.4 names the journeys by ID and points to the existing UX doc. Reference, do not duplicate.
155
- - **When UX is *output* of the PRD** (no UX work yet — downstream `bmad-create-ux-design` will produce it): §2.4 captures the PM's intent on which journeys exist; UX elaborates them into detailed flows downstream.
156
- - **§7 Success Metrics scales with stakes** but is always present. Counter-metrics matter as much as primary metrics — they shape what NOT to optimize.
157
- - **Small-scope all-inclusive option.** When scope is genuinely 1-2 stories and the user wants a single artifact instead of running a separate `bmad-create-story` workflow, add the adapt-in *Stories* cluster: lean §1-§6 plus inline §Stories at the end. The whole doc fits on a page or two. This is a valid PRD shape for tiny work — don't apologize for it.
158
- - **Adapt the section numbering.** The spine uses 0-9; adapt-in additions slot in wherever they read best (e.g., Aesthetic & Tone before §3 if branding is foundational, Compliance after §5 Non-Goals, Constraints & Guardrails between Features and Non-Goals, Stories at the very end after Assumptions Index).