bmad-method 5.0.0 → 5.1.0

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 (329) hide show
  1. package/.github/FUNDING.yaml +15 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  4. package/.github/workflows/discord.yaml +25 -0
  5. package/.github/workflows/format-check.yaml +42 -0
  6. package/.github/workflows/manual-release.yaml +173 -0
  7. package/.husky/pre-commit +3 -2
  8. package/.vscode/settings.json +67 -74
  9. package/CHANGELOG.md +564 -19
  10. package/CONTRIBUTING.md +168 -5
  11. package/LICENSE +1 -1
  12. package/README.md +146 -218
  13. package/bmad-core/agent-teams/team-all.yaml +14 -0
  14. package/bmad-core/agent-teams/team-fullstack.yaml +18 -0
  15. package/bmad-core/agent-teams/team-ide-minimal.yaml +10 -0
  16. package/bmad-core/agent-teams/team-no-ui.yaml +13 -0
  17. package/bmad-core/agents/analyst.md +81 -0
  18. package/bmad-core/agents/architect.md +83 -0
  19. package/bmad-core/agents/bmad-master.md +107 -0
  20. package/bmad-core/agents/bmad-orchestrator.md +149 -0
  21. package/bmad-core/agents/dev.md +75 -0
  22. package/bmad-core/agents/pm.md +81 -0
  23. package/bmad-core/agents/po.md +76 -0
  24. package/bmad-core/agents/qa.md +88 -0
  25. package/bmad-core/agents/sm.md +62 -0
  26. package/bmad-core/agents/ux-expert.md +66 -0
  27. package/{.bmad-core → bmad-core}/checklists/architect-checklist.md +0 -5
  28. package/{.bmad-core → bmad-core}/checklists/change-checklist.md +2 -2
  29. package/{.bmad-core → bmad-core}/checklists/pm-checklist.md +0 -5
  30. package/{.bmad-core → bmad-core}/checklists/po-master-checklist.md +0 -9
  31. package/{.bmad-core → bmad-core}/checklists/story-dod-checklist.md +0 -7
  32. package/{.bmad-core → bmad-core}/checklists/story-draft-checklist.md +1 -4
  33. package/bmad-core/core-config.yaml +20 -0
  34. package/bmad-core/data/bmad-kb.md +806 -0
  35. package/bmad-core/data/brainstorming-techniques.md +36 -0
  36. package/bmad-core/data/elicitation-methods.md +154 -0
  37. package/bmad-core/data/test-levels-framework.md +146 -0
  38. package/bmad-core/data/test-priorities-matrix.md +172 -0
  39. package/bmad-core/tasks/advanced-elicitation.md +117 -0
  40. package/{.bmad-core → bmad-core}/tasks/correct-course.md +9 -12
  41. package/bmad-core/tasks/create-brownfield-story.md +312 -0
  42. package/{.bmad-core → bmad-core}/tasks/create-deep-research-prompt.md +4 -27
  43. package/bmad-core/tasks/create-next-story.md +112 -0
  44. package/bmad-core/tasks/document-project.md +343 -0
  45. package/bmad-core/tasks/facilitate-brainstorming-session.md +136 -0
  46. package/bmad-core/tasks/generate-ai-frontend-prompt.md +51 -0
  47. package/{.bmad-core → bmad-core}/tasks/index-docs.md +3 -13
  48. package/bmad-core/tasks/kb-mode-interaction.md +75 -0
  49. package/bmad-core/tasks/nfr-assess.md +343 -0
  50. package/bmad-core/tasks/qa-gate.md +159 -0
  51. package/bmad-core/tasks/review-story.md +314 -0
  52. package/bmad-core/tasks/risk-profile.md +353 -0
  53. package/{.bmad-core → bmad-core}/tasks/shard-doc.md +27 -15
  54. package/bmad-core/tasks/test-design.md +174 -0
  55. package/bmad-core/tasks/trace-requirements.md +264 -0
  56. package/bmad-core/tasks/validate-next-story.md +134 -0
  57. package/bmad-core/templates/architecture-tmpl.yaml +650 -0
  58. package/bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  59. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +476 -0
  60. package/bmad-core/templates/brownfield-prd-tmpl.yaml +280 -0
  61. package/bmad-core/templates/competitor-analysis-tmpl.yaml +306 -0
  62. package/bmad-core/templates/front-end-architecture-tmpl.yaml +218 -0
  63. package/bmad-core/templates/front-end-spec-tmpl.yaml +349 -0
  64. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +823 -0
  65. package/bmad-core/templates/market-research-tmpl.yaml +252 -0
  66. package/bmad-core/templates/prd-tmpl.yaml +202 -0
  67. package/bmad-core/templates/project-brief-tmpl.yaml +221 -0
  68. package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
  69. package/bmad-core/templates/story-tmpl.yaml +137 -0
  70. package/bmad-core/workflows/brownfield-fullstack.yaml +297 -0
  71. package/bmad-core/workflows/brownfield-service.yaml +187 -0
  72. package/bmad-core/workflows/brownfield-ui.yaml +197 -0
  73. package/{.bmad-core/workflows/greenfield-fullstack.yml → bmad-core/workflows/greenfield-fullstack.yaml} +140 -77
  74. package/bmad-core/workflows/greenfield-service.yaml +206 -0
  75. package/bmad-core/workflows/greenfield-ui.yaml +235 -0
  76. package/common/tasks/create-doc.md +101 -0
  77. package/{.bmad-core → common}/tasks/execute-checklist.md +2 -13
  78. package/common/utils/bmad-doc-template.md +325 -0
  79. package/common/utils/workflow-management.md +69 -0
  80. package/dist/agents/analyst.txt +2889 -0
  81. package/dist/agents/architect.txt +3552 -0
  82. package/dist/agents/bmad-master.txt +8769 -0
  83. package/dist/agents/bmad-orchestrator.txt +1513 -0
  84. package/dist/agents/dev.txt +414 -0
  85. package/{.bmad-core/web-bundles → dist}/agents/pm.txt +668 -1119
  86. package/{.bmad-core/web-bundles → dist}/agents/po.txt +341 -484
  87. package/dist/agents/qa.txt +1987 -0
  88. package/dist/agents/sm.txt +658 -0
  89. package/dist/agents/ux-expert.txt +694 -0
  90. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +2371 -0
  91. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +1620 -0
  92. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +815 -0
  93. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +10952 -0
  94. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +4012 -0
  95. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +3698 -0
  96. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +450 -0
  97. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +973 -0
  98. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +15376 -0
  99. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2075 -0
  100. package/dist/teams/team-all.txt +12682 -0
  101. package/dist/teams/team-fullstack.txt +10421 -0
  102. package/dist/teams/team-ide-minimal.txt +5103 -0
  103. package/dist/teams/team-no-ui.txt +8980 -0
  104. package/docs/GUIDING-PRINCIPLES.md +91 -0
  105. package/docs/core-architecture.md +219 -0
  106. package/docs/enhanced-ide-development-workflow.md +248 -0
  107. package/docs/expansion-packs.md +280 -0
  108. package/docs/how-to-contribute-with-pull-requests.md +158 -0
  109. package/docs/user-guide.md +504 -0
  110. package/docs/versioning-and-releases.md +8 -16
  111. package/docs/versions.md +4 -5
  112. package/docs/working-in-the-brownfield.md +597 -0
  113. package/eslint.config.mjs +119 -0
  114. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +102 -0
  115. 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 +13 -0
  116. 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 +13 -0
  117. 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 +25 -0
  118. 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 +34 -0
  119. 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 +70 -0
  120. 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 +26 -0
  121. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +109 -0
  122. package/expansion-packs/README.md +2 -112
  123. package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +13 -0
  124. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +71 -0
  125. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +78 -0
  126. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +64 -0
  127. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +201 -0
  128. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +160 -0
  129. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +8 -0
  130. package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +250 -0
  131. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +647 -0
  132. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +110 -0
  133. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +216 -0
  134. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +290 -0
  135. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +613 -0
  136. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +356 -0
  137. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +343 -0
  138. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +253 -0
  139. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +484 -0
  140. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +183 -0
  141. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +175 -0
  142. package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +14 -0
  143. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +80 -0
  144. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +77 -0
  145. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +78 -0
  146. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +65 -0
  147. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +391 -0
  148. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +203 -0
  149. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +201 -0
  150. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +124 -0
  151. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +6 -0
  152. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +769 -0
  153. package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +586 -0
  154. package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +110 -0
  155. package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +141 -0
  156. package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +184 -0
  157. package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +290 -0
  158. package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +200 -0
  159. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +1030 -0
  160. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +356 -0
  161. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +705 -0
  162. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +256 -0
  163. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +484 -0
  164. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +183 -0
  165. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +175 -0
  166. package/expansion-packs/{infrastructure-devops → bmad-infrastructure-devops}/README.md +9 -9
  167. package/expansion-packs/{infrastructure-devops → bmad-infrastructure-devops}/agents/infra-devops-platform.md +30 -18
  168. package/expansion-packs/{infrastructure-devops → bmad-infrastructure-devops}/checklists/infrastructure-checklist.md +1 -1
  169. package/expansion-packs/bmad-infrastructure-devops/config.yaml +9 -0
  170. package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +305 -0
  171. package/expansion-packs/{infrastructure-devops → bmad-infrastructure-devops}/tasks/review-infrastructure.md +4 -5
  172. package/expansion-packs/{infrastructure-devops → bmad-infrastructure-devops}/tasks/validate-infrastructure.md +4 -5
  173. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +424 -0
  174. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +629 -0
  175. package/package.json +74 -42
  176. package/prettier.config.mjs +32 -0
  177. package/release_notes.md +25 -0
  178. package/tools/bmad-npx-wrapper.js +13 -15
  179. package/tools/builders/web-builder.js +544 -15
  180. package/tools/bump-all-versions.js +115 -0
  181. package/tools/bump-expansion-version.js +90 -0
  182. package/tools/cli.js +65 -32
  183. package/tools/flattener/aggregate.js +76 -0
  184. package/tools/flattener/binary.js +80 -0
  185. package/tools/flattener/discovery.js +71 -0
  186. package/tools/flattener/files.js +35 -0
  187. package/tools/flattener/ignoreRules.js +176 -0
  188. package/tools/flattener/main.js +573 -0
  189. package/tools/flattener/projectRoot.js +206 -0
  190. package/tools/flattener/prompts.js +44 -0
  191. package/tools/flattener/stats.helpers.js +395 -0
  192. package/tools/flattener/stats.js +80 -0
  193. package/tools/flattener/test-matrix.js +413 -0
  194. package/tools/flattener/xml.js +88 -0
  195. package/tools/installer/README.md +3 -53
  196. package/tools/installer/bin/bmad.js +475 -90
  197. package/tools/installer/config/ide-agent-config.yaml +58 -0
  198. package/tools/installer/config/install.config.yaml +123 -0
  199. package/tools/installer/lib/config-loader.js +208 -40
  200. package/tools/installer/lib/file-manager.js +258 -55
  201. package/tools/installer/lib/ide-base-setup.js +228 -0
  202. package/tools/installer/lib/ide-setup.js +1265 -253
  203. package/tools/installer/lib/installer.js +1651 -310
  204. package/tools/installer/lib/memory-profiler.js +225 -0
  205. package/tools/installer/lib/module-manager.js +114 -0
  206. package/tools/installer/lib/resource-locator.js +308 -0
  207. package/tools/installer/package.json +25 -24
  208. package/tools/lib/dependency-resolver.js +44 -48
  209. package/tools/lib/yaml-utils.js +29 -0
  210. package/tools/md-assets/web-agent-startup-instructions.md +39 -0
  211. package/tools/preview-release-notes.js +66 -0
  212. package/tools/shared/bannerArt.js +105 -0
  213. package/tools/sync-installer-version.js +7 -9
  214. package/tools/update-expansion-version.js +53 -0
  215. package/tools/upgraders/v3-to-v4-upgrader.js +221 -320
  216. package/tools/version-bump.js +42 -27
  217. package/tools/yaml-format.js +57 -44
  218. package/.bmad-core/agent-teams/team-all.yml +0 -16
  219. package/.bmad-core/agent-teams/team-fullstack.yml +0 -26
  220. package/.bmad-core/agent-teams/team-no-ui.yml +0 -15
  221. package/.bmad-core/agents/analyst.md +0 -59
  222. package/.bmad-core/agents/architect.md +0 -66
  223. package/.bmad-core/agents/bmad-master.md +0 -104
  224. package/.bmad-core/agents/bmad-orchestrator.md +0 -81
  225. package/.bmad-core/agents/dev.md +0 -70
  226. package/.bmad-core/agents/pm.md +0 -59
  227. package/.bmad-core/agents/po.md +0 -60
  228. package/.bmad-core/agents/qa.md +0 -52
  229. package/.bmad-core/agents/sm.md +0 -55
  230. package/.bmad-core/agents/ux-expert.md +0 -66
  231. package/.bmad-core/data/bmad-kb.md +0 -47
  232. package/.bmad-core/schemas/agent-team-schema.yml +0 -153
  233. package/.bmad-core/tasks/advanced-elicitation.md +0 -92
  234. package/.bmad-core/tasks/brainstorming-techniques.md +0 -238
  235. package/.bmad-core/tasks/core-dump.md +0 -74
  236. package/.bmad-core/tasks/create-agent.md +0 -202
  237. package/.bmad-core/tasks/create-doc.md +0 -74
  238. package/.bmad-core/tasks/create-expansion-pack.md +0 -425
  239. package/.bmad-core/tasks/create-next-story.md +0 -206
  240. package/.bmad-core/tasks/create-team.md +0 -229
  241. package/.bmad-core/tasks/doc-migration-task.md +0 -143
  242. package/.bmad-core/tasks/generate-ai-frontend-prompt.md +0 -58
  243. package/.bmad-core/templates/agent-tmpl.md +0 -58
  244. package/.bmad-core/templates/architecture-tmpl.md +0 -771
  245. package/.bmad-core/templates/brownfield-architecture-tmpl.md +0 -542
  246. package/.bmad-core/templates/brownfield-prd-tmpl.md +0 -240
  247. package/.bmad-core/templates/competitor-analysis-tmpl.md +0 -289
  248. package/.bmad-core/templates/expansion-pack-plan-tmpl.md +0 -91
  249. package/.bmad-core/templates/front-end-architecture-tmpl.md +0 -173
  250. package/.bmad-core/templates/front-end-spec-tmpl.md +0 -411
  251. package/.bmad-core/templates/fullstack-architecture-tmpl.md +0 -1016
  252. package/.bmad-core/templates/market-research-tmpl.md +0 -261
  253. package/.bmad-core/templates/prd-tmpl.md +0 -200
  254. package/.bmad-core/templates/project-brief-tmpl.md +0 -228
  255. package/.bmad-core/templates/simple-project-prd-tmpl.md +0 -461
  256. package/.bmad-core/templates/story-tmpl.md +0 -61
  257. package/.bmad-core/templates/web-agent-startup-instructions-template.md +0 -39
  258. package/.bmad-core/utils/agent-switcher.ide.md +0 -112
  259. package/.bmad-core/utils/template-format.md +0 -26
  260. package/.bmad-core/utils/workflow-management.md +0 -224
  261. package/.bmad-core/web-bundles/agents/analyst.txt +0 -1684
  262. package/.bmad-core/web-bundles/agents/architect.txt +0 -3584
  263. package/.bmad-core/web-bundles/agents/bmad-master.txt +0 -9491
  264. package/.bmad-core/web-bundles/agents/bmad-orchestrator.txt +0 -1466
  265. package/.bmad-core/web-bundles/agents/dev.txt +0 -316
  266. package/.bmad-core/web-bundles/agents/qa.txt +0 -129
  267. package/.bmad-core/web-bundles/agents/sm.txt +0 -658
  268. package/.bmad-core/web-bundles/agents/ux-expert.txt +0 -1099
  269. package/.bmad-core/web-bundles/teams/team-all.txt +0 -10757
  270. package/.bmad-core/web-bundles/teams/team-fullstack.txt +0 -10109
  271. package/.bmad-core/web-bundles/teams/team-no-ui.txt +0 -8950
  272. package/.bmad-core/workflows/brownfield-fullstack.yml +0 -116
  273. package/.bmad-core/workflows/brownfield-service.yml +0 -117
  274. package/.bmad-core/workflows/brownfield-ui.yml +0 -127
  275. package/.bmad-core/workflows/greenfield-service.yml +0 -143
  276. package/.bmad-core/workflows/greenfield-ui.yml +0 -172
  277. package/.claude/commands/analyst.md +0 -63
  278. package/.claude/commands/architect.md +0 -70
  279. package/.claude/commands/bmad-master.md +0 -108
  280. package/.claude/commands/bmad-orchestrator.md +0 -85
  281. package/.claude/commands/dev.md +0 -74
  282. package/.claude/commands/pm.md +0 -63
  283. package/.claude/commands/po.md +0 -64
  284. package/.claude/commands/qa.md +0 -56
  285. package/.claude/commands/sm.md +0 -59
  286. package/.claude/commands/ux-expert.md +0 -70
  287. package/.cursor/rules/analyst.mdc +0 -77
  288. package/.cursor/rules/architect.mdc +0 -84
  289. package/.cursor/rules/bmad-master.mdc +0 -122
  290. package/.cursor/rules/bmad-orchestrator.mdc +0 -99
  291. package/.cursor/rules/dev.mdc +0 -88
  292. package/.cursor/rules/pm.mdc +0 -77
  293. package/.cursor/rules/po.mdc +0 -78
  294. package/.cursor/rules/qa.mdc +0 -70
  295. package/.cursor/rules/sm.mdc +0 -73
  296. package/.cursor/rules/ux-expert.mdc +0 -84
  297. package/.github/workflows/release.yml +0 -59
  298. package/.releaserc.json +0 -18
  299. package/.roo/.roomodes +0 -95
  300. package/.roo/README.md +0 -38
  301. package/.vscode/extensions.json +0 -6
  302. package/.windsurf/rules/analyst.md +0 -71
  303. package/.windsurf/rules/architect.md +0 -78
  304. package/.windsurf/rules/bmad-master.md +0 -116
  305. package/.windsurf/rules/bmad-orchestrator.md +0 -93
  306. package/.windsurf/rules/dev.md +0 -82
  307. package/.windsurf/rules/pm.md +0 -71
  308. package/.windsurf/rules/po.md +0 -72
  309. package/.windsurf/rules/qa.md +0 -64
  310. package/.windsurf/rules/sm.md +0 -67
  311. package/.windsurf/rules/ux-expert.md +0 -78
  312. package/docs/bmad-workflow-guide.md +0 -161
  313. package/docs/claude-code-guide.md +0 -119
  314. package/docs/cursor-guide.md +0 -127
  315. package/docs/roo-code-guide.md +0 -140
  316. package/docs/sample-output/simple-fullstack-greenfield/prd.md +0 -42
  317. package/docs/windsurf-guide.md +0 -127
  318. package/expansion-packs/infrastructure-devops/manifest.yml +0 -38
  319. package/expansion-packs/infrastructure-devops/templates/infrastructure-architecture-tmpl.md +0 -415
  320. package/expansion-packs/infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.md +0 -0
  321. package/tools/installer/config/install.config.yml +0 -139
  322. package/tools/installer/package-lock.json +0 -906
  323. package/tools/installer/templates/claude-commands.md +0 -7
  324. package/tools/installer/templates/cursor-rules.md +0 -22
  325. package/tools/installer/templates/windsurf-rules.md +0 -22
  326. package/tools/semantic-release-sync-installer.js +0 -31
  327. /package/{.bmad-core → bmad-core}/data/technical-preferences.md +0 -0
  328. /package/{.bmad-core → bmad-core}/tasks/brownfield-create-epic.md +0 -0
  329. /package/{.bmad-core → bmad-core}/tasks/brownfield-create-story.md +0 -0
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Memory Profiler - Track memory usage during installation
3
+ * Helps identify memory leaks and optimize resource usage
4
+ */
5
+
6
+ const v8 = require('node:v8');
7
+
8
+ class MemoryProfiler {
9
+ constructor() {
10
+ this.checkpoints = [];
11
+ this.startTime = Date.now();
12
+ this.peakMemory = 0;
13
+ }
14
+
15
+ /**
16
+ * Create a memory checkpoint
17
+ * @param {string} label - Label for this checkpoint
18
+ */
19
+ checkpoint(label) {
20
+ const memUsage = process.memoryUsage();
21
+ const heapStats = v8.getHeapStatistics();
22
+
23
+ const checkpoint = {
24
+ label,
25
+ timestamp: Date.now() - this.startTime,
26
+ memory: {
27
+ rss: this.formatBytes(memUsage.rss),
28
+ heapTotal: this.formatBytes(memUsage.heapTotal),
29
+ heapUsed: this.formatBytes(memUsage.heapUsed),
30
+ external: this.formatBytes(memUsage.external),
31
+ arrayBuffers: this.formatBytes(memUsage.arrayBuffers || 0),
32
+ },
33
+ heap: {
34
+ totalHeapSize: this.formatBytes(heapStats.total_heap_size),
35
+ usedHeapSize: this.formatBytes(heapStats.used_heap_size),
36
+ heapSizeLimit: this.formatBytes(heapStats.heap_size_limit),
37
+ mallocedMemory: this.formatBytes(heapStats.malloced_memory),
38
+ externalMemory: this.formatBytes(heapStats.external_memory),
39
+ },
40
+ raw: {
41
+ heapUsed: memUsage.heapUsed,
42
+ },
43
+ };
44
+
45
+ // Track peak memory
46
+ if (memUsage.heapUsed > this.peakMemory) {
47
+ this.peakMemory = memUsage.heapUsed;
48
+ }
49
+
50
+ this.checkpoints.push(checkpoint);
51
+ return checkpoint;
52
+ }
53
+
54
+ /**
55
+ * Force garbage collection (requires --expose-gc flag)
56
+ */
57
+ forceGC() {
58
+ if (globalThis.gc) {
59
+ globalThis.gc();
60
+ return true;
61
+ }
62
+ return false;
63
+ }
64
+
65
+ /**
66
+ * Get memory usage summary
67
+ */
68
+ getSummary() {
69
+ const currentMemory = process.memoryUsage();
70
+
71
+ return {
72
+ currentUsage: {
73
+ rss: this.formatBytes(currentMemory.rss),
74
+ heapTotal: this.formatBytes(currentMemory.heapTotal),
75
+ heapUsed: this.formatBytes(currentMemory.heapUsed),
76
+ },
77
+ peakMemory: this.formatBytes(this.peakMemory),
78
+ totalCheckpoints: this.checkpoints.length,
79
+ runTime: `${((Date.now() - this.startTime) / 1000).toFixed(2)}s`,
80
+ };
81
+ }
82
+
83
+ /**
84
+ * Get detailed report of memory usage
85
+ */
86
+ getDetailedReport() {
87
+ const summary = this.getSummary();
88
+ const memoryGrowth = this.calculateMemoryGrowth();
89
+
90
+ return {
91
+ summary,
92
+ memoryGrowth,
93
+ checkpoints: this.checkpoints,
94
+ recommendations: this.getRecommendations(memoryGrowth),
95
+ };
96
+ }
97
+
98
+ /**
99
+ * Calculate memory growth between checkpoints
100
+ */
101
+ calculateMemoryGrowth() {
102
+ if (this.checkpoints.length < 2) return [];
103
+
104
+ const growth = [];
105
+ for (let index = 1; index < this.checkpoints.length; index++) {
106
+ const previous = this.checkpoints[index - 1];
107
+ const current = this.checkpoints[index];
108
+
109
+ const heapDiff = current.raw.heapUsed - previous.raw.heapUsed;
110
+
111
+ growth.push({
112
+ from: previous.label,
113
+ to: current.label,
114
+ heapGrowth: this.formatBytes(Math.abs(heapDiff)),
115
+ isIncrease: heapDiff > 0,
116
+ timeDiff: `${((current.timestamp - previous.timestamp) / 1000).toFixed(2)}s`,
117
+ });
118
+ }
119
+
120
+ return growth;
121
+ }
122
+
123
+ /**
124
+ * Get recommendations based on memory usage
125
+ */
126
+ getRecommendations(memoryGrowth) {
127
+ const recommendations = [];
128
+
129
+ // Check for large memory growth
130
+ const largeGrowths = memoryGrowth.filter((g) => {
131
+ const bytes = this.parseBytes(g.heapGrowth);
132
+ return bytes > 50 * 1024 * 1024; // 50MB
133
+ });
134
+
135
+ if (largeGrowths.length > 0) {
136
+ recommendations.push({
137
+ type: 'warning',
138
+ message: `Large memory growth detected in ${largeGrowths.length} operations`,
139
+ details: largeGrowths.map((g) => `${g.from} → ${g.to}: ${g.heapGrowth}`),
140
+ });
141
+ }
142
+
143
+ // Check peak memory
144
+ if (this.peakMemory > 500 * 1024 * 1024) {
145
+ // 500MB
146
+ recommendations.push({
147
+ type: 'warning',
148
+ message: `High peak memory usage: ${this.formatBytes(this.peakMemory)}`,
149
+ suggestion: 'Consider processing files in smaller batches',
150
+ });
151
+ }
152
+
153
+ // Check for potential memory leaks
154
+ const continuousGrowth = this.checkContinuousGrowth();
155
+ if (continuousGrowth) {
156
+ recommendations.push({
157
+ type: 'error',
158
+ message: 'Potential memory leak detected',
159
+ details: 'Memory usage continuously increases without significant decreases',
160
+ });
161
+ }
162
+
163
+ return recommendations;
164
+ }
165
+
166
+ /**
167
+ * Check for continuous memory growth (potential leak)
168
+ */
169
+ checkContinuousGrowth() {
170
+ if (this.checkpoints.length < 5) return false;
171
+
172
+ let increasingCount = 0;
173
+ for (let index = 1; index < this.checkpoints.length; index++) {
174
+ if (this.checkpoints[index].raw.heapUsed > this.checkpoints[index - 1].raw.heapUsed) {
175
+ increasingCount++;
176
+ }
177
+ }
178
+
179
+ // If memory increases in more than 80% of checkpoints, might be a leak
180
+ return increasingCount / (this.checkpoints.length - 1) > 0.8;
181
+ }
182
+
183
+ /**
184
+ * Format bytes to human-readable string
185
+ */
186
+ formatBytes(bytes) {
187
+ if (bytes === 0) return '0 B';
188
+
189
+ const k = 1024;
190
+ const sizes = ['B', 'KB', 'MB', 'GB'];
191
+ const index = Math.floor(Math.log(bytes) / Math.log(k));
192
+
193
+ return Number.parseFloat((bytes / Math.pow(k, index)).toFixed(2)) + ' ' + sizes[index];
194
+ }
195
+
196
+ /**
197
+ * Parse human-readable bytes back to number
198
+ */
199
+ parseBytes(string_) {
200
+ const match = string_.match(/^([\d.]+)\s*([KMGT]?B?)$/i);
201
+ if (!match) return 0;
202
+
203
+ const value = Number.parseFloat(match[1]);
204
+ const unit = match[2].toUpperCase();
205
+
206
+ const multipliers = {
207
+ B: 1,
208
+ KB: 1024,
209
+ MB: 1024 * 1024,
210
+ GB: 1024 * 1024 * 1024,
211
+ };
212
+
213
+ return value * (multipliers[unit] || 1);
214
+ }
215
+
216
+ /**
217
+ * Clear checkpoints to free memory
218
+ */
219
+ clear() {
220
+ this.checkpoints = [];
221
+ }
222
+ }
223
+
224
+ // Export singleton instance
225
+ module.exports = new MemoryProfiler();
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Module Manager - Centralized dynamic import management
3
+ * Handles loading and caching of ES modules to reduce memory overhead
4
+ */
5
+
6
+ class ModuleManager {
7
+ constructor() {
8
+ this._cache = new Map();
9
+ this._loadingPromises = new Map();
10
+ }
11
+
12
+ /**
13
+ * Initialize all commonly used ES modules at once
14
+ * @returns {Promise<Object>} Object containing all loaded modules
15
+ */
16
+ async initializeCommonModules() {
17
+ const modules = await Promise.all([
18
+ this.getModule('chalk'),
19
+ this.getModule('ora'),
20
+ this.getModule('inquirer'),
21
+ ]);
22
+
23
+ return {
24
+ chalk: modules[0],
25
+ ora: modules[1],
26
+ inquirer: modules[2],
27
+ };
28
+ }
29
+
30
+ /**
31
+ * Get a module by name, with caching
32
+ * @param {string} moduleName - Name of the module to load
33
+ * @returns {Promise<any>} The loaded module
34
+ */
35
+ async getModule(moduleName) {
36
+ // Return from cache if available
37
+ if (this._cache.has(moduleName)) {
38
+ return this._cache.get(moduleName);
39
+ }
40
+
41
+ // If already loading, return the existing promise
42
+ if (this._loadingPromises.has(moduleName)) {
43
+ return this._loadingPromises.get(moduleName);
44
+ }
45
+
46
+ // Start loading the module
47
+ const loadPromise = this._loadModule(moduleName);
48
+ this._loadingPromises.set(moduleName, loadPromise);
49
+
50
+ try {
51
+ const module = await loadPromise;
52
+ this._cache.set(moduleName, module);
53
+ this._loadingPromises.delete(moduleName);
54
+ return module;
55
+ } catch (error) {
56
+ this._loadingPromises.delete(moduleName);
57
+ throw error;
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Internal method to load a specific module
63
+ * @private
64
+ */
65
+ async _loadModule(moduleName) {
66
+ switch (moduleName) {
67
+ case 'chalk': {
68
+ return (await import('chalk')).default;
69
+ }
70
+ case 'ora': {
71
+ return (await import('ora')).default;
72
+ }
73
+ case 'inquirer': {
74
+ return (await import('inquirer')).default;
75
+ }
76
+ case 'glob': {
77
+ return (await import('glob')).glob;
78
+ }
79
+ case 'globSync': {
80
+ return (await import('glob')).globSync;
81
+ }
82
+ default: {
83
+ throw new Error(`Unknown module: ${moduleName}`);
84
+ }
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Clear the module cache to free memory
90
+ */
91
+ clearCache() {
92
+ this._cache.clear();
93
+ this._loadingPromises.clear();
94
+ }
95
+
96
+ /**
97
+ * Get multiple modules at once
98
+ * @param {string[]} moduleNames - Array of module names
99
+ * @returns {Promise<Object>} Object with module names as keys
100
+ */
101
+ async getModules(moduleNames) {
102
+ const modules = await Promise.all(moduleNames.map((name) => this.getModule(name)));
103
+
104
+ return moduleNames.reduce((accumulator, name, index) => {
105
+ accumulator[name] = modules[index];
106
+ return accumulator;
107
+ }, {});
108
+ }
109
+ }
110
+
111
+ // Singleton instance
112
+ const moduleManager = new ModuleManager();
113
+
114
+ module.exports = moduleManager;
@@ -0,0 +1,308 @@
1
+ /**
2
+ * Resource Locator - Centralized file path resolution and caching
3
+ * Reduces duplicate file system operations and memory usage
4
+ */
5
+
6
+ const path = require('node:path');
7
+ const fs = require('fs-extra');
8
+ const moduleManager = require('./module-manager');
9
+
10
+ class ResourceLocator {
11
+ constructor() {
12
+ this._pathCache = new Map();
13
+ this._globCache = new Map();
14
+ this._bmadCorePath = null;
15
+ this._expansionPacksPath = null;
16
+ }
17
+
18
+ /**
19
+ * Get the base path for bmad-core
20
+ */
21
+ getBmadCorePath() {
22
+ if (!this._bmadCorePath) {
23
+ this._bmadCorePath = path.join(__dirname, '../../../bmad-core');
24
+ }
25
+ return this._bmadCorePath;
26
+ }
27
+
28
+ /**
29
+ * Get the base path for expansion packs
30
+ */
31
+ getExpansionPacksPath() {
32
+ if (!this._expansionPacksPath) {
33
+ this._expansionPacksPath = path.join(__dirname, '../../../expansion-packs');
34
+ }
35
+ return this._expansionPacksPath;
36
+ }
37
+
38
+ /**
39
+ * Find all files matching a pattern, with caching
40
+ * @param {string} pattern - Glob pattern
41
+ * @param {Object} options - Glob options
42
+ * @returns {Promise<string[]>} Array of matched file paths
43
+ */
44
+ async findFiles(pattern, options = {}) {
45
+ const cacheKey = `${pattern}:${JSON.stringify(options)}`;
46
+
47
+ if (this._globCache.has(cacheKey)) {
48
+ return this._globCache.get(cacheKey);
49
+ }
50
+
51
+ const { glob } = await moduleManager.getModules(['glob']);
52
+ const files = await glob(pattern, options);
53
+
54
+ // Cache for 5 minutes
55
+ this._globCache.set(cacheKey, files);
56
+ setTimeout(() => this._globCache.delete(cacheKey), 5 * 60 * 1000);
57
+
58
+ return files;
59
+ }
60
+
61
+ /**
62
+ * Get agent path with caching
63
+ * @param {string} agentId - Agent identifier
64
+ * @returns {Promise<string|null>} Path to agent file or null if not found
65
+ */
66
+ async getAgentPath(agentId) {
67
+ const cacheKey = `agent:${agentId}`;
68
+
69
+ if (this._pathCache.has(cacheKey)) {
70
+ return this._pathCache.get(cacheKey);
71
+ }
72
+
73
+ // Check in bmad-core
74
+ let agentPath = path.join(this.getBmadCorePath(), 'agents', `${agentId}.md`);
75
+ if (await fs.pathExists(agentPath)) {
76
+ this._pathCache.set(cacheKey, agentPath);
77
+ return agentPath;
78
+ }
79
+
80
+ // Check in expansion packs
81
+ const expansionPacks = await this.getExpansionPacks();
82
+ for (const pack of expansionPacks) {
83
+ agentPath = path.join(pack.path, 'agents', `${agentId}.md`);
84
+ if (await fs.pathExists(agentPath)) {
85
+ this._pathCache.set(cacheKey, agentPath);
86
+ return agentPath;
87
+ }
88
+ }
89
+
90
+ return null;
91
+ }
92
+
93
+ /**
94
+ * Get available agents with metadata
95
+ * @returns {Promise<Array>} Array of agent objects
96
+ */
97
+ async getAvailableAgents() {
98
+ const cacheKey = 'all-agents';
99
+
100
+ if (this._pathCache.has(cacheKey)) {
101
+ return this._pathCache.get(cacheKey);
102
+ }
103
+
104
+ const agents = [];
105
+ const yaml = require('js-yaml');
106
+ const { extractYamlFromAgent } = require('../../lib/yaml-utils');
107
+
108
+ // Get agents from bmad-core
109
+ const coreAgents = await this.findFiles('agents/*.md', {
110
+ cwd: this.getBmadCorePath(),
111
+ });
112
+
113
+ for (const agentFile of coreAgents) {
114
+ const content = await fs.readFile(path.join(this.getBmadCorePath(), agentFile), 'utf8');
115
+ const yamlContent = extractYamlFromAgent(content);
116
+ if (yamlContent) {
117
+ try {
118
+ const metadata = yaml.load(yamlContent);
119
+ agents.push({
120
+ id: path.basename(agentFile, '.md'),
121
+ name: metadata.agent_name || path.basename(agentFile, '.md'),
122
+ description: metadata.description || 'No description available',
123
+ source: 'core',
124
+ });
125
+ } catch {
126
+ // Skip invalid agents
127
+ }
128
+ }
129
+ }
130
+
131
+ // Cache for 10 minutes
132
+ this._pathCache.set(cacheKey, agents);
133
+ setTimeout(() => this._pathCache.delete(cacheKey), 10 * 60 * 1000);
134
+
135
+ return agents;
136
+ }
137
+
138
+ /**
139
+ * Get available expansion packs
140
+ * @returns {Promise<Array>} Array of expansion pack objects
141
+ */
142
+ async getExpansionPacks() {
143
+ const cacheKey = 'expansion-packs';
144
+
145
+ if (this._pathCache.has(cacheKey)) {
146
+ return this._pathCache.get(cacheKey);
147
+ }
148
+
149
+ const packs = [];
150
+ const expansionPacksPath = this.getExpansionPacksPath();
151
+
152
+ if (await fs.pathExists(expansionPacksPath)) {
153
+ const entries = await fs.readdir(expansionPacksPath, { withFileTypes: true });
154
+
155
+ for (const entry of entries) {
156
+ if (entry.isDirectory()) {
157
+ const configPath = path.join(expansionPacksPath, entry.name, 'config.yaml');
158
+ if (await fs.pathExists(configPath)) {
159
+ try {
160
+ const yaml = require('js-yaml');
161
+ const config = yaml.load(await fs.readFile(configPath, 'utf8'));
162
+ packs.push({
163
+ id: entry.name,
164
+ name: config.name || entry.name,
165
+ version: config.version || '1.0.0',
166
+ description: config.description || 'No description available',
167
+ shortTitle:
168
+ config['short-title'] || config.description || 'No description available',
169
+ author: config.author || 'Unknown',
170
+ path: path.join(expansionPacksPath, entry.name),
171
+ });
172
+ } catch {
173
+ // Skip invalid packs
174
+ }
175
+ }
176
+ }
177
+ }
178
+ }
179
+
180
+ // Cache for 10 minutes
181
+ this._pathCache.set(cacheKey, packs);
182
+ setTimeout(() => this._pathCache.delete(cacheKey), 10 * 60 * 1000);
183
+
184
+ return packs;
185
+ }
186
+
187
+ /**
188
+ * Get team configuration
189
+ * @param {string} teamId - Team identifier
190
+ * @returns {Promise<Object|null>} Team configuration or null
191
+ */
192
+ async getTeamConfig(teamId) {
193
+ const cacheKey = `team:${teamId}`;
194
+
195
+ if (this._pathCache.has(cacheKey)) {
196
+ return this._pathCache.get(cacheKey);
197
+ }
198
+
199
+ const teamPath = path.join(this.getBmadCorePath(), 'agent-teams', `${teamId}.yaml`);
200
+
201
+ if (await fs.pathExists(teamPath)) {
202
+ try {
203
+ const yaml = require('js-yaml');
204
+ const content = await fs.readFile(teamPath, 'utf8');
205
+ const config = yaml.load(content);
206
+ this._pathCache.set(cacheKey, config);
207
+ return config;
208
+ } catch {
209
+ return null;
210
+ }
211
+ }
212
+
213
+ return null;
214
+ }
215
+
216
+ /**
217
+ * Get resource dependencies for an agent
218
+ * @param {string} agentId - Agent identifier
219
+ * @returns {Promise<Object>} Dependencies object
220
+ */
221
+ async getAgentDependencies(agentId) {
222
+ const cacheKey = `deps:${agentId}`;
223
+
224
+ if (this._pathCache.has(cacheKey)) {
225
+ return this._pathCache.get(cacheKey);
226
+ }
227
+
228
+ const agentPath = await this.getAgentPath(agentId);
229
+ if (!agentPath) {
230
+ return { all: [], byType: {} };
231
+ }
232
+
233
+ const content = await fs.readFile(agentPath, 'utf8');
234
+ const { extractYamlFromAgent } = require('../../lib/yaml-utils');
235
+ const yamlContent = extractYamlFromAgent(content);
236
+
237
+ if (!yamlContent) {
238
+ return { all: [], byType: {} };
239
+ }
240
+
241
+ try {
242
+ const yaml = require('js-yaml');
243
+ const metadata = yaml.load(yamlContent);
244
+ const dependencies = metadata.dependencies || {};
245
+
246
+ // Flatten dependencies
247
+ const allDeps = [];
248
+ const byType = {};
249
+
250
+ for (const [type, deps] of Object.entries(dependencies)) {
251
+ if (Array.isArray(deps)) {
252
+ byType[type] = deps;
253
+ for (const dep of deps) {
254
+ allDeps.push(`.bmad-core/${type}/${dep}`);
255
+ }
256
+ }
257
+ }
258
+
259
+ const result = { all: allDeps, byType };
260
+ this._pathCache.set(cacheKey, result);
261
+ return result;
262
+ } catch {
263
+ return { all: [], byType: {} };
264
+ }
265
+ }
266
+
267
+ /**
268
+ * Clear all caches to free memory
269
+ */
270
+ clearCache() {
271
+ this._pathCache.clear();
272
+ this._globCache.clear();
273
+ }
274
+
275
+ /**
276
+ * Get IDE configuration
277
+ * @param {string} ideId - IDE identifier
278
+ * @returns {Promise<Object|null>} IDE configuration or null
279
+ */
280
+ async getIdeConfig(ideId) {
281
+ const cacheKey = `ide:${ideId}`;
282
+
283
+ if (this._pathCache.has(cacheKey)) {
284
+ return this._pathCache.get(cacheKey);
285
+ }
286
+
287
+ const idePath = path.join(this.getBmadCorePath(), 'ide-rules', `${ideId}.yaml`);
288
+
289
+ if (await fs.pathExists(idePath)) {
290
+ try {
291
+ const yaml = require('js-yaml');
292
+ const content = await fs.readFile(idePath, 'utf8');
293
+ const config = yaml.load(content);
294
+ this._pathCache.set(cacheKey, config);
295
+ return config;
296
+ } catch {
297
+ return null;
298
+ }
299
+ }
300
+
301
+ return null;
302
+ }
303
+ }
304
+
305
+ // Singleton instance
306
+ const resourceLocator = new ResourceLocator();
307
+
308
+ module.exports = resourceLocator;
@@ -1,15 +1,7 @@
1
1
  {
2
2
  "name": "bmad-method",
3
- "version": "5.0.0",
4
- "description": "BMAD Method installer - AI-powered Agile development framework",
5
- "main": "lib/installer.js",
6
- "bin": {
7
- "bmad": "./bin/bmad.js",
8
- "bmad-method": "./bin/bmad.js"
9
- },
10
- "scripts": {
11
- "test": "echo \"Error: no test specified\" && exit 1"
12
- },
3
+ "version": "5.1.0",
4
+ "description": "BMad Method installer - AI-powered Agile development framework",
13
5
  "keywords": [
14
6
  "bmad",
15
7
  "agile",
@@ -19,25 +11,34 @@
19
11
  "installer",
20
12
  "agents"
21
13
  ],
22
- "author": "BMAD Team",
14
+ "homepage": "https://github.com/bmad-team/bmad-method#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/bmad-team/bmad-method/issues"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/bmad-team/bmad-method.git"
21
+ },
23
22
  "license": "MIT",
23
+ "author": "BMad Team",
24
+ "main": "lib/installer.js",
25
+ "bin": {
26
+ "bmad": "./bin/bmad.js",
27
+ "bmad-method": "./bin/bmad.js"
28
+ },
29
+ "scripts": {
30
+ "test": "echo \"Error: no test specified\" && exit 1"
31
+ },
24
32
  "dependencies": {
25
- "chalk": "^5.4.1",
33
+ "chalk": "^4.1.2",
26
34
  "commander": "^14.0.0",
27
35
  "fs-extra": "^11.3.0",
28
- "inquirer": "^12.6.3",
36
+ "inquirer": "^8.2.6",
29
37
  "js-yaml": "^4.1.0",
30
- "ora": "^8.2.0"
38
+ "ora": "^5.4.1",
39
+ "semver": "^7.6.3"
31
40
  },
32
41
  "engines": {
33
- "node": ">=14.0.0"
34
- },
35
- "repository": {
36
- "type": "git",
37
- "url": "https://github.com/bmad-team/bmad-method.git"
38
- },
39
- "bugs": {
40
- "url": "https://github.com/bmad-team/bmad-method/issues"
41
- },
42
- "homepage": "https://github.com/bmad-team/bmad-method#readme"
42
+ "node": ">=20.0.0"
43
+ }
43
44
  }