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.
- package/.claude/agents/bmad-analysis/api-documenter.md +102 -0
- package/.claude/agents/bmad-analysis/codebase-analyzer.md +82 -0
- package/.claude/agents/bmad-analysis/data-analyst.md +101 -0
- package/.claude/agents/bmad-analysis/pattern-detector.md +84 -0
- package/.claude/agents/bmad-planning/dependency-mapper.md +83 -0
- package/.claude/agents/bmad-planning/epic-optimizer.md +81 -0
- package/.claude/agents/bmad-planning/requirements-analyst.md +61 -0
- package/.claude/agents/bmad-planning/technical-decisions-curator.md +168 -0
- package/.claude/agents/bmad-planning/trend-spotter.md +115 -0
- package/.claude/agents/bmad-planning/user-journey-mapper.md +123 -0
- package/.claude/agents/bmad-planning/user-researcher.md +72 -0
- package/.claude/agents/bmad-research/market-researcher.md +51 -0
- package/.claude/agents/bmad-research/tech-debt-auditor.md +106 -0
- package/.claude/agents/bmad-review/document-reviewer.md +102 -0
- package/.claude/agents/bmad-review/technical-evaluator.md +68 -0
- package/.claude/agents/bmad-review/test-coverage-analyzer.md +108 -0
- package/.claude/commands/bmad/bmm/workflows/README.md +2 -2
- package/.claude/commands/bmad/bmm/workflows/prd.md +1 -1
- package/.claude/commands/bmad/bmm/workflows/tech-spec.md +3 -3
- package/.claude/commands/bmad/core/workflows/README.md +0 -10
- package/.claude/settings.local.json +3 -4
- package/CONTRIBUTING.md +1 -13
- package/bmad/_cfg/agent-manifest.csv +0 -6
- package/bmad/_cfg/files-manifest.csv +26 -78
- package/bmad/_cfg/ides/claude-code.yaml +4 -3
- package/bmad/_cfg/manifest.yaml +3 -5
- package/bmad/_cfg/task-manifest.csv +0 -4
- package/bmad/_cfg/tool-manifest.csv +0 -1
- package/bmad/_cfg/workflow-manifest.csv +2 -8
- package/bmad/bmb/config.yaml +2 -2
- package/bmad/bmb/workflows/audit-workflow/instructions.md +1 -1
- package/bmad/bmm/config.yaml +4 -3
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -19
- package/bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +10 -9
- package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +23 -34
- package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +105 -331
- package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +23 -11
- package/bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +23 -38
- package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +1 -1
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +38 -16
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +1 -19
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +35 -32
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +2 -2
- package/bmad/bmm/workflows/3-solutioning/architecture/instructions.md +7 -18
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +1 -18
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +6 -6
- package/bmad/bmm/workflows/techdoc/documentation-standards.md +24 -1
- package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
- package/bmad/core/config.yaml +2 -2
- package/package.json +1 -1
- package/src/modules/bmm/_module-installer/install-config.yaml +5 -0
- package/src/modules/bmm/docs/README.md +10 -9
- package/src/modules/bmm/docs/agents-guide.md +1 -1
- package/src/modules/bmm/docs/brownfield-guide.md +5 -6
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +6 -6
- package/src/modules/bmm/docs/glossary.md +8 -8
- package/src/modules/bmm/docs/quick-spec-flow.md +3 -3
- package/src/modules/bmm/docs/quick-start.md +5 -5
- package/src/modules/bmm/docs/scale-adaptive-system.md +1 -1
- package/src/modules/bmm/docs/test-architecture.md +329 -0
- package/src/modules/bmm/docs/troubleshooting.md +6 -6
- package/src/modules/bmm/docs/workflows-analysis.md +64 -28
- package/src/modules/bmm/docs/workflows-implementation.md +196 -1670
- package/src/modules/bmm/docs/workflows-planning.md +74 -35
- package/src/modules/bmm/docs/workflows-solutioning.md +46 -16
- package/src/modules/bmm/workflows/techdoc/documentation-standards.md +24 -1
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
- package/tools/cli/installers/lib/core/config-collector.js +39 -11
- package/tools/cli/installers/lib/core/ide-config-manager.js +3 -1
- package/tools/cli/installers/lib/core/installer.js +20 -9
- package/tools/cli/installers/lib/core/manifest-generator.js +3 -1
- package/tools/cli/installers/lib/core/manifest.js +6 -2
- package/tools/cli/installers/lib/modules/manager.js +6 -0
- package/tools/cli/lib/config.js +3 -1
- package/tools/cli/lib/ui.js +5 -5
- package/tools/cli/lib/yaml-format.js +2 -1
- package/tools/schema/agent.js +2 -0
- package/.claude/commands/bmad/bmm/agents/paige.md +0 -82
- package/.claude/commands/bmad/bmm/workflows/tech-spec-sm.md +0 -15
- package/bmad/_cfg/agents/bmm-paige.customize.yaml +0 -42
- package/bmad/_cfg/agents/cis-brainstorming-coach.customize.yaml +0 -42
- package/bmad/_cfg/agents/cis-creative-problem-solver.customize.yaml +0 -42
- package/bmad/_cfg/agents/cis-design-thinking-coach.customize.yaml +0 -42
- package/bmad/_cfg/agents/cis-innovation-strategist.customize.yaml +0 -42
- package/bmad/_cfg/agents/cis-storyteller.customize.yaml +0 -42
- package/bmad/bmb/agents/bmad-builder.md.bak +0 -70
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -23
- package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -42
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
- package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -40
- package/bmad/bmb/workflows/edit-agent/workflow.yaml.bak +0 -33
- package/bmad/bmb/workflows/edit-module/workflow.yaml.bak +0 -34
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -27
- package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -29
- package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -32
- package/bmad/bmm/README.md.bak +0 -169
- package/bmad/bmm/agents/analyst.md.bak +0 -67
- package/bmad/bmm/agents/architect.md.bak +0 -73
- package/bmad/bmm/agents/dev.md.bak +0 -69
- package/bmad/bmm/agents/paige.md.bak +0 -82
- package/bmad/bmm/agents/pm.md.bak +0 -76
- package/bmad/bmm/agents/sm.md.bak +0 -85
- package/bmad/bmm/agents/tea.md.bak +0 -72
- package/bmad/bmm/agents/ux-designer.md.bak +0 -71
- package/bmad/bmm/docs/README.md +0 -235
- package/bmad/bmm/docs/agents-guide.md +0 -1057
- package/bmad/bmm/docs/brownfield-guide.md +0 -759
- package/bmad/bmm/docs/enterprise-agentic-development.md +0 -680
- package/bmad/bmm/docs/faq.md +0 -589
- package/bmad/bmm/docs/glossary.md +0 -321
- package/bmad/bmm/docs/party-mode.md +0 -224
- package/bmad/bmm/docs/quick-spec-flow.md +0 -652
- package/bmad/bmm/docs/quick-start.md +0 -366
- package/bmad/bmm/docs/scale-adaptive-system.md +0 -599
- package/bmad/bmm/docs/troubleshooting.md +0 -680
- package/bmad/bmm/docs/workflow-architecture-reference.md +0 -371
- package/bmad/bmm/docs/workflow-document-project-reference.md +0 -487
- package/bmad/bmm/docs/workflows-analysis.md +0 -670
- package/bmad/bmm/docs/workflows-implementation.md +0 -1758
- package/bmad/bmm/docs/workflows-planning.md +0 -1086
- package/bmad/bmm/docs/workflows-solutioning.md +0 -726
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml.bak +0 -60
- package/bmad/bmm/workflows/techdoc/documentation-standards.md.bak +0 -238
- package/bmad/bmm/workflows/workflow-status/init/workflow.yaml.bak +0 -27
- package/bmad/cis/README.md +0 -153
- package/bmad/cis/agents/README.md +0 -104
- package/bmad/cis/agents/brainstorming-coach.md +0 -62
- package/bmad/cis/agents/brainstorming-coach.md.bak +0 -62
- package/bmad/cis/agents/creative-problem-solver.md +0 -62
- package/bmad/cis/agents/creative-problem-solver.md.bak +0 -62
- package/bmad/cis/agents/design-thinking-coach.md +0 -62
- package/bmad/cis/agents/design-thinking-coach.md.bak +0 -62
- package/bmad/cis/agents/innovation-strategist.md +0 -62
- package/bmad/cis/agents/innovation-strategist.md.bak +0 -62
- package/bmad/cis/agents/storyteller.md +0 -59
- package/bmad/cis/agents/storyteller.md.bak +0 -59
- package/bmad/cis/config.yaml +0 -10
- package/bmad/cis/teams/creative-squad.yaml +0 -6
- package/bmad/cis/workflows/README.md +0 -139
- package/bmad/cis/workflows/design-thinking/README.md +0 -56
- package/bmad/cis/workflows/design-thinking/design-methods.csv +0 -31
- package/bmad/cis/workflows/design-thinking/instructions.md +0 -200
- package/bmad/cis/workflows/design-thinking/template.md +0 -111
- package/bmad/cis/workflows/design-thinking/workflow.yaml +0 -32
- package/bmad/cis/workflows/innovation-strategy/README.md +0 -56
- package/bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
- package/bmad/cis/workflows/innovation-strategy/instructions.md +0 -274
- package/bmad/cis/workflows/innovation-strategy/template.md +0 -189
- package/bmad/cis/workflows/innovation-strategy/workflow.yaml +0 -32
- package/bmad/cis/workflows/problem-solving/README.md +0 -56
- package/bmad/cis/workflows/problem-solving/instructions.md +0 -250
- package/bmad/cis/workflows/problem-solving/solving-methods.csv +0 -31
- package/bmad/cis/workflows/problem-solving/template.md +0 -165
- package/bmad/cis/workflows/problem-solving/workflow.yaml +0 -32
- package/bmad/cis/workflows/storytelling/README.md +0 -58
- package/bmad/cis/workflows/storytelling/instructions.md +0 -291
- package/bmad/cis/workflows/storytelling/story-types.csv +0 -26
- package/bmad/cis/workflows/storytelling/template.md +0 -113
- package/bmad/cis/workflows/storytelling/workflow.yaml +0 -32
- 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
|
|
14
|
-
|
|
|
15
|
-
| **prd**
|
|
16
|
-
| **
|
|
17
|
-
| **
|
|
18
|
-
| **
|
|
19
|
-
| **
|
|
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 |
|
|
14
|
-
| -------------------------- | -------------- |
|
|
15
|
-
| **architecture** | 2-4 |
|
|
16
|
-
| **solutioning-gate-check** | 3-4 |
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
359
|
-
- Consult
|
|
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
|
-
|
|
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
|
-
|
|
502
|
-
value
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) => {
|
package/tools/cli/lib/config.js
CHANGED
|
@@ -33,7 +33,9 @@ class Config {
|
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
await fs.ensureDir(path.dirname(configPath));
|
|
36
|
-
|
|
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
|
/**
|
package/tools/cli/lib/ui.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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`));
|
package/tools/schema/agent.js
CHANGED
|
@@ -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) => {
|