bmad-method 4.37.0 ā 4.39.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/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
- package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
- package/.github/workflows/discord.yaml +11 -2
- package/.github/workflows/format-check.yaml +42 -0
- package/.github/workflows/manual-release.yaml +173 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +2 -23
- package/README.md +2 -0
- package/bmad-core/agent-teams/team-all.yaml +1 -1
- package/bmad-core/agents/analyst.md +16 -15
- package/bmad-core/agents/architect.md +11 -11
- package/bmad-core/agents/bmad-master.md +23 -22
- package/bmad-core/agents/bmad-orchestrator.md +13 -17
- package/bmad-core/agents/dev.md +14 -11
- package/bmad-core/agents/pm.md +15 -14
- package/bmad-core/agents/po.md +9 -8
- package/bmad-core/agents/qa.md +42 -22
- package/bmad-core/agents/sm.md +7 -6
- package/bmad-core/agents/ux-expert.md +6 -5
- package/bmad-core/core-config.yaml +2 -0
- package/bmad-core/data/bmad-kb.md +1 -1
- package/bmad-core/data/test-levels-framework.md +146 -0
- package/bmad-core/data/test-priorities-matrix.md +172 -0
- package/bmad-core/tasks/apply-qa-fixes.md +148 -0
- package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
- package/bmad-core/tasks/nfr-assess.md +343 -0
- package/bmad-core/tasks/qa-gate.md +161 -0
- package/bmad-core/tasks/review-story.md +234 -74
- package/bmad-core/tasks/risk-profile.md +353 -0
- package/bmad-core/tasks/test-design.md +174 -0
- package/bmad-core/tasks/trace-requirements.md +264 -0
- package/bmad-core/templates/architecture-tmpl.yaml +49 -49
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
- package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
- package/bmad-core/templates/market-research-tmpl.yaml +2 -2
- package/bmad-core/templates/prd-tmpl.yaml +9 -9
- package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
- package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
- package/bmad-core/templates/story-tmpl.yaml +12 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
- package/bmad-core/workflows/brownfield-service.yaml +1 -1
- package/bmad-core/workflows/brownfield-ui.yaml +1 -1
- package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/bmad-core/workflows/greenfield-ui.yaml +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +1086 -1079
- package/dist/agents/architect.txt +1534 -1526
- package/dist/agents/bmad-master.txt +646 -632
- package/dist/agents/bmad-orchestrator.txt +40 -18
- package/dist/agents/dev.txt +158 -19
- package/dist/agents/pm.txt +1082 -1107
- package/dist/agents/po.txt +314 -332
- package/dist/agents/qa.txt +1754 -151
- package/dist/agents/sm.txt +88 -98
- package/dist/agents/ux-expert.txt +80 -87
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
- package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
- package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
- package/dist/teams/team-all.txt +5541 -3768
- package/dist/teams/team-fullstack.txt +3014 -2987
- package/dist/teams/team-ide-minimal.txt +2219 -469
- package/dist/teams/team-no-ui.txt +2993 -2966
- package/docs/enhanced-ide-development-workflow.md +220 -15
- package/docs/user-guide.md +271 -18
- package/docs/versioning-and-releases.md +122 -44
- package/docs/working-in-the-brownfield.md +264 -31
- package/eslint.config.mjs +119 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
- 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/development-guidelines.md +26 -28
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
- package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-creative-writing/README.md +132 -0
- package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
- package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
- package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
- package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
- package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
- package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
- package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
- package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
- package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
- package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
- package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
- package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
- package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
- package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
- package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
- package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
- package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
- package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
- package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
- package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
- package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
- package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
- package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
- package/package.json +62 -39
- package/prettier.config.mjs +32 -0
- package/sync-version.sh +23 -0
- package/tools/bmad-npx-wrapper.js +10 -10
- package/tools/builders/web-builder.js +124 -130
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +10 -12
- package/tools/flattener/aggregate.js +10 -10
- package/tools/flattener/binary.js +44 -17
- package/tools/flattener/discovery.js +19 -18
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +125 -125
- package/tools/flattener/main.js +426 -70
- package/tools/flattener/projectRoot.js +186 -25
- package/tools/flattener/prompts.js +9 -9
- package/tools/flattener/stats.helpers.js +395 -0
- package/tools/flattener/stats.js +64 -14
- package/tools/flattener/test-matrix.js +413 -0
- package/tools/flattener/xml.js +33 -31
- package/tools/installer/bin/bmad.js +156 -113
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +13 -3
- package/tools/installer/lib/config-loader.js +46 -42
- package/tools/installer/lib/file-manager.js +91 -113
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +545 -399
- package/tools/installer/lib/installer.js +875 -714
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +26 -28
- package/tools/installer/package.json +19 -19
- package/tools/lib/dependency-resolver.js +26 -30
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/preview-release-notes.js +66 -0
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +7 -9
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/yaml-format.js +56 -43
- package/.github/workflows/release.yaml +0 -60
- package/.releaserc.json +0 -21
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
- package/tools/semantic-release-sync-installer.js +0 -30
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
const { program } = require('commander');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const fs = require('fs').promises;
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
const fs = require('node:fs').promises;
|
|
6
6
|
const yaml = require('js-yaml');
|
|
7
|
-
const chalk = require('chalk');
|
|
8
|
-
const inquirer = require('inquirer');
|
|
7
|
+
const chalk = require('chalk').default || require('chalk');
|
|
8
|
+
const inquirer = require('inquirer').default || require('inquirer');
|
|
9
9
|
const semver = require('semver');
|
|
10
|
-
const https = require('https');
|
|
10
|
+
const https = require('node:https');
|
|
11
11
|
|
|
12
12
|
// Handle both execution contexts (from root via npx or from installer directory)
|
|
13
13
|
let version;
|
|
@@ -18,18 +18,20 @@ try {
|
|
|
18
18
|
version = require('../package.json').version;
|
|
19
19
|
packageName = require('../package.json').name;
|
|
20
20
|
installer = require('../lib/installer');
|
|
21
|
-
} catch (
|
|
21
|
+
} catch (error) {
|
|
22
22
|
// Fall back to root context (when run via npx from GitHub)
|
|
23
|
-
console.log(`Installer context not found (${
|
|
23
|
+
console.log(`Installer context not found (${error.message}), trying root context...`);
|
|
24
24
|
try {
|
|
25
25
|
version = require('../../../package.json').version;
|
|
26
26
|
installer = require('../../../tools/installer/lib/installer');
|
|
27
|
-
} catch (
|
|
28
|
-
console.error(
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.error(
|
|
29
|
+
'Error: Could not load required modules. Please ensure you are running from the correct directory.',
|
|
30
|
+
);
|
|
29
31
|
console.error('Debug info:', {
|
|
30
32
|
__dirname,
|
|
31
33
|
cwd: process.cwd(),
|
|
32
|
-
error:
|
|
34
|
+
error: error.message,
|
|
33
35
|
});
|
|
34
36
|
process.exit(1);
|
|
35
37
|
}
|
|
@@ -45,8 +47,14 @@ program
|
|
|
45
47
|
.option('-f, --full', 'Install complete BMad Method')
|
|
46
48
|
.option('-x, --expansion-only', 'Install only expansion packs (no bmad-core)')
|
|
47
49
|
.option('-d, --directory <path>', 'Installation directory')
|
|
48
|
-
.option(
|
|
49
|
-
|
|
50
|
+
.option(
|
|
51
|
+
'-i, --ide <ide...>',
|
|
52
|
+
'Configure for specific IDE(s) - can specify multiple (cursor, claude-code, windsurf, trae, roo, kilo, cline, gemini, qwen-code, github-copilot, other)',
|
|
53
|
+
)
|
|
54
|
+
.option(
|
|
55
|
+
'-e, --expansion-packs <packs...>',
|
|
56
|
+
'Install specific expansion packs (can specify multiple)',
|
|
57
|
+
)
|
|
50
58
|
.action(async (options) => {
|
|
51
59
|
try {
|
|
52
60
|
if (!options.full && !options.expansionOnly) {
|
|
@@ -64,8 +72,8 @@ program
|
|
|
64
72
|
const config = {
|
|
65
73
|
installType,
|
|
66
74
|
directory: options.directory || '.',
|
|
67
|
-
ides: (options.ide || []).filter(ide => ide !== 'other'),
|
|
68
|
-
expansionPacks: options.expansionPacks || []
|
|
75
|
+
ides: (options.ide || []).filter((ide) => ide !== 'other'),
|
|
76
|
+
expansionPacks: options.expansionPacks || [],
|
|
69
77
|
};
|
|
70
78
|
await installer.install(config);
|
|
71
79
|
process.exit(0);
|
|
@@ -96,28 +104,30 @@ program
|
|
|
96
104
|
.description('Check for BMad Update')
|
|
97
105
|
.action(async () => {
|
|
98
106
|
console.log('Checking for updates...');
|
|
99
|
-
|
|
107
|
+
|
|
100
108
|
// Make HTTP request to npm registry for latest version info
|
|
101
|
-
const req = https.get(`https://registry.npmjs.org/${packageName}/latest`, res => {
|
|
109
|
+
const req = https.get(`https://registry.npmjs.org/${packageName}/latest`, (res) => {
|
|
102
110
|
// Check for HTTP errors (non-200 status codes)
|
|
103
111
|
if (res.statusCode !== 200) {
|
|
104
112
|
console.error(chalk.red(`Update check failed: Received status code ${res.statusCode}`));
|
|
105
113
|
return;
|
|
106
114
|
}
|
|
107
|
-
|
|
115
|
+
|
|
108
116
|
// Accumulate response data chunks
|
|
109
117
|
let data = '';
|
|
110
|
-
res.on('data', chunk => data += chunk);
|
|
111
|
-
|
|
118
|
+
res.on('data', (chunk) => (data += chunk));
|
|
119
|
+
|
|
112
120
|
// Process complete response
|
|
113
121
|
res.on('end', () => {
|
|
114
122
|
try {
|
|
115
123
|
// Parse npm registry response and extract version
|
|
116
124
|
const latest = JSON.parse(data).version;
|
|
117
|
-
|
|
125
|
+
|
|
118
126
|
// Compare versions using semver
|
|
119
127
|
if (semver.gt(latest, version)) {
|
|
120
|
-
console.log(
|
|
128
|
+
console.log(
|
|
129
|
+
chalk.bold.blue(`ā ļø ${packageName} update available: ${version} ā ${latest}`),
|
|
130
|
+
);
|
|
121
131
|
console.log(chalk.bold.blue('\nInstall latest by running:'));
|
|
122
132
|
console.log(chalk.bold.magenta(` npm install ${packageName}@latest`));
|
|
123
133
|
console.log(chalk.dim(' or'));
|
|
@@ -131,14 +141,14 @@ program
|
|
|
131
141
|
}
|
|
132
142
|
});
|
|
133
143
|
});
|
|
134
|
-
|
|
144
|
+
|
|
135
145
|
// Handle network/connection errors
|
|
136
|
-
req.on('error', error => {
|
|
146
|
+
req.on('error', (error) => {
|
|
137
147
|
console.error(chalk.red('Update check failed:'), error.message);
|
|
138
148
|
});
|
|
139
|
-
|
|
149
|
+
|
|
140
150
|
// Set 30 second timeout to prevent hanging
|
|
141
|
-
req.setTimeout(
|
|
151
|
+
req.setTimeout(30_000, () => {
|
|
142
152
|
req.destroy();
|
|
143
153
|
console.error(chalk.red('Update check timed out'));
|
|
144
154
|
});
|
|
@@ -183,17 +193,18 @@ program
|
|
|
183
193
|
});
|
|
184
194
|
|
|
185
195
|
async function promptInstallation() {
|
|
186
|
-
|
|
187
196
|
// Display ASCII logo
|
|
188
|
-
console.log(
|
|
197
|
+
console.log(
|
|
198
|
+
chalk.bold.cyan(`
|
|
189
199
|
āāāāāāā āāāā āāāā āāāāāā āāāāāāā āāāā āāāāāāāāāāāāāāāāāāāāāāāā āāā āāāāāāā āāāāāāā
|
|
190
200
|
āāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāā āāāāā āāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāā
|
|
191
201
|
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāā āāā āāāāāāāāāāā āāāāāā āāā
|
|
192
202
|
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāā āāā āāāāāāāāāāā āāāāāā āāā
|
|
193
203
|
āāāāāāāāāāā āāā āāāāāā āāāāāāāāāāā āāā āāā āāāāāāāāāāā āāā āāā āāāāāāāāāāāāāāāāāāāā
|
|
194
204
|
āāāāāāā āāā āāāāāā āāāāāāāāāā āāā āāāāāāāāāāā āāā āāā āāā āāāāāāā āāāāāāā
|
|
195
|
-
`)
|
|
196
|
-
|
|
205
|
+
`),
|
|
206
|
+
);
|
|
207
|
+
|
|
197
208
|
console.log(chalk.bold.magenta('š Universal AI Agent Framework for Any Domain'));
|
|
198
209
|
console.log(chalk.bold.blue(`⨠Installer v${version}\n`));
|
|
199
210
|
|
|
@@ -205,76 +216,79 @@ async function promptInstallation() {
|
|
|
205
216
|
type: 'input',
|
|
206
217
|
name: 'directory',
|
|
207
218
|
message: 'Enter the full path to your project directory where BMad should be installed:',
|
|
219
|
+
default: process.cwd(),
|
|
208
220
|
validate: (input) => {
|
|
209
221
|
if (!input.trim()) {
|
|
210
222
|
return 'Please enter a valid project path';
|
|
211
223
|
}
|
|
212
224
|
return true;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
225
|
+
},
|
|
226
|
+
},
|
|
215
227
|
]);
|
|
216
228
|
answers.directory = directory;
|
|
217
229
|
|
|
218
230
|
// Detect existing installations
|
|
219
231
|
const installDir = path.resolve(directory);
|
|
220
232
|
const state = await installer.detectInstallationState(installDir);
|
|
221
|
-
|
|
233
|
+
|
|
222
234
|
// Check for existing expansion packs
|
|
223
235
|
const existingExpansionPacks = state.expansionPacks || {};
|
|
224
|
-
|
|
236
|
+
|
|
225
237
|
// Get available expansion packs
|
|
226
238
|
const availableExpansionPacks = await installer.getAvailableExpansionPacks();
|
|
227
|
-
|
|
239
|
+
|
|
228
240
|
// Build choices list
|
|
229
241
|
const choices = [];
|
|
230
|
-
|
|
242
|
+
|
|
231
243
|
// Load core config to get short-title
|
|
232
244
|
const coreConfigPath = path.join(__dirname, '..', '..', '..', 'bmad-core', 'core-config.yaml');
|
|
233
245
|
const coreConfig = yaml.load(await fs.readFile(coreConfigPath, 'utf8'));
|
|
234
246
|
const coreShortTitle = coreConfig['short-title'] || 'BMad Agile Core System';
|
|
235
|
-
|
|
247
|
+
|
|
236
248
|
// Add BMad core option
|
|
237
249
|
let bmadOptionText;
|
|
238
250
|
if (state.type === 'v4_existing') {
|
|
239
251
|
const currentVersion = state.manifest?.version || 'unknown';
|
|
240
252
|
const newVersion = version; // Always use package.json version
|
|
241
|
-
const versionInfo =
|
|
242
|
-
|
|
243
|
-
|
|
253
|
+
const versionInfo =
|
|
254
|
+
currentVersion === newVersion
|
|
255
|
+
? `(v${currentVersion} - reinstall)`
|
|
256
|
+
: `(v${currentVersion} ā v${newVersion})`;
|
|
244
257
|
bmadOptionText = `Update ${coreShortTitle} ${versionInfo} .bmad-core`;
|
|
245
258
|
} else {
|
|
246
259
|
bmadOptionText = `${coreShortTitle} (v${version}) .bmad-core`;
|
|
247
260
|
}
|
|
248
|
-
|
|
261
|
+
|
|
249
262
|
choices.push({
|
|
250
263
|
name: bmadOptionText,
|
|
251
264
|
value: 'bmad-core',
|
|
252
|
-
checked: true
|
|
265
|
+
checked: true,
|
|
253
266
|
});
|
|
254
|
-
|
|
267
|
+
|
|
255
268
|
// Add expansion pack options
|
|
256
269
|
for (const pack of availableExpansionPacks) {
|
|
257
270
|
const existing = existingExpansionPacks[pack.id];
|
|
258
271
|
let packOptionText;
|
|
259
|
-
|
|
272
|
+
|
|
260
273
|
if (existing) {
|
|
261
274
|
const currentVersion = existing.manifest?.version || 'unknown';
|
|
262
275
|
const newVersion = pack.version;
|
|
263
|
-
const versionInfo =
|
|
264
|
-
|
|
265
|
-
|
|
276
|
+
const versionInfo =
|
|
277
|
+
currentVersion === newVersion
|
|
278
|
+
? `(v${currentVersion} - reinstall)`
|
|
279
|
+
: `(v${currentVersion} ā v${newVersion})`;
|
|
266
280
|
packOptionText = `Update ${pack.shortTitle} ${versionInfo} .${pack.id}`;
|
|
267
281
|
} else {
|
|
268
282
|
packOptionText = `${pack.shortTitle} (v${pack.version}) .${pack.id}`;
|
|
269
283
|
}
|
|
270
|
-
|
|
284
|
+
|
|
271
285
|
choices.push({
|
|
272
286
|
name: packOptionText,
|
|
273
287
|
value: pack.id,
|
|
274
|
-
checked: false
|
|
288
|
+
checked: false,
|
|
275
289
|
});
|
|
276
290
|
}
|
|
277
|
-
|
|
291
|
+
|
|
278
292
|
// Ask what to install
|
|
279
293
|
const { selectedItems } = await inquirer.prompt([
|
|
280
294
|
{
|
|
@@ -287,59 +301,71 @@ async function promptInstallation() {
|
|
|
287
301
|
return 'Please select at least one item to install';
|
|
288
302
|
}
|
|
289
303
|
return true;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
304
|
+
},
|
|
305
|
+
},
|
|
292
306
|
]);
|
|
293
|
-
|
|
307
|
+
|
|
294
308
|
// Process selections
|
|
295
309
|
answers.installType = selectedItems.includes('bmad-core') ? 'full' : 'expansion-only';
|
|
296
|
-
answers.expansionPacks = selectedItems.filter(item => item !== 'bmad-core');
|
|
310
|
+
answers.expansionPacks = selectedItems.filter((item) => item !== 'bmad-core');
|
|
297
311
|
|
|
298
312
|
// Ask sharding questions if installing BMad core
|
|
299
313
|
if (selectedItems.includes('bmad-core')) {
|
|
300
314
|
console.log(chalk.cyan('\nš Document Organization Settings'));
|
|
301
315
|
console.log(chalk.dim('Configure how your project documentation should be organized.\n'));
|
|
302
|
-
|
|
316
|
+
|
|
303
317
|
// Ask about PRD sharding
|
|
304
318
|
const { prdSharded } = await inquirer.prompt([
|
|
305
319
|
{
|
|
306
320
|
type: 'confirm',
|
|
307
321
|
name: 'prdSharded',
|
|
308
322
|
message: 'Will the PRD (Product Requirements Document) be sharded into multiple files?',
|
|
309
|
-
default: true
|
|
310
|
-
}
|
|
323
|
+
default: true,
|
|
324
|
+
},
|
|
311
325
|
]);
|
|
312
326
|
answers.prdSharded = prdSharded;
|
|
313
|
-
|
|
327
|
+
|
|
314
328
|
// Ask about architecture sharding
|
|
315
329
|
const { architectureSharded } = await inquirer.prompt([
|
|
316
330
|
{
|
|
317
331
|
type: 'confirm',
|
|
318
332
|
name: 'architectureSharded',
|
|
319
333
|
message: 'Will the architecture documentation be sharded into multiple files?',
|
|
320
|
-
default: true
|
|
321
|
-
}
|
|
334
|
+
default: true,
|
|
335
|
+
},
|
|
322
336
|
]);
|
|
323
337
|
answers.architectureSharded = architectureSharded;
|
|
324
|
-
|
|
338
|
+
|
|
325
339
|
// Show warning if architecture sharding is disabled
|
|
326
340
|
if (!architectureSharded) {
|
|
327
341
|
console.log(chalk.yellow.bold('\nā ļø IMPORTANT: Architecture Sharding Disabled'));
|
|
328
|
-
console.log(
|
|
329
|
-
|
|
342
|
+
console.log(
|
|
343
|
+
chalk.yellow(
|
|
344
|
+
'With architecture sharding disabled, you should still create the files listed',
|
|
345
|
+
),
|
|
346
|
+
);
|
|
347
|
+
console.log(
|
|
348
|
+
chalk.yellow(
|
|
349
|
+
'in devLoadAlwaysFiles (like coding-standards.md, tech-stack.md, source-tree.md)',
|
|
350
|
+
),
|
|
351
|
+
);
|
|
330
352
|
console.log(chalk.yellow('as these are used by the dev agent at runtime.'));
|
|
331
|
-
console.log(
|
|
353
|
+
console.log(
|
|
354
|
+
chalk.yellow(
|
|
355
|
+
'\nAlternatively, you can remove these files from the devLoadAlwaysFiles list',
|
|
356
|
+
),
|
|
357
|
+
);
|
|
332
358
|
console.log(chalk.yellow('in your core-config.yaml after installation.'));
|
|
333
|
-
|
|
359
|
+
|
|
334
360
|
const { acknowledge } = await inquirer.prompt([
|
|
335
361
|
{
|
|
336
362
|
type: 'confirm',
|
|
337
363
|
name: 'acknowledge',
|
|
338
364
|
message: 'Do you acknowledge this requirement and want to proceed?',
|
|
339
|
-
default: false
|
|
340
|
-
}
|
|
365
|
+
default: false,
|
|
366
|
+
},
|
|
341
367
|
]);
|
|
342
|
-
|
|
368
|
+
|
|
343
369
|
if (!acknowledge) {
|
|
344
370
|
console.log(chalk.red('Installation cancelled.'));
|
|
345
371
|
process.exit(0);
|
|
@@ -350,19 +376,24 @@ async function promptInstallation() {
|
|
|
350
376
|
// Ask for IDE configuration
|
|
351
377
|
let ides = [];
|
|
352
378
|
let ideSelectionComplete = false;
|
|
353
|
-
|
|
379
|
+
|
|
354
380
|
while (!ideSelectionComplete) {
|
|
355
381
|
console.log(chalk.cyan('\nš ļø IDE Configuration'));
|
|
356
|
-
console.log(
|
|
382
|
+
console.log(
|
|
383
|
+
chalk.bold.yellow.bgRed(
|
|
384
|
+
' ā ļø IMPORTANT: This is a MULTISELECT! Use SPACEBAR to toggle each IDE! ',
|
|
385
|
+
),
|
|
386
|
+
);
|
|
357
387
|
console.log(chalk.bold.magenta('šø Use arrow keys to navigate'));
|
|
358
388
|
console.log(chalk.bold.magenta('šø Use SPACEBAR to select/deselect IDEs'));
|
|
359
389
|
console.log(chalk.bold.magenta('šø Press ENTER when finished selecting\n'));
|
|
360
|
-
|
|
390
|
+
|
|
361
391
|
const ideResponse = await inquirer.prompt([
|
|
362
392
|
{
|
|
363
393
|
type: 'checkbox',
|
|
364
394
|
name: 'ides',
|
|
365
|
-
message:
|
|
395
|
+
message:
|
|
396
|
+
'Which IDE(s) do you want to configure? (Select with SPACEBAR, confirm with ENTER):',
|
|
366
397
|
choices: [
|
|
367
398
|
{ name: 'Cursor', value: 'cursor' },
|
|
368
399
|
{ name: 'Claude Code', value: 'claude-code' },
|
|
@@ -373,11 +404,12 @@ async function promptInstallation() {
|
|
|
373
404
|
{ name: 'Cline', value: 'cline' },
|
|
374
405
|
{ name: 'Gemini CLI', value: 'gemini' },
|
|
375
406
|
{ name: 'Qwen Code', value: 'qwen-code' },
|
|
376
|
-
{ name: '
|
|
377
|
-
|
|
378
|
-
|
|
407
|
+
{ name: 'Crush', value: 'crush' },
|
|
408
|
+
{ name: 'Github Copilot', value: 'github-copilot' },
|
|
409
|
+
],
|
|
410
|
+
},
|
|
379
411
|
]);
|
|
380
|
-
|
|
412
|
+
|
|
381
413
|
ides = ideResponse.ides;
|
|
382
414
|
|
|
383
415
|
// Confirm no IDE selection if none selected
|
|
@@ -386,17 +418,23 @@ async function promptInstallation() {
|
|
|
386
418
|
{
|
|
387
419
|
type: 'confirm',
|
|
388
420
|
name: 'confirmNoIde',
|
|
389
|
-
message: chalk.red(
|
|
390
|
-
|
|
391
|
-
|
|
421
|
+
message: chalk.red(
|
|
422
|
+
'ā ļø You have NOT selected any IDEs. This means NO IDE integration will be set up. Is this correct?',
|
|
423
|
+
),
|
|
424
|
+
default: false,
|
|
425
|
+
},
|
|
392
426
|
]);
|
|
393
|
-
|
|
427
|
+
|
|
394
428
|
if (!confirmNoIde) {
|
|
395
|
-
console.log(
|
|
429
|
+
console.log(
|
|
430
|
+
chalk.bold.red(
|
|
431
|
+
'\nš Returning to IDE selection. Remember to use SPACEBAR to select IDEs!\n',
|
|
432
|
+
),
|
|
433
|
+
);
|
|
396
434
|
continue; // Go back to IDE selection only
|
|
397
435
|
}
|
|
398
436
|
}
|
|
399
|
-
|
|
437
|
+
|
|
400
438
|
ideSelectionComplete = true;
|
|
401
439
|
}
|
|
402
440
|
|
|
@@ -406,8 +444,10 @@ async function promptInstallation() {
|
|
|
406
444
|
// Configure GitHub Copilot immediately if selected
|
|
407
445
|
if (ides.includes('github-copilot')) {
|
|
408
446
|
console.log(chalk.cyan('\nš§ GitHub Copilot Configuration'));
|
|
409
|
-
console.log(
|
|
410
|
-
|
|
447
|
+
console.log(
|
|
448
|
+
chalk.dim('BMad works best with specific VS Code settings for optimal agent experience.\n'),
|
|
449
|
+
);
|
|
450
|
+
|
|
411
451
|
const { configChoice } = await inquirer.prompt([
|
|
412
452
|
{
|
|
413
453
|
type: 'list',
|
|
@@ -416,21 +456,21 @@ async function promptInstallation() {
|
|
|
416
456
|
choices: [
|
|
417
457
|
{
|
|
418
458
|
name: 'Use recommended defaults (fastest setup)',
|
|
419
|
-
value: 'defaults'
|
|
459
|
+
value: 'defaults',
|
|
420
460
|
},
|
|
421
461
|
{
|
|
422
462
|
name: 'Configure each setting manually (customize to your preferences)',
|
|
423
|
-
value: 'manual'
|
|
463
|
+
value: 'manual',
|
|
424
464
|
},
|
|
425
465
|
{
|
|
426
|
-
name:
|
|
427
|
-
value: 'skip'
|
|
428
|
-
}
|
|
466
|
+
name: "Skip settings configuration (I'll configure manually later)",
|
|
467
|
+
value: 'skip',
|
|
468
|
+
},
|
|
429
469
|
],
|
|
430
|
-
default: 'defaults'
|
|
431
|
-
}
|
|
470
|
+
default: 'defaults',
|
|
471
|
+
},
|
|
432
472
|
]);
|
|
433
|
-
|
|
473
|
+
|
|
434
474
|
answers.githubCopilotConfig = { configChoice };
|
|
435
475
|
}
|
|
436
476
|
|
|
@@ -439,14 +479,17 @@ async function promptInstallation() {
|
|
|
439
479
|
{
|
|
440
480
|
type: 'confirm',
|
|
441
481
|
name: 'includeWebBundles',
|
|
442
|
-
message:
|
|
443
|
-
|
|
444
|
-
|
|
482
|
+
message:
|
|
483
|
+
'Would you like to include pre-built web bundles? (standalone files for ChatGPT, Claude, Gemini)',
|
|
484
|
+
default: false,
|
|
485
|
+
},
|
|
445
486
|
]);
|
|
446
487
|
|
|
447
488
|
if (includeWebBundles) {
|
|
448
489
|
console.log(chalk.cyan('\nš¦ Web bundles are standalone files perfect for web AI platforms.'));
|
|
449
|
-
console.log(
|
|
490
|
+
console.log(
|
|
491
|
+
chalk.dim(' You can choose different teams/agents than your IDE installation.\n'),
|
|
492
|
+
);
|
|
450
493
|
|
|
451
494
|
const { webBundleType } = await inquirer.prompt([
|
|
452
495
|
{
|
|
@@ -456,22 +499,22 @@ async function promptInstallation() {
|
|
|
456
499
|
choices: [
|
|
457
500
|
{
|
|
458
501
|
name: 'All available bundles (agents, teams, expansion packs)',
|
|
459
|
-
value: 'all'
|
|
502
|
+
value: 'all',
|
|
460
503
|
},
|
|
461
504
|
{
|
|
462
505
|
name: 'Specific teams only',
|
|
463
|
-
value: 'teams'
|
|
506
|
+
value: 'teams',
|
|
464
507
|
},
|
|
465
508
|
{
|
|
466
509
|
name: 'Individual agents only',
|
|
467
|
-
value: 'agents'
|
|
510
|
+
value: 'agents',
|
|
468
511
|
},
|
|
469
512
|
{
|
|
470
513
|
name: 'Custom selection',
|
|
471
|
-
value: 'custom'
|
|
472
|
-
}
|
|
473
|
-
]
|
|
474
|
-
}
|
|
514
|
+
value: 'custom',
|
|
515
|
+
},
|
|
516
|
+
],
|
|
517
|
+
},
|
|
475
518
|
]);
|
|
476
519
|
|
|
477
520
|
answers.webBundleType = webBundleType;
|
|
@@ -484,18 +527,18 @@ async function promptInstallation() {
|
|
|
484
527
|
type: 'checkbox',
|
|
485
528
|
name: 'selectedTeams',
|
|
486
529
|
message: 'Select team bundles to include:',
|
|
487
|
-
choices: teams.map(t => ({
|
|
530
|
+
choices: teams.map((t) => ({
|
|
488
531
|
name: `${t.icon || 'š'} ${t.name}: ${t.description}`,
|
|
489
532
|
value: t.id,
|
|
490
|
-
checked: webBundleType === 'teams' // Check all if teams-only mode
|
|
533
|
+
checked: webBundleType === 'teams', // Check all if teams-only mode
|
|
491
534
|
})),
|
|
492
535
|
validate: (answer) => {
|
|
493
|
-
if (answer.length
|
|
536
|
+
if (answer.length === 0) {
|
|
494
537
|
return 'You must select at least one team.';
|
|
495
538
|
}
|
|
496
539
|
return true;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
540
|
+
},
|
|
541
|
+
},
|
|
499
542
|
]);
|
|
500
543
|
answers.selectedWebBundleTeams = selectedTeams;
|
|
501
544
|
}
|
|
@@ -507,8 +550,8 @@ async function promptInstallation() {
|
|
|
507
550
|
type: 'confirm',
|
|
508
551
|
name: 'includeIndividualAgents',
|
|
509
552
|
message: 'Also include individual agent bundles?',
|
|
510
|
-
default: true
|
|
511
|
-
}
|
|
553
|
+
default: true,
|
|
554
|
+
},
|
|
512
555
|
]);
|
|
513
556
|
answers.includeIndividualAgents = includeIndividualAgents;
|
|
514
557
|
}
|
|
@@ -524,8 +567,8 @@ async function promptInstallation() {
|
|
|
524
567
|
return 'Please enter a valid directory path';
|
|
525
568
|
}
|
|
526
569
|
return true;
|
|
527
|
-
}
|
|
528
|
-
}
|
|
570
|
+
},
|
|
571
|
+
},
|
|
529
572
|
]);
|
|
530
573
|
answers.webBundlesDirectory = webBundlesDirectory;
|
|
531
574
|
}
|
|
@@ -538,6 +581,6 @@ async function promptInstallation() {
|
|
|
538
581
|
program.parse(process.argv);
|
|
539
582
|
|
|
540
583
|
// Show help if no command provided
|
|
541
|
-
if (
|
|
584
|
+
if (process.argv.slice(2).length === 0) {
|
|
542
585
|
program.outputHelp();
|
|
543
|
-
}
|
|
586
|
+
}
|
|
@@ -28,14 +28,24 @@ ide-configurations:
|
|
|
28
28
|
# To use BMad agents in Claude Code:
|
|
29
29
|
# 1. Type /agent-name (e.g., "/dev", "/pm", "/architect")
|
|
30
30
|
# 2. Claude will switch to that agent's persona
|
|
31
|
+
crush:
|
|
32
|
+
name: Crush
|
|
33
|
+
rule-dir: .crush/commands/BMad/
|
|
34
|
+
format: multi-file
|
|
35
|
+
command-suffix: .md
|
|
36
|
+
instructions: |
|
|
37
|
+
# To use BMad agents in Crush:
|
|
38
|
+
# 1. Press CTRL + P and press TAB
|
|
39
|
+
# 2. Select agent or task
|
|
40
|
+
# 3. Crush will switch to that agent's persona / task
|
|
31
41
|
windsurf:
|
|
32
42
|
name: Windsurf
|
|
33
|
-
rule-dir: .windsurf/
|
|
43
|
+
rule-dir: .windsurf/workflows/
|
|
34
44
|
format: multi-file
|
|
35
45
|
command-suffix: .md
|
|
36
46
|
instructions: |
|
|
37
47
|
# To use BMad agents in Windsurf:
|
|
38
|
-
# 1. Type
|
|
48
|
+
# 1. Type /agent-name (e.g., "/dev", "/pm")
|
|
39
49
|
# 2. Windsurf will adopt that agent's persona
|
|
40
50
|
trae:
|
|
41
51
|
name: Trae
|
|
@@ -110,4 +120,4 @@ ide-configurations:
|
|
|
110
120
|
# 1. The installer creates a .qwen/bmad-method/ directory in your project.
|
|
111
121
|
# 2. It concatenates all agent files into a single QWEN.md file.
|
|
112
122
|
# 3. Simply mention the agent in your prompt (e.g., "As *dev, ...").
|
|
113
|
-
# 4. The Qwen Code CLI will automatically have the context for that agent.
|
|
123
|
+
# 4. The Qwen Code CLI will automatically have the context for that agent.
|