bmad-plus 0.12.1 → 0.13.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 (176) hide show
  1. package/CHANGELOG.md +637 -580
  2. package/README.md +123 -120
  3. package/osint-agent-package/agents/osint-investigator.md +12 -0
  4. package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +491 -482
  5. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +126 -126
  6. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md +48 -48
  7. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -100
  8. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md +48 -48
  9. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -130
  10. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -69
  11. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -281
  12. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -136
  13. package/package.json +106 -91
  14. package/readme-international/README.de.md +625 -594
  15. package/readme-international/README.es.md +642 -611
  16. package/readme-international/README.fr.md +640 -609
  17. package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +2 -0
  18. package/src/bmad-plus/agents/agent-shadow/SKILL.md +18 -0
  19. package/src/bmad-plus/data/role-triggers.yaml +52 -0
  20. package/src/bmad-plus/module.yaml +333 -283
  21. package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -325
  22. package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -55
  23. package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -71
  24. package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -51
  25. package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
  26. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
  27. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
  28. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
  29. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
  30. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
  31. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
  32. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
  33. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
  34. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
  35. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
  36. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
  37. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
  38. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
  39. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
  40. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
  41. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
  42. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
  43. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
  44. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
  45. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
  46. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
  47. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
  48. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
  49. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
  50. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
  51. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
  52. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
  53. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
  54. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
  55. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
  56. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
  57. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
  58. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
  59. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
  60. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
  61. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
  62. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
  63. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
  64. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
  65. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
  66. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
  67. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
  68. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
  69. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
  70. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
  71. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
  72. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
  73. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
  74. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
  75. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
  76. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
  77. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
  78. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
  79. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
  80. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
  81. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
  82. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
  83. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
  84. package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
  85. package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
  86. package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
  87. package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
  88. package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
  89. package/src/bmad-plus/packs/pack-seo/SKILL.md +171 -171
  90. package/src/bmad-plus/packs/pack-seo/checklist.md +140 -140
  91. package/src/bmad-plus/packs/pack-seo/pagespeed-playbook.md +320 -320
  92. package/src/bmad-plus/packs/pack-seo/ref/audit-schema.json +187 -187
  93. package/src/bmad-plus/packs/pack-seo/ref/cwv-thresholds.md +87 -87
  94. package/src/bmad-plus/packs/pack-seo/ref/eeat-criteria.md +123 -123
  95. package/src/bmad-plus/packs/pack-seo/ref/geo-signals.md +167 -167
  96. package/src/bmad-plus/packs/pack-seo/ref/hreflang-rules.md +153 -153
  97. package/src/bmad-plus/packs/pack-seo/ref/quality-gates.md +133 -133
  98. package/src/bmad-plus/packs/pack-seo/ref/schema-catalog.md +91 -91
  99. package/src/bmad-plus/packs/pack-seo/ref/schema-templates.json +356 -356
  100. package/src/bmad-plus/packs/pack-seo/requirements.txt +17 -0
  101. package/src/bmad-plus/packs/pack-seo/scripts/seo_apis.py +456 -0
  102. package/src/bmad-plus/packs/pack-seo/scripts/seo_crawl.py +359 -0
  103. package/src/bmad-plus/packs/pack-seo/scripts/seo_fetch.py +303 -0
  104. package/src/bmad-plus/packs/pack-seo/scripts/seo_parse.py +255 -0
  105. package/src/bmad-plus/packs/pack-seo/scripts/seo_report.py +409 -0
  106. package/src/bmad-plus/packs/pack-seo/scripts/seo_screenshot.py +202 -0
  107. package/src/bmad-plus/packs/pack-seo/seo-chief.md +294 -294
  108. package/src/bmad-plus/packs/pack-seo/seo-judge.md +241 -241
  109. package/src/bmad-plus/packs/pack-seo/seo-scout.md +171 -171
  110. package/src/bmad-plus/packs/pack-seo/templates/seo-audit-workflow.md +241 -241
  111. package/src/bmad-plus/packs/pack-shield/README.md +6 -6
  112. package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -2
  113. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/csrd-agent.md +11 -11
  114. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/section508-agent.md +11 -11
  115. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/wcag-agent.md +11 -11
  116. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/eu-ai-act-agent.md +11 -11
  117. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/iso42001-agent.md +11 -11
  118. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/nist-ai-rmf-agent.md +11 -11
  119. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/cis-controls-agent.md +11 -11
  120. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/ism-agent.md +11 -11
  121. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/iso27001-agent.md +11 -11
  122. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nis2-agent.md +11 -11
  123. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-800-53-agent.md +11 -11
  124. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-csf-agent.md +11 -11
  125. package/src/bmad-plus/packs/pack-shield/categories/defense-export/cmmc-agent.md +11 -11
  126. package/src/bmad-plus/packs/pack-shield/categories/defense-export/ear-agent.md +11 -11
  127. package/src/bmad-plus/packs/pack-shield/categories/defense-export/itar-agent.md +11 -11
  128. package/src/bmad-plus/packs/pack-shield/categories/defense-export/tsa-agent.md +11 -11
  129. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/dora-agent.md +11 -11
  130. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/fedramp-agent.md +11 -11
  131. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/hipaa-agent.md +11 -11
  132. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/pci-dss-agent.md +11 -11
  133. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/soc2-agent.md +11 -11
  134. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/swift-csp-agent.md +11 -11
  135. package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +1 -1
  136. package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +1 -1
  137. package/tools/bmad-plus-npx.js +4 -2
  138. package/tools/build/adapters.config.js +60 -51
  139. package/tools/build/check-counts.js +626 -0
  140. package/tools/build/check-install-contract.js +298 -0
  141. package/tools/build/generate-adapters.js +252 -56
  142. package/tools/build/generate.js +187 -10
  143. package/tools/build/generated-adapters/.codex/AGENTS.md +20 -7
  144. package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +20 -7
  145. package/tools/build/generated-adapters/.opencode/AGENTS.md +20 -7
  146. package/tools/build/generated-adapters/AGENTS.md +20 -7
  147. package/tools/build/generated-adapters/CLAUDE.md +20 -7
  148. package/tools/build/generated-adapters/CONVENTIONS.md +20 -7
  149. package/tools/build/generated-adapters/GEMINI.md +20 -7
  150. package/tools/build/module.template.yaml +82 -0
  151. package/tools/cli/bmad-plus-cli.js +16 -1
  152. package/tools/cli/commands/autoconfig.js +470 -470
  153. package/tools/cli/commands/doctor.js +205 -233
  154. package/tools/cli/commands/install.js +543 -501
  155. package/tools/cli/commands/memory-journal-cmd.js +311 -311
  156. package/tools/cli/commands/memory.js +195 -195
  157. package/tools/cli/commands/scan.js +348 -348
  158. package/tools/cli/commands/uninstall.js +209 -101
  159. package/tools/cli/commands/update-check.js +31 -0
  160. package/tools/cli/commands/update-policy.js +39 -0
  161. package/tools/cli/commands/update.js +123 -134
  162. package/tools/cli/i18n.js +905 -845
  163. package/tools/cli/lib/README-memory-journal.md +125 -125
  164. package/tools/cli/lib/ide-config.js +10 -259
  165. package/tools/cli/lib/install-manifest.js +17 -0
  166. package/tools/cli/lib/installed-adapters.js +89 -0
  167. package/tools/cli/lib/npm-runner.js +177 -0
  168. package/tools/cli/lib/pack-copy.js +62 -66
  169. package/tools/cli/lib/packs.js +437 -3
  170. package/tools/cli/lib/python-provision.js +508 -508
  171. package/tools/cli/lib/stack-detect.js +102 -102
  172. package/tools/cli/lib/update-check.js +153 -0
  173. package/tools/cli/lib/update-dispatch.js +182 -0
  174. package/tools/cli/lib/update-policy.js +90 -0
  175. package/tools/cli/lib/update-transaction.js +334 -0
  176. package/tools/cli/lib/validate.js +50 -50
@@ -1,328 +1,328 @@
1
- # BMAD+ Workflow Markup Language (BWML) — Specification v1.0
2
-
3
- > **Pack:** Dev Studio
4
- > **Purpose:** Define the BMAD+ proprietary workflow DSL that surpasses BMAD-METHOD v6 XML format
5
- > **Created by:** Laurent Rochetta — https://github.com/lrochetta/BMAD-PLUS
6
- > **License:** MIT
7
-
8
- ---
9
-
10
- ## Overview
11
-
12
- BWML (BMAD+ Workflow Markup Language) is an XML-based DSL optimized for LLM execution. It extends the concepts from BMAD-METHOD v6 with advanced orchestration primitives: multi-agent delegation, parallel execution, validation gates, memory persistence, anti-regression guards, and structured artifact emission.
13
-
14
- LLMs parse XML natively and reliably. BWML leverages this with semantically meaningful tags that guide deterministic execution while preserving LLM reasoning flexibility.
15
-
16
- ---
17
-
18
- ## Core Elements (inherited from BMAD v6, enhanced)
19
-
20
- ### `<workflow>` — Root container
21
- ```xml
22
- <workflow id="dev-story" version="1.0" agent="oholiab">
23
- <!-- All steps live here -->
24
- </workflow>
25
- ```
26
-
27
- ### `<phase>` — Named execution phase (NEW)
28
- Groups steps into logical phases with optional gating.
29
- ```xml
30
- <phase name="analysis" gate="required">
31
- <step>...</step>
32
- <step>...</step>
33
- </phase>
34
- ```
35
- - `gate="required"` — Must complete before next phase
36
- - `gate="optional"` — Can be skipped
37
-
38
- ### `<step>` — Numbered execution step
39
- ```xml
40
- <step n="1" goal="Load project context" tag="init">
41
- <action>...</action>
42
- </step>
43
- ```
44
-
45
- ### `<action>` — Single action to execute
46
- ```xml
47
- <action>Read the complete story file</action>
48
- <action if="no stories found">HALT: inform user</action>
49
- ```
50
-
51
- ### `<check>` — Conditional branch
52
- ```xml
53
- <check if="sprint_status file exists">
54
- <action>Load sprint data</action>
55
- </check>
56
- ```
57
-
58
- ### `<critical>` — Must-follow rule (violation = HALT)
59
- ```xml
60
- <critical>Execute ALL steps in exact order; do NOT skip steps</critical>
61
- ```
62
-
63
- ### `<output>` — Formatted user-facing output
64
- ```xml
65
- <output>✅ **Context Loaded** — Story and project context ready</output>
66
- ```
67
-
68
- ### `<ask>` — Prompt user for input
69
- ```xml
70
- <ask>Which story would you like to develop?</ask>
71
- ```
72
-
73
- ### `<goto>` — Jump to step or anchor
74
- ```xml
75
- <goto step="9">Completion sequence</goto>
76
- <goto anchor="task_check" />
77
- ```
78
-
79
- ### `<anchor>` — Jump target
80
- ```xml
81
- <anchor id="task_check" />
82
- ```
83
-
84
- ---
85
-
86
- ## BMAD+ Extensions (NEW — our competitive advantage)
87
-
88
- ### `<agent>` — Invoke another BMAD+ agent inline
89
- Enables cross-agent orchestration without leaving the workflow.
90
- ```xml
91
- <agent name="bezalel" task="Review this architecture decision">
92
- <context>Current PRD and technical constraints</context>
93
- <expect>Architecture recommendation with trade-offs</expect>
94
- </agent>
95
- ```
96
- - `name` — BMAD+ agent to invoke (specialist personas or pack agents)
97
- - `task` — What to ask the agent
98
- - `<context>` — What context to pass
99
- - `<expect>` — Expected output format
100
-
101
- ### `<parallel>` — Execute multiple actions concurrently
102
- ```xml
103
- <parallel>
104
- <action>Run unit tests</action>
105
- <action>Run linting checks</action>
106
- <action>Validate acceptance criteria</action>
107
- </parallel>
108
- ```
109
-
110
- ### `<loop>` — Iterative execution with break conditions
111
- ```xml
112
- <loop over="incomplete_tasks" as="task">
113
- <action>Implement {{task}}</action>
114
- <action>Run tests for {{task}}</action>
115
- <validate>All tests pass for {{task}}</validate>
116
- <action>Mark {{task}} complete</action>
117
- <break if="HALT condition triggered" />
118
- </loop>
119
- ```
120
-
121
- ### `<validate>` — Built-in validation gate with pass/fail
122
- ```xml
123
- <validate id="dod-check" severity="blocking">
124
- <criterion>All tasks marked [x]</criterion>
125
- <criterion>All acceptance criteria satisfied</criterion>
126
- <criterion>Full test suite passes with 0 failures</criterion>
127
- <criterion>No regressions detected</criterion>
128
- <on-fail>HALT — Do NOT proceed until all criteria pass</on-fail>
129
- <on-pass>Continue to next step</on-pass>
130
- </validate>
131
- ```
132
-
133
- ### `<guard>` — Anti-regression protection
134
- Prevents common AI mistakes explicitly.
135
- ```xml
136
- <guard type="anti-regression">
137
- Never delete existing code without explicit user approval
138
- </guard>
139
- <guard type="scope">
140
- Only modify files listed in the story spec
141
- </guard>
142
- <guard type="quality">
143
- Never mark a task complete without running tests
144
- </guard>
145
- ```
146
-
147
- ### `<emit>` — Produce structured artifacts
148
- ```xml
149
- <emit type="story-status" format="yaml">
150
- story_key: {{story_key}}
151
- status: review
152
- completed_tasks: {{completed_count}}
153
- date: {{date}}
154
- </emit>
155
- ```
156
- - `type` — Artifact type (story-status, report, checklist, etc.)
157
- - `format` — Output format (yaml, markdown, json)
158
-
159
- ### `<context>` — Load external context
160
- ```xml
161
- <context source="file" path="**/project-context.md" />
162
- <context source="file" path="architecture.md" optional="true" />
163
- <context source="memory" key="last-sprint-decisions" />
164
- ```
165
-
166
- ### `<memory>` — Persist/recall across sessions
167
- ```xml
168
- <memory action="store" key="sprint-velocity" value="{{calculated_velocity}}" />
169
- <memory action="recall" key="last-review-findings" />
170
- ```
171
-
172
- ### `<escalate>` — Escalation to human or higher agent
173
- ```xml
174
- <escalate to="user" severity="high">
175
- Architecture decision required: monolith vs microservices.
176
- Trade-offs documented in {{arch_doc_path}}.
177
- </escalate>
178
- <escalate to="bezalel" severity="medium">
179
- Implementation diverges from architecture — review needed.
180
- </escalate>
181
- ```
182
-
183
- ### `<retry>` — Auto-retry with limits
184
- ```xml
185
- <retry max="3" backoff="progressive">
186
- <action>Run failing test suite</action>
187
- <action>Fix identified issues</action>
188
- <on-exhaust>HALT — 3 consecutive failures, request human guidance</on-exhaust>
189
- </retry>
190
- ```
191
-
192
- ### `<fallback>` — Graceful degradation
193
- ```xml
194
- <fallback>
195
- <try>
196
- <agent name="miriam" task="Analyze market data" />
197
- </try>
198
- <catch>
199
- <action>Perform analysis directly using available context</action>
200
- </catch>
201
- </fallback>
202
- ```
203
-
204
- ### `<metric>` — Track quantitative progress
205
- ```xml
206
- <metric name="test-coverage" target="80%" current="{{coverage}}" />
207
- <metric name="tasks-completed" value="{{done}}/{{total}}" />
208
- ```
209
-
210
- ---
211
-
212
- ## Composition Example
213
-
214
- ```xml
215
- <workflow id="dev-story" version="1.0" agent="oholiab">
216
- <critical>Execute ALL steps in exact order; do NOT skip</critical>
217
- <critical>Never stop for "milestones" or "session boundaries"</critical>
218
-
219
- <guard type="anti-regression">
220
- Never delete existing functionality without explicit approval
221
- </guard>
222
- <guard type="scope">
223
- Only modify files specified in the story tasks
224
- </guard>
225
-
226
- <phase name="initialization" gate="required">
227
- <step n="1" goal="Find and load story">
228
- <context source="file" path="sprint-status.yaml" optional="true" />
229
- <check if="story_path provided">
230
- <action>Load story file directly</action>
231
- <goto anchor="implementation" />
232
- </check>
233
- <check if="sprint status exists">
234
- <action>Find first ready-for-dev story</action>
235
- </check>
236
- <escalate to="user" if="no ready stories found">
237
- No stories available. Options: create-story, validate existing, or specify path.
238
- </escalate>
239
- </step>
240
- </phase>
241
-
242
- <phase name="implementation" gate="required">
243
- <anchor id="implementation" />
244
- <loop over="incomplete_tasks" as="task">
245
- <step goal="Implement {{task}} following TDD">
246
- <!-- RED -->
247
- <action>Write FAILING tests first</action>
248
- <validate severity="info">Tests fail as expected</validate>
249
-
250
- <!-- GREEN -->
251
- <action>Implement MINIMAL code to pass tests</action>
252
- <validate severity="blocking">All tests pass</validate>
253
-
254
- <!-- REFACTOR -->
255
- <action>Improve code structure, keep tests green</action>
256
- <validate severity="blocking">No regressions after refactor</validate>
257
-
258
- <action>Mark {{task}} [x] in story file</action>
259
- <metric name="tasks-completed" value="{{done}}/{{total}}" />
260
- </step>
261
-
262
- <retry max="3">
263
- <action>Fix any failing tests</action>
264
- <on-exhaust>
265
- <escalate to="user">3 consecutive failures on {{task}}</escalate>
266
- </on-exhaust>
267
- </retry>
268
- </loop>
269
- </phase>
270
-
271
- <phase name="completion" gate="required">
272
- <step goal="Story completion and review">
273
- <validate id="definition-of-done" severity="blocking">
274
- <criterion>All tasks marked [x]</criterion>
275
- <criterion>All acceptance criteria satisfied</criterion>
276
- <criterion>Full test suite passes</criterion>
277
- <criterion>File list complete</criterion>
278
- <criterion>Dev notes documented</criterion>
279
- <on-fail>HALT — Complete remaining items</on-fail>
280
- </validate>
281
-
282
- <emit type="story-update" format="yaml">
283
- status: review
284
- completed: {{date}}
285
- </emit>
286
-
287
- <output>✅ Story {{story_key}} complete and ready for review</output>
288
-
289
- <escalate to="user" severity="info">
290
- Recommended: run code-review with a DIFFERENT LLM
291
- </escalate>
292
- </step>
293
- </phase>
294
- </workflow>
295
- ```
296
-
297
- ---
298
-
299
- ## BWML vs BMAD v6 Comparison
300
-
301
- | Feature | BMAD v6 | BWML (BMAD+) |
302
- |---------|---------|--------------|
303
- | Steps & Actions | ✅ | ✅ |
304
- | Conditional checks | ✅ | ✅ |
305
- | Goto/Anchors | ✅ | ✅ |
306
- | Critical rules | ✅ | ✅ |
307
- | User prompts | ✅ | ✅ |
308
- | **Phases with gates** | ❌ | ✅ |
309
- | **Multi-agent delegation** | ❌ | ✅ `<agent>` |
310
- | **Parallel execution** | ❌ | ✅ `<parallel>` |
311
- | **Loops with break** | ❌ | ✅ `<loop>` |
312
- | **Validation gates** | ❌ | ✅ `<validate>` |
313
- | **Anti-regression guards** | ❌ | ✅ `<guard>` |
314
- | **Artifact emission** | ❌ | ✅ `<emit>` |
315
- | **Context loading** | ❌ | ✅ `<context>` |
316
- | **Memory persistence** | ❌ | ✅ `<memory>` |
317
- | **Escalation** | ❌ | ✅ `<escalate>` |
318
- | **Auto-retry** | ❌ | ✅ `<retry>` |
319
- | **Graceful fallback** | ❌ | ✅ `<fallback>` |
320
- | **Progress metrics** | ❌ | ✅ `<metric>` |
321
- | Python dependency | ✅ Required | ❌ None |
322
- | TOML config | ✅ Required | ❌ Self-contained |
323
-
324
- ---
325
-
326
- ## Attribution
327
-
328
- BWML is inspired by the workflow DSL in [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) v6.6.0 by BMad Code, LLC (MIT License). Extended with BMAD+ proprietary orchestration primitives by [Laurent Rochetta](https://github.com/lrochetta/BMAD-PLUS).
1
+ # BMAD+ Workflow Markup Language (BWML) — Specification v1.0
2
+
3
+ > **Pack:** Dev Studio
4
+ > **Purpose:** Define the BMAD+ proprietary workflow DSL that surpasses BMAD-METHOD v6 XML format
5
+ > **Created by:** Laurent Rochetta — https://github.com/lrochetta/BMAD-PLUS
6
+ > **License:** MIT
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ BWML (BMAD+ Workflow Markup Language) is an XML-based DSL optimized for LLM execution. It extends the concepts from BMAD-METHOD v6 with advanced orchestration primitives: multi-agent delegation, parallel execution, validation gates, memory persistence, anti-regression guards, and structured artifact emission.
13
+
14
+ LLMs parse XML natively and reliably. BWML leverages this with semantically meaningful tags that guide deterministic execution while preserving LLM reasoning flexibility.
15
+
16
+ ---
17
+
18
+ ## Core Elements (inherited from BMAD v6, enhanced)
19
+
20
+ ### `<workflow>` — Root container
21
+ ```xml
22
+ <workflow id="dev-story" version="1.0" agent="oholiab">
23
+ <!-- All steps live here -->
24
+ </workflow>
25
+ ```
26
+
27
+ ### `<phase>` — Named execution phase (NEW)
28
+ Groups steps into logical phases with optional gating.
29
+ ```xml
30
+ <phase name="analysis" gate="required">
31
+ <step>...</step>
32
+ <step>...</step>
33
+ </phase>
34
+ ```
35
+ - `gate="required"` — Must complete before next phase
36
+ - `gate="optional"` — Can be skipped
37
+
38
+ ### `<step>` — Numbered execution step
39
+ ```xml
40
+ <step n="1" goal="Load project context" tag="init">
41
+ <action>...</action>
42
+ </step>
43
+ ```
44
+
45
+ ### `<action>` — Single action to execute
46
+ ```xml
47
+ <action>Read the complete story file</action>
48
+ <action if="no stories found">HALT: inform user</action>
49
+ ```
50
+
51
+ ### `<check>` — Conditional branch
52
+ ```xml
53
+ <check if="sprint_status file exists">
54
+ <action>Load sprint data</action>
55
+ </check>
56
+ ```
57
+
58
+ ### `<critical>` — Must-follow rule (violation = HALT)
59
+ ```xml
60
+ <critical>Execute ALL steps in exact order; do NOT skip steps</critical>
61
+ ```
62
+
63
+ ### `<output>` — Formatted user-facing output
64
+ ```xml
65
+ <output>✅ **Context Loaded** — Story and project context ready</output>
66
+ ```
67
+
68
+ ### `<ask>` — Prompt user for input
69
+ ```xml
70
+ <ask>Which story would you like to develop?</ask>
71
+ ```
72
+
73
+ ### `<goto>` — Jump to step or anchor
74
+ ```xml
75
+ <goto step="9">Completion sequence</goto>
76
+ <goto anchor="task_check" />
77
+ ```
78
+
79
+ ### `<anchor>` — Jump target
80
+ ```xml
81
+ <anchor id="task_check" />
82
+ ```
83
+
84
+ ---
85
+
86
+ ## BMAD+ Extensions (NEW — our competitive advantage)
87
+
88
+ ### `<agent>` — Invoke another BMAD+ agent inline
89
+ Enables cross-agent orchestration without leaving the workflow.
90
+ ```xml
91
+ <agent name="bezalel" task="Review this architecture decision">
92
+ <context>Current PRD and technical constraints</context>
93
+ <expect>Architecture recommendation with trade-offs</expect>
94
+ </agent>
95
+ ```
96
+ - `name` — BMAD+ agent to invoke (specialist personas or pack agents)
97
+ - `task` — What to ask the agent
98
+ - `<context>` — What context to pass
99
+ - `<expect>` — Expected output format
100
+
101
+ ### `<parallel>` — Execute multiple actions concurrently
102
+ ```xml
103
+ <parallel>
104
+ <action>Run unit tests</action>
105
+ <action>Run linting checks</action>
106
+ <action>Validate acceptance criteria</action>
107
+ </parallel>
108
+ ```
109
+
110
+ ### `<loop>` — Iterative execution with break conditions
111
+ ```xml
112
+ <loop over="incomplete_tasks" as="task">
113
+ <action>Implement {{task}}</action>
114
+ <action>Run tests for {{task}}</action>
115
+ <validate>All tests pass for {{task}}</validate>
116
+ <action>Mark {{task}} complete</action>
117
+ <break if="HALT condition triggered" />
118
+ </loop>
119
+ ```
120
+
121
+ ### `<validate>` — Built-in validation gate with pass/fail
122
+ ```xml
123
+ <validate id="dod-check" severity="blocking">
124
+ <criterion>All tasks marked [x]</criterion>
125
+ <criterion>All acceptance criteria satisfied</criterion>
126
+ <criterion>Full test suite passes with 0 failures</criterion>
127
+ <criterion>No regressions detected</criterion>
128
+ <on-fail>HALT — Do NOT proceed until all criteria pass</on-fail>
129
+ <on-pass>Continue to next step</on-pass>
130
+ </validate>
131
+ ```
132
+
133
+ ### `<guard>` — Anti-regression protection
134
+ Prevents common AI mistakes explicitly.
135
+ ```xml
136
+ <guard type="anti-regression">
137
+ Never delete existing code without explicit user approval
138
+ </guard>
139
+ <guard type="scope">
140
+ Only modify files listed in the story spec
141
+ </guard>
142
+ <guard type="quality">
143
+ Never mark a task complete without running tests
144
+ </guard>
145
+ ```
146
+
147
+ ### `<emit>` — Produce structured artifacts
148
+ ```xml
149
+ <emit type="story-status" format="yaml">
150
+ story_key: {{story_key}}
151
+ status: review
152
+ completed_tasks: {{completed_count}}
153
+ date: {{date}}
154
+ </emit>
155
+ ```
156
+ - `type` — Artifact type (story-status, report, checklist, etc.)
157
+ - `format` — Output format (yaml, markdown, json)
158
+
159
+ ### `<context>` — Load external context
160
+ ```xml
161
+ <context source="file" path="**/project-context.md" />
162
+ <context source="file" path="architecture.md" optional="true" />
163
+ <context source="memory" key="last-sprint-decisions" />
164
+ ```
165
+
166
+ ### `<memory>` — Persist/recall across sessions
167
+ ```xml
168
+ <memory action="store" key="sprint-velocity" value="{{calculated_velocity}}" />
169
+ <memory action="recall" key="last-review-findings" />
170
+ ```
171
+
172
+ ### `<escalate>` — Escalation to human or higher agent
173
+ ```xml
174
+ <escalate to="user" severity="high">
175
+ Architecture decision required: monolith vs microservices.
176
+ Trade-offs documented in {{arch_doc_path}}.
177
+ </escalate>
178
+ <escalate to="bezalel" severity="medium">
179
+ Implementation diverges from architecture — review needed.
180
+ </escalate>
181
+ ```
182
+
183
+ ### `<retry>` — Auto-retry with limits
184
+ ```xml
185
+ <retry max="3" backoff="progressive">
186
+ <action>Run failing test suite</action>
187
+ <action>Fix identified issues</action>
188
+ <on-exhaust>HALT — 3 consecutive failures, request human guidance</on-exhaust>
189
+ </retry>
190
+ ```
191
+
192
+ ### `<fallback>` — Graceful degradation
193
+ ```xml
194
+ <fallback>
195
+ <try>
196
+ <agent name="miriam" task="Analyze market data" />
197
+ </try>
198
+ <catch>
199
+ <action>Perform analysis directly using available context</action>
200
+ </catch>
201
+ </fallback>
202
+ ```
203
+
204
+ ### `<metric>` — Track quantitative progress
205
+ ```xml
206
+ <metric name="test-coverage" target="80%" current="{{coverage}}" />
207
+ <metric name="tasks-completed" value="{{done}}/{{total}}" />
208
+ ```
209
+
210
+ ---
211
+
212
+ ## Composition Example
213
+
214
+ ```xml
215
+ <workflow id="dev-story" version="1.0" agent="oholiab">
216
+ <critical>Execute ALL steps in exact order; do NOT skip</critical>
217
+ <critical>Never stop for "milestones" or "session boundaries"</critical>
218
+
219
+ <guard type="anti-regression">
220
+ Never delete existing functionality without explicit approval
221
+ </guard>
222
+ <guard type="scope">
223
+ Only modify files specified in the story tasks
224
+ </guard>
225
+
226
+ <phase name="initialization" gate="required">
227
+ <step n="1" goal="Find and load story">
228
+ <context source="file" path="sprint-status.yaml" optional="true" />
229
+ <check if="story_path provided">
230
+ <action>Load story file directly</action>
231
+ <goto anchor="implementation" />
232
+ </check>
233
+ <check if="sprint status exists">
234
+ <action>Find first ready-for-dev story</action>
235
+ </check>
236
+ <escalate to="user" if="no ready stories found">
237
+ No stories available. Options: create-story, validate existing, or specify path.
238
+ </escalate>
239
+ </step>
240
+ </phase>
241
+
242
+ <phase name="implementation" gate="required">
243
+ <anchor id="implementation" />
244
+ <loop over="incomplete_tasks" as="task">
245
+ <step goal="Implement {{task}} following TDD">
246
+ <!-- RED -->
247
+ <action>Write FAILING tests first</action>
248
+ <validate severity="info">Tests fail as expected</validate>
249
+
250
+ <!-- GREEN -->
251
+ <action>Implement MINIMAL code to pass tests</action>
252
+ <validate severity="blocking">All tests pass</validate>
253
+
254
+ <!-- REFACTOR -->
255
+ <action>Improve code structure, keep tests green</action>
256
+ <validate severity="blocking">No regressions after refactor</validate>
257
+
258
+ <action>Mark {{task}} [x] in story file</action>
259
+ <metric name="tasks-completed" value="{{done}}/{{total}}" />
260
+ </step>
261
+
262
+ <retry max="3">
263
+ <action>Fix any failing tests</action>
264
+ <on-exhaust>
265
+ <escalate to="user">3 consecutive failures on {{task}}</escalate>
266
+ </on-exhaust>
267
+ </retry>
268
+ </loop>
269
+ </phase>
270
+
271
+ <phase name="completion" gate="required">
272
+ <step goal="Story completion and review">
273
+ <validate id="definition-of-done" severity="blocking">
274
+ <criterion>All tasks marked [x]</criterion>
275
+ <criterion>All acceptance criteria satisfied</criterion>
276
+ <criterion>Full test suite passes</criterion>
277
+ <criterion>File list complete</criterion>
278
+ <criterion>Dev notes documented</criterion>
279
+ <on-fail>HALT — Complete remaining items</on-fail>
280
+ </validate>
281
+
282
+ <emit type="story-update" format="yaml">
283
+ status: review
284
+ completed: {{date}}
285
+ </emit>
286
+
287
+ <output>✅ Story {{story_key}} complete and ready for review</output>
288
+
289
+ <escalate to="user" severity="info">
290
+ Recommended: run code-review with a DIFFERENT LLM
291
+ </escalate>
292
+ </step>
293
+ </phase>
294
+ </workflow>
295
+ ```
296
+
297
+ ---
298
+
299
+ ## BWML vs BMAD v6 Comparison
300
+
301
+ | Feature | BMAD v6 | BWML (BMAD+) |
302
+ |---------|---------|--------------|
303
+ | Steps & Actions | ✅ | ✅ |
304
+ | Conditional checks | ✅ | ✅ |
305
+ | Goto/Anchors | ✅ | ✅ |
306
+ | Critical rules | ✅ | ✅ |
307
+ | User prompts | ✅ | ✅ |
308
+ | **Phases with gates** | ❌ | ✅ |
309
+ | **Multi-agent delegation** | ❌ | ✅ `<agent>` |
310
+ | **Parallel execution** | ❌ | ✅ `<parallel>` |
311
+ | **Loops with break** | ❌ | ✅ `<loop>` |
312
+ | **Validation gates** | ❌ | ✅ `<validate>` |
313
+ | **Anti-regression guards** | ❌ | ✅ `<guard>` |
314
+ | **Artifact emission** | ❌ | ✅ `<emit>` |
315
+ | **Context loading** | ❌ | ✅ `<context>` |
316
+ | **Memory persistence** | ❌ | ✅ `<memory>` |
317
+ | **Escalation** | ❌ | ✅ `<escalate>` |
318
+ | **Auto-retry** | ❌ | ✅ `<retry>` |
319
+ | **Graceful fallback** | ❌ | ✅ `<fallback>` |
320
+ | **Progress metrics** | ❌ | ✅ `<metric>` |
321
+ | Python dependency | ✅ Required | ❌ None |
322
+ | TOML config | ✅ Required | ❌ Self-contained |
323
+
324
+ ---
325
+
326
+ ## Attribution
327
+
328
+ BWML is inspired by the workflow DSL in [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) v6.6.0 by BMad Code, LLC (MIT License). Extended with BMAD+ proprietary orchestration primitives by [Laurent Rochetta](https://github.com/lrochetta/BMAD-PLUS).