bmad-method 4.24.3 → 4.24.5
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/.prettierignore +1 -1
- package/CHANGELOG.md +15 -1
- package/README.md +22 -22
- package/bmad-core/agents/analyst.md +1 -1
- package/bmad-core/agents/architect.md +1 -1
- package/bmad-core/agents/bmad-master.md +6 -6
- package/bmad-core/agents/bmad-orchestrator.md +10 -10
- package/bmad-core/agents/dev.md +1 -1
- package/bmad-core/agents/pm.md +1 -1
- package/bmad-core/agents/po.md +1 -1
- package/bmad-core/agents/qa.md +1 -1
- package/bmad-core/agents/sm.md +1 -1
- package/bmad-core/agents/ux-expert.md +1 -1
- package/bmad-core/checklists/change-checklist.md +2 -2
- package/bmad-core/data/bmad-kb.md +18 -18
- package/bmad-core/tasks/create-brownfield-story.md +2 -2
- package/bmad-core/tasks/create-next-story.md +2 -2
- package/bmad-core/tasks/kb-mode-interaction.md +13 -13
- package/common/utils/template-format.md +1 -1
- package/common/utils/workflow-management.md +1 -1
- package/dist/agents/analyst.txt +22 -22
- package/dist/agents/architect.txt +4 -4
- package/dist/agents/bmad-master.txt +32 -32
- package/dist/agents/bmad-orchestrator.txt +45 -45
- package/dist/agents/dev.txt +3 -3
- package/dist/agents/pm.txt +6 -6
- package/dist/agents/po.txt +6 -6
- package/dist/agents/qa.txt +4 -4
- package/dist/agents/sm.txt +6 -6
- package/dist/agents/ux-expert.txt +4 -4
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +3 -3
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +3 -3
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +3 -3
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +34 -34
- package/dist/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.txt +23 -23
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +14 -14
- package/dist/teams/team-all.txt +57 -57
- package/dist/teams/team-fullstack.txt +52 -52
- package/dist/teams/team-ide-minimal.txt +53 -53
- package/dist/teams/team-no-ui.txt +51 -51
- package/docs/agentic-tools/claude-code-guide.md +5 -22
- package/docs/agentic-tools/cline-guide.md +3 -29
- package/docs/agentic-tools/cursor-guide.md +4 -27
- package/docs/agentic-tools/gemini-cli-guide.md +3 -17
- package/docs/agentic-tools/github-copilot-guide.md +22 -0
- package/docs/agentic-tools/roo-code-guide.md +3 -34
- package/docs/agentic-tools/windsurf-guide.md +4 -27
- package/docs/bmad-workflow-guide.md +8 -8
- package/docs/core-architecture.md +19 -184
- package/docs/expansion-packs.md +4 -4
- package/docs/how-to-contribute-with-pull-requests.md +1 -1
- package/docs/user-guide.md +29 -414
- package/docs/versions.md +4 -4
- package/docs/working-in-the-brownfield.md +9 -6
- package/expansion-packs/README.md +2 -2
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +3 -3
- package/expansion-packs/bmad-creator-tools/README.md +2 -2
- package/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.md +9 -9
- package/expansion-packs/bmad-creator-tools/config.yaml +2 -2
- package/expansion-packs/bmad-creator-tools/tasks/create-agent.md +1 -1
- package/expansion-packs/bmad-creator-tools/tasks/generate-expansion-pack.md +9 -9
- package/expansion-packs/bmad-creator-tools/templates/agent-tmpl.md +1 -1
- package/expansion-packs/bmad-creator-tools/templates/expansion-pack-plan-tmpl.md +1 -1
- package/expansion-packs/bmad-infrastructure-devops/README.md +6 -6
- package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +1 -1
- package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +1 -1
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +4 -4
- package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +4 -4
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.md +2 -2
- package/package.json +1 -1
- package/tools/bmad-npx-wrapper.js +1 -1
- package/tools/builders/web-builder.js +2 -2
- package/tools/cli.js +2 -2
- package/tools/installer/README.md +1 -51
- package/tools/installer/bin/bmad.js +9 -9
- package/tools/installer/config/install.config.yaml +10 -10
- package/tools/installer/lib/config-loader.js +2 -2
- package/tools/installer/lib/ide-setup.js +14 -14
- package/tools/installer/lib/installer.js +79 -18
- package/tools/installer/package.json +3 -3
- package/tools/md-assets/web-agent-startup-instructions.md +2 -2
- package/tools/upgraders/v3-to-v4-upgrader.js +2 -2
- package/tools/version-bump.js +1 -1
- package/tools/yaml-format.js +1 -1
- package/docs/agentic-tools/vs-code-copilot-guide.md +0 -53
- package/tools/installer/templates/claude-commands.md +0 -7
- package/tools/installer/templates/cursor-rules.md +0 -22
- package/tools/installer/templates/windsurf-rules.md +0 -22
|
@@ -63,7 +63,7 @@ class IdeSetup {
|
|
|
63
63
|
return this.setupCline(installDir, selectedAgent);
|
|
64
64
|
case "gemini":
|
|
65
65
|
return this.setupGeminiCli(installDir, selectedAgent);
|
|
66
|
-
case "
|
|
66
|
+
case "github-copilot":
|
|
67
67
|
return this.setupVsCodeCopilot(installDir, selectedAgent, spinner);
|
|
68
68
|
default:
|
|
69
69
|
console.log(chalk.yellow(`\nIDE ${ide} not yet supported`));
|
|
@@ -98,7 +98,7 @@ class IdeSetup {
|
|
|
98
98
|
)} agent persona.\n\n`;
|
|
99
99
|
mdcContent += "## Agent Activation\n\n";
|
|
100
100
|
mdcContent +=
|
|
101
|
-
"CRITICAL: Read the full
|
|
101
|
+
"CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:\n\n";
|
|
102
102
|
mdcContent += "```yaml\n";
|
|
103
103
|
// Extract just the YAML content from the agent file
|
|
104
104
|
const yamlContent = extractYamlFromAgent(agentContent);
|
|
@@ -116,7 +116,7 @@ class IdeSetup {
|
|
|
116
116
|
mdcContent += `When the user types \`@${agentId}\`, activate this ${await this.getAgentTitle(
|
|
117
117
|
agentId,
|
|
118
118
|
installDir
|
|
119
|
-
)} persona and follow all instructions defined in the
|
|
119
|
+
)} persona and follow all instructions defined in the YAML configuration above.\n`;
|
|
120
120
|
|
|
121
121
|
await fileManager.writeFile(mdcPath, mdcContent);
|
|
122
122
|
console.log(chalk.green(`✓ Created rule: ${agentId}.mdc`));
|
|
@@ -180,7 +180,7 @@ class IdeSetup {
|
|
|
180
180
|
)} agent persona.\n\n`;
|
|
181
181
|
mdContent += "## Agent Activation\n\n";
|
|
182
182
|
mdContent +=
|
|
183
|
-
"CRITICAL: Read the full
|
|
183
|
+
"CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:\n\n";
|
|
184
184
|
mdContent += "```yaml\n";
|
|
185
185
|
// Extract just the YAML content from the agent file
|
|
186
186
|
const yamlContent = extractYamlFromAgent(agentContent);
|
|
@@ -198,7 +198,7 @@ class IdeSetup {
|
|
|
198
198
|
mdContent += `When the user types \`@${agentId}\`, activate this ${await this.getAgentTitle(
|
|
199
199
|
agentId,
|
|
200
200
|
installDir
|
|
201
|
-
)} persona and follow all instructions defined in the
|
|
201
|
+
)} persona and follow all instructions defined in the YAML configuration above.\n`;
|
|
202
202
|
|
|
203
203
|
await fileManager.writeFile(mdPath, mdContent);
|
|
204
204
|
console.log(chalk.green(`✓ Created rule: ${agentId}.md`));
|
|
@@ -362,7 +362,7 @@ class IdeSetup {
|
|
|
362
362
|
newModesContent += ` whenToUse: ${whenToUse}\n`;
|
|
363
363
|
// Get relative path from installDir to agent file
|
|
364
364
|
const relativePath = path.relative(installDir, agentPath).replace(/\\/g, '/');
|
|
365
|
-
newModesContent += ` customInstructions: CRITICAL Read the full
|
|
365
|
+
newModesContent += ` customInstructions: CRITICAL Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
|
|
366
366
|
newModesContent += ` groups:\n`;
|
|
367
367
|
newModesContent += ` - read\n`;
|
|
368
368
|
|
|
@@ -559,8 +559,8 @@ tools: ['changes', 'codebase', 'fetch', 'findTestFiles', 'githubRepo', 'problems
|
|
|
559
559
|
}
|
|
560
560
|
}
|
|
561
561
|
|
|
562
|
-
console.log(chalk.green(`\n✓
|
|
563
|
-
console.log(chalk.dim(`You can now find the
|
|
562
|
+
console.log(chalk.green(`\n✓ Github Copilot setup complete!`));
|
|
563
|
+
console.log(chalk.dim(`You can now find the BMad agents in the Chat view's mode selector.`));
|
|
564
564
|
|
|
565
565
|
return true;
|
|
566
566
|
}
|
|
@@ -578,7 +578,7 @@ tools: ['changes', 'codebase', 'fetch', 'findTestFiles', 'githubRepo', 'problems
|
|
|
578
578
|
try {
|
|
579
579
|
const existingContent = await fileManager.readFile(settingsPath);
|
|
580
580
|
existingSettings = JSON.parse(existingContent);
|
|
581
|
-
console.log(chalk.yellow("Found existing .vscode/settings.json. Merging
|
|
581
|
+
console.log(chalk.yellow("Found existing .vscode/settings.json. Merging BMad settings..."));
|
|
582
582
|
} catch (error) {
|
|
583
583
|
console.warn(chalk.yellow("Could not parse existing settings.json. Creating new one."));
|
|
584
584
|
existingSettings = {};
|
|
@@ -587,15 +587,15 @@ tools: ['changes', 'codebase', 'fetch', 'findTestFiles', 'githubRepo', 'problems
|
|
|
587
587
|
|
|
588
588
|
// Clear any previous output and add spacing to avoid conflicts with loaders
|
|
589
589
|
console.log('\n'.repeat(2));
|
|
590
|
-
console.log(chalk.blue("🔧
|
|
591
|
-
console.log(chalk.dim("
|
|
590
|
+
console.log(chalk.blue("🔧 Github Copilot Agent Settings Configuration"));
|
|
591
|
+
console.log(chalk.dim("BMad works best with specific VS Code settings for optimal agent experience."));
|
|
592
592
|
console.log(''); // Add extra spacing
|
|
593
593
|
|
|
594
594
|
const { configChoice } = await inquirer.prompt([
|
|
595
595
|
{
|
|
596
596
|
type: 'list',
|
|
597
597
|
name: 'configChoice',
|
|
598
|
-
message: 'How would you like to configure
|
|
598
|
+
message: 'How would you like to configure Github Copilot settings?',
|
|
599
599
|
choices: [
|
|
600
600
|
{
|
|
601
601
|
name: 'Use recommended defaults (fastest setup)',
|
|
@@ -638,7 +638,7 @@ tools: ['changes', 'codebase', 'fetch', 'findTestFiles', 'githubRepo', 'problems
|
|
|
638
638
|
"github.copilot.chat.agent.autoFix": true,
|
|
639
639
|
"chat.tools.autoApprove": false
|
|
640
640
|
};
|
|
641
|
-
console.log(chalk.green("✓ Using recommended
|
|
641
|
+
console.log(chalk.green("✓ Using recommended BMad defaults for Github Copilot settings"));
|
|
642
642
|
} else {
|
|
643
643
|
// Manual configuration
|
|
644
644
|
console.log(chalk.blue("\n📋 Let's configure each setting for your preferences:"));
|
|
@@ -696,7 +696,7 @@ tools: ['changes', 'codebase', 'fetch', 'findTestFiles', 'githubRepo', 'problems
|
|
|
696
696
|
}
|
|
697
697
|
|
|
698
698
|
bmadSettings = {
|
|
699
|
-
"chat.agent.enabled": true, // Always enabled - required for
|
|
699
|
+
"chat.agent.enabled": true, // Always enabled - required for BMad agents
|
|
700
700
|
"chat.agent.maxRequests": parseInt(manualSettings.maxRequests),
|
|
701
701
|
"github.copilot.chat.agent.runTasks": manualSettings.runTasks,
|
|
702
702
|
"chat.mcp.discovery.enabled": manualSettings.mcpDiscovery,
|
|
@@ -220,7 +220,7 @@ class Installer {
|
|
|
220
220
|
});
|
|
221
221
|
|
|
222
222
|
if (files.length > 0) {
|
|
223
|
-
// Directory has other files, but no
|
|
223
|
+
// Directory has other files, but no BMad installation.
|
|
224
224
|
// Treat as clean install but record that it isn't empty.
|
|
225
225
|
state.hasOtherFiles = true;
|
|
226
226
|
}
|
|
@@ -235,7 +235,7 @@ class Installer {
|
|
|
235
235
|
async performFreshInstall(config, installDir, spinner, options = {}) {
|
|
236
236
|
// Ensure modules are initialized
|
|
237
237
|
await initializeModules();
|
|
238
|
-
spinner.text = "Installing
|
|
238
|
+
spinner.text = "Installing BMad Method...";
|
|
239
239
|
|
|
240
240
|
let files = [];
|
|
241
241
|
|
|
@@ -396,7 +396,7 @@ class Installer {
|
|
|
396
396
|
const newVersion = await this.getCoreVersion();
|
|
397
397
|
const versionCompare = this.compareVersions(currentVersion, newVersion);
|
|
398
398
|
|
|
399
|
-
console.log(chalk.yellow("\n🔍 Found existing
|
|
399
|
+
console.log(chalk.yellow("\n🔍 Found existing BMad v4 installation"));
|
|
400
400
|
console.log(` Directory: ${installDir}`);
|
|
401
401
|
console.log(` Current version: ${currentVersion}`);
|
|
402
402
|
console.log(` Available version: ${newVersion}`);
|
|
@@ -446,8 +446,8 @@ class Installer {
|
|
|
446
446
|
let choices = [];
|
|
447
447
|
|
|
448
448
|
if (versionCompare < 0) {
|
|
449
|
-
console.log(chalk.cyan("\n⬆️ Upgrade available for
|
|
450
|
-
choices.push({ name: `Upgrade
|
|
449
|
+
console.log(chalk.cyan("\n⬆️ Upgrade available for BMad core"));
|
|
450
|
+
choices.push({ name: `Upgrade BMad core (v${currentVersion} → v${newVersion})`, value: "upgrade" });
|
|
451
451
|
} else if (versionCompare === 0) {
|
|
452
452
|
if (hasIntegrityIssues) {
|
|
453
453
|
// Offer repair option when files are missing or modified
|
|
@@ -457,10 +457,10 @@ class Installer {
|
|
|
457
457
|
});
|
|
458
458
|
}
|
|
459
459
|
console.log(chalk.yellow("\n⚠️ Same version already installed"));
|
|
460
|
-
choices.push({ name: `Force reinstall
|
|
460
|
+
choices.push({ name: `Force reinstall BMad core (v${currentVersion} - reinstall)`, value: "reinstall" });
|
|
461
461
|
} else {
|
|
462
462
|
console.log(chalk.yellow("\n⬇️ Installed version is newer than available"));
|
|
463
|
-
choices.push({ name: `Downgrade
|
|
463
|
+
choices.push({ name: `Downgrade BMad core (v${currentVersion} → v${newVersion})`, value: "reinstall" });
|
|
464
464
|
}
|
|
465
465
|
|
|
466
466
|
choices.push(
|
|
@@ -535,7 +535,7 @@ class Installer {
|
|
|
535
535
|
spinner.stop();
|
|
536
536
|
|
|
537
537
|
console.log(
|
|
538
|
-
chalk.yellow("\n🔍 Found
|
|
538
|
+
chalk.yellow("\n🔍 Found BMad v3 installation (bmad-agent/ directory)")
|
|
539
539
|
);
|
|
540
540
|
console.log(` Directory: ${installDir}`);
|
|
541
541
|
|
|
@@ -685,6 +685,10 @@ class Installer {
|
|
|
685
685
|
};
|
|
686
686
|
|
|
687
687
|
await this.performFreshInstall(config, installDir, spinner, { isUpdate: true });
|
|
688
|
+
|
|
689
|
+
// Clean up .yml files that now have .yaml counterparts
|
|
690
|
+
spinner.text = "Cleaning up legacy .yml files...";
|
|
691
|
+
await this.cleanupLegacyYmlFiles(installDir, spinner);
|
|
688
692
|
} catch (error) {
|
|
689
693
|
spinner.fail("Update failed");
|
|
690
694
|
throw error;
|
|
@@ -737,12 +741,27 @@ class Installer {
|
|
|
737
741
|
if (await fileManager.pathExists(sourcePath)) {
|
|
738
742
|
await fileManager.copyFile(sourcePath, destPath);
|
|
739
743
|
spinner.text = `Restored: ${file}`;
|
|
744
|
+
|
|
745
|
+
// If this is a .yaml file, check for and remove corresponding .yml file
|
|
746
|
+
if (file.endsWith('.yaml')) {
|
|
747
|
+
const ymlFile = file.replace(/\.yaml$/, '.yml');
|
|
748
|
+
const ymlPath = path.join(installDir, ymlFile);
|
|
749
|
+
if (await fileManager.pathExists(ymlPath)) {
|
|
750
|
+
const fs = require('fs').promises;
|
|
751
|
+
await fs.unlink(ymlPath);
|
|
752
|
+
console.log(chalk.dim(` Removed legacy: ${ymlFile} (replaced by ${file})`));
|
|
753
|
+
}
|
|
754
|
+
}
|
|
740
755
|
} else {
|
|
741
756
|
console.warn(chalk.yellow(` Warning: Source file not found: ${file}`));
|
|
742
757
|
}
|
|
743
758
|
}
|
|
744
759
|
}
|
|
745
760
|
|
|
761
|
+
// Clean up .yml files that now have .yaml counterparts
|
|
762
|
+
spinner.text = "Cleaning up legacy .yml files...";
|
|
763
|
+
await this.cleanupLegacyYmlFiles(installDir, spinner);
|
|
764
|
+
|
|
746
765
|
spinner.succeed("Repair completed successfully!");
|
|
747
766
|
|
|
748
767
|
// Show summary
|
|
@@ -768,7 +787,7 @@ class Installer {
|
|
|
768
787
|
}
|
|
769
788
|
|
|
770
789
|
async performReinstall(config, installDir, spinner) {
|
|
771
|
-
spinner.start("Preparing to reinstall
|
|
790
|
+
spinner.start("Preparing to reinstall BMad Method...");
|
|
772
791
|
|
|
773
792
|
// Remove existing .bmad-core
|
|
774
793
|
const bmadCorePath = path.join(installDir, ".bmad-core");
|
|
@@ -778,11 +797,17 @@ class Installer {
|
|
|
778
797
|
}
|
|
779
798
|
|
|
780
799
|
spinner.text = "Installing fresh copy...";
|
|
781
|
-
|
|
800
|
+
const result = await this.performFreshInstall(config, installDir, spinner, { isUpdate: true });
|
|
801
|
+
|
|
802
|
+
// Clean up .yml files that now have .yaml counterparts
|
|
803
|
+
spinner.text = "Cleaning up legacy .yml files...";
|
|
804
|
+
await this.cleanupLegacyYmlFiles(installDir, spinner);
|
|
805
|
+
|
|
806
|
+
return result;
|
|
782
807
|
}
|
|
783
808
|
|
|
784
809
|
showSuccessMessage(config, installDir, options = {}) {
|
|
785
|
-
console.log(chalk.green("\n✓
|
|
810
|
+
console.log(chalk.green("\n✓ BMad Method installed successfully!\n"));
|
|
786
811
|
|
|
787
812
|
const ides = config.ides || (config.ide ? [config.ide] : []);
|
|
788
813
|
if (ides.length > 0) {
|
|
@@ -790,7 +815,7 @@ class Installer {
|
|
|
790
815
|
const ideConfig = configLoader.getIdeConfiguration(ide);
|
|
791
816
|
if (ideConfig?.instructions) {
|
|
792
817
|
console.log(
|
|
793
|
-
chalk.bold(`To use
|
|
818
|
+
chalk.bold(`To use BMad agents in ${ideConfig.name}:`)
|
|
794
819
|
);
|
|
795
820
|
console.log(ideConfig.instructions);
|
|
796
821
|
}
|
|
@@ -879,7 +904,7 @@ class Installer {
|
|
|
879
904
|
};
|
|
880
905
|
return await this.install(config);
|
|
881
906
|
}
|
|
882
|
-
console.log(chalk.red("No
|
|
907
|
+
console.log(chalk.red("No BMad installation found."));
|
|
883
908
|
}
|
|
884
909
|
|
|
885
910
|
async listAgents() {
|
|
@@ -887,7 +912,7 @@ class Installer {
|
|
|
887
912
|
await initializeModules();
|
|
888
913
|
const agents = await configLoader.getAvailableAgents();
|
|
889
914
|
|
|
890
|
-
console.log(chalk.bold("\nAvailable
|
|
915
|
+
console.log(chalk.bold("\nAvailable BMad Agents:\n"));
|
|
891
916
|
|
|
892
917
|
for (const agent of agents) {
|
|
893
918
|
console.log(chalk.cyan(` ${agent.id.padEnd(20)}`), agent.description);
|
|
@@ -903,7 +928,7 @@ class Installer {
|
|
|
903
928
|
await initializeModules();
|
|
904
929
|
const expansionPacks = await this.getAvailableExpansionPacks();
|
|
905
930
|
|
|
906
|
-
console.log(chalk.bold("\nAvailable
|
|
931
|
+
console.log(chalk.bold("\nAvailable BMad Expansion Packs:\n"));
|
|
907
932
|
|
|
908
933
|
if (expansionPacks.length === 0) {
|
|
909
934
|
console.log(chalk.yellow("No expansion packs found."));
|
|
@@ -932,7 +957,7 @@ class Installer {
|
|
|
932
957
|
|
|
933
958
|
if (!installDir) {
|
|
934
959
|
console.log(
|
|
935
|
-
chalk.yellow("No
|
|
960
|
+
chalk.yellow("No BMad installation found in current directory tree")
|
|
936
961
|
);
|
|
937
962
|
return;
|
|
938
963
|
}
|
|
@@ -944,7 +969,7 @@ class Installer {
|
|
|
944
969
|
return;
|
|
945
970
|
}
|
|
946
971
|
|
|
947
|
-
console.log(chalk.bold("\
|
|
972
|
+
console.log(chalk.bold("\nBMad Installation Status:\n"));
|
|
948
973
|
console.log(` Directory: ${installDir}`);
|
|
949
974
|
console.log(` Version: ${manifest.version}`);
|
|
950
975
|
console.log(
|
|
@@ -1399,7 +1424,7 @@ class Installer {
|
|
|
1399
1424
|
await initializeModules();
|
|
1400
1425
|
|
|
1401
1426
|
try {
|
|
1402
|
-
// Find the dist directory in the
|
|
1427
|
+
// Find the dist directory in the BMad installation
|
|
1403
1428
|
const distDir = configLoader.getDistPath();
|
|
1404
1429
|
|
|
1405
1430
|
if (!(await fileManager.pathExists(distDir))) {
|
|
@@ -1637,6 +1662,42 @@ class Installer {
|
|
|
1637
1662
|
return 0;
|
|
1638
1663
|
}
|
|
1639
1664
|
|
|
1665
|
+
async cleanupLegacyYmlFiles(installDir, spinner) {
|
|
1666
|
+
const glob = require('glob');
|
|
1667
|
+
const fs = require('fs').promises;
|
|
1668
|
+
|
|
1669
|
+
try {
|
|
1670
|
+
// Find all .yml files in the installation directory
|
|
1671
|
+
const ymlFiles = glob.sync('**/*.yml', {
|
|
1672
|
+
cwd: installDir,
|
|
1673
|
+
ignore: ['**/node_modules/**', '**/.git/**']
|
|
1674
|
+
});
|
|
1675
|
+
|
|
1676
|
+
let deletedCount = 0;
|
|
1677
|
+
|
|
1678
|
+
for (const ymlFile of ymlFiles) {
|
|
1679
|
+
// Check if corresponding .yaml file exists
|
|
1680
|
+
const yamlFile = ymlFile.replace(/\.yml$/, '.yaml');
|
|
1681
|
+
const ymlPath = path.join(installDir, ymlFile);
|
|
1682
|
+
const yamlPath = path.join(installDir, yamlFile);
|
|
1683
|
+
|
|
1684
|
+
if (await fileManager.pathExists(yamlPath)) {
|
|
1685
|
+
// .yaml counterpart exists, delete the .yml file
|
|
1686
|
+
await fs.unlink(ymlPath);
|
|
1687
|
+
deletedCount++;
|
|
1688
|
+
console.log(chalk.dim(` Removed legacy: ${ymlFile} (replaced by ${yamlFile})`));
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
if (deletedCount > 0) {
|
|
1693
|
+
console.log(chalk.green(`✓ Cleaned up ${deletedCount} legacy .yml files`));
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1696
|
+
} catch (error) {
|
|
1697
|
+
console.warn(chalk.yellow(`Warning: Could not cleanup legacy .yml files: ${error.message}`));
|
|
1698
|
+
}
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1640
1701
|
async findInstallation() {
|
|
1641
1702
|
// Look for .bmad-core in current directory or parent directories
|
|
1642
1703
|
let currentDir = process.cwd();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bmad-method",
|
|
3
|
-
"version": "4.24.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "4.24.5",
|
|
4
|
+
"description": "BMad Method installer - AI-powered Agile development framework",
|
|
5
5
|
"main": "lib/installer.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"bmad": "./bin/bmad.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"installer",
|
|
20
20
|
"agents"
|
|
21
21
|
],
|
|
22
|
-
"author": "
|
|
22
|
+
"author": "BMad Team",
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"chalk": "^5.4.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Web Agent Bundle Instructions
|
|
2
2
|
|
|
3
|
-
You are now operating as a specialized AI agent from the
|
|
3
|
+
You are now operating as a specialized AI agent from the BMad-Method framework. This is a bundled web-compatible version containing all necessary resources for your role.
|
|
4
4
|
|
|
5
5
|
## Important Instructions
|
|
6
6
|
|
|
@@ -34,6 +34,6 @@ These references map directly to bundle sections:
|
|
|
34
34
|
|
|
35
35
|
3. **Execution Context**: You are operating in a web environment. All your capabilities and knowledge are contained within this bundle. Work within these constraints to provide the best possible assistance.
|
|
36
36
|
|
|
37
|
-
4. **Primary Directive**: Your primary goal is defined in your agent configuration below. Focus on fulfilling your designated role according to the
|
|
37
|
+
4. **Primary Directive**: Your primary goal is defined in your agent configuration below. Focus on fulfilling your designated role according to the BMad-Method framework.
|
|
38
38
|
|
|
39
39
|
---
|
|
@@ -26,10 +26,10 @@ class V3ToV4Upgrader {
|
|
|
26
26
|
|
|
27
27
|
// 1. Welcome message
|
|
28
28
|
console.log(
|
|
29
|
-
chalk.bold("\nWelcome to
|
|
29
|
+
chalk.bold("\nWelcome to BMad-Method V3 to V4 Upgrade Tool\n")
|
|
30
30
|
);
|
|
31
31
|
console.log(
|
|
32
|
-
"This tool will help you upgrade your
|
|
32
|
+
"This tool will help you upgrade your BMad-Method V3 project to V4.\n"
|
|
33
33
|
);
|
|
34
34
|
console.log(chalk.cyan("What this tool does:"));
|
|
35
35
|
console.log("- Creates a backup of your V3 files (.bmad-v3-backup/)");
|
package/tools/version-bump.js
CHANGED
package/tools/yaml-format.js
CHANGED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# BMAD Method Guide for Visual Studio Code
|
|
2
|
-
|
|
3
|
-
This guide covers the setup and usage of the BMAD Method in Visual Studio Code. For the complete workflow, see the [BMAD Workflow Guide](../bmad-workflow-guide.md).
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
When running `npx bmad-method install`, select **Visual Studio Code** as your IDE. This command will perform the following actions:
|
|
8
|
-
|
|
9
|
-
- Create the `.bmad-core/` directory with all the agent rule files.
|
|
10
|
-
|
|
11
|
-
- Create the `.vscode/` directory and add a `settings.json` file with the basic configuration to enable GitHub Copilot's agent mode.
|
|
12
|
-
|
|
13
|
-
## Using BMAD Agents in VS Code
|
|
14
|
-
|
|
15
|
-
1. In the GitHub Copilot Chat window, select **Agent** from the chat mode dropdown list (usually located next to the input field).
|
|
16
|
-
|
|
17
|
-
2. Once in Agent Mode, type `@` and the agent's name in the chat input to activate it:
|
|
18
|
-
|
|
19
|
-
- `@bmad-master` - Universal task executor
|
|
20
|
-
|
|
21
|
-
- `@sm` - Scrum Master
|
|
22
|
-
|
|
23
|
-
- `@dev` - Full-stack developer
|
|
24
|
-
|
|
25
|
-
- `@architect` - Solution architect
|
|
26
|
-
|
|
27
|
-
- `@pm` - Product manager
|
|
28
|
-
|
|
29
|
-
- `@analyst` - Business analyst
|
|
30
|
-
|
|
31
|
-
- `@qa` - QA specialist
|
|
32
|
-
|
|
33
|
-
- `@po` - Product owner
|
|
34
|
-
|
|
35
|
-
- `@ux-expert` - UX specialist
|
|
36
|
-
|
|
37
|
-
## VS Code Specific Features
|
|
38
|
-
|
|
39
|
-
- **Dynamic Configuration**: When you first invoke an agent (e.g., `@dev`), VS Code will automatically update `.vscode/settings.json` by adding the configuration for that chat mode.
|
|
40
|
-
|
|
41
|
-
- **Activation**: Use the `@` prefix in the GitHub Copilot Chat for instant switching between agents.
|
|
42
|
-
|
|
43
|
-
- **Collaboration**: Fully compatible with **Live Share**, allowing you, your team, and BMAD agents to work together in real-time.
|
|
44
|
-
|
|
45
|
-
- **Project Context**: Agents have full access to your workspace, including open files and the selected code.
|
|
46
|
-
|
|
47
|
-
## Tips for VS Code Users
|
|
48
|
-
|
|
49
|
-
- Use the `help` command (e.g., `@dev help`) to see the available commands for each agent.
|
|
50
|
-
|
|
51
|
-
- Use `@workspace` in the Copilot Chat to ask questions about your entire project.
|
|
52
|
-
|
|
53
|
-
- Consider adding `.vscode/` and `.bmad-core/` to your `.gitignore` file in team projects to avoid conflicts with personal settings.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# BMAD Method Agents for Cursor
|
|
2
|
-
|
|
3
|
-
This file contains all BMAD Method agent personas. To use an agent, type its name or alias in the Cursor chat.
|
|
4
|
-
|
|
5
|
-
## Available Agents
|
|
6
|
-
|
|
7
|
-
{{AGENT_LIST}}
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
{{AGENT_RULES}}
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Agent Switching
|
|
16
|
-
|
|
17
|
-
To switch between agents during a conversation:
|
|
18
|
-
|
|
19
|
-
1. Simply type the new agent name (e.g., "architect" or "dev")
|
|
20
|
-
2. The AI will adopt that agent's persona
|
|
21
|
-
|
|
22
|
-
For more information about BMAD Method, visit: https://github.com/your-org/bmad-method
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# BMAD Method Agent Commands
|
|
2
|
-
|
|
3
|
-
This file contains all BMAD Method agent commands for Windsurf. Use /agent-name to switch personas.
|
|
4
|
-
|
|
5
|
-
## Available Commands
|
|
6
|
-
|
|
7
|
-
{{COMMAND_LIST}}
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
{{AGENT_SECTIONS}}
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Usage Tips
|
|
16
|
-
|
|
17
|
-
- Type `/dev` to switch to Developer persona
|
|
18
|
-
- Type `/pm` to switch to Product Manager persona
|
|
19
|
-
- Type `/architect` to switch to Architect persona
|
|
20
|
-
- And so on for other agents...
|
|
21
|
-
|
|
22
|
-
For more information about BMAD Method, visit: https://github.com/your-org/bmad-method
|