bmad-method 6.3.1-next.4 → 6.3.1-next.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.3.1-next.4",
4
+ "version": "6.3.1-next.6",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -1,4 +1,4 @@
1
- # Step 8: Scoping Exercise - MVP & Future Features
1
+ # Step 8: Scoping Exercise - Scope Definition (Phased or Single-Release)
2
2
 
3
3
  **Progress: Step 8 of 11** - Next: Functional Requirements
4
4
 
@@ -12,6 +12,8 @@
12
12
  - 📋 YOU ARE A FACILITATOR, not a content generator
13
13
  - 💬 FOCUS on strategic scope decisions that keep projects viable
14
14
  - 🎯 EMPHASIZE lean MVP thinking while preserving long-term vision
15
+ - ⚠️ NEVER de-scope, defer, or phase out requirements that the user explicitly included in their input documents without asking first
16
+ - ⚠️ NEVER invent phasing (MVP/Growth/Vision) unless the user requests phased delivery — if input documents define all components as core requirements, they are ALL in scope
15
17
  - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
16
18
  - ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`
17
19
 
@@ -34,7 +36,7 @@
34
36
 
35
37
  ## YOUR TASK:
36
38
 
37
- Conduct comprehensive scoping exercise to define MVP boundaries and prioritize features across development phases.
39
+ Conduct comprehensive scoping exercise to define release boundaries and prioritize features based on the user's chosen delivery mode (phased or single-release).
38
40
 
39
41
  ## SCOPING SEQUENCE:
40
42
 
@@ -75,30 +77,41 @@ Use structured decision-making for scope:
75
77
  - Advanced functionality that builds on MVP
76
78
  - Ask what features could be added in versions 2, 3, etc.
77
79
 
80
+ **⚠️ SCOPE CHANGE CONFIRMATION GATE:**
81
+ - If you believe any user-specified requirement should be deferred or de-scoped, you MUST present this to the user and get explicit confirmation BEFORE removing it from scope
82
+ - Frame it as a recommendation, not a decision: "I'd recommend deferring X because [reason]. Do you agree, or should it stay in scope?"
83
+ - NEVER silently move user requirements to a later phase or exclude them from MVP
84
+ - Before creating any consequential phase-based artifacts (e.g., phase tags, labels, or follow-on prompts), present artifact creation as a recommendation and proceed only after explicit user approval
85
+
78
86
  ### 4. Progressive Feature Roadmap
79
87
 
80
- Create phased development approach:
81
- - Guide mapping of features across development phases
82
- - Structure as Phase 1 (MVP), Phase 2 (Growth), Phase 3 (Vision)
83
- - Ensure clear progression and dependencies
88
+ **CRITICAL: Phasing is NOT automatic. Check the user's input first.**
89
+
90
+ Before proposing any phased approach, review the user's input documents:
91
+
92
+ - **If the input documents define all components as core requirements with no mention of phases:** Present all requirements as a single release scope. Do NOT invent phases or move requirements to fabricated future phases.
93
+ - **If the input documents explicitly request phased delivery:** Guide mapping of features across the phases the user defined.
94
+ - **If scope is unclear:** ASK the user whether they want phased delivery or a single release before proceeding.
84
95
 
85
- - Core user value delivery
86
- - Essential user journeys
87
- - Basic functionality that works reliably
96
+ **When the user requests phased delivery**, guide mapping of features across the phases the user defines:
88
97
 
89
- **Phase 2: Growth**
98
+ - Use user-provided phase labels and count; if none are provided, propose a default (e.g., MVP/Growth/Vision) and ask for confirmation
99
+ - Ensure clear progression and dependencies between phases
90
100
 
91
- - Additional user types
92
- - Enhanced features
93
- - Scale improvements
101
+ **Each phase should address:**
94
102
 
95
- **Phase 3: Expansion**
103
+ - Core user value delivery and essential journeys for that phase
104
+ - Clear boundaries on what ships in each phase
105
+ - Dependencies on prior phases
96
106
 
97
- - Advanced capabilities
98
- - Platform features
99
- - New markets or use cases
107
+ **When the user chooses a single release**, define the complete scope:
100
108
 
101
- **Where does your current vision fit in this development sequence?**"
109
+ - All user-specified requirements are in scope
110
+ - Focus must-have vs nice-to-have analysis on what ships in this release
111
+ - Do NOT create phases — use must-have/nice-to-have priority within the single release
112
+
113
+ **If phased delivery:** "Where does your current vision fit in this development sequence?"
114
+ **If single release:** "How does your current vision map to this upcoming release?"
102
115
 
103
116
  ### 5. Risk-Based Scoping
104
117
 
@@ -129,6 +142,8 @@ Prepare comprehensive scoping section:
129
142
 
130
143
  #### Content Structure:
131
144
 
145
+ **If user chose phased delivery:**
146
+
132
147
  ```markdown
133
148
  ## Project Scoping & Phased Development
134
149
 
@@ -160,11 +175,39 @@ Prepare comprehensive scoping section:
160
175
  **Resource Risks:** {{contingency_approach}}
161
176
  ```
162
177
 
178
+ **If user chose single release (no phasing):**
179
+
180
+ ```markdown
181
+ ## Project Scoping
182
+
183
+ ### Strategy & Philosophy
184
+
185
+ **Approach:** {{chosen_approach}}
186
+ **Resource Requirements:** {{team_size_and_skills}}
187
+
188
+ ### Complete Feature Set
189
+
190
+ **Core User Journeys Supported:**
191
+ {{all_journeys}}
192
+
193
+ **Must-Have Capabilities:**
194
+ {{list_of_must_have_features}}
195
+
196
+ **Nice-to-Have Capabilities:**
197
+ {{list_of_nice_to_have_features}}
198
+
199
+ ### Risk Mitigation Strategy
200
+
201
+ **Technical Risks:** {{mitigation_approach}}
202
+ **Market Risks:** {{validation_approach}}
203
+ **Resource Risks:** {{contingency_approach}}
204
+ ```
205
+
163
206
  ### 7. Present MENU OPTIONS
164
207
 
165
208
  Present the scoping decisions for review, then display menu:
166
209
  - Show strategic scoping plan (using structure from step 6)
167
- - Highlight MVP boundaries and phased roadmap
210
+ - Highlight release boundaries and prioritization (phased roadmap only if phased delivery was selected)
168
211
  - Ask if they'd like to refine further, get other perspectives, or proceed
169
212
  - Present menu options naturally as part of conversation
170
213
 
@@ -173,7 +216,7 @@ Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Fu
173
216
  #### Menu Handling Logic:
174
217
  - IF A: Invoke the `bmad-advanced-elicitation` skill with the current scoping analysis, process the enhanced insights that come back, ask user if they accept the improvements, if yes update content then redisplay menu, if no keep original content then redisplay menu
175
218
  - IF P: Invoke the `bmad-party-mode` skill with the scoping context, process the collaborative insights on MVP and roadmap decisions, ask user if they accept the changes, if yes update content then redisplay menu, if no keep original content then redisplay menu
176
- - IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-09-functional.md
219
+ - IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array (also add `releaseMode: phased` or `releaseMode: single-release` to frontmatter based on user's choice), then read fully and follow: ./step-09-functional.md
177
220
  - IF Any other: help user respond, then redisplay menu
178
221
 
179
222
  #### EXECUTION RULES:
@@ -189,8 +232,9 @@ When user selects 'C', append the content directly to the document using the str
189
232
 
190
233
  ✅ Complete PRD document analyzed for scope implications
191
234
  ✅ Strategic MVP approach defined and justified
192
- ✅ Clear MVP feature boundaries established
193
- Phased development roadmap created
235
+ ✅ Clear feature boundaries established (phased or single-release, per user preference)
236
+ All user-specified requirements accounted for — none silently removed or deferred
237
+ ✅ Any scope reduction recommendations presented to user with rationale and explicit confirmation obtained
194
238
  ✅ Key risks identified and mitigation strategies defined
195
239
  ✅ User explicitly agrees to scope decisions
196
240
  ✅ A/P/C menu presented and handled correctly
@@ -202,8 +246,11 @@ When user selects 'C', append the content directly to the document using the str
202
246
  ❌ Making scope decisions without strategic rationale
203
247
  ❌ Not getting explicit user agreement on MVP boundaries
204
248
  ❌ Missing critical risk analysis
205
- ❌ Not creating clear phased development approach
206
249
  ❌ Not presenting A/P/C menu after content generation
250
+ ❌ **CRITICAL**: Silently de-scoping or deferring requirements that the user explicitly included in their input documents
251
+ ❌ **CRITICAL**: Inventing phasing (MVP/Growth/Vision) when the user did not request phased delivery
252
+ ❌ **CRITICAL**: Making consequential scoping decisions (what is in/out of scope) without explicit user confirmation
253
+ ❌ **CRITICAL**: Creating phase-based artifacts (tags, labels, follow-on prompts) without explicit user approval
207
254
 
208
255
  ❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
209
256
  ❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file
@@ -138,7 +138,7 @@ Make targeted improvements:
138
138
  - All user success criteria
139
139
  - All functional requirements (capability contract)
140
140
  - All user journey narratives
141
- - All scope decisions (MVP, Growth, Vision)
141
+ - All scope decisions (whether phased or single-release), including consent-critical evidence (explicit user confirmations and rationales for any scope changes from step 8)
142
142
  - All non-functional requirements
143
143
  - Product differentiator and vision
144
144
  - Domain-specific requirements
@@ -1,5 +1,6 @@
1
1
  code: core
2
2
  name: "BMad Core Module"
3
+ description: "Core configuration and shared resources"
3
4
 
4
5
  header: "BMad Core Configuration"
5
6
  subheader: "Configure the core settings for your BMad installation.\nThese settings will be used across all installed bmad skills, workflows, and agents."
@@ -598,7 +598,7 @@ class UI {
598
598
  const officialCodes = new Set(officialSelected);
599
599
  const externalManager = new ExternalModuleManager();
600
600
  const registryModules = await externalManager.listAvailable();
601
- const officialRegistryCodes = new Set(registryModules.map((m) => m.code));
601
+ const officialRegistryCodes = new Set(['core', 'bmm', ...registryModules.map((m) => m.code)]);
602
602
  const installedNonOfficial = [...installedModuleIds].filter((id) => !officialRegistryCodes.has(id));
603
603
 
604
604
  // Phase 2: Community modules (category drill-down)
@@ -630,6 +630,11 @@ class UI {
630
630
  * @returns {Array} Selected official module codes
631
631
  */
632
632
  async _selectOfficialModules(installedModuleIds = new Set()) {
633
+ // Built-in modules (core, bmm) come from local source, not the registry
634
+ const { OfficialModules } = require('./modules/official-modules');
635
+ const builtInModules = (await new OfficialModules().listAvailable()).modules || [];
636
+
637
+ // External modules come from the registry (with fallback)
633
638
  const externalManager = new ExternalModuleManager();
634
639
  const registryModules = await externalManager.listAvailable();
635
640
 
@@ -637,20 +642,34 @@ class UI {
637
642
  const initialValues = [];
638
643
  const lockedValues = ['core'];
639
644
 
640
- const buildModuleEntry = async (mod) => {
641
- const isInstalled = installedModuleIds.has(mod.code);
642
- const version = await getMarketplaceVersion(mod.code);
643
- const label = version ? `${mod.name} (v${version})` : mod.name;
645
+ const buildModuleEntry = async (code, name, description, isDefault) => {
646
+ const isInstalled = installedModuleIds.has(code);
647
+ const version = await getMarketplaceVersion(code);
648
+ const label = version ? `${name} (v${version})` : name;
644
649
  return {
645
650
  label,
646
- value: mod.code,
647
- hint: mod.description,
648
- selected: isInstalled,
651
+ value: code,
652
+ hint: description,
653
+ selected: isInstalled || isDefault,
649
654
  };
650
655
  };
651
656
 
657
+ // Add built-in modules first (always available regardless of network)
658
+ const builtInCodes = new Set();
659
+ for (const mod of builtInModules) {
660
+ const code = mod.id;
661
+ builtInCodes.add(code);
662
+ const entry = await buildModuleEntry(code, mod.name, mod.description, mod.defaultSelected);
663
+ allOptions.push({ label: entry.label, value: entry.value, hint: entry.hint });
664
+ if (entry.selected) {
665
+ initialValues.push(code);
666
+ }
667
+ }
668
+
669
+ // Add external registry modules (skip built-in duplicates)
652
670
  for (const mod of registryModules) {
653
- const entry = await buildModuleEntry(mod);
671
+ if (mod.builtIn || builtInCodes.has(mod.code)) continue;
672
+ const entry = await buildModuleEntry(mod.code, mod.name, mod.description, mod.defaultSelected);
654
673
  allOptions.push({ label: entry.label, value: entry.value, hint: entry.hint });
655
674
  if (entry.selected) {
656
675
  initialValues.push(mod.code);
@@ -1122,12 +1141,26 @@ class UI {
1122
1141
  * @returns {Array} Default module codes
1123
1142
  */
1124
1143
  async getDefaultModules(installedModuleIds = new Set()) {
1125
- const externalManager = new ExternalModuleManager();
1126
- const registryModules = await externalManager.listAvailable();
1144
+ // Built-in modules with default_selected come from local source
1145
+ const { OfficialModules } = require('./modules/official-modules');
1146
+ const builtInModules = (await new OfficialModules().listAvailable()).modules || [];
1127
1147
 
1128
1148
  const defaultModules = [];
1149
+ const seen = new Set();
1150
+
1151
+ for (const mod of builtInModules) {
1152
+ if (mod.defaultSelected || installedModuleIds.has(mod.id)) {
1153
+ defaultModules.push(mod.id);
1154
+ seen.add(mod.id);
1155
+ }
1156
+ }
1157
+
1158
+ // Add external registry defaults
1159
+ const externalManager = new ExternalModuleManager();
1160
+ const registryModules = await externalManager.listAvailable();
1129
1161
 
1130
1162
  for (const mod of registryModules) {
1163
+ if (mod.builtIn || seen.has(mod.code)) continue;
1131
1164
  if (mod.defaultSelected || installedModuleIds.has(mod.code)) {
1132
1165
  defaultModules.push(mod.code);
1133
1166
  }