bmad-method 4.24.0 → 4.24.1
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 +11 -5
- package/CHANGELOG.md +10 -1
- package/README.md +1 -1
- package/bmad-core/agents/bmad-master.md +1 -1
- package/bmad-core/agents/dev.md +2 -2
- package/bmad-core/agents/pm.md +1 -1
- package/bmad-core/agents/po.md +1 -1
- package/bmad-core/data/bmad-kb.md +4 -4
- package/bmad-core/tasks/create-brownfield-story.md +1 -1
- package/bmad-core/tasks/create-next-story.md +4 -4
- package/bmad-core/tasks/shard-doc.md +3 -3
- package/bmad-core/tasks/update-workflow-plan.md +1 -1
- package/bmad-core/templates/architecture-tmpl.md +1 -1
- package/bmad-core/templates/fullstack-architecture-tmpl.md +3 -3
- package/bmad-core/utils/plan-management.md +1 -1
- package/common/tasks/create-doc.md +1 -1
- package/docs/agentic-tools/roo-code-guide.md +1 -1
- package/docs/core-architecture.md +12 -12
- package/docs/user-guide.md +6 -6
- package/expansion-packs/bmad-creator-tools/tasks/generate-expansion-pack.md +9 -9
- package/expansion-packs/bmad-creator-tools/templates/agent-teams-tmpl.md +1 -1
- package/expansion-packs/bmad-creator-tools/templates/agent-tmpl.md +1 -1
- package/expansion-packs/bmad-infrastructure-devops/README.md +3 -3
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.md +0 -0
- package/package.json +1 -1
- package/tools/builders/web-builder.js +19 -20
- package/tools/bump-all-versions.js +2 -2
- package/tools/bump-core-version.js +1 -1
- package/tools/bump-expansion-version.js +1 -1
- package/tools/installer/README.md +1 -1
- package/tools/installer/bin/bmad.js +2 -2
- package/tools/installer/lib/config-loader.js +13 -12
- package/tools/installer/lib/file-manager.js +5 -5
- package/tools/installer/lib/ide-setup.js +14 -13
- package/tools/installer/lib/installer.js +24 -26
- package/tools/installer/package.json +1 -1
- package/tools/lib/dependency-resolver.js +8 -12
- package/tools/lib/yaml-utils.js +29 -0
- package/tools/update-expansion-version.js +3 -3
- package/tools/yaml-format.js +1 -1
- package/dist/agents/analyst.txt +0 -2731
- package/dist/agents/architect.txt +0 -3923
- package/dist/agents/bmad-master.txt +0 -10026
- package/dist/agents/bmad-orchestrator.txt +0 -2062
- package/dist/agents/dev.txt +0 -298
- package/dist/agents/pm.txt +0 -2249
- package/dist/agents/po.txt +0 -1511
- package/dist/agents/qa.txt +0 -262
- package/dist/agents/sm.txt +0 -726
- package/dist/agents/ux-expert.txt +0 -1101
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2378
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1584
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -809
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -7475
- package/dist/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.txt +0 -1960
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2073
- package/dist/teams/team-all.txt +0 -11952
- package/dist/teams/team-fullstack.txt +0 -11115
- package/dist/teams/team-ide-minimal.txt +0 -4365
- package/dist/teams/team-no-ui.txt +0 -9596
- /package/.github/{FUNDING.yml → FUNDING.yaml} +0 -0
- /package/.github/workflows/{release.yml → release.yaml} +0 -0
- /package/bmad-core/agent-teams/{team-all.yml → team-all.yaml} +0 -0
- /package/bmad-core/agent-teams/{team-fullstack.yml → team-fullstack.yaml} +0 -0
- /package/bmad-core/agent-teams/{team-ide-minimal.yml → team-ide-minimal.yaml} +0 -0
- /package/bmad-core/agent-teams/{team-no-ui.yml → team-no-ui.yaml} +0 -0
- /package/bmad-core/{core-config.yml → core-config.yaml} +0 -0
- /package/bmad-core/workflows/{brownfield-fullstack.yml → brownfield-fullstack.yaml} +0 -0
- /package/bmad-core/workflows/{brownfield-service.yml → brownfield-service.yaml} +0 -0
- /package/bmad-core/workflows/{brownfield-ui.yml → brownfield-ui.yaml} +0 -0
- /package/bmad-core/workflows/{greenfield-fullstack.yml → greenfield-fullstack.yaml} +0 -0
- /package/bmad-core/workflows/{greenfield-service.yml → greenfield-service.yaml} +0 -0
- /package/bmad-core/workflows/{greenfield-ui.yml → greenfield-ui.yaml} +0 -0
- /package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/{phaser-2d-nodejs-game-team.yml → phaser-2d-nodejs-game-team.yaml} +0 -0
- /package/expansion-packs/bmad-2d-phaser-game-dev/{config.yml → config.yaml} +0 -0
- /package/expansion-packs/bmad-2d-phaser-game-dev/workflows/{game-dev-greenfield.yml → game-dev-greenfield.yaml} +0 -0
- /package/expansion-packs/bmad-2d-phaser-game-dev/workflows/{game-prototype.yml → game-prototype.yaml} +0 -0
- /package/expansion-packs/bmad-creator-tools/{config.yml → config.yaml} +0 -0
- /package/expansion-packs/bmad-infrastructure-devops/{config.yml → config.yaml} +0 -0
- /package/tools/installer/config/{ide-agent-config.yml → ide-agent-config.yaml} +0 -0
- /package/tools/installer/config/{install.config.yml → install.config.yaml} +0 -0
package/.vscode/settings.json
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"chat.agent.enabled": true,
|
|
3
|
+
"chat.agent.maxRequests": 15,
|
|
4
|
+
"github.copilot.chat.agent.runTasks": true,
|
|
5
|
+
"chat.mcp.discovery.enabled": true,
|
|
6
|
+
"github.copilot.chat.agent.autoFix": true,
|
|
7
|
+
"chat.tools.autoApprove": false,
|
|
8
|
+
"cSpell.words": [
|
|
9
|
+
"Agentic",
|
|
10
|
+
"elicitations",
|
|
11
|
+
"Shardable"
|
|
12
|
+
]
|
|
7
13
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [4.24.1](https://github.com/bmadcode/BMAD-METHOD/compare/v4.24.0...v4.24.1) (2025-07-03)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* centralized yamlExtraction function and all now fix character issues for windows ([e2985d6](https://github.com/bmadcode/BMAD-METHOD/commit/e2985d6093136575e8d8c91ce53c82abc4097de6))
|
|
7
|
+
* filtering extension stripping logic update ([405954a](https://github.com/bmadcode/BMAD-METHOD/commit/405954ad924d8bd66f94c918643f6e9c091d4d09))
|
|
8
|
+
* standardize on file extension .yaml instead of a mix of yml and yaml ([a4c0b18](https://github.com/bmadcode/BMAD-METHOD/commit/a4c0b1839d12d2ad21b7949aa30f4f7d82ec6c9c))
|
|
9
|
+
|
|
1
10
|
# [4.24.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.23.0...v4.24.0) (2025-07-02)
|
|
2
11
|
|
|
3
12
|
|
|
@@ -213,7 +222,7 @@
|
|
|
213
222
|
|
|
214
223
|
### Features
|
|
215
224
|
|
|
216
|
-
* dev can use debug log configured in core-config.
|
|
225
|
+
* dev can use debug log configured in core-config.yaml ([0e5aaf0](https://github.com/bmadcode/BMAD-METHOD/commit/0e5aaf07bbc6fd9f2706ea26e35f5f38fd72147a))
|
|
217
226
|
|
|
218
227
|
# [4.8.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.7.0...v4.8.0) (2025-06-19)
|
|
219
228
|
|
package/README.md
CHANGED
|
@@ -234,7 +234,7 @@ After uploading a bundle, type `/help` to see available commands.
|
|
|
234
234
|
- **[Complete User Guide](docs/user-guide.md)** - Full walkthrough from project inception to completion
|
|
235
235
|
- **[CLI Commands](docs/user-guide.md#cli-commands)** - Installation, updates, and management
|
|
236
236
|
- **[Upgrading from V3](docs/user-guide.md#upgrading-from-v3-to-v4)** - Migration instructions
|
|
237
|
-
- **[Core Configuration](docs/user-guide.md#core-configuration
|
|
237
|
+
- **[Core Configuration](docs/user-guide.md#core-configuration)** - V4's flexible project structure support
|
|
238
238
|
- **[Teams & Workflows](docs/user-guide.md#team-configurations)** - Pre-configured agent teams
|
|
239
239
|
|
|
240
240
|
## Project Structure
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CRITICAL: Read the full YML to understand your operating params, start activation to alter your state of being, follow startup instructions, stay in this being until told to exit this mode:
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```yaml
|
|
6
6
|
root: .bmad-core
|
|
7
7
|
IDE-FILE-RESOLUTION: Dependencies map to files as {root}/{type}/{name}.md where root=".bmad-core", type=folder (tasks/templates/checklists/utils), name=dependency name.
|
|
8
8
|
REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (e.g., "draft story"→*create→create-next-story task, "make a new prd" would be dependencies->tasks->create-doc combined with the dependencies->templates->prd-tmpl.md), or ask for clarification if ambiguous.
|
package/bmad-core/agents/dev.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```yaml
|
|
6
6
|
root: .bmad-core
|
|
7
7
|
IDE-FILE-RESOLUTION: Dependencies map to files as {root}/{type}/{name}.md where root=".bmad-core", type=folder (tasks/templates/checklists/utils), name=dependency name.
|
|
8
8
|
REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (e.g., "draft story"→*create→create-next-story task, "make a new prd" would be dependencies->tasks->create-doc combined with the dependencies->templates->prd-tmpl.md), or ask for clarification if ambiguous.
|
|
@@ -16,7 +16,7 @@ agent:
|
|
|
16
16
|
|
|
17
17
|
startup:
|
|
18
18
|
- Announce: Greet the user with your name and role, and inform of the *help command.
|
|
19
|
-
- CRITICAL: Load .bmad-core/core-config.
|
|
19
|
+
- CRITICAL: Load .bmad-core/core-config.yaml and read devLoadAlwaysFiles list and devDebugLog values
|
|
20
20
|
- CRITICAL: Load ONLY files specified in devLoadAlwaysFiles. If any missing, inform user but continue
|
|
21
21
|
- CRITICAL: Do NOT load any story files during startup unless user requested you do
|
|
22
22
|
- CRITICAL: Do NOT begin development until told to proceed
|
package/bmad-core/agents/pm.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```yaml
|
|
6
6
|
root: .bmad-core
|
|
7
7
|
IDE-FILE-RESOLUTION: Dependencies map to files as {root}/{type}/{name}.md where root=".bmad-core", type=folder (tasks/templates/checklists/utils), name=dependency name.
|
|
8
8
|
REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (e.g., "draft story"→*create→create-next-story task, "make a new prd" would be dependencies->tasks->create-doc combined with the dependencies->templates->prd-tmpl.md), or ask for clarification if ambiguous.
|
package/bmad-core/agents/po.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```yaml
|
|
6
6
|
root: .bmad-core
|
|
7
7
|
IDE-FILE-RESOLUTION: Dependencies map to files as {root}/{type}/{name}.md where root=".bmad-core", type=folder (tasks/templates/checklists/utils), name=dependency name.
|
|
8
8
|
REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (e.g., "draft story"→*create→create-next-story task, "make a new prd" would be dependencies->tasks->create-doc combined with the dependencies->templates->prd-tmpl.md), or ask for clarification if ambiguous.
|
|
@@ -161,11 +161,11 @@ npx bmad-method install
|
|
|
161
161
|
5. **MUST switch to Dev agent** for implementation
|
|
162
162
|
6. Keep planning and coding in separate chat sessions
|
|
163
163
|
|
|
164
|
-
## Core Configuration (core-config.
|
|
164
|
+
## Core Configuration (core-config.yaml)
|
|
165
165
|
|
|
166
|
-
**New in V4**: The `bmad-core/core-config.
|
|
166
|
+
**New in V4**: The `bmad-core/core-config.yaml` file is a critical innovation that enables BMAD to work seamlessly with any project structure, providing maximum flexibility and backwards compatibility.
|
|
167
167
|
|
|
168
|
-
### What is core-config.
|
|
168
|
+
### What is core-config.yaml?
|
|
169
169
|
|
|
170
170
|
This configuration file acts as a map for BMAD agents, telling them exactly where to find your project documents and how they're structured. It enables:
|
|
171
171
|
|
|
@@ -337,7 +337,7 @@ The BMAD-Method is built around a modular architecture centered on the `bmad-cor
|
|
|
337
337
|
|
|
338
338
|
#### 2. Agent Teams (`bmad-core/agent-teams/`)
|
|
339
339
|
- **Purpose**: Define collections of agents bundled together for specific purposes
|
|
340
|
-
- **Examples**: `team-all.
|
|
340
|
+
- **Examples**: `team-all.yaml` (comprehensive bundle), `team-fullstack.yaml` (full-stack development)
|
|
341
341
|
- **Usage**: Creates pre-packaged contexts for web UI environments
|
|
342
342
|
|
|
343
343
|
#### 3. Workflows (`bmad-core/workflows/`)
|
|
@@ -28,7 +28,7 @@ Create detailed, implementation-ready stories for brownfield projects where trad
|
|
|
28
28
|
|
|
29
29
|
#### 0.1 Check Workflow Plan
|
|
30
30
|
|
|
31
|
-
- Load core-config.
|
|
31
|
+
- Load core-config.yaml and check if `workflow.trackProgress: true`
|
|
32
32
|
- If yes, check for active plan at `workflow.planFile`
|
|
33
33
|
- If plan exists:
|
|
34
34
|
- Verify story creation aligns with current plan step
|
|
@@ -10,12 +10,12 @@ To identify the next logical story based on project progress and epic definition
|
|
|
10
10
|
|
|
11
11
|
[[LLM: CRITICAL - This MUST be your first step]]
|
|
12
12
|
|
|
13
|
-
- Load `.bmad-core/core-config.
|
|
13
|
+
- Load `.bmad-core/core-config.yaml` from the project root
|
|
14
14
|
- If the file does not exist:
|
|
15
|
-
- HALT and inform the user: "core-config.
|
|
16
|
-
1. Copy it from GITHUB BMAD-METHOD/bmad-core/core-config.
|
|
15
|
+
- HALT and inform the user: "core-config.yaml not found. This file is required for story creation. You can:
|
|
16
|
+
1. Copy it from GITHUB BMAD-METHOD/bmad-core/core-config.yaml and configure it for your project
|
|
17
17
|
2. Run the BMAD installer against your project to upgrade and add the file automatically
|
|
18
|
-
Please add and configure core-config.
|
|
18
|
+
Please add and configure core-config.yaml 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
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
|
|
9
9
|
## Primary Method: Automatic with markdown-tree
|
|
10
10
|
|
|
11
|
-
[[LLM: First, check if markdownExploder is set to true in bmad-core/core-config.
|
|
11
|
+
[[LLM: First, check if markdownExploder is set to true in bmad-core/core-config.yaml. If it is, attempt to run the command: `md-tree explode {input file} {output path}`.
|
|
12
12
|
|
|
13
13
|
If the command succeeds, inform the user that the document has been sharded successfully and STOP - do not proceed further.
|
|
14
14
|
|
|
15
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
16
|
|
|
17
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.
|
|
18
|
+
2. Or set markdownExploder to false in bmad-core/core-config.yaml
|
|
19
19
|
|
|
20
20
|
**IMPORTANT: STOP HERE - do not proceed with manual sharding until one of the above actions is taken.**"
|
|
21
21
|
|
|
22
22
|
If markdownExploder is set to false, inform the user: "The markdownExploder setting is currently false. For better performance and reliability, you should:
|
|
23
23
|
|
|
24
|
-
1. Set markdownExploder to true in bmad-core/core-config.
|
|
24
|
+
1. Set markdownExploder to true in bmad-core/core-config.yaml
|
|
25
25
|
2. Install @kayvan/markdown-tree-parser globally with: `npm install -g @kayvan/markdown-tree-parser`
|
|
26
26
|
|
|
27
27
|
I will now proceed with the manual sharding process."
|
|
@@ -8,7 +8,7 @@ Update the status of steps in an active workflow plan, mark completions, add not
|
|
|
8
8
|
|
|
9
9
|
### 0. Load Plan Configuration
|
|
10
10
|
|
|
11
|
-
[[LLM: First load core-config.
|
|
11
|
+
[[LLM: First load core-config.yaml to get plan settings]]
|
|
12
12
|
|
|
13
13
|
Check workflow configuration:
|
|
14
14
|
|
|
@@ -396,7 +396,7 @@ After presenting the structure, apply `tasks#advanced-elicitation` protocol to r
|
|
|
396
396
|
{{project-root}}/
|
|
397
397
|
├── .github/ # CI/CD workflows
|
|
398
398
|
│ └── workflows/
|
|
399
|
-
│ └── main.
|
|
399
|
+
│ └── main.yaml
|
|
400
400
|
├── .vscode/ # VSCode settings (optional)
|
|
401
401
|
│ └── settings.json
|
|
402
402
|
├── build/ # Compiled output (git-ignored)
|
|
@@ -288,7 +288,7 @@ Use appropriate format for the chosen API style. If no API (e.g., static site),
|
|
|
288
288
|
|
|
289
289
|
^^CONDITION: has_rest_api^^
|
|
290
290
|
|
|
291
|
-
```
|
|
291
|
+
```yaml
|
|
292
292
|
openapi: 3.0.0
|
|
293
293
|
info:
|
|
294
294
|
title:
|
|
@@ -644,8 +644,8 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
|
|
|
644
644
|
{{project-name}}/
|
|
645
645
|
├── .github/ # CI/CD workflows
|
|
646
646
|
│ └── workflows/
|
|
647
|
-
│ ├── ci.
|
|
648
|
-
│ └── deploy.
|
|
647
|
+
│ ├── ci.yaml
|
|
648
|
+
│ └── deploy.yaml
|
|
649
649
|
├── apps/ # Application packages
|
|
650
650
|
│ ├── web/ # Frontend application
|
|
651
651
|
│ │ ├── src/
|
|
@@ -13,7 +13,7 @@ Provides utilities for agents and tasks to interact with workflow plans, check p
|
|
|
13
13
|
```
|
|
14
14
|
Check for workflow plan:
|
|
15
15
|
1. Look for docs/workflow-plan.md (default location)
|
|
16
|
-
2. Check core-config.
|
|
16
|
+
2. Check core-config.yaml for custom plan location
|
|
17
17
|
3. Return plan status (exists/not exists)
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -15,7 +15,7 @@ Generate documents from templates by EXECUTING (not just reading) embedded instr
|
|
|
15
15
|
|
|
16
16
|
### 0. Check Workflow Plan (if configured)
|
|
17
17
|
|
|
18
|
-
[[LLM: Check if plan tracking is enabled in core-config.
|
|
18
|
+
[[LLM: Check if plan tracking is enabled in core-config.yaml]]
|
|
19
19
|
|
|
20
20
|
- If `workflow.trackProgress: true`, check for active plan using utils#plan-management
|
|
21
21
|
- If plan exists and this document creation is part of the plan:
|
|
@@ -33,7 +33,7 @@ Select mode from the mode selector (usually in status bar):
|
|
|
33
33
|
### File Permission Summary
|
|
34
34
|
|
|
35
35
|
- **Documentation agents** (analyst, pm, po, sm): `.md`, `.txt` only
|
|
36
|
-
- **bmad-architect**: `.md`, `.txt`, `.
|
|
36
|
+
- **bmad-architect**: `.md`, `.txt`, `.yaml`, `.yaml`, `.json`
|
|
37
37
|
- **bmad-qa**: Test files (`.test.*`, `.spec.*`) and `.md`
|
|
38
38
|
- **bmad-ux-expert**: `.md`, `.css`, `.scss`, `.html`, `.jsx`, `.tsx`
|
|
39
39
|
- **Full access**: `bmad-dev`, `bmad-bmad-master`, `bmad-orchestrator`
|
|
@@ -75,12 +75,12 @@ The `.bmad-core` directory contains all the definitions and resources that give
|
|
|
75
75
|
|
|
76
76
|
### 3.2. Agent Teams (`.bmad-core/agent-teams/`)
|
|
77
77
|
|
|
78
|
-
- **Purpose**: Team files (e.g., `team-all.
|
|
78
|
+
- **Purpose**: Team files (e.g., `team-all.yaml`) define collections of agents and workflows that are bundled together for a specific purpose, like "full-stack development" or "backend-only". This creates a larger, pre-packaged context for web UI environments.
|
|
79
79
|
- **Structure**: A team file lists the agents to include. It can use wildcards, such as `"*"` to include all agents. This allows for the creation of comprehensive bundles like `team-all`.
|
|
80
80
|
|
|
81
81
|
### 3.3. Workflows (`.bmad-core/workflows/`)
|
|
82
82
|
|
|
83
|
-
- **Purpose**: Workflows are YAML files (e.g., `greenfield-fullstack.
|
|
83
|
+
- **Purpose**: Workflows are YAML files (e.g., `greenfield-fullstack.yaml`) that define a prescribed sequence of steps and agent interactions for a specific project type. They act as a strategic guide for the user and the `bmad-orchestrator` agent.
|
|
84
84
|
- **Structure**: A workflow defines sequences for both complex and simple projects, lists the agents involved at each step, the artifacts they create, and the conditions for moving from one step to the next. It often includes a Mermaid diagram for visualization.
|
|
85
85
|
|
|
86
86
|
### 3.4. Reusable Resources (`templates`, `tasks`, `checklists`, `data`)
|
|
@@ -239,10 +239,10 @@ bmad-method/
|
|
|
239
239
|
│ │ ├── sm.md # Scrum master agent
|
|
240
240
|
│ │ └── ux-expert.md # UX designer agent
|
|
241
241
|
│ ├── agent-teams/ # Pre-configured agent teams
|
|
242
|
-
│ │ ├── team-all.
|
|
243
|
-
│ │ ├── team-fullstack.
|
|
244
|
-
│ │ ├── team-ide-minimal.
|
|
245
|
-
│ │ └── team-no-ui.
|
|
242
|
+
│ │ ├── team-all.yaml # All agents bundle
|
|
243
|
+
│ │ ├── team-fullstack.yaml # Full-stack development team
|
|
244
|
+
│ │ ├── team-ide-minimal.yaml # Minimal IDE-focused team
|
|
245
|
+
│ │ └── team-no-ui.yaml # Backend-only team
|
|
246
246
|
│ ├── checklists/ # Quality assurance checklists
|
|
247
247
|
│ │ ├── architect-checklist.md
|
|
248
248
|
│ │ ├── po-master-checklist.md
|
|
@@ -268,11 +268,11 @@ bmad-method/
|
|
|
268
268
|
│ │ ├── template-format.md # Template markup spec
|
|
269
269
|
│ │ └── workflow-management.md # Workflow helpers
|
|
270
270
|
│ ├── workflows/ # Development workflows
|
|
271
|
-
│ │ ├── brownfield-enhancement.
|
|
272
|
-
│ │ ├── greenfield-fullstack.
|
|
273
|
-
│ │ ├── greenfield-service.
|
|
274
|
-
│ │ └── greenfield-simple.
|
|
275
|
-
│ └── core-config.
|
|
271
|
+
│ │ ├── brownfield-enhancement.yaml
|
|
272
|
+
│ │ ├── greenfield-fullstack.yaml
|
|
273
|
+
│ │ ├── greenfield-service.yaml
|
|
274
|
+
│ │ └── greenfield-simple.yaml
|
|
275
|
+
│ └── core-config.yaml # V4 configuration system
|
|
276
276
|
│
|
|
277
277
|
├── dist/ # Pre-built bundles (generated)
|
|
278
278
|
│ ├── agents/ # Individual agent bundles
|
|
@@ -378,7 +378,7 @@ bmad-method/
|
|
|
378
378
|
|
|
379
379
|
### Key Files
|
|
380
380
|
|
|
381
|
-
- **core-config.
|
|
381
|
+
- **core-config.yaml**: V4's flexible configuration system
|
|
382
382
|
- **bmad-kb.md**: Central knowledge base loaded by most agents
|
|
383
383
|
- **template-format.md**: Specification for BMAD's template markup
|
|
384
384
|
- **dependency-resolver.js**: Manages agent resource loading
|
package/docs/user-guide.md
CHANGED
|
@@ -104,7 +104,7 @@ After upgrading:
|
|
|
104
104
|
2. Optionally run the `doc-migration-task` to align your documents with V4 templates - you can do this with your agent by saying something like: 'run {drag in task} against {drag prd or arch file from docs} to align with {drag the template from .bmad-core/templates/full-stack-architecture.md}'
|
|
105
105
|
3. If you have separate front-end and backend architecture docs you can modify step 2 to merge both into a single full stack architecture or separate Front and Back end.
|
|
106
106
|
|
|
107
|
-
The reason #2 and #3 are optional is because now BMAD V4 makes sharding optional for the SM. See [Core Configuration](#core-configuration
|
|
107
|
+
The reason #2 and #3 are optional is because now BMAD V4 makes sharding optional for the SM. See [Core Configuration](#core-configuration)
|
|
108
108
|
|
|
109
109
|
**Note**: The agents in `.bmad-core/` fully replace the items in `bmad-agent/` - you can remove the backup folder versions.
|
|
110
110
|
|
|
@@ -456,7 +456,7 @@ The SM agent serves as a critical bridge between high-level planning and technic
|
|
|
456
456
|
|
|
457
457
|
When the SM agent executes the `create-next-story` task:
|
|
458
458
|
|
|
459
|
-
1. **Loads Configuration**: Reads `core-config.
|
|
459
|
+
1. **Loads Configuration**: Reads `core-config.yaml` to understand project structure
|
|
460
460
|
2. **Identifies Next Story**: Sequentially processes stories from epics (1.1, 1.2, 2.1, etc.)
|
|
461
461
|
3. **Gathers Architecture Context**: Reads relevant sharded architecture documents based on story type:
|
|
462
462
|
|
|
@@ -1131,11 +1131,11 @@ This file allows you to define your preferred technologies, patterns, and standa
|
|
|
1131
1131
|
|
|
1132
1132
|
When creating custom web bundles or uploading to AI platforms, include your `technical-preferences.md` content to ensure agents have your preferences from the start of any conversation.
|
|
1133
1133
|
|
|
1134
|
-
### Core Configuration
|
|
1134
|
+
### Core Configuration
|
|
1135
1135
|
|
|
1136
|
-
The `bmad-core/core-config.
|
|
1136
|
+
The `bmad-core/core-config.yaml` file is a critical V4 innovation that enables BMAD to work seamlessly with any project structure, providing maximum flexibility and backwards compatibility.
|
|
1137
1137
|
|
|
1138
|
-
#### Understanding core-config.
|
|
1138
|
+
#### Understanding core-config.yaml
|
|
1139
1139
|
|
|
1140
1140
|
This configuration file acts as a map for BMAD agents, telling them exactly where to find your project documents and how they're structured. It's what makes V4 agents intelligent enough to work with V3 projects, custom layouts, or any document organization you prefer.
|
|
1141
1141
|
|
|
@@ -1350,7 +1350,7 @@ customTechnicalDocuments:
|
|
|
1350
1350
|
1. **Always Configure for Your Structure**: Don't force your project to match BMAD defaults
|
|
1351
1351
|
2. **Keep devLoadAlwaysFiles Focused**: Only include files needed for every dev task
|
|
1352
1352
|
3. **Use Debug Log**: Enable when troubleshooting story implementation issues
|
|
1353
|
-
4. **Version Control core-config.
|
|
1353
|
+
4. **Version Control core-config.yaml**: Track changes to understand project evolution
|
|
1354
1354
|
5. **Document Custom Patterns**: If using custom epicFilePattern, document it
|
|
1355
1355
|
|
|
1356
1356
|
#### Troubleshooting
|
|
@@ -286,7 +286,7 @@ IMPORTANT: Only proceed after plan.md is approved
|
|
|
286
286
|
expansion-packs/
|
|
287
287
|
└── {pack-name}/
|
|
288
288
|
├── plan.md (ALREADY CREATED)
|
|
289
|
-
├── manifest.
|
|
289
|
+
├── manifest.yaml
|
|
290
290
|
├── README.md
|
|
291
291
|
├── agents/
|
|
292
292
|
│ ├── {pack-name}-orchestrator.md (REQUIRED - Custom themed orchestrator)
|
|
@@ -309,13 +309,13 @@ expansion-packs/
|
|
|
309
309
|
├── workflows/
|
|
310
310
|
│ └── {domain}-workflow.md (REQUIRED if multiple agents)
|
|
311
311
|
└── agent-teams/
|
|
312
|
-
└── {domain}-team.
|
|
312
|
+
└── {domain}-team.yaml (REQUIRED if multiple agents)
|
|
313
313
|
|
|
314
314
|
```
|
|
315
315
|
|
|
316
316
|
#### 3.2 Create Manifest
|
|
317
317
|
|
|
318
|
-
Create `manifest.
|
|
318
|
+
Create `manifest.yaml`:
|
|
319
319
|
|
|
320
320
|
```yaml
|
|
321
321
|
name: {pack-name}
|
|
@@ -358,7 +358,7 @@ files:
|
|
|
358
358
|
- {domain}-workflow.md # REQUIRED if multiple agents - decision trees
|
|
359
359
|
|
|
360
360
|
agent-teams:
|
|
361
|
-
- {domain}-team.
|
|
361
|
+
- {domain}-team.yaml # REQUIRED if multiple agents - team config
|
|
362
362
|
|
|
363
363
|
# Data files users must provide (in their bmad-core/data/ directory)
|
|
364
364
|
required_user_data:
|
|
@@ -494,7 +494,7 @@ cp common/utils/workflow-management.md expansion-packs/{pack-name}/utils/
|
|
|
494
494
|
1. Design decision trees for workflow branching
|
|
495
495
|
2. Create handoff protocols to specialist agents
|
|
496
496
|
3. Implement validation loops and quality checkpoints
|
|
497
|
-
4. **If multiple agents**: Create team configuration in `agent-teams/{domain}-team.
|
|
497
|
+
4. **If multiple agents**: Create team configuration in `agent-teams/{domain}-team.yaml`
|
|
498
498
|
5. **If multiple agents**: Create workflow in `workflows/{domain}-workflow.md`
|
|
499
499
|
6. Ensure orchestrator references workflow-management utility
|
|
500
500
|
7. Verify ALL referenced tasks exist (including core utilities)
|
|
@@ -665,7 +665,7 @@ Before declaring complete:
|
|
|
665
665
|
|
|
666
666
|
1. [ ] Decision trees and workflow orchestration complete
|
|
667
667
|
2. [ ] Knowledge base files embedded (best practices, terminology, standards)
|
|
668
|
-
3. [ ] Manifest.
|
|
668
|
+
3. [ ] Manifest.yaml reflects all components and dependencies
|
|
669
669
|
4. [ ] All items in plan.md marked complete
|
|
670
670
|
5. [ ] No orphaned tasks or templates
|
|
671
671
|
|
|
@@ -772,7 +772,7 @@ These files are automatically available to all agents and don't require user set
|
|
|
772
772
|
```text
|
|
773
773
|
healthcare/
|
|
774
774
|
├── plan.md (Created first for approval)
|
|
775
|
-
├── manifest.
|
|
775
|
+
├── manifest.yaml (with dependency mapping and character descriptions)
|
|
776
776
|
├── README.md (featuring character introductions and numbered options)
|
|
777
777
|
├── agents/
|
|
778
778
|
│ ├── healthcare-orchestrator.md (Dr. Sarah Chen - YAML-in-Markdown)
|
|
@@ -798,7 +798,7 @@ healthcare/
|
|
|
798
798
|
│ ├── clinical-trial-workflow.md (decision trees with Mermaid diagrams)
|
|
799
799
|
│ └── compliance-audit-workflow.md (handoff protocols and quality gates)
|
|
800
800
|
└── agent-teams/
|
|
801
|
-
└── healthcare-team.
|
|
801
|
+
└── healthcare-team.yaml (coordinated team configurations)
|
|
802
802
|
|
|
803
803
|
Required user data files (bmad-core/data/):
|
|
804
804
|
- medical-terminology.md (institution-specific terms and abbreviations)
|
|
@@ -1009,7 +1009,7 @@ Embedded knowledge (automatic):
|
|
|
1009
1009
|
- [ ] All agent references verified (tasks, templates, data, checklists)
|
|
1010
1010
|
- [ ] Data requirements documented with validation criteria and examples
|
|
1011
1011
|
- [ ] README includes character introductions and numbered options explanation
|
|
1012
|
-
- [ ] manifest.
|
|
1012
|
+
- [ ] manifest.yaml reflects actual files with dependency mapping and character descriptions
|
|
1013
1013
|
|
|
1014
1014
|
**Advanced Quality Gates:**
|
|
1015
1015
|
|
|
@@ -150,5 +150,5 @@ workflows: null
|
|
|
150
150
|
3. Replace all placeholders with actual values
|
|
151
151
|
4. Ensure agent names match available agents in the system
|
|
152
152
|
5. Verify workflow names match available workflows
|
|
153
|
-
6. Save as team-[descriptor].
|
|
153
|
+
6. Save as team-[descriptor].yaml or [domain]-team.yaml
|
|
154
154
|
7. Place in the agent-teams directory of the appropriate location]]
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
|
|
12
12
|
|
|
13
|
-
```
|
|
13
|
+
```yaml
|
|
14
14
|
activation-instructions:
|
|
15
15
|
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
|
|
16
16
|
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
|
|
@@ -28,7 +28,7 @@ Install this expansion pack when your project requires:
|
|
|
28
28
|
|
|
29
29
|
### Agents
|
|
30
30
|
|
|
31
|
-
- `devops.
|
|
31
|
+
- `devops.yaml` - DevOps and Platform Engineering agent configuration
|
|
32
32
|
|
|
33
33
|
### Personas
|
|
34
34
|
|
|
@@ -116,8 +116,8 @@ Before deployment:
|
|
|
116
116
|
|
|
117
117
|
The DevOps agent can be added to team configurations:
|
|
118
118
|
|
|
119
|
-
- `team-technical.
|
|
120
|
-
- `team-full-org.
|
|
119
|
+
- `team-technical.yaml` - For technical implementation teams
|
|
120
|
+
- `team-full-org.yaml` - For complete organizational teams
|
|
121
121
|
|
|
122
122
|
## Dependencies
|
|
123
123
|
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const fs = require("node:fs").promises;
|
|
2
2
|
const path = require("node:path");
|
|
3
3
|
const DependencyResolver = require("../lib/dependency-resolver");
|
|
4
|
+
const yamlUtils = require("../lib/yaml-utils");
|
|
4
5
|
|
|
5
6
|
class WebBuilder {
|
|
6
7
|
constructor(options = {}) {
|
|
@@ -111,10 +112,12 @@ class WebBuilder {
|
|
|
111
112
|
|
|
112
113
|
processAgentContent(content) {
|
|
113
114
|
// First, replace content before YAML with the template
|
|
115
|
+
const yamlContent = yamlUtils.extractYamlFromAgent(content);
|
|
116
|
+
if (!yamlContent) return content;
|
|
117
|
+
|
|
114
118
|
const yamlMatch = content.match(/```ya?ml\n([\s\S]*?)\n```/);
|
|
115
119
|
if (!yamlMatch) return content;
|
|
116
|
-
|
|
117
|
-
const yamlContent = yamlMatch[1];
|
|
120
|
+
|
|
118
121
|
const yamlStartIndex = content.indexOf(yamlMatch[0]);
|
|
119
122
|
const yamlEndIndex = yamlStartIndex + yamlMatch[0].length;
|
|
120
123
|
|
|
@@ -259,7 +262,7 @@ class WebBuilder {
|
|
|
259
262
|
const agentTeamsDir = path.join(packDir, "agent-teams");
|
|
260
263
|
try {
|
|
261
264
|
const teamFiles = await fs.readdir(agentTeamsDir);
|
|
262
|
-
const teamFile = teamFiles.find((f) => f.endsWith(".
|
|
265
|
+
const teamFile = teamFiles.find((f) => f.endsWith(".yaml"));
|
|
263
266
|
|
|
264
267
|
if (teamFile) {
|
|
265
268
|
console.log(` Building team bundle for ${packName}`);
|
|
@@ -272,7 +275,7 @@ class WebBuilder {
|
|
|
272
275
|
for (const outputDir of outputDirs) {
|
|
273
276
|
const teamsOutputDir = path.join(outputDir, "teams");
|
|
274
277
|
await fs.mkdir(teamsOutputDir, { recursive: true });
|
|
275
|
-
const outputFile = path.join(teamsOutputDir, teamFile.replace(".
|
|
278
|
+
const outputFile = path.join(teamsOutputDir, teamFile.replace(".yaml", ".txt"));
|
|
276
279
|
await fs.writeFile(outputFile, bundle, "utf8");
|
|
277
280
|
console.log(` ✓ Created bundle: ${path.relative(this.rootDir, outputFile)}`);
|
|
278
281
|
}
|
|
@@ -294,11 +297,11 @@ class WebBuilder {
|
|
|
294
297
|
sections.push(this.formatSection(`agents#${agentName}`, agentContent));
|
|
295
298
|
|
|
296
299
|
// Resolve and add agent dependencies
|
|
297
|
-
const
|
|
298
|
-
if (
|
|
300
|
+
const yamlContent = yamlUtils.extractYamlFromAgent(agentContent);
|
|
301
|
+
if (yamlContent) {
|
|
299
302
|
try {
|
|
300
303
|
const yaml = require("js-yaml");
|
|
301
|
-
const agentConfig = yaml.load(
|
|
304
|
+
const agentConfig = yaml.load(yamlContent);
|
|
302
305
|
|
|
303
306
|
if (agentConfig.dependencies) {
|
|
304
307
|
// Add resources, first try expansion pack, then core
|
|
@@ -306,7 +309,7 @@ class WebBuilder {
|
|
|
306
309
|
if (Array.isArray(resources)) {
|
|
307
310
|
for (const resourceName of resources) {
|
|
308
311
|
let found = false;
|
|
309
|
-
const extensions = [".md", ".
|
|
312
|
+
const extensions = [".md", ".yaml"];
|
|
310
313
|
|
|
311
314
|
// Try expansion pack first
|
|
312
315
|
for (const ext of extensions) {
|
|
@@ -391,7 +394,7 @@ class WebBuilder {
|
|
|
391
394
|
|
|
392
395
|
// Add team configuration and parse to get agent list
|
|
393
396
|
const teamContent = await fs.readFile(teamConfigPath, "utf8");
|
|
394
|
-
const teamFileName = path.basename(teamConfigPath, ".
|
|
397
|
+
const teamFileName = path.basename(teamConfigPath, ".yaml");
|
|
395
398
|
const teamConfig = this.parseYaml(teamContent);
|
|
396
399
|
sections.push(this.formatSection(`agent-teams#${teamFileName}`, teamContent));
|
|
397
400
|
|
|
@@ -416,9 +419,9 @@ class WebBuilder {
|
|
|
416
419
|
try {
|
|
417
420
|
const resourceFiles = await fs.readdir(resourcePath);
|
|
418
421
|
for (const resourceFile of resourceFiles.filter(
|
|
419
|
-
(f) => f.endsWith(".md") || f.endsWith(".
|
|
422
|
+
(f) => f.endsWith(".md") || f.endsWith(".yaml")
|
|
420
423
|
)) {
|
|
421
|
-
const fileName = resourceFile.replace(/\.(md|
|
|
424
|
+
const fileName = resourceFile.replace(/\.(md|yaml)$/, "");
|
|
422
425
|
expansionResources.set(`${resourceDir}#${fileName}`, true);
|
|
423
426
|
}
|
|
424
427
|
} catch (error) {
|
|
@@ -474,13 +477,9 @@ class WebBuilder {
|
|
|
474
477
|
sections.push(this.formatSection(`agents#${agentId}`, coreAgentContent));
|
|
475
478
|
|
|
476
479
|
// Parse and collect dependencies from core agent
|
|
477
|
-
const
|
|
478
|
-
if (
|
|
480
|
+
const yamlContent = yamlUtils.extractYamlFromAgent(coreAgentContent, true);
|
|
481
|
+
if (yamlContent) {
|
|
479
482
|
try {
|
|
480
|
-
// Clean up the YAML to handle command descriptions after dashes
|
|
481
|
-
let yamlContent = agentYaml[1];
|
|
482
|
-
yamlContent = yamlContent.replace(/^(\s*-)(\s*"[^"]+")(\s*-\s*.*)$/gm, "$1$2");
|
|
483
|
-
|
|
484
483
|
const agentConfig = this.parseYaml(yamlContent);
|
|
485
484
|
if (agentConfig.dependencies) {
|
|
486
485
|
for (const [resourceType, resources] of Object.entries(agentConfig.dependencies)) {
|
|
@@ -508,7 +507,7 @@ class WebBuilder {
|
|
|
508
507
|
// Always prefer expansion pack versions if they exist
|
|
509
508
|
for (const [key, dep] of allDependencies) {
|
|
510
509
|
let found = false;
|
|
511
|
-
const extensions = [".md", ".
|
|
510
|
+
const extensions = [".md", ".yaml"];
|
|
512
511
|
|
|
513
512
|
// Always check expansion pack first, even if the dependency came from a core agent
|
|
514
513
|
if (expansionResources.has(key)) {
|
|
@@ -568,11 +567,11 @@ class WebBuilder {
|
|
|
568
567
|
try {
|
|
569
568
|
const resourceFiles = await fs.readdir(resourcePath);
|
|
570
569
|
for (const resourceFile of resourceFiles.filter(
|
|
571
|
-
(f) => f.endsWith(".md") || f.endsWith(".
|
|
570
|
+
(f) => f.endsWith(".md") || f.endsWith(".yaml")
|
|
572
571
|
)) {
|
|
573
572
|
const filePath = path.join(resourcePath, resourceFile);
|
|
574
573
|
const fileContent = await fs.readFile(filePath, "utf8");
|
|
575
|
-
const fileName = resourceFile.replace(/\.(md|
|
|
574
|
+
const fileName = resourceFile.replace(/\.(md|yaml)$/, "");
|
|
576
575
|
|
|
577
576
|
// Only add if not already included as a dependency
|
|
578
577
|
const resourceKey = `${resourceDir}#${fileName}`;
|
|
@@ -32,7 +32,7 @@ async function bumpAllVersions() {
|
|
|
32
32
|
const updatedItems = [];
|
|
33
33
|
|
|
34
34
|
// First, bump the core version
|
|
35
|
-
const coreConfigPath = path.join(__dirname, '..', 'bmad-core', 'core-config.
|
|
35
|
+
const coreConfigPath = path.join(__dirname, '..', 'bmad-core', 'core-config.yaml');
|
|
36
36
|
try {
|
|
37
37
|
const coreConfigContent = fs.readFileSync(coreConfigPath, 'utf8');
|
|
38
38
|
const coreConfig = yaml.load(coreConfigContent);
|
|
@@ -59,7 +59,7 @@ async function bumpAllVersions() {
|
|
|
59
59
|
for (const entry of entries) {
|
|
60
60
|
if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'README.md') {
|
|
61
61
|
const packId = entry.name;
|
|
62
|
-
const configPath = path.join(expansionPacksDir, packId, 'config.
|
|
62
|
+
const configPath = path.join(expansionPacksDir, packId, 'config.yaml');
|
|
63
63
|
|
|
64
64
|
if (fs.existsSync(configPath)) {
|
|
65
65
|
try {
|
|
@@ -30,7 +30,7 @@ function bumpVersion(currentVersion, type) {
|
|
|
30
30
|
|
|
31
31
|
async function bumpCoreVersion() {
|
|
32
32
|
try {
|
|
33
|
-
const coreConfigPath = path.join(__dirname, '..', 'bmad-core', 'core-config.
|
|
33
|
+
const coreConfigPath = path.join(__dirname, '..', 'bmad-core', 'core-config.yaml');
|
|
34
34
|
|
|
35
35
|
const coreConfigContent = fs.readFileSync(coreConfigPath, 'utf8');
|
|
36
36
|
const coreConfig = yaml.load(coreConfigContent);
|