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.
Files changed (251) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
  3. package/.github/workflows/discord.yaml +11 -2
  4. package/.github/workflows/format-check.yaml +42 -0
  5. package/.github/workflows/manual-release.yaml +173 -0
  6. package/.husky/pre-commit +3 -0
  7. package/.vscode/settings.json +26 -1
  8. package/CHANGELOG.md +2 -23
  9. package/README.md +2 -0
  10. package/bmad-core/agent-teams/team-all.yaml +1 -1
  11. package/bmad-core/agents/analyst.md +16 -15
  12. package/bmad-core/agents/architect.md +11 -11
  13. package/bmad-core/agents/bmad-master.md +23 -22
  14. package/bmad-core/agents/bmad-orchestrator.md +13 -17
  15. package/bmad-core/agents/dev.md +14 -11
  16. package/bmad-core/agents/pm.md +15 -14
  17. package/bmad-core/agents/po.md +9 -8
  18. package/bmad-core/agents/qa.md +42 -22
  19. package/bmad-core/agents/sm.md +7 -6
  20. package/bmad-core/agents/ux-expert.md +6 -5
  21. package/bmad-core/core-config.yaml +2 -0
  22. package/bmad-core/data/bmad-kb.md +1 -1
  23. package/bmad-core/data/test-levels-framework.md +146 -0
  24. package/bmad-core/data/test-priorities-matrix.md +172 -0
  25. package/bmad-core/tasks/apply-qa-fixes.md +148 -0
  26. package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
  27. package/bmad-core/tasks/nfr-assess.md +343 -0
  28. package/bmad-core/tasks/qa-gate.md +161 -0
  29. package/bmad-core/tasks/review-story.md +234 -74
  30. package/bmad-core/tasks/risk-profile.md +353 -0
  31. package/bmad-core/tasks/test-design.md +174 -0
  32. package/bmad-core/tasks/trace-requirements.md +264 -0
  33. package/bmad-core/templates/architecture-tmpl.yaml +49 -49
  34. package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
  35. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
  36. package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
  37. package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
  38. package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
  39. package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
  40. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
  41. package/bmad-core/templates/market-research-tmpl.yaml +2 -2
  42. package/bmad-core/templates/prd-tmpl.yaml +9 -9
  43. package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
  44. package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
  45. package/bmad-core/templates/story-tmpl.yaml +12 -12
  46. package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
  47. package/bmad-core/workflows/brownfield-service.yaml +1 -1
  48. package/bmad-core/workflows/brownfield-ui.yaml +1 -1
  49. package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
  50. package/bmad-core/workflows/greenfield-service.yaml +1 -1
  51. package/bmad-core/workflows/greenfield-ui.yaml +1 -1
  52. package/common/utils/bmad-doc-template.md +5 -5
  53. package/dist/agents/analyst.txt +1086 -1079
  54. package/dist/agents/architect.txt +1534 -1526
  55. package/dist/agents/bmad-master.txt +646 -632
  56. package/dist/agents/bmad-orchestrator.txt +40 -18
  57. package/dist/agents/dev.txt +158 -19
  58. package/dist/agents/pm.txt +1082 -1107
  59. package/dist/agents/po.txt +314 -332
  60. package/dist/agents/qa.txt +1754 -151
  61. package/dist/agents/sm.txt +88 -98
  62. package/dist/agents/ux-expert.txt +80 -87
  63. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
  64. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
  65. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
  66. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
  67. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
  68. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
  69. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
  70. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
  71. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
  72. package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
  73. package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
  74. package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
  75. package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
  76. package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
  77. package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
  78. package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
  79. package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
  80. package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
  81. package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
  82. package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
  83. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
  84. package/dist/teams/team-all.txt +5541 -3768
  85. package/dist/teams/team-fullstack.txt +3014 -2987
  86. package/dist/teams/team-ide-minimal.txt +2219 -469
  87. package/dist/teams/team-no-ui.txt +2993 -2966
  88. package/docs/enhanced-ide-development-workflow.md +220 -15
  89. package/docs/user-guide.md +271 -18
  90. package/docs/versioning-and-releases.md +122 -44
  91. package/docs/working-in-the-brownfield.md +264 -31
  92. package/eslint.config.mjs +119 -0
  93. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
  94. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
  95. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
  96. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
  97. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
  98. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
  99. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
  100. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
  101. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  102. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  103. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
  104. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
  105. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
  106. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
  107. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
  108. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
  109. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
  110. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  111. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  112. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
  113. package/expansion-packs/bmad-creative-writing/README.md +132 -0
  114. package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
  115. package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
  116. package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
  117. package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
  118. package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
  119. package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
  120. package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
  121. package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
  122. package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
  123. package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
  124. package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
  125. package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
  126. package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
  127. package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
  128. package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
  129. package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
  130. package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
  131. package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
  132. package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
  133. package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
  134. package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
  135. package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
  136. package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
  137. package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
  138. package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
  139. package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
  140. package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
  141. package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
  142. package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
  143. package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
  144. package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
  145. package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
  146. package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
  147. package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
  148. package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
  149. package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
  150. package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
  151. package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
  152. package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
  153. package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
  154. package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
  155. package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
  156. package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
  157. package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
  158. package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
  159. package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
  160. package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
  161. package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
  162. package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
  163. package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
  164. package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
  165. package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
  166. package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
  167. package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
  168. package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
  169. package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
  170. package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
  171. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
  172. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
  173. package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
  174. package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
  175. package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
  176. package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
  177. package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
  178. package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
  179. package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
  180. package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
  181. package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
  182. package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
  183. package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
  184. package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
  185. package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
  186. package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
  187. package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
  188. package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
  189. package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
  190. package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
  191. package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
  192. package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
  193. package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
  194. package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
  195. package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
  196. package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
  197. package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
  198. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
  199. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
  200. package/package.json +62 -39
  201. package/prettier.config.mjs +32 -0
  202. package/sync-version.sh +23 -0
  203. package/tools/bmad-npx-wrapper.js +10 -10
  204. package/tools/builders/web-builder.js +124 -130
  205. package/tools/bump-all-versions.js +42 -33
  206. package/tools/bump-expansion-version.js +23 -16
  207. package/tools/cli.js +10 -12
  208. package/tools/flattener/aggregate.js +10 -10
  209. package/tools/flattener/binary.js +44 -17
  210. package/tools/flattener/discovery.js +19 -18
  211. package/tools/flattener/files.js +6 -6
  212. package/tools/flattener/ignoreRules.js +125 -125
  213. package/tools/flattener/main.js +426 -70
  214. package/tools/flattener/projectRoot.js +186 -25
  215. package/tools/flattener/prompts.js +9 -9
  216. package/tools/flattener/stats.helpers.js +395 -0
  217. package/tools/flattener/stats.js +64 -14
  218. package/tools/flattener/test-matrix.js +413 -0
  219. package/tools/flattener/xml.js +33 -31
  220. package/tools/installer/bin/bmad.js +156 -113
  221. package/tools/installer/config/ide-agent-config.yaml +1 -1
  222. package/tools/installer/config/install.config.yaml +13 -3
  223. package/tools/installer/lib/config-loader.js +46 -42
  224. package/tools/installer/lib/file-manager.js +91 -113
  225. package/tools/installer/lib/ide-base-setup.js +57 -56
  226. package/tools/installer/lib/ide-setup.js +545 -399
  227. package/tools/installer/lib/installer.js +875 -714
  228. package/tools/installer/lib/memory-profiler.js +54 -53
  229. package/tools/installer/lib/module-manager.js +19 -15
  230. package/tools/installer/lib/resource-locator.js +26 -28
  231. package/tools/installer/package.json +19 -19
  232. package/tools/lib/dependency-resolver.js +26 -30
  233. package/tools/lib/yaml-utils.js +7 -7
  234. package/tools/preview-release-notes.js +66 -0
  235. package/tools/shared/bannerArt.js +3 -3
  236. package/tools/sync-installer-version.js +7 -9
  237. package/tools/update-expansion-version.js +14 -15
  238. package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
  239. package/tools/version-bump.js +41 -26
  240. package/tools/yaml-format.js +56 -43
  241. package/.github/workflows/release.yaml +0 -60
  242. package/.releaserc.json +0 -21
  243. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
  244. 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
  245. 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
  246. 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
  247. 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
  248. 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
  249. 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
  250. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
  251. 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 (e) {
21
+ } catch (error) {
22
22
  // Fall back to root context (when run via npx from GitHub)
23
- console.log(`Installer context not found (${e.message}), trying root context...`);
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 (e2) {
28
- console.error('Error: Could not load required modules. Please ensure you are running from the correct directory.');
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: e2.message
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('-i, --ide <ide...>', 'Configure for specific IDE(s) - can specify multiple (cursor, claude-code, windsurf, trae, roo, kilo, cline, gemini, qwen-code, github-copilot, other)')
49
- .option('-e, --expansion-packs <packs...>', 'Install specific expansion packs (can specify multiple)')
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(chalk.bold.blue(`āš ļø ${packageName} update available: ${version} → ${latest}`));
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(30000, () => {
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(chalk.bold.cyan(`
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 = currentVersion === newVersion
242
- ? `(v${currentVersion} - reinstall)`
243
- : `(v${currentVersion} → v${newVersion})`;
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 = currentVersion === newVersion
264
- ? `(v${currentVersion} - reinstall)`
265
- : `(v${currentVersion} → v${newVersion})`;
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(chalk.yellow('With architecture sharding disabled, you should still create the files listed'));
329
- console.log(chalk.yellow('in devLoadAlwaysFiles (like coding-standards.md, tech-stack.md, source-tree.md)'));
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(chalk.yellow('\nAlternatively, you can remove these files from the devLoadAlwaysFiles list'));
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(chalk.bold.yellow.bgRed(' āš ļø IMPORTANT: This is a MULTISELECT! Use SPACEBAR to toggle each IDE! '));
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: 'Which IDE(s) do you want to configure? (Select with SPACEBAR, confirm with ENTER):',
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: 'Github Copilot', value: 'github-copilot' }
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('āš ļø You have NOT selected any IDEs. This means NO IDE integration will be set up. Is this correct?'),
390
- default: false
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(chalk.bold.red('\nšŸ”„ Returning to IDE selection. Remember to use SPACEBAR to select IDEs!\n'));
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(chalk.dim('BMad works best with specific VS Code settings for optimal agent experience.\n'));
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: 'Skip settings configuration (I\'ll configure manually later)',
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: 'Would you like to include pre-built web bundles? (standalone files for ChatGPT, Claude, Gemini)',
443
- default: false
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(chalk.dim(' You can choose different teams/agents than your IDE installation.\n'));
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 < 1) {
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 (!process.argv.slice(2).length) {
584
+ if (process.argv.slice(2).length === 0) {
542
585
  program.outputHelp();
543
- }
586
+ }
@@ -55,4 +55,4 @@ cline-order:
55
55
  game-designer: 12
56
56
  game-developer: 13
57
57
  game-sm: 14
58
- infra-devops-platform: 15
58
+ infra-devops-platform: 15
@@ -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/rules/
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 @agent-name (e.g., "@dev", "@pm")
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.