bmad-method 4.10.3 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,6 +24,7 @@
24
24
  "Immer",
25
25
  "implementability",
26
26
  "Inclusivity",
27
+ "kayvan",
27
28
  "Luxon",
28
29
  "MERN",
29
30
  "mgmt",
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [4.12.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.11.0...v4.12.0) (2025-06-23)
2
+
3
+
4
+ ### Features
5
+
6
+ * **dev-agent:** add quality gates to prevent task completion with failing validations ([#261](https://github.com/bmadcode/BMAD-METHOD/issues/261)) ([45110ff](https://github.com/bmadcode/BMAD-METHOD/commit/45110ffffe6d29cc08e227e22a901892185dfbd2))
7
+
8
+ # [4.11.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.10.3...v4.11.0) (2025-06-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * resolve web bundles directory path when using relative paths in NPX installer ([5c8485d](https://github.com/bmadcode/BMAD-METHOD/commit/5c8485d09ffec60ad4965ced62f4595890cb7535))
14
+
15
+
16
+ ### Features
17
+
18
+ * add markdown-tree integration for document sharding ([540578b](https://github.com/bmadcode/BMAD-METHOD/commit/540578b39d1815e41e11f0e87545de3f09ee54e1))
19
+
1
20
  ## [4.10.3](https://github.com/bmadcode/BMAD-METHOD/compare/v4.10.2...v4.10.3) (2025-06-20)
2
21
 
3
22
 
@@ -32,6 +32,7 @@ core_principles:
32
32
  - CRITICAL: Dev Record Only - ONLY update story file Dev Agent Record sections (checkboxes/Debug Log/Completion Notes/Change Log)
33
33
  - Strive for Sequential Task Execution - Complete tasks 1-by-1 and mark [x] as completed
34
34
  - Test-Driven Quality - Write tests alongside code. Task incomplete without passing tests
35
+ - Quality Gate Discipline - NEVER complete tasks with failing automated validations
35
36
  - Debug Log Discipline - Log temp changes to md table in devDebugLog. Revert after fix.
36
37
  - Block Only When Critical - HALT for: missing approval/ambiguous reqs/3 failures/missing config
37
38
  - Code Excellence - Clean, secure, maintainable code per loaded standards
@@ -45,15 +46,15 @@ commands: # All commands require * prefix when used (e.g., *help)
45
46
  - exit: Say goodbye as the Developer, and then abandon inhabiting this persona
46
47
 
47
48
  task-execution:
48
- flow: "Read task→Implement→Write tests→Pass tests→Update [x]→Next task"
49
+ flow: "Read task→Implement→Write tests→Execute validationsOnly if ALL pass→Update [x]→Next task"
49
50
  updates-ONLY:
50
51
  - "Checkboxes: [ ] not started | [-] in progress | [x] complete"
51
52
  - "Debug Log: | Task | File | Change | Reverted? |"
52
53
  - "Completion Notes: Deviations only, <50 words"
53
54
  - "Change Log: Requirement changes only"
54
- blocking: "Unapproved deps | Ambiguous after story check | 3 failures | Missing config"
55
- done: "Code matches reqs + Tests pass + Follows standards + No lint errors"
56
- completion: "All [x]→LintTests(100%)→Integration(if noted)→Coverage(80%+)→E2E(if noted)→DoD→Summary→HALT"
55
+ blocking: "Unapproved deps | Ambiguous after story check | 3 failures | Missing config | Failing validations"
56
+ done: "Code matches reqs + All validations pass + Follows standards"
57
+ completion: "All [x]→Validations pass→Integration(if noted)→E2E(if noted)→DoD→Summary→HALT"
57
58
 
58
59
  dependencies:
59
60
  tasks:
@@ -1,26 +1,20 @@
1
- core-project-information:
2
- dev-story-location: docs/stories # alternate could be .ai/stories if preferred for example
3
- prd:
4
- prd-file: docs/prd.md
5
- prdVersion: v4
6
- prdSharded: true
7
- prdShardedLocation: docs/prd
8
- epicFilePattern: epic-{n}*.md
9
- architecture:
10
- architecture-file: docs/architecture.md
11
- architectureVersion: v4
12
- architectureSharded: true
13
- architectureShardedLocation: docs/architecture
14
- # if you have a front-end architecture document, uncomment the following and validate the file path
15
- # front-end-architecture:
16
- # front-end-architecture-file: docs/front-end-architecture.md
17
- # architectureVersion: v4
18
- # architectureSharded: true
19
- # architectureShardedLocation: docs/architecture
20
- customTechnicalDocuments: null # list other documents only if you want the SM to read them when creating stories
21
- devLoadAlwaysFiles:
22
- - docs/architecture/coding-standards.md
23
- - docs/architecture/tech-stack.md
24
- - docs/architecture/project-structure.md
25
- devDebugLog: .ai/debug-log.md
26
- agentCoreDump: .ai/core-dump{n}.md
1
+ markdownExploder: true
2
+ prd:
3
+ prdFile: docs/prd.md
4
+ prdVersion: v4
5
+ prdSharded: true
6
+ prdShardedLocation: docs/prd
7
+ epicFilePattern: epic-{n}*.md
8
+ architecture:
9
+ architectureFile: docs/architecture.md
10
+ architectureVersion: v4
11
+ architectureSharded: true
12
+ architectureShardedLocation: docs/architecture
13
+ customTechnicalDocuments: null
14
+ devLoadAlwaysFiles:
15
+ - docs/architecture/coding-standards.md
16
+ - docs/architecture/tech-stack.md
17
+ - docs/architecture/source-tree.md
18
+ devDebugLog: .ai/debug-log.md
19
+ devStoryLocation: docs/stories
20
+ agentCoreDump: .ai/core-dump{n}.md
@@ -17,14 +17,14 @@ To identify the next logical story based on project progress and epic definition
17
17
  2. Run the BMAD installer against your project to upgrade and add the file automatically
18
18
  Please add and configure core-config.yml before proceeding."
19
19
  - Extract the following key configurations:
20
- - `dev-story-location`: Where to save story files
20
+ - `devStoryLocation`: Where to save story files
21
21
  - `prd.prdSharded`: Whether PRD is sharded or monolithic
22
- - `prd.prd-file`: Location of monolithic PRD (if not sharded)
22
+ - `prd.prdFile`: Location of monolithic PRD (if not sharded)
23
23
  - `prd.prdShardedLocation`: Location of sharded epic files
24
24
  - `prd.epicFilePattern`: Pattern for epic files (e.g., `epic-{n}*.md`)
25
25
  - `architecture.architectureVersion`: Architecture document version
26
26
  - `architecture.architectureSharded`: Whether architecture is sharded
27
- - `architecture.architecture-file`: Location of monolithic architecture
27
+ - `architecture.architectureFile`: Location of monolithic architecture
28
28
  - `architecture.architectureShardedLocation`: Location of sharded architecture files
29
29
 
30
30
  ### 1. Identify Next Story for Preparation
@@ -33,11 +33,11 @@ To identify the next logical story based on project progress and epic definition
33
33
 
34
34
  - Based on `prdSharded` from config:
35
35
  - **If `prdSharded: true`**: Look for epic files in `prdShardedLocation` using `epicFilePattern`
36
- - **If `prdSharded: false`**: Load the full PRD from `prd-file` and extract epics from section headings (## Epic N or ### Epic N)
36
+ - **If `prdSharded: false`**: Load the full PRD from `prdFile` and extract epics from section headings (## Epic N or ### Epic N)
37
37
 
38
38
  #### 1.2 Review Existing Stories
39
39
 
40
- - Check `dev-story-location` from config (e.g., `docs/stories/`) for existing story files
40
+ - Check `devStoryLocation` from config (e.g., `docs/stories/`) for existing story files
41
41
  - If the directory exists and has at least 1 file, find the highest-numbered story file.
42
42
  - **If a highest story file exists (`{lastEpicNum}.{lastStoryNum}.story.md`):**
43
43
  - Verify its `Status` is 'Done' (or equivalent).
@@ -126,13 +126,13 @@ Based on configuration loaded in Step 0:
126
126
  - Follow the structured reading order in section 4.2 below
127
127
 
128
128
  - **If `architectureVersion: v4` and `architectureSharded: false`**:
129
- - Load the monolithic architecture from `architecture-file`
129
+ - Load the monolithic architecture from `architectureFile`
130
130
  - Extract relevant sections based on v4 structure (tech stack, project structure, etc.)
131
131
 
132
132
  - **If `architectureVersion` is NOT v4**:
133
133
  - Inform user: "Architecture document is not v4 format. Will use best judgment to find relevant information."
134
134
  - If `architectureSharded: true`: Search sharded files by filename relevance
135
- - If `architectureSharded: false`: Search within monolithic `architecture-file` for relevant sections
135
+ - If `architectureSharded: false`: Search within monolithic `architectureFile` for relevant sections
136
136
 
137
137
  #### 4.2 Recommended Reading Order Based on Story Type (v4 Sharded Only)
138
138
 
@@ -189,7 +189,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
189
189
 
190
190
  ### 6. Populate Story Template with Full Context
191
191
 
192
- - Create a new story file: `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config).
192
+ - Create a new story file: `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config).
193
193
  - Use the Story Template to structure the file.
194
194
  - Fill in:
195
195
  - Story `{EpicNum}.{StoryNum}: {Short Title Copied from Epic File}`
@@ -236,7 +236,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
236
236
  - Verify all source references are included for technical details
237
237
  - Ensure tasks align with both epic requirements and architecture constraints
238
238
  - Update status to "Draft"
239
- - Save the story file to `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config)
239
+ - Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
240
240
 
241
241
  ### 9. Report Completion
242
242
 
@@ -6,9 +6,27 @@
6
6
  - Create a folder structure to organize the sharded documents
7
7
  - Maintain all content integrity including code blocks, diagrams, and markdown formatting
8
8
 
9
- ## Recommended Method: @kayvan/markdown-tree-parser
9
+ ## Primary Method: Automatic with markdown-tree
10
10
 
11
- [[LLM: First, suggest the user install and use the @kayvan/markdown-tree-parser tool if the md-tree command is unavailable so we can have the best performance and reliable document sharding. Let the user know this will save cost of having the LLM to the expensive sharding operation. Give instructions for MPV NPX and PNPM global installs.]]
11
+ [[LLM: First, check if markdownExploder is set to true in bmad-core/core-config.yml. If it is, attempt to run the command: `md-tree explode {input file} {output path}`.
12
+
13
+ If the command succeeds, inform the user that the document has been sharded successfully and STOP - do not proceed further.
14
+
15
+ If the command fails (especially with an error indicating the command is not found or not available), inform the user: "The markdownExploder setting is enabled but the md-tree command is not available. Please either:
16
+
17
+ 1. Install @kayvan/markdown-tree-parser globally with: `npm install -g @kayvan/markdown-tree-parser`
18
+ 2. Or set markdownExploder to false in bmad-core/core-config.yml
19
+
20
+ **IMPORTANT: STOP HERE - do not proceed with manual sharding until one of the above actions is taken.**"
21
+
22
+ If markdownExploder is set to false, inform the user: "The markdownExploder setting is currently false. For better performance and reliability, you should:
23
+
24
+ 1. Set markdownExploder to true in bmad-core/core-config.yml
25
+ 2. Install @kayvan/markdown-tree-parser globally with: `npm install -g @kayvan/markdown-tree-parser`
26
+
27
+ I will now proceed with the manual sharding process."
28
+
29
+ Then proceed with the manual method below ONLY if markdownExploder is false.]]
12
30
 
13
31
  ### Installation and Usage
14
32
 
@@ -41,19 +59,19 @@ If the user has @kayvan/markdown-tree-parser installed, use it and skip the manu
41
59
 
42
60
  ---
43
61
 
44
- ## Manual Method (if @kayvan/markdown-tree-parser is not available)
62
+ ## Manual Method (if @kayvan/markdown-tree-parser is not available or user indicated manual method)
45
63
 
46
64
  [[LLM: Only proceed with the manual instructions below if the user cannot or does not want to use @kayvan/markdown-tree-parser.]]
47
65
 
48
66
  ### Task Instructions
49
67
 
50
- ### 1. Identify Document and Target Location
68
+ 1. Identify Document and Target Location
51
69
 
52
70
  - Determine which document to shard (user-provided path)
53
71
  - Create a new folder under `docs/` with the same name as the document (without extension)
54
72
  - Example: `docs/prd.md` → create folder `docs/prd/`
55
73
 
56
- ### 2. Parse and Extract Sections
74
+ 2. Parse and Extract Sections
57
75
 
58
76
  [[LLM: When sharding the document:
59
77
 
@@ -63,7 +81,7 @@ If the user has @kayvan/markdown-tree-parser installed, use it and skip the manu
63
81
  - Extract the section heading and ALL content until the next level 2 section
64
82
  - Include all subsections, code blocks, diagrams, lists, tables, etc.
65
83
  - Be extremely careful with:
66
- - Fenced code blocks (```) - ensure you capture the full block including closing backticks
84
+ - Fenced code blocks (```) - ensure you capture the full block including closing backticks and account for potential misleading level 2's that are actually part of a fenced section example
67
85
  - Mermaid diagrams - preserve the complete diagram syntax
68
86
  - Nested markdown elements
69
87
  - Multi-line content that might contain ## inside code blocks
@@ -82,7 +100,7 @@ For each extracted section:
82
100
 
83
101
  2. **Adjust heading levels**:
84
102
 
85
- - The level 2 heading becomes level 1 (# instead of ##)
103
+ - The level 2 heading becomes level 1 (# instead of ##) in the sharded new document
86
104
  - All subsection levels decrease by 1:
87
105
 
88
106
  ```txt
@@ -1734,14 +1734,14 @@ To identify the next logical story based on project progress and epic definition
1734
1734
  2. Run the BMAD installer against your project to upgrade and add the file automatically
1735
1735
  Please add and configure core-config.yml before proceeding."
1736
1736
  - Extract the following key configurations:
1737
- - `dev-story-location`: Where to save story files
1737
+ - `devStoryLocation`: Where to save story files
1738
1738
  - `prd.prdSharded`: Whether PRD is sharded or monolithic
1739
- - `prd.prd-file`: Location of monolithic PRD (if not sharded)
1739
+ - `prd.prdFile`: Location of monolithic PRD (if not sharded)
1740
1740
  - `prd.prdShardedLocation`: Location of sharded epic files
1741
1741
  - `prd.epicFilePattern`: Pattern for epic files (e.g., `epic-{n}*.md`)
1742
1742
  - `architecture.architectureVersion`: Architecture document version
1743
1743
  - `architecture.architectureSharded`: Whether architecture is sharded
1744
- - `architecture.architecture-file`: Location of monolithic architecture
1744
+ - `architecture.architectureFile`: Location of monolithic architecture
1745
1745
  - `architecture.architectureShardedLocation`: Location of sharded architecture files
1746
1746
 
1747
1747
  ### 1. Identify Next Story for Preparation
@@ -1750,11 +1750,11 @@ To identify the next logical story based on project progress and epic definition
1750
1750
 
1751
1751
  - Based on `prdSharded` from config:
1752
1752
  - **If `prdSharded: true`**: Look for epic files in `prdShardedLocation` using `epicFilePattern`
1753
- - **If `prdSharded: false`**: Load the full PRD from `prd-file` and extract epics from section headings (## Epic N or ### Epic N)
1753
+ - **If `prdSharded: false`**: Load the full PRD from `prdFile` and extract epics from section headings (## Epic N or ### Epic N)
1754
1754
 
1755
1755
  #### 1.2 Review Existing Stories
1756
1756
 
1757
- - Check `dev-story-location` from config (e.g., `docs/stories/`) for existing story files
1757
+ - Check `devStoryLocation` from config (e.g., `docs/stories/`) for existing story files
1758
1758
  - If the directory exists and has at least 1 file, find the highest-numbered story file.
1759
1759
  - **If a highest story file exists (`{lastEpicNum}.{lastStoryNum}.story.md`):**
1760
1760
  - Verify its `Status` is 'Done' (or equivalent).
@@ -1843,13 +1843,13 @@ Based on configuration loaded in Step 0:
1843
1843
  - Follow the structured reading order in section 4.2 below
1844
1844
 
1845
1845
  - **If `architectureVersion: v4` and `architectureSharded: false`**:
1846
- - Load the monolithic architecture from `architecture-file`
1846
+ - Load the monolithic architecture from `architectureFile`
1847
1847
  - Extract relevant sections based on v4 structure (tech stack, project structure, etc.)
1848
1848
 
1849
1849
  - **If `architectureVersion` is NOT v4**:
1850
1850
  - Inform user: "Architecture document is not v4 format. Will use best judgment to find relevant information."
1851
1851
  - If `architectureSharded: true`: Search sharded files by filename relevance
1852
- - If `architectureSharded: false`: Search within monolithic `architecture-file` for relevant sections
1852
+ - If `architectureSharded: false`: Search within monolithic `architectureFile` for relevant sections
1853
1853
 
1854
1854
  #### 4.2 Recommended Reading Order Based on Story Type (v4 Sharded Only)
1855
1855
 
@@ -1906,7 +1906,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
1906
1906
 
1907
1907
  ### 6. Populate Story Template with Full Context
1908
1908
 
1909
- - Create a new story file: `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config).
1909
+ - Create a new story file: `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config).
1910
1910
  - Use the Story Template to structure the file.
1911
1911
  - Fill in:
1912
1912
  - Story `{EpicNum}.{StoryNum}: {Short Title Copied from Epic File}`
@@ -1953,7 +1953,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
1953
1953
  - Verify all source references are included for technical details
1954
1954
  - Ensure tasks align with both epic requirements and architecture constraints
1955
1955
  - Update status to "Draft"
1956
- - Save the story file to `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config)
1956
+ - Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
1957
1957
 
1958
1958
  ### 9. Report Completion
1959
1959
 
@@ -109,14 +109,14 @@ To identify the next logical story based on project progress and epic definition
109
109
  2. Run the BMAD installer against your project to upgrade and add the file automatically
110
110
  Please add and configure core-config.yml before proceeding."
111
111
  - Extract the following key configurations:
112
- - `dev-story-location`: Where to save story files
112
+ - `devStoryLocation`: Where to save story files
113
113
  - `prd.prdSharded`: Whether PRD is sharded or monolithic
114
- - `prd.prd-file`: Location of monolithic PRD (if not sharded)
114
+ - `prd.prdFile`: Location of monolithic PRD (if not sharded)
115
115
  - `prd.prdShardedLocation`: Location of sharded epic files
116
116
  - `prd.epicFilePattern`: Pattern for epic files (e.g., `epic-{n}*.md`)
117
117
  - `architecture.architectureVersion`: Architecture document version
118
118
  - `architecture.architectureSharded`: Whether architecture is sharded
119
- - `architecture.architecture-file`: Location of monolithic architecture
119
+ - `architecture.architectureFile`: Location of monolithic architecture
120
120
  - `architecture.architectureShardedLocation`: Location of sharded architecture files
121
121
 
122
122
  ### 1. Identify Next Story for Preparation
@@ -125,11 +125,11 @@ To identify the next logical story based on project progress and epic definition
125
125
 
126
126
  - Based on `prdSharded` from config:
127
127
  - **If `prdSharded: true`**: Look for epic files in `prdShardedLocation` using `epicFilePattern`
128
- - **If `prdSharded: false`**: Load the full PRD from `prd-file` and extract epics from section headings (## Epic N or ### Epic N)
128
+ - **If `prdSharded: false`**: Load the full PRD from `prdFile` and extract epics from section headings (## Epic N or ### Epic N)
129
129
 
130
130
  #### 1.2 Review Existing Stories
131
131
 
132
- - Check `dev-story-location` from config (e.g., `docs/stories/`) for existing story files
132
+ - Check `devStoryLocation` from config (e.g., `docs/stories/`) for existing story files
133
133
  - If the directory exists and has at least 1 file, find the highest-numbered story file.
134
134
  - **If a highest story file exists (`{lastEpicNum}.{lastStoryNum}.story.md`):**
135
135
  - Verify its `Status` is 'Done' (or equivalent).
@@ -218,13 +218,13 @@ Based on configuration loaded in Step 0:
218
218
  - Follow the structured reading order in section 4.2 below
219
219
 
220
220
  - **If `architectureVersion: v4` and `architectureSharded: false`**:
221
- - Load the monolithic architecture from `architecture-file`
221
+ - Load the monolithic architecture from `architectureFile`
222
222
  - Extract relevant sections based on v4 structure (tech stack, project structure, etc.)
223
223
 
224
224
  - **If `architectureVersion` is NOT v4**:
225
225
  - Inform user: "Architecture document is not v4 format. Will use best judgment to find relevant information."
226
226
  - If `architectureSharded: true`: Search sharded files by filename relevance
227
- - If `architectureSharded: false`: Search within monolithic `architecture-file` for relevant sections
227
+ - If `architectureSharded: false`: Search within monolithic `architectureFile` for relevant sections
228
228
 
229
229
  #### 4.2 Recommended Reading Order Based on Story Type (v4 Sharded Only)
230
230
 
@@ -281,7 +281,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
281
281
 
282
282
  ### 6. Populate Story Template with Full Context
283
283
 
284
- - Create a new story file: `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config).
284
+ - Create a new story file: `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config).
285
285
  - Use the Story Template to structure the file.
286
286
  - Fill in:
287
287
  - Story `{EpicNum}.{StoryNum}: {Short Title Copied from Epic File}`
@@ -328,7 +328,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
328
328
  - Verify all source references are included for technical details
329
329
  - Ensure tasks align with both epic requirements and architecture constraints
330
330
  - Update status to "Draft"
331
- - Save the story file to `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config)
331
+ - Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
332
332
 
333
333
  ### 9. Report Completion
334
334
 
@@ -8656,14 +8656,14 @@ To identify the next logical story based on project progress and epic definition
8656
8656
  2. Run the BMAD installer against your project to upgrade and add the file automatically
8657
8657
  Please add and configure core-config.yml before proceeding."
8658
8658
  - Extract the following key configurations:
8659
- - `dev-story-location`: Where to save story files
8659
+ - `devStoryLocation`: Where to save story files
8660
8660
  - `prd.prdSharded`: Whether PRD is sharded or monolithic
8661
- - `prd.prd-file`: Location of monolithic PRD (if not sharded)
8661
+ - `prd.prdFile`: Location of monolithic PRD (if not sharded)
8662
8662
  - `prd.prdShardedLocation`: Location of sharded epic files
8663
8663
  - `prd.epicFilePattern`: Pattern for epic files (e.g., `epic-{n}*.md`)
8664
8664
  - `architecture.architectureVersion`: Architecture document version
8665
8665
  - `architecture.architectureSharded`: Whether architecture is sharded
8666
- - `architecture.architecture-file`: Location of monolithic architecture
8666
+ - `architecture.architectureFile`: Location of monolithic architecture
8667
8667
  - `architecture.architectureShardedLocation`: Location of sharded architecture files
8668
8668
 
8669
8669
  ### 1. Identify Next Story for Preparation
@@ -8672,11 +8672,11 @@ To identify the next logical story based on project progress and epic definition
8672
8672
 
8673
8673
  - Based on `prdSharded` from config:
8674
8674
  - **If `prdSharded: true`**: Look for epic files in `prdShardedLocation` using `epicFilePattern`
8675
- - **If `prdSharded: false`**: Load the full PRD from `prd-file` and extract epics from section headings (## Epic N or ### Epic N)
8675
+ - **If `prdSharded: false`**: Load the full PRD from `prdFile` and extract epics from section headings (## Epic N or ### Epic N)
8676
8676
 
8677
8677
  #### 1.2 Review Existing Stories
8678
8678
 
8679
- - Check `dev-story-location` from config (e.g., `docs/stories/`) for existing story files
8679
+ - Check `devStoryLocation` from config (e.g., `docs/stories/`) for existing story files
8680
8680
  - If the directory exists and has at least 1 file, find the highest-numbered story file.
8681
8681
  - **If a highest story file exists (`{lastEpicNum}.{lastStoryNum}.story.md`):**
8682
8682
  - Verify its `Status` is 'Done' (or equivalent).
@@ -8765,13 +8765,13 @@ Based on configuration loaded in Step 0:
8765
8765
  - Follow the structured reading order in section 4.2 below
8766
8766
 
8767
8767
  - **If `architectureVersion: v4` and `architectureSharded: false`**:
8768
- - Load the monolithic architecture from `architecture-file`
8768
+ - Load the monolithic architecture from `architectureFile`
8769
8769
  - Extract relevant sections based on v4 structure (tech stack, project structure, etc.)
8770
8770
 
8771
8771
  - **If `architectureVersion` is NOT v4**:
8772
8772
  - Inform user: "Architecture document is not v4 format. Will use best judgment to find relevant information."
8773
8773
  - If `architectureSharded: true`: Search sharded files by filename relevance
8774
- - If `architectureSharded: false`: Search within monolithic `architecture-file` for relevant sections
8774
+ - If `architectureSharded: false`: Search within monolithic `architectureFile` for relevant sections
8775
8775
 
8776
8776
  #### 4.2 Recommended Reading Order Based on Story Type (v4 Sharded Only)
8777
8777
 
@@ -8828,7 +8828,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
8828
8828
 
8829
8829
  ### 6. Populate Story Template with Full Context
8830
8830
 
8831
- - Create a new story file: `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config).
8831
+ - Create a new story file: `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config).
8832
8832
  - Use the Story Template to structure the file.
8833
8833
  - Fill in:
8834
8834
  - Story `{EpicNum}.{StoryNum}: {Short Title Copied from Epic File}`
@@ -8875,7 +8875,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
8875
8875
  - Verify all source references are included for technical details
8876
8876
  - Ensure tasks align with both epic requirements and architecture constraints
8877
8877
  - Update status to "Draft"
8878
- - Save the story file to `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config)
8878
+ - Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
8879
8879
 
8880
8880
  ### 9. Report Completion
8881
8881
 
@@ -2763,14 +2763,14 @@ To identify the next logical story based on project progress and epic definition
2763
2763
  2. Run the BMAD installer against your project to upgrade and add the file automatically
2764
2764
  Please add and configure core-config.yml before proceeding."
2765
2765
  - Extract the following key configurations:
2766
- - `dev-story-location`: Where to save story files
2766
+ - `devStoryLocation`: Where to save story files
2767
2767
  - `prd.prdSharded`: Whether PRD is sharded or monolithic
2768
- - `prd.prd-file`: Location of monolithic PRD (if not sharded)
2768
+ - `prd.prdFile`: Location of monolithic PRD (if not sharded)
2769
2769
  - `prd.prdShardedLocation`: Location of sharded epic files
2770
2770
  - `prd.epicFilePattern`: Pattern for epic files (e.g., `epic-{n}*.md`)
2771
2771
  - `architecture.architectureVersion`: Architecture document version
2772
2772
  - `architecture.architectureSharded`: Whether architecture is sharded
2773
- - `architecture.architecture-file`: Location of monolithic architecture
2773
+ - `architecture.architectureFile`: Location of monolithic architecture
2774
2774
  - `architecture.architectureShardedLocation`: Location of sharded architecture files
2775
2775
 
2776
2776
  ### 1. Identify Next Story for Preparation
@@ -2779,11 +2779,11 @@ To identify the next logical story based on project progress and epic definition
2779
2779
 
2780
2780
  - Based on `prdSharded` from config:
2781
2781
  - **If `prdSharded: true`**: Look for epic files in `prdShardedLocation` using `epicFilePattern`
2782
- - **If `prdSharded: false`**: Load the full PRD from `prd-file` and extract epics from section headings (## Epic N or ### Epic N)
2782
+ - **If `prdSharded: false`**: Load the full PRD from `prdFile` and extract epics from section headings (## Epic N or ### Epic N)
2783
2783
 
2784
2784
  #### 1.2 Review Existing Stories
2785
2785
 
2786
- - Check `dev-story-location` from config (e.g., `docs/stories/`) for existing story files
2786
+ - Check `devStoryLocation` from config (e.g., `docs/stories/`) for existing story files
2787
2787
  - If the directory exists and has at least 1 file, find the highest-numbered story file.
2788
2788
  - **If a highest story file exists (`{lastEpicNum}.{lastStoryNum}.story.md`):**
2789
2789
  - Verify its `Status` is 'Done' (or equivalent).
@@ -2872,13 +2872,13 @@ Based on configuration loaded in Step 0:
2872
2872
  - Follow the structured reading order in section 4.2 below
2873
2873
 
2874
2874
  - **If `architectureVersion: v4` and `architectureSharded: false`**:
2875
- - Load the monolithic architecture from `architecture-file`
2875
+ - Load the monolithic architecture from `architectureFile`
2876
2876
  - Extract relevant sections based on v4 structure (tech stack, project structure, etc.)
2877
2877
 
2878
2878
  - **If `architectureVersion` is NOT v4**:
2879
2879
  - Inform user: "Architecture document is not v4 format. Will use best judgment to find relevant information."
2880
2880
  - If `architectureSharded: true`: Search sharded files by filename relevance
2881
- - If `architectureSharded: false`: Search within monolithic `architecture-file` for relevant sections
2881
+ - If `architectureSharded: false`: Search within monolithic `architectureFile` for relevant sections
2882
2882
 
2883
2883
  #### 4.2 Recommended Reading Order Based on Story Type (v4 Sharded Only)
2884
2884
 
@@ -2935,7 +2935,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
2935
2935
 
2936
2936
  ### 6. Populate Story Template with Full Context
2937
2937
 
2938
- - Create a new story file: `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config).
2938
+ - Create a new story file: `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config).
2939
2939
  - Use the Story Template to structure the file.
2940
2940
  - Fill in:
2941
2941
  - Story `{EpicNum}.{StoryNum}: {Short Title Copied from Epic File}`
@@ -2982,7 +2982,7 @@ Format references as: `[Source: architecture/{filename}.md#{section}]`
2982
2982
  - Verify all source references are included for technical details
2983
2983
  - Ensure tasks align with both epic requirements and architecture constraints
2984
2984
  - Update status to "Draft"
2985
- - Save the story file to `{dev-story-location}/{epicNum}.{storyNum}.story.md` (using location from config)
2985
+ - Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
2986
2986
 
2987
2987
  ### 9. Report Completion
2988
2988
 
@@ -895,18 +895,18 @@ This configuration file acts as a map for BMAD agents, telling them exactly wher
895
895
  #### Configuration Structure
896
896
 
897
897
  ```yaml
898
- core-project-information:
899
- dev-story-location: docs/stories # Where completed stories are saved
898
+ coreProjectLocation:
899
+ devStoryLocation: docs/stories # Where completed stories are saved
900
900
 
901
901
  prd:
902
- prd-file: docs/prd.md
902
+ prdFile: docs/prd.md
903
903
  prdVersion: v4 # v3 or v4
904
904
  prdSharded: true # false if epics are embedded in PRD
905
905
  prdShardedLocation: docs/prd # Where sharded epics live
906
906
  epicFilePattern: epic-{n}*.md # Pattern for epic files
907
907
 
908
908
  architecture:
909
- architecture-file: docs/architecture.md
909
+ architectureFile: docs/architecture.md
910
910
  architectureVersion: v4 # v3 or v4
911
911
  architectureSharded: true # false if monolithic
912
912
  architectureShardedLocation: docs/architecture
@@ -932,7 +932,7 @@ The Scrum Master agent uses these settings to locate epics:
932
932
 
933
933
  ```yaml
934
934
  prd:
935
- prd-file: docs/prd.md
935
+ prdFile: docs/prd.md
936
936
  prdVersion: v4
937
937
  prdSharded: true
938
938
  prdShardedLocation: docs/prd
@@ -943,7 +943,7 @@ prd:
943
943
 
944
944
  ```yaml
945
945
  prd:
946
- prd-file: docs/prd.md
946
+ prdFile: docs/prd.md
947
947
  prdVersion: v3
948
948
  prdSharded: false # Epics are inside PRD
949
949
  ```
@@ -952,7 +952,7 @@ prd:
952
952
 
953
953
  ```yaml
954
954
  prd:
955
- prd-file: docs/product-requirements.md
955
+ prdFile: docs/product-requirements.md
956
956
  prdVersion: v4
957
957
  prdSharded: true
958
958
  prdShardedLocation: docs # Epics in docs/ not docs/prd/
@@ -967,7 +967,7 @@ Similar flexibility for architecture documents:
967
967
 
968
968
  ```yaml
969
969
  architecture:
970
- architecture-file: docs/architecture.md
970
+ architectureFile: docs/architecture.md
971
971
  architectureVersion: v4
972
972
  architectureSharded: true
973
973
  architectureShardedLocation: docs/architecture
@@ -977,7 +977,7 @@ architecture:
977
977
 
978
978
  ```yaml
979
979
  architecture:
980
- architecture-file: docs/technical-architecture.md
980
+ architectureFile: docs/technical-architecture.md
981
981
  architectureVersion: v3
982
982
  architectureSharded: false # All in one file
983
983
  ```
@@ -1021,14 +1021,14 @@ Export entire chat conversations for preservation or analysis. The `{n}` is repl
1021
1021
  ##### Legacy V3 Project
1022
1022
 
1023
1023
  ```yaml
1024
- core-project-information:
1025
- dev-story-location: docs/stories
1024
+ coreProjectLocation:
1025
+ devStoryLocation: docs/stories
1026
1026
  prd:
1027
- prd-file: docs/prd.md
1027
+ prdFile: docs/prd.md
1028
1028
  prdVersion: v3
1029
1029
  prdSharded: false
1030
1030
  architecture:
1031
- architecture-file: docs/architecture.md
1031
+ architectureFile: docs/architecture.md
1032
1032
  architectureVersion: v3
1033
1033
  architectureSharded: false
1034
1034
  devLoadAlwaysFiles: []
@@ -1037,14 +1037,14 @@ core-project-information:
1037
1037
  ##### Hybrid Project (V3 PRD, V4 Architecture)
1038
1038
 
1039
1039
  ```yaml
1040
- core-project-information:
1041
- dev-story-location: .ai/stories
1040
+ coreProjectLocation:
1041
+ devStoryLocation: .ai/stories
1042
1042
  prd:
1043
- prd-file: docs/product-requirements.md
1043
+ prdFile: docs/product-requirements.md
1044
1044
  prdVersion: v3
1045
1045
  prdSharded: false
1046
1046
  architecture:
1047
- architecture-file: docs/architecture.md
1047
+ architectureFile: docs/architecture.md
1048
1048
  architectureVersion: v4
1049
1049
  architectureSharded: true
1050
1050
  architectureShardedLocation: docs/architecture
@@ -1055,16 +1055,16 @@ core-project-information:
1055
1055
  ##### Custom Organization
1056
1056
 
1057
1057
  ```yaml
1058
- core-project-information:
1059
- dev-story-location: development/completed-stories
1058
+ coreProjectLocation:
1059
+ devStoryLocation: development/completed-stories
1060
1060
  prd:
1061
- prd-file: planning/requirements.md
1061
+ prdFile: planning/requirements.md
1062
1062
  prdVersion: v4
1063
1063
  prdSharded: true
1064
1064
  prdShardedLocation: planning/epics
1065
1065
  epicFilePattern: requirement-{n}.md
1066
1066
  architecture:
1067
- architecture-file: technical/system-design.md
1067
+ architectureFile: technical/system-design.md
1068
1068
  architectureVersion: v4
1069
1069
  architectureSharded: true
1070
1070
  architectureShardedLocation: technical/components
@@ -1122,7 +1122,7 @@ customTechnicalDocuments:
1122
1122
 
1123
1123
  **Architecture Not Loading:**
1124
1124
 
1125
- - Verify `architecture-file` path
1125
+ - Verify `architectureFile` path
1126
1126
  - Check `architectureVersion` setting
1127
1127
  - Confirm sharding configuration matches reality
1128
1128
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmad-method",
3
- "version": "4.10.3",
3
+ "version": "4.12.0",
4
4
  "description": "Breakthrough Method of Agile AI-driven Development",
5
5
  "main": "tools/cli.js",
6
6
  "bin": {
@@ -350,7 +350,12 @@ class Installer {
350
350
  // Install web bundles if requested
351
351
  if (config.includeWebBundles && config.webBundlesDirectory) {
352
352
  spinner.text = "Installing web bundles...";
353
- await this.installWebBundles(config.webBundlesDirectory, config, spinner);
353
+ // Resolve web bundles directory using the same logic as the main installation directory
354
+ const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
355
+ let resolvedWebBundlesDir = path.isAbsolute(config.webBundlesDirectory)
356
+ ? config.webBundlesDirectory
357
+ : path.resolve(originalCwd, config.webBundlesDirectory);
358
+ await this.installWebBundles(resolvedWebBundlesDir, config, spinner);
354
359
  }
355
360
 
356
361
  // Set up IDE integration if requested
@@ -608,7 +613,12 @@ class Installer {
608
613
 
609
614
  if (config.includeWebBundles && config.webBundlesDirectory) {
610
615
  const bundleInfo = this.getWebBundleInfo(config);
611
- console.log(chalk.green(`✓ Web bundles (${bundleInfo}) installed to: ${config.webBundlesDirectory}`));
616
+ // Resolve the web bundles directory for display
617
+ const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
618
+ const resolvedWebBundlesDir = path.isAbsolute(config.webBundlesDirectory)
619
+ ? config.webBundlesDirectory
620
+ : path.resolve(originalCwd, config.webBundlesDirectory);
621
+ console.log(chalk.green(`✓ Web bundles (${bundleInfo}) installed to: ${resolvedWebBundlesDir}`));
612
622
  }
613
623
 
614
624
  if (ides.length > 0) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmad-method",
3
- "version": "4.10.3",
3
+ "version": "4.12.0",
4
4
  "description": "BMAD Method installer - AI-powered Agile development framework",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {