bmad-method 6.6.1-next.7 → 6.6.1-next.8

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 (64) hide show
  1. package/evals/bmm-skills/bmad-product-brief/evals.json +24 -55
  2. package/package.json +1 -1
  3. package/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +18 -17
  4. package/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +30 -2
  5. package/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml +3 -13
  6. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md +16 -90
  7. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md +16 -88
  8. package/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +90 -0
  9. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md +76 -0
  10. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md +158 -0
  11. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md +30 -0
  12. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html +190 -0
  13. package/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml +113 -0
  14. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md +79 -0
  15. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md +24 -0
  16. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md +58 -0
  17. package/src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py +290 -0
  18. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md +16 -90
  19. package/src/bmm-skills/module-help.csv +2 -4
  20. package/src/core-skills/bmad-customize/SKILL.md +1 -1
  21. package/src/core-skills/bmad-help/SKILL.md +2 -2
  22. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md +0 -28
  23. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/domain-complexity.csv +0 -15
  24. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/prd-purpose.md +0 -197
  25. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/project-types.csv +0 -11
  26. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01-init.md +0 -186
  27. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01b-continue.md +0 -161
  28. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02-discovery.md +0 -210
  29. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02b-vision.md +0 -142
  30. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -158
  31. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-03-success.md +0 -214
  32. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-04-journeys.md +0 -201
  33. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-05-domain.md +0 -194
  34. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-06-innovation.md +0 -211
  35. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-07-project-type.md +0 -222
  36. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md +0 -263
  37. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-09-functional.md +0 -219
  38. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -230
  39. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md +0 -221
  40. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md +0 -121
  41. package/src/bmm-skills/2-plan-workflows/bmad-create-prd/templates/prd-template.md +0 -10
  42. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/data/prd-purpose.md +0 -197
  43. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  44. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  45. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
  46. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
  47. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -165
  48. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv +0 -15
  49. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md +0 -197
  50. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/project-types.csv +0 -11
  51. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -221
  52. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
  53. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
  54. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
  55. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
  56. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
  57. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
  58. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
  59. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
  60. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
  61. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
  62. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
  63. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
  64. package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -230
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "skill_name": "bmad-product-brief",
3
- "_design_notes": "16 single-shot evals across two patterns. Pattern A (A1-A8) tests artifact correctness given complete inputs in headless mode. Pattern B (B1-B8) tests process discipline (decision log fidelity, polish execution, phase ordering, intent boundaries, distillate generation) by inspecting transcript and side-artifacts. Facilitation/conversation-quality evals are deferred to a future multi-turn simulator.",
3
+ "_design_notes": "Single-shot evals across two patterns. Pattern A (A1-A8) tests artifact correctness given complete inputs in headless mode. Pattern B tests process discipline (decision log fidelity, polish execution, intent boundaries) by inspecting transcript and side-artifacts. Facilitation/conversation-quality evals are deferred to a future multi-turn simulator.",
4
4
  "evals": [
5
5
  {
6
6
  "id": "A1",
7
7
  "_pattern": "artifact-correctness",
8
- "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this \u2014 do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000 (poor original insulation, rising energy bills).\n- Validation evidence: 50 user interviews completed in Q4 2025; 78% expressed willingness to pay $49 for a one-time audit if results were credible.\n- Stakes: this brief is the primary input investors will read before our first Series A pitch call.\n- Hardware dependency: requires a thermal imaging accessory (we do not manufacture hardware).\n- Known unknowns: insurance/warranty implications of homeowner-driven audits; whether the 78% intent translates to paid conversion at scale.\n- Distillate: yes, generate one \u2014 the brief will feed downstream PRD work.\n\nRight-size for investor-stage rigor. Output a JSON status block at the end with status, intent, and artifact paths.",
9
- "expected_output": "A run folder containing brief.md (with valid YAML frontmatter), decision-log.md, and distillate.md. Brief is 1-2 pages, addresses target audience, hardware dependency, validation evidence, and surfaces unknowns alongside knowns. Final assistant message includes JSON with status='complete', intent='create', and artifact paths.",
8
+ "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000 (poor original insulation, rising energy bills).\n- Validation evidence: 50 user interviews completed in Q4 2025; 78% expressed willingness to pay $49 for a one-time audit if results were credible.\n- Stakes: this brief is the primary input investors will read before our first Series A pitch call.\n- Hardware dependency: requires a thermal imaging accessory (we do not manufacture hardware).\n- Known unknowns: insurance/warranty implications of homeowner-driven audits; whether the 78% intent translates to paid conversion at scale.\nRight-size for investor-stage rigor. Output a JSON status block at the end with status, intent, and artifact paths.",
9
+ "expected_output": "A run folder containing brief.md (with valid YAML frontmatter) and decision-log.md. Brief is 1-2 pages, addresses target audience, hardware dependency, validation evidence, and surfaces unknowns alongside knowns. Final assistant message includes JSON with status='complete', intent='create', and artifact paths.",
10
10
  "files": [],
11
11
  "expectations": [
12
12
  "A run folder is created with brief.md and decision-log.md",
@@ -18,7 +18,6 @@
18
18
  "brief.md references the 50-user interview validation OR the 78% willingness-to-pay finding",
19
19
  "brief.md surfaces at least one explicit unknown or unvalidated assumption",
20
20
  "brief.md does not introduce facts absent from the input prompt (no invented competitors, fabricated metrics, or unstated partnerships)",
21
- "distillate.md exists in the run folder",
22
21
  "The final assistant message contains a JSON object with keys 'status', 'intent', and at least one artifact path",
23
22
  "The JSON 'intent' value is 'create'"
24
23
  ]
@@ -32,14 +31,14 @@
32
31
  "expectations": [
33
32
  "The final assistant message contains a JSON object with key 'status' set to 'blocked'",
34
33
  "The JSON output includes a 'reason' field explaining what context is missing",
35
- "If brief.md exists at all, its body content (excluding frontmatter) is fewer than 100 words OR is a placeholder skeleton \u2014 the skill did not invent a product",
34
+ "If brief.md exists at all, its body content (excluding frontmatter) is fewer than 100 words OR is a placeholder skeleton the skill did not invent a product",
36
35
  "The transcript contains no clarifying questions sent back to the user (headless mode honored)"
37
36
  ]
38
37
  },
39
38
  {
40
39
  "id": "A3",
41
40
  "_pattern": "artifact-correctness",
42
- "prompt": "Run headless. Create a brief for our neighborhood compost coordinator app idea \u2014 we are moving forward with it. Q2 brainstorming session notes are at evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md; pull only what is relevant to the compost concept.",
41
+ "prompt": "Run headless. Create a brief for our neighborhood compost coordinator app idea we are moving forward with it. Q2 brainstorming session notes are at evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md; pull only what is relevant to the compost concept.",
43
42
  "expected_output": "Brief focuses tightly on the compost coordinator concept. Source brainstorm is filtered, not ingested wholesale. Decision-log records that filtering occurred.",
44
43
  "files": ["evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md"],
45
44
  "expectations": [
@@ -53,7 +52,7 @@
53
52
  {
54
53
  "id": "A4",
55
54
  "_pattern": "artifact-correctness",
56
- "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md \u2014 the Mossridge Public Library board meets Monday and we need this to land. Read the addendum and decision-log in the same folder first. Cite specific sections, identify weaknesses, caveat what cannot be evaluated. Return inline only \u2014 no separate validation file.",
55
+ "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md the Mossridge Public Library board meets Monday and we need this to land. Read the addendum and decision-log in the same folder first. Cite specific sections, identify weaknesses, caveat what cannot be evaluated. Return inline only no separate validation file.",
57
56
  "expected_output": "Inline critique citing specific sections from the input brief. No new files. Caveats at least one claim that cannot be evaluated from the brief alone. Offers to roll findings into an Update.",
58
57
  "files": [
59
58
  "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md",
@@ -72,7 +71,7 @@
72
71
  "id": "A5",
73
72
  "_pattern": "artifact-correctness",
74
73
  "prompt": "Run headless. Create a brief for: a weekend-project iOS app called Sproutkeeper that reminds houseplant owners when to water their plants based on plant type and indoor humidity sensor data. Target is hobbyist plant owners. MVP scope only, single-developer side project, no investors, no team, just personal evening project.",
75
- "expected_output": "Lightweight brief right-sized to a side project. Low rigor. No investor-grade framing. Probably no distillate unless the side-project user explicitly asked.",
74
+ "expected_output": "Lightweight brief right-sized to a side project. Low rigor. No investor-grade framing.",
76
75
  "files": [],
77
76
  "expectations": [
78
77
  "The final assistant message contains a JSON object with intent='create'",
@@ -99,7 +98,7 @@
99
98
  {
100
99
  "id": "A7",
101
100
  "_pattern": "artifact-correctness",
102
- "prompt": "Run headless. Create a brief for Brightway \u2014 our smart bike helmet with crash detection, turn signals, and braking lights. Meridian Insights produced a market research report on e-mobility at evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md. Use only what is relevant to the safety helmet category \u2014 do not let the e-scooter, charging-infrastructure, or bike-share segments bleed into the brief.",
101
+ "prompt": "Run headless. Create a brief for Brightway our smart bike helmet with crash detection, turn signals, and braking lights. Meridian Insights produced a market research report on e-mobility at evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md. Use only what is relevant to the safety helmet category do not let the e-scooter, charging-infrastructure, or bike-share segments bleed into the brief.",
103
102
  "expected_output": "Brief focuses on the smart bike helmet concept. Pulls relevant findings from the helmet section. Other mobility segments do not appear.",
104
103
  "files": ["evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md"],
105
104
  "expectations": [
@@ -113,7 +112,7 @@
113
112
  {
114
113
  "id": "A8",
115
114
  "_pattern": "artifact-correctness",
116
- "prompt": "Run headless. Create a brief for Pantry Bridge \u2014 a meal-kit subscription targeted at adults 65+ who live alone and want fresh meals without grocery shopping. Customer research transcripts are at evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md. Pull what is relevant from the older-adult interviews; do not conflate insights from the working-parent, student, or corporate-buyer personas.",
115
+ "prompt": "Run headless. Create a brief for Pantry Bridge a meal-kit subscription targeted at adults 65+ who live alone and want fresh meals without grocery shopping. Customer research transcripts are at evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md. Pull what is relevant from the older-adult interviews; do not conflate insights from the working-parent, student, or corporate-buyer personas.",
117
116
  "expected_output": "Brief focuses on the older-adult target persona. Eleanor's interview drives the insights. Other personas do not pollute the brief.",
118
117
  "files": ["evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md"],
119
118
  "expectations": [
@@ -127,7 +126,7 @@
127
126
  {
128
127
  "id": "B1",
129
128
  "_pattern": "process-discipline",
130
- "prompt": "Run headless. Create a brief for HelmStack \u2014 an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch \u2014 operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB \u2014 TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md, decision-log.md, and a distillate.",
129
+ "prompt": "Run headless. Create a brief for HelmStack an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md and decision-log.md.",
131
130
  "expected_output": "Decision log contains all five named decisions with rationale captured. Brief reflects the decisions but the decision log is the canonical record.",
132
131
  "files": [],
133
132
  "expectations": [
@@ -142,14 +141,14 @@
142
141
  {
143
142
  "id": "B2",
144
143
  "_pattern": "process-discipline",
145
- "prompt": "Run headless. Create a brief for HelmStack \u2014 an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch \u2014 operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB \u2014 TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md, decision-log.md, and a distillate.",
144
+ "prompt": "Run headless. Create a brief for HelmStack an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md and decision-log.md.",
146
145
  "expected_output": "Brief is consistent with the decision log: every decision in the log is reflected in the brief, and no claim in the brief is absent from the input prompt or the log. Tests bidirectional fidelity.",
147
146
  "files": [],
148
147
  "expectations": [
149
148
  "brief.md mentions the OSS-core + paid-SaaS pricing structure",
150
149
  "brief.md references the invite-only-beta launch sequencing OR identifies the launch model consistent with the decision log",
151
- "brief.md references the platform-stack choice (TypeScript + Postgres) OR is silent on stack \u2014 but does not contradict it (no mention of Go, MongoDB, etc.)",
152
- "brief.md identifies 5-50 person eng teams as the ICP (or equivalent \u2014 small-to-mid-size eng teams)",
150
+ "brief.md references the platform-stack choice (TypeScript + Postgres) OR is silent on stack but does not contradict it (no mention of Go, MongoDB, etc.)",
151
+ "brief.md identifies 5-50 person eng teams as the ICP (or equivalent small-to-mid-size eng teams)",
153
152
  "brief.md does not introduce decisions, competitors, partnerships, metrics, or product features absent from both the input prompt and decision-log.md (no invented facts)",
154
153
  "Each substantive decision in decision-log.md has a corresponding reflection in brief.md (no log-to-brief drops)"
155
154
  ]
@@ -157,8 +156,8 @@
157
156
  {
158
157
  "id": "B3",
159
158
  "_pattern": "process-discipline",
160
- "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this \u2014 do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews completed in Q4 2025; 78% willingness to pay $49 for a one-time audit.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory (we do not manufacture hardware).\n\nProduce brief.md, decision-log.md, and a distillate. Run the polish phase before presenting.",
161
- "expected_output": "The transcript shows the polish phase executing \u2014 the skill invokes bmad-editorial-review-structure and bmad-editorial-review-prose, either via the Skill tool directly or via Agent tool calls whose description or prompt targets those editorial skills. Both passes must occur after the initial draft is written and before the final JSON status block.",
159
+ "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews completed in Q4 2025; 78% willingness to pay $49 for a one-time audit.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory (we do not manufacture hardware).\n\nProduce brief.md and decision-log.md. Run the polish phase before presenting.",
160
+ "expected_output": "The transcript shows the polish phase executing the skill invokes bmad-editorial-review-structure and bmad-editorial-review-prose, either via the Skill tool directly or via Agent tool calls whose description or prompt targets those editorial skills. Both passes must occur after the initial draft is written and before the final JSON status block.",
162
161
  "files": [],
163
162
  "expectations": [
164
163
  "The transcript contains either a Skill tool call invoking bmad-editorial-review-structure, OR an Agent tool call whose description or prompt references structural review or bmad-editorial-review-structure",
@@ -167,29 +166,15 @@
167
166
  "Both editorial-pass dispatches (Skill or Agent) occur before the final assistant message containing the JSON status block"
168
167
  ]
169
168
  },
170
- {
171
- "id": "B4",
172
- "_pattern": "process-discipline",
173
- "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this \u2014 do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). Walkthrough produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews; 78% willingness to pay $49.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory.\n\nProduce brief.md, decision-log.md, and a distillate. Follow the standard Create flow: workspace setup, draft, finalize (decision log audit, polish, distillate, close-out).",
174
- "expected_output": "Workspace setup happens before drafting. Draft happens before polish. Polish happens before distillate generation. Distillate generation happens before the final close-out JSON block. Each phase boundary is observable in the transcript.",
175
- "files": [],
176
- "expectations": [
177
- "The first Write tool call to decision-log.md OR brief.md (skeleton) occurs before the substantive Write that produces the full brief body",
178
- "The polish-phase Skill tool calls (bmad-editorial-review-structure and/or bmad-editorial-review-prose) occur after the brief body is written",
179
- "The bmad-distillator Skill tool call (or distillate.md write) occurs after the polish-phase Skill tool calls",
180
- "The final JSON status block in the assistant message occurs after distillate.md is written or skipped with explanation"
181
- ]
182
- },
183
169
  {
184
170
  "id": "B5",
185
171
  "_pattern": "process-discipline",
186
- "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md \u2014 we have decided to add B2B catering services for corporate events, in addition to the direct-to-consumer delivery model. Read the existing decision-log.md and addendum.md in the same folder first.",
172
+ "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md we have decided to add B2B catering services for corporate events, in addition to the direct-to-consumer delivery model. Read the existing decision-log.md and addendum.md in the same folder first.",
187
173
  "expected_output": "The skill MUST detect the contradiction with the prior 'rejected B2B catering for MVP' decision (in decision-log.md) before applying the change. Acceptable resolutions: (a) halt with blocked status surfacing the conflict, or (b) apply the change with addendum.md capturing the override and rationale. Brief must not silently flip without acknowledging the prior decision.",
188
174
  "files": [
189
175
  "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md",
190
176
  "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md",
191
- "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md",
192
- "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md"
177
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md"
193
178
  ],
194
179
  "expectations": [
195
180
  "The transcript or output explicitly references the prior 'rejected B2B catering for MVP' decision from decision-log.md",
@@ -202,26 +187,24 @@
202
187
  {
203
188
  "id": "B6",
204
189
  "_pattern": "process-discipline",
205
- "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md \u2014 we have signed our fifth chef partner (Chicago metro). Add this to the existing operating-model and what's-known sections. Read the existing decision-log.md first.",
206
- "expected_output": "Clean update \u2014 does not contradict any prior decision. Brief gets updated, decision-log gains a new entry, distillate is regenerated, YAML 'updated' bumps but 'created' stays the same. No spurious addendum since this is a status update, not an override.",
190
+ "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md we have signed our fifth chef partner (Chicago metro). Add this to the existing operating-model and what's-known sections. Read the existing decision-log.md first.",
191
+ "expected_output": "Clean update does not contradict any prior decision. Brief gets updated, decision-log gains a new entry, YAML 'updated' bumps but 'created' stays the same. No spurious addendum since this is a status update, not an override.",
207
192
  "files": [
208
193
  "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md",
209
194
  "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md",
210
- "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md",
211
- "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md"
195
+ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md"
212
196
  ],
213
197
  "expectations": [
214
198
  "brief.md is updated to reflect the signed fifth chef partner in Chicago",
215
199
  "brief.md frontmatter 'updated' field is later than the original 'created' timestamp; 'created' is unchanged",
216
200
  "decision-log.md contains a new entry referencing the fifth chef signing",
217
- "distillate.md is regenerated (modification timestamp newer than the input fixture)",
218
- "The transcript does not surface a fictional contradiction \u2014 this is a clean update, not an override of a prior decision"
201
+ "The transcript does not surface a fictional contradiction — this is a clean update, not an override of a prior decision"
219
202
  ]
220
203
  },
221
204
  {
222
205
  "id": "B7",
223
206
  "_pattern": "process-discipline",
224
- "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md \u2014 we are presenting to the library board Monday. Read the addendum and decision-log in the same folder. Cite specific sections. Return inline only.",
207
+ "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md we are presenting to the library board Monday. Read the addendum and decision-log in the same folder. Cite specific sections. Return inline only.",
225
208
  "expected_output": "Validate is read-only. No new files created. No existing files modified. Critique returned inline in the assistant output.",
226
209
  "files": [
227
210
  "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md",
@@ -235,30 +218,16 @@
235
218
  "The final assistant message contains a JSON object with intent='validate'"
236
219
  ]
237
220
  },
238
- {
239
- "id": "B8",
240
- "_pattern": "process-discipline",
241
- "timeout": 900,
242
- "prompt": "Run headless. Create a product brief for InsuLens (smartphone app that pairs with thermal imaging accessories for homeowner insulation audits, target suburban homeowners 35-65 with houses pre-2000, 50 user interviews with 78% willingness to pay $49, Series A pitch input). Generate a distillate \u2014 this brief will feed downstream PRD work.",
243
- "expected_output": "distillate.md exists alongside brief.md and decision-log.md. The distillate is a meaningful condensation of the brief. Content of the distillate matches the brief without introducing new facts. The transcript shows the bmad-distillator subagent invoked.",
244
- "files": [],
245
- "expectations": [
246
- "distillate.md exists in the run folder alongside brief.md and decision-log.md",
247
- "distillate.md is a meaningful condensation of brief.md \u2014 substantially more concise and capturing only the key decisions, target audience, validation evidence, and known unknowns needed for downstream PRD work, not a near-verbatim copy",
248
- "distillate.md does not introduce facts or claims not present in brief.md (no inventions on compression)",
249
- "The transcript contains a Skill tool call invoking bmad-distillator"
250
- ]
251
- },
252
221
  {
253
222
  "id": "C1",
254
223
  "_pattern": "config-compliance",
255
- "prompt": "Run headless. Create a product brief for TaskFlow \u2014 a lightweight daily planning app for freelancers who juggle multiple clients. Core idea: a single daily view that pulls together tasks, time blocks, and client context so the freelancer always knows what to work on next. Target is independent freelancers, 1-3 clients at a time, who currently manage their day across sticky notes, calendar apps, and spreadsheets. MVP is mobile-first. No investors \u2014 the founder is bootstrapping.",
224
+ "prompt": "Run headless. Create a product brief for TaskFlow a lightweight daily planning app for freelancers who juggle multiple clients. Core idea: a single daily view that pulls together tasks, time blocks, and client context so the freelancer always knows what to work on next. Target is independent freelancers, 1-3 clients at a time, who currently manage their day across sticky notes, calendar apps, and spreadsheets. MVP is mobile-first. No investors the founder is bootstrapping.",
256
225
  "expected_output": "Brief written in Spanish (document_output_language=Spanish). Assistant's conversational output reflects the configured British-accent communication style. Brief lands at the custom output path (test-output/artifacts/briefs/...) rather than the default _bmad-output path. Brief is right-sized for a bootstrapped solo project.",
257
226
  "files": [],
258
227
  "expectations": [
259
228
  "brief.md exists under test-output/artifacts/briefs/ (the custom planning_artifacts path), not under _bmad-output/",
260
229
  "The final JSON status block artifact paths reference test-output/ rather than _bmad-output/",
261
- "brief.md body is written in Spanish \u2014 the majority of prose content (headings, section bodies) is in Spanish, not English",
230
+ "brief.md body is written in Spanish the majority of prose content (headings, section bodies) is in Spanish, not English",
262
231
  "brief.md covers the TaskFlow concept: freelancer daily planning, multi-client context, the sticky-notes-plus-calendar-plus-spreadsheet problem",
263
232
  "brief.md is right-sized for a bootstrapped side project — appropriate depth and scope for a solo-founder app with no investor audience, no TAM/SAM/SOM framing, no Series A language, and no sections that pad for enterprise credibility",
264
233
  "The assistant's non-document output (transcript text content outside of brief.md) contains at least one marker of British informal register (e.g., 'mate', 'cheers', 'brilliant', 'sorted', 'innit', 'blimey', 'proper', 'right then', or equivalent pub-idiom phrasing)"
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.7",
4
+ "version": "6.6.1-next.8",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -1,11 +1,6 @@
1
1
  ---
2
2
  name: bmad-product-brief
3
3
  description: Create, update, or validate a product brief. Use when the user wants help producing, editing, or validating a brief.
4
- dependencies:
5
- - bmad-distillator
6
- - bmad-editorial-review-structure
7
- - bmad-editorial-review-prose
8
- - bmad-help
9
4
  ---
10
5
 
11
6
  # Overview
@@ -16,20 +11,23 @@ You are not in a hurry. You will not do the thinking for them. Coach, do not qui
16
11
 
17
12
  Briefs produced here are honest, right-sized to purpose, and built for what comes next — they do not pad, they do not fabricate moats, they surface what is unknown alongside what is known - the user must feel that it is their own creation.
18
13
 
14
+ At the opening greeting, let the user know they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration at any point.
15
+
19
16
  ## On Activation
20
17
 
21
18
  1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt.
22
19
  2. Execute each entry in `{workflow.activation_steps_prepend}` in order.
23
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.
24
- 4. 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}`.
25
- 5. Greet `{user_name}` in `{communication_language}`. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`.
26
- 6. Execute each entry in `{workflow.activation_steps_append}` in order.
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.
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`.
24
+ 7. Execute each entry in `{workflow.activation_steps_append}` in order.
27
25
 
28
26
  ## Intent Operating Modes
29
27
 
30
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.
31
29
 
32
- **Update.** Reconcile an existing brief with a change signal (edit request, downstream artifact, anything). Read the brief, the addendum if present, `decision-log.md`, and any original inputs first past decisions and rejected ideas matter. Then run the `## Discovery` posture against the change signal before proposing changes. Identify what is now stale or wrong, propose changes, apply on agreement, bump `updated`, and write a new `decision-log.md` entry recording what changed and why — every update, clean or override, must be logged. If the change signal contradicts prior decisions, surface the conflict before changing anything. In headless mode, if the prompt clearly signals intent to override the contradicted decision, write the full audit trail first, then apply the change — you must: (1) add a new entry to `decision-log.md` naming the decision being reversed and its rationale, (2) add an override section to `addendum.md` (creating it if absent). Both are mandatory before modifying `brief.md`; do not wait for user confirmation. If intent to override is ambiguous, halt with `blocked` status naming the specific conflict. If the change is fundamental, name it as a re-draft and offer Create instead. If `distillate.md` exists, you must regenerate it after changes are applied by invoking `bmad-distillator`; this step is required, not optional. If `bmad-distillator` is unavailable, flag the distillate as stale in the JSON output.
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.
33
31
 
34
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.
35
33
 
@@ -43,9 +41,11 @@ When invoked headless, do not ask. Complete the intent using what is provided, w
43
41
  "intent": "create",
44
42
  "brief": "{doc_workspace}/brief.md",
45
43
  "addendum": "{doc_workspace}/addendum.md",
46
- "distillate": "{doc_workspace}/distillate.md",
47
44
  "decision_log": "{doc_workspace}/decision-log.md",
48
- "open_questions": []
45
+ "open_questions": [],
46
+ "external_handoffs": [
47
+ {"directive": "Confluence upload", "tool": "corp:confluence_upload", "url": "https://confluence.corp/PROD/123", "status": "ok"}
48
+ ]
49
49
  }
50
50
  ```
51
51
 
@@ -66,15 +66,16 @@ Conversationally surface what the user brings, why this brief exists, and the do
66
66
  ## Constraints
67
67
 
68
68
  - **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. The decision log is canonical memory — what the user has shared is preserved on disk, not stored in the conversation.
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.
70
71
  - **Continuity across sessions.** If a prior in-progress draft for this project exists, the user is offered to resume.
71
72
  - **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.
72
- - **Length and coherence.** Aim for 1-2 pages — if it is longer, the detail belongs in the addendum or distillate. Structure in service of the product; downstream consumers (PRD workflow, etc.) read this, so coherent shape matters.
73
+ - **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.
73
74
 
74
75
  ## Finalize
75
76
 
76
- 1. Decision log audit + addendum: 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` (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, sizing data, in-depth personas), or set aside as process noise. `addendum.md` exists if anything earned its place there.
77
- 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. The user sees a polished draft, not a polish review.
78
- 3. Distillate: offer the user a lean, token-efficient distillate of the brief frame why it matters (it becomes the primary input when downstream BMad workflows like PRD creation pull this brief in). If they want it, invoke `bmad-distillator` with `source_documents=[brief.md, addendum.md if produced]`, `downstream_consumer="PRD creation"`, `output_path={doc_workspace}/distillate.md`. If `bmad-distillator` is not installed, skip distillate generation entirely do not attempt an inline alternative. Include `"distillate": "skipped bmad-distillator not installed"` in the final JSON block and tell the user to install it.
79
- 4. Tell the user it is ready: artifacts, path, use the `bmad-help` skill to help understand what next steps you can suggest they do in the bmad method ecosystem.
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.
78
+ 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
+ 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
+ 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.
80
81
  5. Run `{workflow.on_complete}` if non-empty. Treat a string scalar as a single instruction and an array as a sequence of instructions executed in order.
@@ -39,8 +39,7 @@ on_complete = ""
39
39
  # to enforce a different structure (e.g. regulated-industry, investor-deck).
40
40
  brief_template = "assets/brief-template.md"
41
41
 
42
- # Run folder location. The brief, optional addendum, and optional distillate
43
- # all land inside `{output_dir}/{output_folder_name}/`.
42
+ # Run folder location. The brief and optional addendum land inside `{output_dir}/{output_folder_name}/`.
44
43
  output_dir = "{planning_artifacts}/briefs"
45
44
  output_folder_name = "brief-{project_name}-{date}"
46
45
 
@@ -64,3 +63,32 @@ doc_standards = [
64
63
  "skill:bmad-editorial-review-structure",
65
64
  "skill:bmad-editorial-review-prose",
66
65
  ]
66
+
67
+ # External-source registry. Natural-language directives describing knowledge
68
+ # bases, MCP tools, or internal systems the LLM may consult during the workflow
69
+ # when a relevant need surfaces. The LLM does NOT query these preemptively —
70
+ # it consults them on demand (during Discovery, validation, drafting, etc.).
71
+ # Each entry names the tool, the conditions for using it, and any fields the
72
+ # tool needs. If a named MCP tool is unavailable at runtime, the LLM falls
73
+ # back to standard behavior and notes the gap. Empty by default.
74
+ #
75
+ # Examples (set in team/user override TOML):
76
+ # "When researching internal product context, consult corp:kb_search (database='product-docs') before web search."
77
+ # "For voice-of-customer signal during Discovery, query corp:feedback_search with project={project_name}."
78
+ # "When validating domain-compliance claims for a healthcare brief, cross-check against corp:hipaa_reference."
79
+ external_sources = []
80
+
81
+ # External-handoff routing. Natural-language directives the LLM applies at
82
+ # Finalize to route outputs beyond local files (Confluence, Notion, Google
83
+ # Drive, ticket systems, etc.). Each entry names the MCP tool, the destination,
84
+ # and the fields the tool needs. Handoffs run after the artifact is polished
85
+ # and before the final user-facing message. URLs or IDs returned by the
86
+ # destination are captured and surfaced to the user. If a named tool is
87
+ # unavailable at runtime, the handoff is skipped and flagged in the JSON
88
+ # status; local files always exist regardless. Fires automatically — users
89
+ # can opt out in their prompt for a specific run. Empty by default.
90
+ #
91
+ # Examples (set in team/user override TOML):
92
+ # "After finalize, upload brief.md and addendum.md to Confluence via corp:confluence_upload (space_key='PROD', parent_page='Product Briefs', label='brief', author={user_name})."
93
+ # "Post a ready-for-review ping to Slack via corp:slack_post (channel='#product', text='New brief: '+{confluence_url})."
94
+ external_handoffs = []
@@ -55,19 +55,9 @@ principles = [
55
55
  # registered skill by name) or `prompt` (executes the prompt text directly).
56
56
 
57
57
  [[agent.menu]]
58
- code = "CP"
59
- description = "Expert led facilitation to produce your Product Requirements Document"
60
- skill = "bmad-create-prd"
61
-
62
- [[agent.menu]]
63
- code = "VP"
64
- description = "Validate a PRD is comprehensive, lean, well organized and cohesive"
65
- skill = "bmad-validate-prd"
66
-
67
- [[agent.menu]]
68
- code = "EP"
69
- description = "Update an existing Product Requirements Document"
70
- skill = "bmad-edit-prd"
58
+ code = "PRD"
59
+ description = "Create, update, or validate a PRD — state your intent or the skill will ask"
60
+ skill = "bmad-prd"
71
61
 
72
62
  [[agent.menu]]
73
63
  code = "CE"
@@ -1,104 +1,30 @@
1
1
  ---
2
2
  name: bmad-create-prd
3
- description: 'Create a PRD from scratch. Use when the user says "lets create a product requirements document" or "I want to create a new PRD"'
3
+ description: 'DEPRECATED consolidated into bmad-prd create intent - this skill will be removed in v7 in favor of `bmad-prd`.'
4
4
  ---
5
5
 
6
- # PRD Create Workflow
6
+ # DEPRECATED forwards to bmad-prd (create intent)
7
7
 
8
- **Goal:** Create comprehensive PRDs through structured workflow facilitation.
9
-
10
- **Your Role:** Product-focused PM facilitator collaborating with an expert peer.
11
-
12
- You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description.
13
-
14
- ## Conventions
15
-
16
- - Bare paths (e.g. `steps-c/step-01-init.md`) resolve from the skill root.
17
- - `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
18
- - `{project-root}`-prefixed paths resolve from the project working directory.
19
- - `{skill-name}` resolves to the skill directory's basename.
20
-
21
- ## WORKFLOW ARCHITECTURE
22
-
23
- This uses **step-file architecture** for disciplined execution:
24
-
25
- ### Core Principles
26
-
27
- - **Micro-file Design**: Each step is a self-contained instruction file that is a part of an overall workflow that must be followed exactly
28
- - **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so
29
- - **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed
30
- - **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document
31
- - **Append-Only Building**: Build documents by appending content as directed to the output file
32
-
33
- ### Step Processing Rules
34
-
35
- 1. **READ COMPLETELY**: Always read the entire step file before taking any action
36
- 2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
37
- 3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
38
- 4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
39
- 5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step
40
- 6. **LOAD NEXT**: When directed, read fully and follow the next step file
41
-
42
- ### Critical Rules (NO EXCEPTIONS)
43
-
44
- - 🛑 **NEVER** load multiple step files simultaneously
45
- - 📖 **ALWAYS** read entire step file before execution
46
- - 🚫 **NEVER** skip steps or optimize the sequence
47
- - 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step
48
- - 🎯 **ALWAYS** follow the exact instructions in the step file
49
- - ⏸️ **ALWAYS** halt at menus and wait for user input
50
- - 📋 **NEVER** create mental todo lists from future steps
8
+ This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-create-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation.
51
9
 
52
10
  ## On Activation
53
11
 
54
- ### Step 1: Resolve the Workflow Block
55
-
56
- Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
57
-
58
- **If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
59
-
60
- 1. `{skill-root}/customize.toml` — defaults
61
- 2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides
62
- 3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides
63
-
64
- Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.
65
-
66
- ### Step 2: Execute Prepend Steps
67
-
68
- Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.
69
-
70
- ### Step 3: Load Persistent Facts
71
-
72
- Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.
73
-
74
- ### Step 4: Load Config
75
-
76
- Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
77
- - Use `{user_name}` for greeting
78
- - Use `{communication_language}` for all communications
79
- - Use `{document_output_language}` for output documents
80
- - Use `{planning_artifacts}` for output location and artifact scanning
81
- - Use `{project_knowledge}` for additional context scanning
82
-
83
- ### Step 5: Greet the User
84
-
85
- Greet `{user_name}`, speaking in `{communication_language}`.
86
-
87
- ### Step 6: Execute Append Steps
88
-
89
- Execute each entry in `{workflow.activation_steps_append}` in order.
90
-
91
- Activation is complete. Begin the workflow below.
12
+ 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-create-prd.toml` and `bmad-create-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`).
92
13
 
93
- ## Paths
14
+ 2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`.
94
15
 
95
- - `outputFile` = `{planning_artifacts}/prd.md`
16
+ 3. Emit a deprecation notice to the user in `{communication_language}`:
96
17
 
97
- ## Execution
18
+ > Notice: `bmad-create-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with create intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-create-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. Customization fields that were in this version still remain in the new version and will be respected if present in `_bmad/custom/bmad-prd.toml`, but the new version also supports additional fields that you can take advantage of by migrating.
98
19
 
99
- YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.
100
- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.
20
+ 4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch:
101
21
 
102
- **Create Mode: Creating a new PRD from scratch.**
22
+ - **Intent:** `create` skip `bmad-prd`'s usual intent detection step.
23
+ - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal:
24
+ - `activation_steps_prepend` = the resolved value from step 1
25
+ - `activation_steps_append` = the resolved value from step 1
26
+ - `persistent_facts` = the resolved value from step 1
27
+ - `on_complete` = the resolved value from step 1
28
+ - **Original user input:** forward whatever the user said when invoking this skill verbatim.
103
29
 
104
- Read fully and follow: `./steps-c/step-01-init.md`
30
+ `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim.