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.
- package/.vscode/settings.json +1 -0
- package/CHANGELOG.md +19 -0
- package/bmad-core/agents/dev.md +5 -4
- package/bmad-core/core-config.yml +20 -26
- package/bmad-core/tasks/create-next-story.md +9 -9
- package/bmad-core/tasks/shard-doc.md +25 -7
- package/dist/agents/bmad-master.txt +9 -9
- package/dist/agents/sm.txt +9 -9
- package/dist/teams/team-all.txt +9 -9
- package/dist/teams/team-ide-minimal.txt +9 -9
- package/docs/user-guide.md +22 -22
- package/package.json +1 -1
- package/tools/installer/lib/installer.js +12 -2
- package/tools/installer/package.json +1 -1
package/.vscode/settings.json
CHANGED
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
|
|
package/bmad-core/agents/dev.md
CHANGED
|
@@ -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→
|
|
49
|
+
flow: "Read task→Implement→Write tests→Execute validations→Only 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 +
|
|
56
|
-
completion: "All [x]→
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
prd
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
architecture
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
- `
|
|
20
|
+
- `devStoryLocation`: Where to save story files
|
|
21
21
|
- `prd.prdSharded`: Whether PRD is sharded or monolithic
|
|
22
|
-
- `prd.
|
|
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.
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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: `{
|
|
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 `{
|
|
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
|
-
##
|
|
9
|
+
## Primary Method: Automatic with markdown-tree
|
|
10
10
|
|
|
11
|
-
[[LLM: First,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- `
|
|
1737
|
+
- `devStoryLocation`: Where to save story files
|
|
1738
1738
|
- `prd.prdSharded`: Whether PRD is sharded or monolithic
|
|
1739
|
-
- `prd.
|
|
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.
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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: `{
|
|
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 `{
|
|
1956
|
+
- Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
|
|
1957
1957
|
|
|
1958
1958
|
### 9. Report Completion
|
|
1959
1959
|
|
package/dist/agents/sm.txt
CHANGED
|
@@ -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
|
-
- `
|
|
112
|
+
- `devStoryLocation`: Where to save story files
|
|
113
113
|
- `prd.prdSharded`: Whether PRD is sharded or monolithic
|
|
114
|
-
- `prd.
|
|
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.
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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: `{
|
|
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 `{
|
|
331
|
+
- Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
|
|
332
332
|
|
|
333
333
|
### 9. Report Completion
|
|
334
334
|
|
package/dist/teams/team-all.txt
CHANGED
|
@@ -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
|
-
- `
|
|
8659
|
+
- `devStoryLocation`: Where to save story files
|
|
8660
8660
|
- `prd.prdSharded`: Whether PRD is sharded or monolithic
|
|
8661
|
-
- `prd.
|
|
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.
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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: `{
|
|
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 `{
|
|
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
|
-
- `
|
|
2766
|
+
- `devStoryLocation`: Where to save story files
|
|
2767
2767
|
- `prd.prdSharded`: Whether PRD is sharded or monolithic
|
|
2768
|
-
- `prd.
|
|
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.
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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: `{
|
|
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 `{
|
|
2985
|
+
- Save the story file to `{devStoryLocation}/{epicNum}.{storyNum}.story.md` (using location from config)
|
|
2986
2986
|
|
|
2987
2987
|
### 9. Report Completion
|
|
2988
2988
|
|
package/docs/user-guide.md
CHANGED
|
@@ -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
|
-
|
|
899
|
-
|
|
898
|
+
coreProjectLocation:
|
|
899
|
+
devStoryLocation: docs/stories # Where completed stories are saved
|
|
900
900
|
|
|
901
901
|
prd:
|
|
902
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1025
|
-
|
|
1024
|
+
coreProjectLocation:
|
|
1025
|
+
devStoryLocation: docs/stories
|
|
1026
1026
|
prd:
|
|
1027
|
-
|
|
1027
|
+
prdFile: docs/prd.md
|
|
1028
1028
|
prdVersion: v3
|
|
1029
1029
|
prdSharded: false
|
|
1030
1030
|
architecture:
|
|
1031
|
-
|
|
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
|
-
|
|
1041
|
-
|
|
1040
|
+
coreProjectLocation:
|
|
1041
|
+
devStoryLocation: .ai/stories
|
|
1042
1042
|
prd:
|
|
1043
|
-
|
|
1043
|
+
prdFile: docs/product-requirements.md
|
|
1044
1044
|
prdVersion: v3
|
|
1045
1045
|
prdSharded: false
|
|
1046
1046
|
architecture:
|
|
1047
|
-
|
|
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
|
-
|
|
1059
|
-
|
|
1058
|
+
coreProjectLocation:
|
|
1059
|
+
devStoryLocation: development/completed-stories
|
|
1060
1060
|
prd:
|
|
1061
|
-
|
|
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
|
-
|
|
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 `
|
|
1125
|
+
- Verify `architectureFile` path
|
|
1126
1126
|
- Check `architectureVersion` setting
|
|
1127
1127
|
- Confirm sharding configuration matches reality
|
|
1128
1128
|
|
package/package.json
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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) {
|