bmad-method 6.0.0-alpha.5 → 6.0.0-alpha.6

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 (161) hide show
  1. package/.claude/agents/bmad-analysis/api-documenter.md +102 -0
  2. package/.claude/agents/bmad-analysis/codebase-analyzer.md +82 -0
  3. package/.claude/agents/bmad-analysis/data-analyst.md +101 -0
  4. package/.claude/agents/bmad-analysis/pattern-detector.md +84 -0
  5. package/.claude/agents/bmad-planning/dependency-mapper.md +83 -0
  6. package/.claude/agents/bmad-planning/epic-optimizer.md +81 -0
  7. package/.claude/agents/bmad-planning/requirements-analyst.md +61 -0
  8. package/.claude/agents/bmad-planning/technical-decisions-curator.md +168 -0
  9. package/.claude/agents/bmad-planning/trend-spotter.md +115 -0
  10. package/.claude/agents/bmad-planning/user-journey-mapper.md +123 -0
  11. package/.claude/agents/bmad-planning/user-researcher.md +72 -0
  12. package/.claude/agents/bmad-research/market-researcher.md +51 -0
  13. package/.claude/agents/bmad-research/tech-debt-auditor.md +106 -0
  14. package/.claude/agents/bmad-review/document-reviewer.md +102 -0
  15. package/.claude/agents/bmad-review/technical-evaluator.md +68 -0
  16. package/.claude/agents/bmad-review/test-coverage-analyzer.md +108 -0
  17. package/.claude/commands/bmad/bmm/workflows/README.md +2 -2
  18. package/.claude/commands/bmad/bmm/workflows/prd.md +1 -1
  19. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +3 -3
  20. package/.claude/commands/bmad/core/workflows/README.md +0 -10
  21. package/.claude/settings.local.json +3 -4
  22. package/CONTRIBUTING.md +1 -13
  23. package/bmad/_cfg/agent-manifest.csv +0 -6
  24. package/bmad/_cfg/files-manifest.csv +26 -78
  25. package/bmad/_cfg/ides/claude-code.yaml +4 -3
  26. package/bmad/_cfg/manifest.yaml +3 -5
  27. package/bmad/_cfg/task-manifest.csv +0 -4
  28. package/bmad/_cfg/tool-manifest.csv +0 -1
  29. package/bmad/_cfg/workflow-manifest.csv +2 -8
  30. package/bmad/bmb/config.yaml +2 -2
  31. package/bmad/bmb/workflows/audit-workflow/instructions.md +1 -1
  32. package/bmad/bmm/config.yaml +4 -3
  33. package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -19
  34. package/bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +10 -9
  35. package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +23 -34
  36. package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +105 -331
  37. package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +23 -11
  38. package/bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +23 -38
  39. package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +1 -1
  40. package/bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +38 -16
  41. package/bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +1 -19
  42. package/bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +35 -32
  43. package/bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +2 -2
  44. package/bmad/bmm/workflows/3-solutioning/architecture/instructions.md +7 -18
  45. package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +1 -18
  46. package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +6 -6
  47. package/bmad/bmm/workflows/techdoc/documentation-standards.md +24 -1
  48. package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
  49. package/bmad/core/config.yaml +2 -2
  50. package/package.json +1 -1
  51. package/src/modules/bmm/_module-installer/install-config.yaml +5 -0
  52. package/src/modules/bmm/docs/README.md +10 -9
  53. package/src/modules/bmm/docs/agents-guide.md +1 -1
  54. package/src/modules/bmm/docs/brownfield-guide.md +5 -6
  55. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  56. package/src/modules/bmm/docs/faq.md +6 -6
  57. package/src/modules/bmm/docs/glossary.md +8 -8
  58. package/src/modules/bmm/docs/quick-spec-flow.md +3 -3
  59. package/src/modules/bmm/docs/quick-start.md +5 -5
  60. package/src/modules/bmm/docs/scale-adaptive-system.md +1 -1
  61. package/src/modules/bmm/docs/test-architecture.md +329 -0
  62. package/src/modules/bmm/docs/troubleshooting.md +6 -6
  63. package/src/modules/bmm/docs/workflows-analysis.md +64 -28
  64. package/src/modules/bmm/docs/workflows-implementation.md +196 -1670
  65. package/src/modules/bmm/docs/workflows-planning.md +74 -35
  66. package/src/modules/bmm/docs/workflows-solutioning.md +46 -16
  67. package/src/modules/bmm/workflows/techdoc/documentation-standards.md +24 -1
  68. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
  69. package/tools/cli/installers/lib/core/config-collector.js +39 -11
  70. package/tools/cli/installers/lib/core/ide-config-manager.js +3 -1
  71. package/tools/cli/installers/lib/core/installer.js +20 -9
  72. package/tools/cli/installers/lib/core/manifest-generator.js +3 -1
  73. package/tools/cli/installers/lib/core/manifest.js +6 -2
  74. package/tools/cli/installers/lib/modules/manager.js +6 -0
  75. package/tools/cli/lib/config.js +3 -1
  76. package/tools/cli/lib/ui.js +5 -5
  77. package/tools/cli/lib/yaml-format.js +2 -1
  78. package/tools/schema/agent.js +2 -0
  79. package/.claude/commands/bmad/bmm/agents/paige.md +0 -82
  80. package/.claude/commands/bmad/bmm/workflows/tech-spec-sm.md +0 -15
  81. package/bmad/_cfg/agents/bmm-paige.customize.yaml +0 -42
  82. package/bmad/_cfg/agents/cis-brainstorming-coach.customize.yaml +0 -42
  83. package/bmad/_cfg/agents/cis-creative-problem-solver.customize.yaml +0 -42
  84. package/bmad/_cfg/agents/cis-design-thinking-coach.customize.yaml +0 -42
  85. package/bmad/_cfg/agents/cis-innovation-strategist.customize.yaml +0 -42
  86. package/bmad/_cfg/agents/cis-storyteller.customize.yaml +0 -42
  87. package/bmad/bmb/agents/bmad-builder.md.bak +0 -70
  88. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -23
  89. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -42
  90. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
  91. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -40
  92. package/bmad/bmb/workflows/edit-agent/workflow.yaml.bak +0 -33
  93. package/bmad/bmb/workflows/edit-module/workflow.yaml.bak +0 -34
  94. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -27
  95. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -29
  96. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -32
  97. package/bmad/bmm/README.md.bak +0 -169
  98. package/bmad/bmm/agents/analyst.md.bak +0 -67
  99. package/bmad/bmm/agents/architect.md.bak +0 -73
  100. package/bmad/bmm/agents/dev.md.bak +0 -69
  101. package/bmad/bmm/agents/paige.md.bak +0 -82
  102. package/bmad/bmm/agents/pm.md.bak +0 -76
  103. package/bmad/bmm/agents/sm.md.bak +0 -85
  104. package/bmad/bmm/agents/tea.md.bak +0 -72
  105. package/bmad/bmm/agents/ux-designer.md.bak +0 -71
  106. package/bmad/bmm/docs/README.md +0 -235
  107. package/bmad/bmm/docs/agents-guide.md +0 -1057
  108. package/bmad/bmm/docs/brownfield-guide.md +0 -759
  109. package/bmad/bmm/docs/enterprise-agentic-development.md +0 -680
  110. package/bmad/bmm/docs/faq.md +0 -589
  111. package/bmad/bmm/docs/glossary.md +0 -321
  112. package/bmad/bmm/docs/party-mode.md +0 -224
  113. package/bmad/bmm/docs/quick-spec-flow.md +0 -652
  114. package/bmad/bmm/docs/quick-start.md +0 -366
  115. package/bmad/bmm/docs/scale-adaptive-system.md +0 -599
  116. package/bmad/bmm/docs/troubleshooting.md +0 -680
  117. package/bmad/bmm/docs/workflow-architecture-reference.md +0 -371
  118. package/bmad/bmm/docs/workflow-document-project-reference.md +0 -487
  119. package/bmad/bmm/docs/workflows-analysis.md +0 -670
  120. package/bmad/bmm/docs/workflows-implementation.md +0 -1758
  121. package/bmad/bmm/docs/workflows-planning.md +0 -1086
  122. package/bmad/bmm/docs/workflows-solutioning.md +0 -726
  123. package/bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml.bak +0 -60
  124. package/bmad/bmm/workflows/techdoc/documentation-standards.md.bak +0 -238
  125. package/bmad/bmm/workflows/workflow-status/init/workflow.yaml.bak +0 -27
  126. package/bmad/cis/README.md +0 -153
  127. package/bmad/cis/agents/README.md +0 -104
  128. package/bmad/cis/agents/brainstorming-coach.md +0 -62
  129. package/bmad/cis/agents/brainstorming-coach.md.bak +0 -62
  130. package/bmad/cis/agents/creative-problem-solver.md +0 -62
  131. package/bmad/cis/agents/creative-problem-solver.md.bak +0 -62
  132. package/bmad/cis/agents/design-thinking-coach.md +0 -62
  133. package/bmad/cis/agents/design-thinking-coach.md.bak +0 -62
  134. package/bmad/cis/agents/innovation-strategist.md +0 -62
  135. package/bmad/cis/agents/innovation-strategist.md.bak +0 -62
  136. package/bmad/cis/agents/storyteller.md +0 -59
  137. package/bmad/cis/agents/storyteller.md.bak +0 -59
  138. package/bmad/cis/config.yaml +0 -10
  139. package/bmad/cis/teams/creative-squad.yaml +0 -6
  140. package/bmad/cis/workflows/README.md +0 -139
  141. package/bmad/cis/workflows/design-thinking/README.md +0 -56
  142. package/bmad/cis/workflows/design-thinking/design-methods.csv +0 -31
  143. package/bmad/cis/workflows/design-thinking/instructions.md +0 -200
  144. package/bmad/cis/workflows/design-thinking/template.md +0 -111
  145. package/bmad/cis/workflows/design-thinking/workflow.yaml +0 -32
  146. package/bmad/cis/workflows/innovation-strategy/README.md +0 -56
  147. package/bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
  148. package/bmad/cis/workflows/innovation-strategy/instructions.md +0 -274
  149. package/bmad/cis/workflows/innovation-strategy/template.md +0 -189
  150. package/bmad/cis/workflows/innovation-strategy/workflow.yaml +0 -32
  151. package/bmad/cis/workflows/problem-solving/README.md +0 -56
  152. package/bmad/cis/workflows/problem-solving/instructions.md +0 -250
  153. package/bmad/cis/workflows/problem-solving/solving-methods.csv +0 -31
  154. package/bmad/cis/workflows/problem-solving/template.md +0 -165
  155. package/bmad/cis/workflows/problem-solving/workflow.yaml +0 -32
  156. package/bmad/cis/workflows/storytelling/README.md +0 -58
  157. package/bmad/cis/workflows/storytelling/instructions.md +0 -291
  158. package/bmad/cis/workflows/storytelling/story-types.csv +0 -26
  159. package/bmad/cis/workflows/storytelling/template.md +0 -113
  160. package/bmad/cis/workflows/storytelling/workflow.yaml +0 -32
  161. package/bmad/core/agents/bmad-master.md.bak +0 -71
@@ -1,25 +1,90 @@
1
1
  # BMM Planning Workflows (Phase 2)
2
2
 
3
- **Reading Time:** ~15 minutes
4
-
5
3
  ## Overview
6
4
 
7
5
  Phase 2 (Planning) workflows are **required** for all projects. They transform strategic vision into actionable requirements that guide implementation. BMM uses a **scale-adaptive planning system** where the workflow automatically selects the right level of detail based on project complexity.
8
6
 
9
7
  **Key principle:** One workflow to rule them all - `plan-project` intelligently routes to the appropriate planning flow based on project characteristics.
10
8
 
9
+ ---
10
+
11
+ ## Phase 2 Planning Flow
12
+
13
+ ```mermaid
14
+ %%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#fff','primaryTextColor':'#000','primaryBorderColor':'#000','lineColor':'#000','fontSize':'16px','fontFamily':'arial'}}}%%
15
+ graph TB
16
+ Entry["<b>START: plan-project</b><br/>Discovery and routing"]
17
+
18
+ subgraph QuickFlow["<b>QUICK FLOW (Levels 0-1)</b>"]
19
+ TechSpec["<b>PM: tech-spec</b><br/>Lightweight spec for simple changes"]
20
+ end
21
+
22
+ subgraph StandardFlow["<b>STANDARD PLANNING (Levels 2-4)</b>"]
23
+ PRD["<b>PM: prd</b><br/>Strategic PRD"]
24
+ GDD["<b>Game Designer: gdd</b><br/>Game design document"]
25
+ Narrative["<b>Game Designer: narrative</b><br/>Story-driven design"]
26
+ UXDesign["<b>UX Designer: ux</b><br/>UX-first specification"]
27
+
28
+ Epics["<b>PM: create-epics-and-stories</b><br/>Break requirements into epics and stories"]
29
+ end
30
+
31
+ subgraph Updates["<b>STORY UPDATES (Anytime After Epics Created)</b>"]
32
+ CorrectCourse["<b>PM/SM: correct-course</b><br/>Update epics/stories mid-stream"]
33
+ end
34
+
35
+ Entry -->|Level 0-1<br/>Simple| QuickFlow
36
+ Entry -->|Level 2-4<br/>Software| PRD
37
+ Entry -->|Level 2-4<br/>Game| GDD
38
+ Entry -->|Level 2-4<br/>Story-driven| Narrative
39
+ Entry -->|Level 2-4<br/>UX-first| UXDesign
40
+
41
+ PRD --> Epics
42
+ GDD --> Epics
43
+ Narrative --> Epics
44
+ UXDesign -.->|May update| Epics
45
+
46
+ Epics --> Phase3["<b>Phase 3: Architecture</b>"]
47
+ Phase3 -.->|May update| Epics
48
+
49
+ QuickFlow --> Phase4["<b>Phase 4: Implementation</b>"]
50
+ Phase3 --> Phase4
51
+
52
+ Phase4 -.->|Significant changes| CorrectCourse
53
+ CorrectCourse -.->|Updates| Epics
54
+
55
+ style Entry fill:#fff9c4,stroke:#f57f17,stroke-width:3px,color:#000
56
+ style QuickFlow fill:#c5e1a5,stroke:#33691e,stroke-width:3px,color:#000
57
+ style StandardFlow fill:#e1bee7,stroke:#6a1b9a,stroke-width:3px,color:#000
58
+ style Updates fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#000
59
+ style Phase3 fill:#90caf9,stroke:#0d47a1,stroke-width:2px,color:#000
60
+ style Phase4 fill:#ffcc80,stroke:#e65100,stroke-width:2px,color:#000
61
+
62
+ style TechSpec fill:#aed581,stroke:#1b5e20,stroke-width:2px,color:#000
63
+ style PRD fill:#ce93d8,stroke:#4a148c,stroke-width:2px,color:#000
64
+ style GDD fill:#ce93d8,stroke:#4a148c,stroke-width:2px,color:#000
65
+ style Narrative fill:#ce93d8,stroke:#4a148c,stroke-width:2px,color:#000
66
+ style UXDesign fill:#ce93d8,stroke:#4a148c,stroke-width:2px,color:#000
67
+ style Epics fill:#ba68c8,stroke:#6a1b9a,stroke-width:3px,color:#000
68
+ style CorrectCourse fill:#ef5350,stroke:#c62828,stroke-width:2px,color:#000
69
+ ```
70
+
71
+ ---
72
+
11
73
  ## Quick Reference
12
74
 
13
- | Workflow | Project Levels | Duration | Purpose |
14
- | ------------- | -------------- | ---------- | --------------------------------------- |
15
- | **prd** | 2-4 | 2-6 hours | Strategic PRD + tactical epic breakdown |
16
- | **tech-spec** | 0-1 | 30-90 min | Lightweight technical specification |
17
- | **gdd** | 2-4 (games) | 4-10 hours | Complete game design document |
18
- | **narrative** | 2-4 (story) | 3-8 hours | Story-driven game/experience design |
19
- | **ux** | 2-4 (UX-heavy) | 3-6 hours | UX-first design specification |
75
+ | Workflow | Agent | Project Levels | Purpose |
76
+ | ---------------------------- | ------------- | -------------- | ---------------------------------------------------- |
77
+ | **prd** | PM | 2-4 | Strategic PRD |
78
+ | **create-epics-and-stories** | PM | 2-4 | Break PRD/GDD into epics and stories (standalone OK) |
79
+ | **tech-spec** | PM | 0-1 | Lightweight technical specification |
80
+ | **gdd** | Game Designer | 2-4 (games) | Complete game design document |
81
+ | **narrative** | Game Designer | 2-4 (story) | Story-driven game/experience design |
82
+ | **ux** | UX Designer | 2-4 (UX-heavy) | UX-first design specification |
20
83
 
21
84
  **Note:** The `plan-project` workflow is your single entry point. It automatically routes to the right planning workflow based on your answers to discovery questions.
22
85
 
86
+ **Critical:** After PRD/GDD/Narrative complete, you must run `create-epics-and-stories` to generate user stories (can be done in same chat or separate chat later). These stories can be updated anytime via UX-Design, Architecture decisions, or `correct-course` during implementation.
87
+
23
88
  ---
24
89
 
25
90
  ## Understanding Scale-Adaptive Planning
@@ -73,7 +138,6 @@ Single unified entry point for all planning workflows. Uses conversational disco
73
138
  **Agent:** PM (orchestrates other agents as needed)
74
139
  **Phase:** 2 (Planning)
75
140
  **Required:** Yes (for all projects)
76
- **Typical Duration:** Varies by target workflow
77
141
 
78
142
  ### When to Use
79
143
 
@@ -161,28 +225,24 @@ ELSE:
161
225
  - **Input**: "Fix null pointer exception in user service"
162
226
  - **Discovery**: Level 0 (single atomic change)
163
227
  - **Route**: tech-spec (Quick Spec Flow)
164
- - **Duration**: 20 minutes
165
228
 
166
229
  **Scenario 2: E-commerce Checkout**
167
230
 
168
231
  - **Input**: "Build complete checkout flow with payment processing"
169
232
  - **Discovery**: Level 3 (large feature set), feature-focused
170
233
  - **Route**: prd (Standard depth)
171
- - **Duration**: 4 hours
172
234
 
173
235
  **Scenario 3: Roguelike Card Game**
174
236
 
175
237
  - **Input**: "Roguelike card battler with emotional narrative"
176
238
  - **Discovery**: Level 3 (large feature set), game project
177
239
  - **Route**: gdd
178
- - **Duration**: 6 hours
179
240
 
180
241
  **Scenario 4: Story-Driven Adventure**
181
242
 
182
243
  - **Input**: "Narrative adventure game with branching story"
183
244
  - **Discovery**: Level 3, story-central
184
245
  - **Route**: narrative (then gdd for mechanics)
185
- - **Duration**: 8 hours total
186
246
 
187
247
  ---
188
248
 
@@ -195,7 +255,6 @@ Lightweight technical specification for Levels 0-1 projects (single changes, sim
195
255
  **Agent:** Architect
196
256
  **Phase:** 2 (Planning)
197
257
  **Project Levels:** 0-1
198
- **Typical Duration:** 30-90 minutes
199
258
 
200
259
  ### When to Use
201
260
 
@@ -322,11 +381,6 @@ Strategic PRD with tactical epic breakdown for Levels 2-4 projects. Unified work
322
381
  **Agent:** PM (with Architect and Analyst support)
323
382
  **Phase:** 2 (Planning)
324
383
  **Project Levels:** 2-4
325
- **Typical Duration:**
326
-
327
- - Level 2: 2-3 hours (Lightweight)
328
- - Level 3: 3-5 hours (Standard)
329
- - Level 4: 5-8 hours (Comprehensive)
330
384
 
331
385
  ### When to Use
332
386
 
@@ -488,11 +542,6 @@ Complete game design document for Levels 2-4 game projects, adapted from industr
488
542
  **Agent:** PM (Game Designer persona)
489
543
  **Phase:** 2 (Planning)
490
544
  **Project Levels:** 2-4 (games)
491
- **Typical Duration:**
492
-
493
- - Level 2: 3-4 hours (Small indie game)
494
- - Level 3: 5-7 hours (Medium game)
495
- - Level 4: 8-12 hours (Large/commercial game)
496
545
 
497
546
  ### When to Use
498
547
 
@@ -666,11 +715,6 @@ Story-driven design workflow for games and experiences where narrative is centra
666
715
  **Agent:** PM (Narrative Designer persona) + Creative Problem Solver (CIS)
667
716
  **Phase:** 2 (Planning)
668
717
  **Project Levels:** 2-4 (story-driven projects)
669
- **Typical Duration:**
670
-
671
- - Level 2: 2-4 hours (Linear narrative)
672
- - Level 3: 4-6 hours (Branching narrative)
673
- - Level 4: 6-10 hours (Complex branching with multiple arcs)
674
718
 
675
719
  ### When to Use
676
720
 
@@ -825,11 +869,6 @@ UX specification workflow for projects where user experience is the primary diff
825
869
  **Agent:** UX Designer
826
870
  **Phase:** 2 (Planning)
827
871
  **Project Levels:** 2-4 (UX-heavy projects)
828
- **Typical Duration:**
829
-
830
- - Level 2: 2-3 hours (Single feature UX)
831
- - Level 3: 4-5 hours (Multi-screen experience)
832
- - Level 4: 6-8 hours (Platform-wide UX system)
833
872
 
834
873
  ### When to Use
835
874
 
@@ -1,19 +1,56 @@
1
1
  # BMM Solutioning Workflows (Phase 3)
2
2
 
3
- **Reading Time:** ~8 minutes
4
-
5
3
  ## Overview
6
4
 
7
5
  Phase 3 (Solutioning) workflows translate **what** to build (from Planning) into **how** to build it (technical design). This phase is **required for Levels 3-4** and **optional for Level 2** projects.
8
6
 
9
7
  **Key principle:** Prevent agent conflicts by making architectural decisions explicit and documented before implementation begins.
10
8
 
9
+ ---
10
+
11
+ ## Phase 3 Solutioning Flow
12
+
13
+ ```mermaid
14
+ %%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#fff','primaryTextColor':'#000','primaryBorderColor':'#000','lineColor':'#000','fontSize':'16px','fontFamily':'arial'}}}%%
15
+ graph TB
16
+ FromPRD["<b>FROM Phase 2</b><br/>PRD/GDD/Narrative/UX complete"]
17
+
18
+ subgraph Solutioning["<b>PHASE 3: SOLUTIONING</b>"]
19
+ direction TB
20
+ Architecture["<b>Architect: architecture</b><br/>Technical design and decisions"]
21
+ GateCheck["<b>Architect: solutioning-gate-check</b><br/>Validation before implementation"]
22
+ end
23
+
24
+ subgraph Optional["<b>OPTIONAL PATHS</b>"]
25
+ direction LR
26
+ Level2Skip["<b>Level 2:</b><br/>Skip if straightforward"]
27
+ end
28
+
29
+ FromPRD --> Architecture
30
+ Architecture --> GateCheck
31
+ GateCheck -->|PASS| Phase4["<b>Phase 4: Implementation</b>"]
32
+ GateCheck -->|CONCERNS/FAIL| Architecture
33
+ FromPRD -.->|Level 2 only| Level2Skip
34
+ Level2Skip -.-> Phase4
35
+
36
+ style FromPRD fill:#e1bee7,stroke:#6a1b9a,stroke-width:2px,color:#000
37
+ style Solutioning fill:#90caf9,stroke:#0d47a1,stroke-width:3px,color:#000
38
+ style Optional fill:#fff9c4,stroke:#f57f17,stroke-width:3px,color:#000
39
+ style Phase4 fill:#ffcc80,stroke:#e65100,stroke-width:2px,color:#000
40
+
41
+ style Architecture fill:#64b5f6,stroke:#0d47a1,stroke-width:2px,color:#000
42
+ style GateCheck fill:#64b5f6,stroke:#0d47a1,stroke-width:2px,color:#000
43
+ style Level2Skip fill:#fff59d,stroke:#f57f17,stroke-width:2px,color:#000
44
+ ```
45
+
46
+ ---
47
+
11
48
  ## Quick Reference
12
49
 
13
- | Workflow | Project Levels | Duration | Purpose |
14
- | -------------------------- | -------------- | --------- | ------------------------------------------- |
15
- | **architecture** | 2-4 | 2-6 hours | Technical architecture and design decisions |
16
- | **solutioning-gate-check** | 3-4 | 15-30 min | Validate planning/solutioning completeness |
50
+ | Workflow | Project Levels | Purpose |
51
+ | -------------------------- | -------------- | ------------------------------------------- |
52
+ | **architecture** | 2-4 | Technical architecture and design decisions |
53
+ | **solutioning-gate-check** | 3-4 | Validate planning/solutioning completeness |
17
54
 
18
55
  **When to Skip Solutioning:**
19
56
 
@@ -86,11 +123,6 @@ Collaborative architectural decision facilitation that produces a decision-focus
86
123
  **Phase:** 3 (Solutioning)
87
124
  **Project Levels:** 2-4
88
125
  **Required:** Level 3-4, Optional Level 2
89
- **Typical Duration:**
90
-
91
- - Level 2: 1-2 hours (Simple architecture)
92
- - Level 3: 2-4 hours (Standard architecture)
93
- - Level 4: 4-8 hours (Complex architecture with ADRs)
94
126
 
95
127
  ### When to Use
96
128
 
@@ -341,7 +373,6 @@ Systematically validate that all planning and solutioning phases are complete an
341
373
  **Phase:** 3 (Solutioning)
342
374
  **Project Levels:** 3-4
343
375
  **Required:** Level 3-4 only
344
- **Typical Duration:** 15-30 minutes
345
376
 
346
377
  ### When to Use
347
378
 
@@ -544,21 +575,20 @@ Optional:
544
575
 
545
576
  1. **Critical**: Architecture missing security architecture section
546
577
  - **Impact**: Epic 1 (Auth) and Epic 4 (Checkout) lack security guidance
547
- - **Recommendation**: Complete security architecture (2 hours)
578
+ - **Recommendation**: Complete security architecture
548
579
 
549
580
  2. **High**: Payment gateway not selected
550
581
  - **Impact**: Epic 4 (Checkout) cannot proceed
551
- - **Recommendation**: Add ADR for payment gateway selection (1 hour)
582
+ - **Recommendation**: Add ADR for payment gateway selection
552
583
 
553
584
  3. **Medium**: Epic 2, Story 3 too large
554
585
  - **Impact**: Risk of story scope creep
555
- - **Recommendation**: Split into 2 stories (30 min)
586
+ - **Recommendation**: Split into 2 stories
556
587
 
557
588
  **Gate Decision:** CONCERNS ⚠️
558
589
 
559
590
  - **Rationale**: Critical and high gaps block Epic 1 and Epic 4
560
591
  - **Action**: Resolve gaps #1 and #2 before starting implementation
561
- - **Timeline**: Address in 3 hours, then re-run gate check
562
592
 
563
593
  **Next Steps:**
564
594
 
@@ -5,10 +5,32 @@
5
5
 
6
6
  ---
7
7
 
8
- ## CRITICAL RULE: CommonMark Strict Compliance
8
+ ## CRITICAL RULES
9
+
10
+ ### Rule 1: CommonMark Strict Compliance
9
11
 
10
12
  ALL documentation MUST follow CommonMark specification exactly. No exceptions.
11
13
 
14
+ ### Rule 2: NO TIME ESTIMATES
15
+
16
+ NEVER document time estimates, durations, or completion times for any workflow, task, or activity. This includes:
17
+
18
+ - Workflow execution time (e.g., "30-60 min", "2-8 hours")
19
+ - Task duration estimates
20
+ - Reading time estimates
21
+ - Implementation time ranges
22
+ - Any temporal measurements
23
+
24
+ Time varies dramatically based on:
25
+
26
+ - Project complexity
27
+ - Team experience
28
+ - Tooling and environment
29
+ - Context switching
30
+ - Unforeseen blockers
31
+
32
+ **Instead:** Focus on workflow steps, dependencies, and outputs. Let users determine their own timelines.
33
+
12
34
  ### CommonMark Essentials
13
35
 
14
36
  **Headers:**
@@ -194,6 +216,7 @@ Apply in this hierarchy:
194
216
  Before finalizing ANY documentation:
195
217
 
196
218
  - [ ] CommonMark compliant (no violations)
219
+ - [ ] NO time estimates anywhere (Critical Rule 2)
197
220
  - [ ] Headers in proper hierarchy
198
221
  - [ ] All code blocks have language tags
199
222
  - [ ] Links work and have descriptive text
@@ -355,8 +355,8 @@ See `tea-index.csv` for complete knowledge fragment mapping.
355
355
 
356
356
  - Ask in team standup
357
357
  - Tag @{tea_agent_username} in Slack/Discord
358
- - Refer to `testarch/README.md` for workflow documentation
359
- - Consult `testarch/knowledge/` for testing best practices
358
+ - Refer to `./bmm/docs/tea-README.md` for workflow documentation
359
+ - Consult `./bmm/testarch/knowledge` for testing best practices
360
360
 
361
361
  ---
362
362
 
@@ -491,21 +491,49 @@ class ConfigCollector {
491
491
  // Handle different question types
492
492
  if (item['single-select']) {
493
493
  questionType = 'list';
494
- choices = item['single-select'];
495
- if (existingValue && choices.includes(existingValue)) {
494
+ choices = item['single-select'].map((choice) => {
495
+ // If choice is an object with label and value
496
+ if (typeof choice === 'object' && choice.label && choice.value !== undefined) {
497
+ return {
498
+ name: choice.label,
499
+ value: choice.value,
500
+ };
501
+ }
502
+ // Otherwise it's a simple string choice
503
+ return {
504
+ name: choice,
505
+ value: choice,
506
+ };
507
+ });
508
+ if (existingValue) {
496
509
  defaultValue = existingValue;
497
510
  }
498
511
  } else if (item['multi-select']) {
499
512
  questionType = 'checkbox';
500
- choices = item['multi-select'].map((choice) => ({
501
- name: choice,
502
- value: choice,
503
- checked: existingValue
504
- ? existingValue.includes(choice)
505
- : item.default && Array.isArray(item.default)
506
- ? item.default.includes(choice)
507
- : false,
508
- }));
513
+ choices = item['multi-select'].map((choice) => {
514
+ // If choice is an object with label and value
515
+ if (typeof choice === 'object' && choice.label && choice.value !== undefined) {
516
+ return {
517
+ name: choice.label,
518
+ value: choice.value,
519
+ checked: existingValue
520
+ ? existingValue.includes(choice.value)
521
+ : item.default && Array.isArray(item.default)
522
+ ? item.default.includes(choice.value)
523
+ : false,
524
+ };
525
+ }
526
+ // Otherwise it's a simple string choice
527
+ return {
528
+ name: choice,
529
+ value: choice,
530
+ checked: existingValue
531
+ ? existingValue.includes(choice)
532
+ : item.default && Array.isArray(item.default)
533
+ ? item.default.includes(choice)
534
+ : false,
535
+ };
536
+ });
509
537
  } else if (typeof defaultValue === 'boolean') {
510
538
  questionType = 'confirm';
511
539
  }
@@ -68,7 +68,9 @@ class IdeConfigManager {
68
68
  sortKeys: false,
69
69
  });
70
70
 
71
- await fs.writeFile(configPath, yamlContent, 'utf8');
71
+ // Ensure POSIX-compliant final newline
72
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
73
+ await fs.writeFile(configPath, content, 'utf8');
72
74
  }
73
75
 
74
76
  /**
@@ -906,8 +906,9 @@ class Installer {
906
906
  }
907
907
  }
908
908
 
909
- // Write the clean config file
910
- await fs.writeFile(configPath, header + yamlContent, 'utf8');
909
+ // Write the clean config file with POSIX-compliant final newline
910
+ const content = header + yamlContent;
911
+ await fs.writeFile(configPath, content.endsWith('\n') ? content : content + '\n', 'utf8');
911
912
 
912
913
  // Track the config file in installedFiles
913
914
  this.installedFiles.push(configPath);
@@ -1195,8 +1196,9 @@ class Installer {
1195
1196
  // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
1196
1197
  // const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
1197
1198
 
1198
- // Write the built .md file to bmad/{module}/agents/
1199
- await fs.writeFile(mdPath, xmlContent, 'utf8');
1199
+ // Write the built .md file to bmad/{module}/agents/ with POSIX-compliant final newline
1200
+ const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
1201
+ await fs.writeFile(mdPath, content, 'utf8');
1200
1202
  this.installedFiles.push(mdPath);
1201
1203
 
1202
1204
  // Remove the source YAML file - we can regenerate from installer source if needed
@@ -1213,7 +1215,9 @@ class Installer {
1213
1215
  if (content.includes('<agent') && !content.includes('<activation')) {
1214
1216
  // Inject the activation block using XML handler
1215
1217
  content = this.xmlHandler.injectActivationSimple(content);
1216
- await fs.writeFile(agentPath, content, 'utf8');
1218
+ // Ensure POSIX-compliant final newline
1219
+ const finalContent = content.endsWith('\n') ? content : content + '\n';
1220
+ await fs.writeFile(agentPath, finalContent, 'utf8');
1217
1221
  }
1218
1222
  }
1219
1223
  }
@@ -1294,8 +1298,9 @@ class Installer {
1294
1298
  // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
1295
1299
  // const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
1296
1300
 
1297
- // Write the built .md file
1298
- await fs.writeFile(targetMdPath, xmlContent, 'utf8');
1301
+ // Write the built .md file with POSIX-compliant final newline
1302
+ const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
1303
+ await fs.writeFile(targetMdPath, content, 'utf8');
1299
1304
 
1300
1305
  // Display result
1301
1306
  if (customizedFields.length > 0) {
@@ -1387,8 +1392,9 @@ class Installer {
1387
1392
  // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
1388
1393
  // const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
1389
1394
 
1390
- // Write the rebuilt .md file
1391
- await fs.writeFile(targetMdPath, xmlContent, 'utf8');
1395
+ // Write the rebuilt .md file with POSIX-compliant final newline
1396
+ const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
1397
+ await fs.writeFile(targetMdPath, content, 'utf8');
1392
1398
 
1393
1399
  // Display result with customizations if any
1394
1400
  if (customizedFields.length > 0) {
@@ -2005,6 +2011,11 @@ class Installer {
2005
2011
 
2006
2012
  configContent += processedTemplate;
2007
2013
 
2014
+ // Ensure POSIX-compliant final newline
2015
+ if (!configContent.endsWith('\n')) {
2016
+ configContent += '\n';
2017
+ }
2018
+
2008
2019
  await fs.writeFile(configPath, configContent, 'utf8');
2009
2020
  this.installedFiles.push(configPath); // Track agent config files
2010
2021
  createdCount++;
@@ -469,7 +469,9 @@ class ManifestGenerator {
469
469
  sortKeys: false,
470
470
  });
471
471
 
472
- await fs.writeFile(manifestPath, yamlStr);
472
+ // Ensure POSIX-compliant final newline
473
+ const content = yamlStr.endsWith('\n') ? yamlStr : yamlStr + '\n';
474
+ await fs.writeFile(manifestPath, content);
473
475
  return manifestPath;
474
476
  }
475
477
 
@@ -35,7 +35,9 @@ class Manifest {
35
35
  sortKeys: false,
36
36
  });
37
37
 
38
- await fs.writeFile(manifestPath, yamlContent, 'utf8');
38
+ // Ensure POSIX-compliant final newline
39
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
40
+ await fs.writeFile(manifestPath, content, 'utf8');
39
41
  return { success: true, path: manifestPath, filesTracked: 0 };
40
42
  }
41
43
 
@@ -104,7 +106,9 @@ class Manifest {
104
106
  sortKeys: false,
105
107
  });
106
108
 
107
- await fs.writeFile(manifestPath, yamlContent, 'utf8');
109
+ // Ensure POSIX-compliant final newline
110
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
111
+ await fs.writeFile(manifestPath, content, 'utf8');
108
112
 
109
113
  return manifest;
110
114
  }
@@ -267,6 +267,12 @@ class ModuleManager {
267
267
  continue;
268
268
  }
269
269
 
270
+ // Skip user documentation if install_user_docs is false
271
+ if (moduleConfig.install_user_docs === false && (file.startsWith('docs/') || file.startsWith('docs\\'))) {
272
+ console.log(chalk.dim(` Skipping user documentation: ${file}`));
273
+ continue;
274
+ }
275
+
270
276
  // Skip game development content if include_game_planning is false
271
277
  if (moduleConfig.include_game_planning === false) {
272
278
  const shouldSkipGameDev = gameDevFiles.some((gamePath) => {
@@ -33,7 +33,9 @@ class Config {
33
33
  });
34
34
 
35
35
  await fs.ensureDir(path.dirname(configPath));
36
- await fs.writeFile(configPath, yamlContent, 'utf8');
36
+ // Ensure POSIX-compliant final newline
37
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
38
+ await fs.writeFile(configPath, content, 'utf8');
37
39
  }
38
40
 
39
41
  /**
@@ -82,15 +82,15 @@ class UI {
82
82
  // If actionType === 'update' or 'reinstall', continue with normal flow below
83
83
  }
84
84
 
85
- // Collect IDE tool selection EARLY (before module configuration)
86
- // This allows users to make all decisions upfront before file copying begins
87
- const toolSelection = await this.promptToolSelection(confirmedDirectory, []);
88
-
89
85
  const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
90
86
  const coreConfig = await this.collectCoreConfig(confirmedDirectory);
91
87
  const moduleChoices = await this.getModuleChoices(installedModuleIds);
92
88
  const selectedModules = await this.selectModules(moduleChoices);
93
89
 
90
+ // Collect IDE tool selection AFTER configuration prompts (fixes Windows/PowerShell hang)
91
+ // This allows text-based prompts to complete before the checkbox prompt
92
+ const toolSelection = await this.promptToolSelection(confirmedDirectory, selectedModules);
93
+
94
94
  console.clear();
95
95
  CLIUtils.displayLogo();
96
96
  CLIUtils.displayModuleComplete('core', false); // false = don't clear the screen again
@@ -100,7 +100,7 @@ class UI {
100
100
  directory: confirmedDirectory,
101
101
  installCore: true, // Always install core
102
102
  modules: selectedModules,
103
- // IDE selection collected early, will be configured later
103
+ // IDE selection collected after config, will be configured later
104
104
  ides: toolSelection.ides,
105
105
  skipIde: toolSelection.skipIde,
106
106
  coreConfig: coreConfig, // Pass collected core config to installer
@@ -64,7 +64,8 @@ async function formatYamlContent(content, filename) {
64
64
  noRefs: true,
65
65
  sortKeys: false, // Preserve key order
66
66
  });
67
- return formatted;
67
+ // Ensure POSIX-compliant final newline
68
+ return formatted.endsWith('\n') ? formatted : formatted + '\n';
68
69
  } catch (error) {
69
70
  console.error(chalk.red(`❌ YAML syntax error in ${filename}:`), error.message);
70
71
  console.error(chalk.yellow(`💡 Try manually fixing the YAML structure first`));
@@ -176,6 +176,8 @@ function buildMenuItemSchema() {
176
176
  tmpl: createNonEmptyString('agent.menu[].tmpl').optional(),
177
177
  data: createNonEmptyString('agent.menu[].data').optional(),
178
178
  'run-workflow': createNonEmptyString('agent.menu[].run-workflow').optional(),
179
+ checklist: createNonEmptyString('agent.menu[].checklist').optional(),
180
+ document: createNonEmptyString('agent.menu[].document').optional(),
179
181
  })
180
182
  .strict()
181
183
  .superRefine((value, ctx) => {