bmad-method 4.27.0 → 4.27.2
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/CHANGELOG.md +14 -0
- package/bmad-core/agent-teams/team-all.yaml +6 -6
- package/bmad-core/agent-teams/team-fullstack.yaml +6 -6
- package/bmad-core/agent-teams/team-no-ui.yaml +2 -2
- package/bmad-core/agents/analyst.md +17 -20
- package/bmad-core/agents/architect.md +15 -18
- package/bmad-core/agents/bmad-master.md +55 -56
- package/bmad-core/agents/bmad-orchestrator.md +24 -23
- package/bmad-core/agents/dev.md +10 -10
- package/bmad-core/agents/pm.md +17 -20
- package/bmad-core/agents/po.md +12 -15
- package/bmad-core/agents/qa.md +7 -8
- package/bmad-core/agents/sm.md +8 -13
- package/bmad-core/agents/ux-expert.md +7 -11
- package/bmad-core/core-config.yaml +1 -1
- package/bmad-core/templates/architecture-tmpl.yaml +650 -0
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +280 -0
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +293 -0
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +206 -0
- package/bmad-core/templates/front-end-spec-tmpl.yaml +349 -0
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +805 -0
- package/bmad-core/templates/market-research-tmpl.yaml +252 -0
- package/bmad-core/templates/{prd-tmpl2.yaml → prd-tmpl.yaml} +3 -3
- package/bmad-core/templates/project-brief-tmpl.yaml +221 -0
- package/bmad-core/templates/story-tmpl.yaml +137 -0
- package/common/tasks/create-doc.md +55 -67
- package/common/utils/bmad-doc-template.md +29 -0
- package/dist/agents/analyst.txt +1004 -1061
- package/dist/agents/architect.txt +2460 -2872
- package/dist/agents/bmad-master.txt +3842 -4354
- package/dist/agents/bmad-orchestrator.txt +211 -87
- package/dist/agents/dev.txt +4 -8
- package/dist/agents/pm.txt +557 -587
- package/dist/agents/po.txt +149 -102
- package/dist/agents/qa.txt +145 -35
- package/dist/agents/sm.txt +145 -100
- package/dist/agents/ux-expert.txt +413 -522
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +1258 -1236
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +623 -573
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +263 -248
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +9135 -4942
- package/dist/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.txt +288 -251
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +1123 -1145
- package/dist/teams/team-all.txt +4583 -4837
- package/dist/teams/team-fullstack.txt +5276 -5520
- package/dist/teams/team-ide-minimal.txt +375 -185
- package/dist/teams/team-no-ui.txt +4875 -5051
- package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +2 -2
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +17 -15
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +13 -11
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +13 -11
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +613 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +356 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +343 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +253 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +484 -0
- package/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.md +14 -12
- package/expansion-packs/bmad-creator-tools/config.yaml +1 -1
- package/expansion-packs/bmad-creator-tools/templates/agent-teams-tmpl.yaml +178 -0
- package/expansion-packs/bmad-creator-tools/templates/agent-tmpl.yaml +154 -0
- package/expansion-packs/bmad-creator-tools/templates/expansion-pack-plan-tmpl.yaml +120 -0
- package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +14 -14
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +424 -0
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +629 -0
- package/package.json +1 -1
- package/tools/builders/web-builder.js +65 -85
- package/tools/installer/package.json +1 -1
- package/tools/lib/dependency-resolver.js +8 -19
- package/zoo/docs/architecture.md +812 -0
- package/zoo/docs/brief.md +253 -0
- package/zoo/docs/prd.md +500 -0
- package/zoo/docs/stories/1.1.story.md +278 -0
- package/bmad-core/templates/architecture-tmpl.md +0 -776
- package/bmad-core/templates/brainstorming-output-tmpl.md +0 -149
- package/bmad-core/templates/brownfield-architecture-tmpl.md +0 -544
- package/bmad-core/templates/brownfield-prd-tmpl.md +0 -266
- package/bmad-core/templates/competitor-analysis-tmpl.md +0 -291
- package/bmad-core/templates/front-end-architecture-tmpl.md +0 -175
- package/bmad-core/templates/front-end-spec-tmpl.md +0 -413
- package/bmad-core/templates/fullstack-architecture-tmpl.md +0 -1018
- package/bmad-core/templates/market-research-tmpl.md +0 -263
- package/bmad-core/templates/prd-tmpl.md +0 -202
- package/bmad-core/templates/project-brief-tmpl.md +0 -232
- package/bmad-core/templates/story-tmpl.md +0 -58
- package/common/tasks/create-doc2.md +0 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.md +0 -560
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.md +0 -345
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.md +0 -331
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.md +0 -235
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.md +0 -470
- package/expansion-packs/bmad-creator-tools/templates/agent-teams-tmpl.md +0 -154
- package/expansion-packs/bmad-creator-tools/templates/agent-tmpl.md +0 -143
- package/expansion-packs/bmad-creator-tools/templates/expansion-pack-plan-tmpl.md +0 -91
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.md +0 -415
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.md +0 -0
|
@@ -211,6 +211,7 @@ These references map directly to bundle sections:
|
|
|
211
211
|
parsed["activation-instructions"] = parsed["activation-instructions"].filter(
|
|
212
212
|
(instruction) => {
|
|
213
213
|
return (
|
|
214
|
+
typeof instruction === 'string' &&
|
|
214
215
|
!instruction.startsWith("IDE-FILE-RESOLUTION:") &&
|
|
215
216
|
!instruction.startsWith("REQUEST-RESOLUTION:")
|
|
216
217
|
);
|
|
@@ -393,67 +394,57 @@ These references map directly to bundle sections:
|
|
|
393
394
|
if (Array.isArray(resources)) {
|
|
394
395
|
for (const resourceName of resources) {
|
|
395
396
|
let found = false;
|
|
396
|
-
const extensions = [".md", ".yaml"];
|
|
397
397
|
|
|
398
398
|
// Try expansion pack first
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
} catch (error) {
|
|
410
|
-
// Not in expansion pack, continue
|
|
411
|
-
}
|
|
399
|
+
const resourcePath = path.join(packDir, resourceType, resourceName);
|
|
400
|
+
try {
|
|
401
|
+
const resourceContent = await fs.readFile(resourcePath, "utf8");
|
|
402
|
+
const resourceWebPath = this.convertToWebPath(resourcePath, packName);
|
|
403
|
+
sections.push(
|
|
404
|
+
this.formatSection(resourceWebPath, resourceContent, packName)
|
|
405
|
+
);
|
|
406
|
+
found = true;
|
|
407
|
+
} catch (error) {
|
|
408
|
+
// Not in expansion pack, continue
|
|
412
409
|
}
|
|
413
410
|
|
|
414
411
|
// If not found in expansion pack, try core
|
|
415
412
|
if (!found) {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
413
|
+
const corePath = path.join(
|
|
414
|
+
this.rootDir,
|
|
415
|
+
"bmad-core",
|
|
416
|
+
resourceType,
|
|
417
|
+
resourceName
|
|
418
|
+
);
|
|
419
|
+
try {
|
|
420
|
+
const coreContent = await fs.readFile(corePath, "utf8");
|
|
421
|
+
const coreWebPath = this.convertToWebPath(corePath, packName);
|
|
422
|
+
sections.push(
|
|
423
|
+
this.formatSection(coreWebPath, coreContent, packName)
|
|
422
424
|
);
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
sections.push(
|
|
427
|
-
this.formatSection(coreWebPath, coreContent, packName)
|
|
428
|
-
);
|
|
429
|
-
found = true;
|
|
430
|
-
break;
|
|
431
|
-
} catch (error) {
|
|
432
|
-
// Not in core either, continue
|
|
433
|
-
}
|
|
425
|
+
found = true;
|
|
426
|
+
} catch (error) {
|
|
427
|
+
// Not in core either, continue
|
|
434
428
|
}
|
|
435
429
|
}
|
|
436
430
|
|
|
437
431
|
// If not found in core, try common folder
|
|
438
432
|
if (!found) {
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
433
|
+
const commonPath = path.join(
|
|
434
|
+
this.rootDir,
|
|
435
|
+
"common",
|
|
436
|
+
resourceType,
|
|
437
|
+
resourceName
|
|
438
|
+
);
|
|
439
|
+
try {
|
|
440
|
+
const commonContent = await fs.readFile(commonPath, "utf8");
|
|
441
|
+
const commonWebPath = this.convertToWebPath(commonPath, packName);
|
|
442
|
+
sections.push(
|
|
443
|
+
this.formatSection(commonWebPath, commonContent, packName)
|
|
445
444
|
);
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
sections.push(
|
|
450
|
-
this.formatSection(commonWebPath, commonContent, packName)
|
|
451
|
-
);
|
|
452
|
-
found = true;
|
|
453
|
-
break;
|
|
454
|
-
} catch (error) {
|
|
455
|
-
// Not in common either, continue
|
|
456
|
-
}
|
|
445
|
+
found = true;
|
|
446
|
+
} catch (error) {
|
|
447
|
+
// Not in common either, continue
|
|
457
448
|
}
|
|
458
449
|
}
|
|
459
450
|
|
|
@@ -509,8 +500,7 @@ These references map directly to bundle sections:
|
|
|
509
500
|
for (const resourceFile of resourceFiles.filter(
|
|
510
501
|
(f) => f.endsWith(".md") || f.endsWith(".yaml")
|
|
511
502
|
)) {
|
|
512
|
-
|
|
513
|
-
expansionResources.set(`${resourceDir}#${fileName}`, true);
|
|
503
|
+
expansionResources.set(`${resourceDir}#${resourceFile}`, true);
|
|
514
504
|
}
|
|
515
505
|
} catch (error) {
|
|
516
506
|
// Directory might not exist, that's fine
|
|
@@ -597,55 +587,45 @@ These references map directly to bundle sections:
|
|
|
597
587
|
// Always prefer expansion pack versions if they exist
|
|
598
588
|
for (const [key, dep] of allDependencies) {
|
|
599
589
|
let found = false;
|
|
600
|
-
const extensions = [".md", ".yaml"];
|
|
601
590
|
|
|
602
591
|
// Always check expansion pack first, even if the dependency came from a core agent
|
|
603
592
|
if (expansionResources.has(key)) {
|
|
604
593
|
// We know it exists in expansion pack, find and load it
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
} catch (error) {
|
|
615
|
-
// Try next extension
|
|
616
|
-
}
|
|
594
|
+
const expansionPath = path.join(packDir, dep.type, dep.name);
|
|
595
|
+
try {
|
|
596
|
+
const content = await fs.readFile(expansionPath, "utf8");
|
|
597
|
+
const expansionWebPath = this.convertToWebPath(expansionPath, packName);
|
|
598
|
+
sections.push(this.formatSection(expansionWebPath, content, packName));
|
|
599
|
+
console.log(` ✓ Using expansion override for ${key}`);
|
|
600
|
+
found = true;
|
|
601
|
+
} catch (error) {
|
|
602
|
+
// Try next extension
|
|
617
603
|
}
|
|
618
604
|
}
|
|
619
605
|
|
|
620
606
|
// If not found in expansion pack (or doesn't exist there), try core
|
|
621
607
|
if (!found) {
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
} catch (error) {
|
|
631
|
-
// Not in core either, continue
|
|
632
|
-
}
|
|
608
|
+
const corePath = path.join(this.rootDir, "bmad-core", dep.type, dep.name);
|
|
609
|
+
try {
|
|
610
|
+
const content = await fs.readFile(corePath, "utf8");
|
|
611
|
+
const coreWebPath = this.convertToWebPath(corePath, packName);
|
|
612
|
+
sections.push(this.formatSection(coreWebPath, content, packName));
|
|
613
|
+
found = true;
|
|
614
|
+
} catch (error) {
|
|
615
|
+
// Not in core either, continue
|
|
633
616
|
}
|
|
634
617
|
}
|
|
635
618
|
|
|
636
619
|
// If not found in core, try common folder
|
|
637
620
|
if (!found) {
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
} catch (error) {
|
|
647
|
-
// Not in common either, continue
|
|
648
|
-
}
|
|
621
|
+
const commonPath = path.join(this.rootDir, "common", dep.type, dep.name);
|
|
622
|
+
try {
|
|
623
|
+
const content = await fs.readFile(commonPath, "utf8");
|
|
624
|
+
const commonWebPath = this.convertToWebPath(commonPath, packName);
|
|
625
|
+
sections.push(this.formatSection(commonWebPath, content, packName));
|
|
626
|
+
found = true;
|
|
627
|
+
} catch (error) {
|
|
628
|
+
// Not in common either, continue
|
|
649
629
|
}
|
|
650
630
|
}
|
|
651
631
|
|
|
@@ -116,31 +116,20 @@ class DependencyResolver {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
try {
|
|
119
|
-
const extensions = ['.md', '.yaml'];
|
|
120
119
|
let content = null;
|
|
121
120
|
let filePath = null;
|
|
122
121
|
|
|
123
122
|
// First try bmad-core
|
|
124
|
-
|
|
123
|
+
try {
|
|
124
|
+
filePath = path.join(this.bmadCore, type, id);
|
|
125
|
+
content = await fs.readFile(filePath, 'utf8');
|
|
126
|
+
} catch (e) {
|
|
127
|
+
// If not found in bmad-core, try common folder
|
|
125
128
|
try {
|
|
126
|
-
filePath = path.join(this.
|
|
129
|
+
filePath = path.join(this.common, type, id);
|
|
127
130
|
content = await fs.readFile(filePath, 'utf8');
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// Try next extension
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// If not found in bmad-core, try common folder
|
|
135
|
-
if (!content) {
|
|
136
|
-
for (const ext of extensions) {
|
|
137
|
-
try {
|
|
138
|
-
filePath = path.join(this.common, type, `${id}${ext}`);
|
|
139
|
-
content = await fs.readFile(filePath, 'utf8');
|
|
140
|
-
break;
|
|
141
|
-
} catch (e) {
|
|
142
|
-
// Try next extension
|
|
143
|
-
}
|
|
131
|
+
} catch (e2) {
|
|
132
|
+
// File not found in either location
|
|
144
133
|
}
|
|
145
134
|
}
|
|
146
135
|
|