bmad-plus 0.12.0 → 0.12.2

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 (160) hide show
  1. package/CHANGELOG.md +612 -554
  2. package/README.md +557 -577
  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 +104 -91
  14. package/readme-international/README.de.md +596 -589
  15. package/readme-international/README.es.md +613 -606
  16. package/readme-international/README.fr.md +611 -604
  17. package/src/bmad-plus/agents/agent-shadow/SKILL.md +18 -0
  18. package/src/bmad-plus/data/role-triggers.yaml +52 -0
  19. package/src/bmad-plus/module.yaml +283 -283
  20. package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -325
  21. package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -55
  22. package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -71
  23. package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -51
  24. package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
  25. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
  26. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
  27. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
  28. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
  29. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
  30. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
  31. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
  32. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
  33. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
  34. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
  35. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
  36. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
  37. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
  38. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
  39. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
  40. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
  41. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
  42. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
  43. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
  44. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
  45. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
  46. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
  47. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
  48. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
  49. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
  50. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
  51. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
  52. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
  53. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
  54. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
  55. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
  56. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
  57. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
  58. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
  59. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
  60. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
  61. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
  62. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
  63. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
  64. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
  65. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
  66. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
  67. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
  68. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
  69. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
  70. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
  71. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
  72. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
  73. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
  74. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
  75. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
  76. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
  77. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
  78. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
  79. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
  80. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
  81. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
  82. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
  83. package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
  84. package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
  85. package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
  86. package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
  87. package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
  88. package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +14 -0
  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 +304 -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 +410 -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/tools/build/check-counts.js +628 -0
  137. package/tools/build/generated-adapters/.codex/AGENTS.md +1 -1
  138. package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +1 -1
  139. package/tools/build/generated-adapters/.opencode/AGENTS.md +1 -1
  140. package/tools/build/generated-adapters/AGENTS.md +1 -1
  141. package/tools/build/generated-adapters/CLAUDE.md +1 -1
  142. package/tools/build/generated-adapters/CONVENTIONS.md +1 -1
  143. package/tools/build/generated-adapters/GEMINI.md +1 -1
  144. package/tools/cli/commands/autoconfig.js +470 -472
  145. package/tools/cli/commands/doctor.js +233 -233
  146. package/tools/cli/commands/install.js +598 -495
  147. package/tools/cli/commands/memory-journal-cmd.js +311 -311
  148. package/tools/cli/commands/memory.js +195 -195
  149. package/tools/cli/commands/scan.js +348 -364
  150. package/tools/cli/commands/uninstall.js +101 -101
  151. package/tools/cli/commands/update.js +134 -134
  152. package/tools/cli/i18n.js +845 -845
  153. package/tools/cli/lib/README-memory-journal.md +125 -125
  154. package/tools/cli/lib/ide-config.js +267 -259
  155. package/tools/cli/lib/memory-init.js +204 -113
  156. package/tools/cli/lib/packs.js +209 -209
  157. package/tools/cli/lib/path-hash.js +39 -0
  158. package/tools/cli/lib/python-provision.js +508 -508
  159. package/tools/cli/lib/stack-detect.js +102 -102
  160. 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).