bmad-stella 1.0.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 (398) hide show
  1. package/.github/FORK_GUIDE.md +106 -0
  2. package/.github/FUNDING.yaml +15 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  5. package/.github/workflows/discord.yaml +26 -0
  6. package/.github/workflows/format-check.yaml +44 -0
  7. package/.github/workflows/manual-release.yaml +174 -0
  8. package/.github/workflows/pr-validation.yaml +55 -0
  9. package/.husky/pre-commit +3 -0
  10. package/.vscode/settings.json +69 -0
  11. package/CHANGELOG.md +686 -0
  12. package/CONTRIBUTING.md +243 -0
  13. package/LICENSE +26 -0
  14. package/PR-opencode-agents-generator.md +40 -0
  15. package/README.md +159 -0
  16. package/REVIEWER-AGENT-SIMPLE.md +66 -0
  17. package/bmad-core/agent-teams/team-all.yaml +15 -0
  18. package/bmad-core/agent-teams/team-fullstack.yaml +19 -0
  19. package/bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
  20. package/bmad-core/agent-teams/team-no-ui.yaml +14 -0
  21. package/bmad-core/agents/analyst.md +84 -0
  22. package/bmad-core/agents/architect.md +85 -0
  23. package/bmad-core/agents/bmad-master.md +110 -0
  24. package/bmad-core/agents/bmad-orchestrator.md +147 -0
  25. package/bmad-core/agents/dev.md +96 -0
  26. package/bmad-core/agents/planner.md +86 -0
  27. package/bmad-core/agents/pm.md +84 -0
  28. package/bmad-core/agents/po.md +79 -0
  29. package/bmad-core/agents/qa.md +80 -0
  30. package/bmad-core/agents/reviewer.md +61 -0
  31. package/bmad-core/agents/sm.md +65 -0
  32. package/bmad-core/agents/ux-expert.md +69 -0
  33. package/bmad-core/checklists/architect-checklist.md +440 -0
  34. package/bmad-core/checklists/change-checklist.md +184 -0
  35. package/bmad-core/checklists/planner-validation-checklist.md +167 -0
  36. package/bmad-core/checklists/pm-checklist.md +372 -0
  37. package/bmad-core/checklists/po-master-checklist.md +434 -0
  38. package/bmad-core/checklists/story-dod-checklist.md +96 -0
  39. package/bmad-core/checklists/story-draft-checklist.md +155 -0
  40. package/bmad-core/checklists/task-dod-checklist.md +110 -0
  41. package/bmad-core/core-config.yaml +26 -0
  42. package/bmad-core/data/bmad-kb.md +809 -0
  43. package/bmad-core/data/brainstorming-techniques.md +38 -0
  44. package/bmad-core/data/elicitation-methods.md +156 -0
  45. package/bmad-core/data/technical-preferences.md +5 -0
  46. package/bmad-core/data/test-levels-framework.md +148 -0
  47. package/bmad-core/data/test-priorities-matrix.md +174 -0
  48. package/bmad-core/tasks/advanced-elicitation.md +119 -0
  49. package/bmad-core/tasks/apply-qa-fixes.md +150 -0
  50. package/bmad-core/tasks/brownfield-create-epic.md +162 -0
  51. package/bmad-core/tasks/brownfield-create-story.md +149 -0
  52. package/bmad-core/tasks/correct-course.md +72 -0
  53. package/bmad-core/tasks/create-brownfield-story.md +314 -0
  54. package/bmad-core/tasks/create-deep-research-prompt.md +280 -0
  55. package/bmad-core/tasks/create-implementation-plan.md +298 -0
  56. package/bmad-core/tasks/create-next-story.md +114 -0
  57. package/bmad-core/tasks/decompose-task.md +162 -0
  58. package/bmad-core/tasks/document-project.md +345 -0
  59. package/bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
  60. package/bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
  61. package/bmad-core/tasks/identify-dependencies.md +347 -0
  62. package/bmad-core/tasks/implement-test.md +188 -0
  63. package/bmad-core/tasks/index-docs.md +175 -0
  64. package/bmad-core/tasks/kb-mode-interaction.md +77 -0
  65. package/bmad-core/tasks/nfr-assess.md +345 -0
  66. package/bmad-core/tasks/qa-gate.md +163 -0
  67. package/bmad-core/tasks/review-and-improve.md +95 -0
  68. package/bmad-core/tasks/review-story.md +316 -0
  69. package/bmad-core/tasks/risk-profile.md +355 -0
  70. package/bmad-core/tasks/shard-doc.md +187 -0
  71. package/bmad-core/tasks/test-design.md +176 -0
  72. package/bmad-core/tasks/trace-requirements.md +266 -0
  73. package/bmad-core/tasks/validate-next-story.md +136 -0
  74. package/bmad-core/templates/architecture-tmpl.yaml +651 -0
  75. package/bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  76. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -0
  77. package/bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
  78. package/bmad-core/templates/competitor-analysis-tmpl.yaml +307 -0
  79. package/bmad-core/templates/front-end-architecture-tmpl.yaml +219 -0
  80. package/bmad-core/templates/front-end-spec-tmpl.yaml +350 -0
  81. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -0
  82. package/bmad-core/templates/implementation-plan-tmpl.yaml +224 -0
  83. package/bmad-core/templates/market-research-tmpl.yaml +253 -0
  84. package/bmad-core/templates/prd-tmpl.yaml +203 -0
  85. package/bmad-core/templates/project-brief-tmpl.yaml +222 -0
  86. package/bmad-core/templates/qa-gate-tmpl.yaml +103 -0
  87. package/bmad-core/templates/story-tmpl.yaml +138 -0
  88. package/bmad-core/workflows/brownfield-fullstack.yaml +298 -0
  89. package/bmad-core/workflows/brownfield-service.yaml +188 -0
  90. package/bmad-core/workflows/brownfield-ui.yaml +198 -0
  91. package/bmad-core/workflows/greenfield-fullstack.yaml +241 -0
  92. package/bmad-core/workflows/greenfield-service.yaml +207 -0
  93. package/bmad-core/workflows/greenfield-ui.yaml +236 -0
  94. package/common/tasks/create-doc.md +103 -0
  95. package/common/tasks/execute-checklist.md +88 -0
  96. package/common/utils/bmad-doc-template.md +327 -0
  97. package/common/utils/workflow-management.md +71 -0
  98. package/dist/agents/analyst.txt +2907 -0
  99. package/dist/agents/architect.txt +3567 -0
  100. package/dist/agents/bmad-master.txt +8828 -0
  101. package/dist/agents/bmad-orchestrator.txt +1520 -0
  102. package/dist/agents/dev.txt +576 -0
  103. package/dist/agents/pm.txt +2226 -0
  104. package/dist/agents/po.txt +1359 -0
  105. package/dist/agents/qa.txt +2001 -0
  106. package/dist/agents/sm.txt +667 -0
  107. package/dist/agents/ux-expert.txt +703 -0
  108. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +2386 -0
  109. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +1627 -0
  110. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +822 -0
  111. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +11008 -0
  112. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +4031 -0
  113. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +3717 -0
  114. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +456 -0
  115. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +982 -0
  116. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +15450 -0
  117. package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +921 -0
  118. package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +81 -0
  119. package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +886 -0
  120. package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
  121. package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +903 -0
  122. package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +837 -0
  123. package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +989 -0
  124. package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +888 -0
  125. package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1173 -0
  126. package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +914 -0
  127. package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +6511 -0
  128. package/dist/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.txt +1513 -0
  129. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-analyst.txt +3190 -0
  130. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-architect.txt +4499 -0
  131. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-designer.txt +3925 -0
  132. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-developer.txt +666 -0
  133. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-pm.txt +2381 -0
  134. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-po.txt +1612 -0
  135. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-qa.txt +1741 -0
  136. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-sm.txt +1208 -0
  137. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.txt +958 -0
  138. package/dist/expansion-packs/bmad-godot-game-dev/teams/godot-game-team.txt +27717 -0
  139. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2087 -0
  140. package/dist/teams/team-all.txt +12911 -0
  141. package/dist/teams/team-fullstack.txt +10477 -0
  142. package/dist/teams/team-ide-minimal.txt +5299 -0
  143. package/dist/teams/team-no-ui.txt +9029 -0
  144. package/docs/GUIDING-PRINCIPLES.md +91 -0
  145. package/docs/core-architecture.md +219 -0
  146. package/docs/enhanced-ide-development-workflow.md +248 -0
  147. package/docs/expansion-packs.md +200 -0
  148. package/docs/flattener.md +91 -0
  149. package/docs/how-to-contribute-with-pull-requests.md +158 -0
  150. package/docs/stella-user-guide.md +637 -0
  151. package/docs/user-guide.md +577 -0
  152. package/docs/versioning-and-releases.md +155 -0
  153. package/docs/versions.md +48 -0
  154. package/docs/working-in-the-brownfield.md +606 -0
  155. package/eslint.config.mjs +119 -0
  156. package/expansion-packs/README.md +3 -0
  157. package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +14 -0
  158. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +73 -0
  159. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +80 -0
  160. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +66 -0
  161. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +203 -0
  162. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +162 -0
  163. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +9 -0
  164. package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +252 -0
  165. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +649 -0
  166. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +112 -0
  167. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +218 -0
  168. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +292 -0
  169. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +614 -0
  170. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +357 -0
  171. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +344 -0
  172. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +254 -0
  173. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +485 -0
  174. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +184 -0
  175. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +176 -0
  176. package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +15 -0
  177. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +82 -0
  178. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +79 -0
  179. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +80 -0
  180. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +67 -0
  181. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +393 -0
  182. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +205 -0
  183. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +203 -0
  184. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +126 -0
  185. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +7 -0
  186. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +771 -0
  187. package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +588 -0
  188. package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +112 -0
  189. package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +143 -0
  190. package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +186 -0
  191. package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +292 -0
  192. package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +202 -0
  193. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +1031 -0
  194. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +357 -0
  195. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +706 -0
  196. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +257 -0
  197. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +485 -0
  198. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +184 -0
  199. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +176 -0
  200. package/expansion-packs/bmad-creative-writing/README.md +146 -0
  201. package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +20 -0
  202. package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +94 -0
  203. package/expansion-packs/bmad-creative-writing/agents/book-critic.md +40 -0
  204. package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +93 -0
  205. package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +46 -0
  206. package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +92 -0
  207. package/expansion-packs/bmad-creative-writing/agents/editor.md +93 -0
  208. package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +95 -0
  209. package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +93 -0
  210. package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +95 -0
  211. package/expansion-packs/bmad-creative-writing/agents/world-builder.md +94 -0
  212. package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +23 -0
  213. package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +23 -0
  214. package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +23 -0
  215. package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +23 -0
  216. package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +21 -0
  217. package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +23 -0
  218. package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +23 -0
  219. package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +22 -0
  220. package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +22 -0
  221. package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +23 -0
  222. package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +23 -0
  223. package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +25 -0
  224. package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +23 -0
  225. package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +23 -0
  226. package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +23 -0
  227. package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +23 -0
  228. package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +59 -0
  229. package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +23 -0
  230. package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +23 -0
  231. package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +23 -0
  232. package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +22 -0
  233. package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +23 -0
  234. package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +23 -0
  235. package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +23 -0
  236. package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +23 -0
  237. package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +23 -0
  238. package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +23 -0
  239. package/expansion-packs/bmad-creative-writing/config.yaml +12 -0
  240. package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +209 -0
  241. package/expansion-packs/bmad-creative-writing/data/story-structures.md +67 -0
  242. package/expansion-packs/bmad-creative-writing/docs/brief.md +212 -0
  243. package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +119 -0
  244. package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +23 -0
  245. package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +67 -0
  246. package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +29 -0
  247. package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +23 -0
  248. package/expansion-packs/bmad-creative-writing/tasks/build-world.md +24 -0
  249. package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +22 -0
  250. package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +103 -0
  251. package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +26 -0
  252. package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +26 -0
  253. package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +24 -0
  254. package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +88 -0
  255. package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +23 -0
  256. package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +23 -0
  257. package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +23 -0
  258. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +25 -0
  259. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +26 -0
  260. package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +23 -0
  261. package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +25 -0
  262. package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +23 -0
  263. package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +24 -0
  264. package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +23 -0
  265. package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +22 -0
  266. package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +23 -0
  267. package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +64 -0
  268. package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +97 -0
  269. package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +82 -0
  270. package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
  271. package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +98 -0
  272. package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +78 -0
  273. package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +55 -0
  274. package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
  275. package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +89 -0
  276. package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +218 -0
  277. package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +56 -0
  278. package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +50 -0
  279. package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
  280. package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +91 -0
  281. package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +85 -0
  282. package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +78 -0
  283. package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +64 -0
  284. package/expansion-packs/bmad-godot-game-dev/README.md +244 -0
  285. package/expansion-packs/bmad-godot-game-dev/agent-teams/godot-game-team.yaml +18 -0
  286. package/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.md +147 -0
  287. package/expansion-packs/bmad-godot-game-dev/agents/game-analyst.md +84 -0
  288. package/expansion-packs/bmad-godot-game-dev/agents/game-architect.md +146 -0
  289. package/expansion-packs/bmad-godot-game-dev/agents/game-designer.md +78 -0
  290. package/expansion-packs/bmad-godot-game-dev/agents/game-developer.md +124 -0
  291. package/expansion-packs/bmad-godot-game-dev/agents/game-pm.md +82 -0
  292. package/expansion-packs/bmad-godot-game-dev/agents/game-po.md +115 -0
  293. package/expansion-packs/bmad-godot-game-dev/agents/game-qa.md +159 -0
  294. package/expansion-packs/bmad-godot-game-dev/agents/game-sm.md +66 -0
  295. package/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.md +75 -0
  296. package/expansion-packs/bmad-godot-game-dev/checklists/game-architect-checklist.md +377 -0
  297. package/expansion-packs/bmad-godot-game-dev/checklists/game-change-checklist.md +250 -0
  298. package/expansion-packs/bmad-godot-game-dev/checklists/game-design-checklist.md +225 -0
  299. package/expansion-packs/bmad-godot-game-dev/checklists/game-po-checklist.md +448 -0
  300. package/expansion-packs/bmad-godot-game-dev/checklists/game-story-dod-checklist.md +202 -0
  301. package/expansion-packs/bmad-godot-game-dev/config.yaml +30 -0
  302. package/expansion-packs/bmad-godot-game-dev/data/bmad-kb.md +811 -0
  303. package/expansion-packs/bmad-godot-game-dev/data/brainstorming-techniques.md +36 -0
  304. package/expansion-packs/bmad-godot-game-dev/data/development-guidelines.md +893 -0
  305. package/expansion-packs/bmad-godot-game-dev/data/elicitation-methods.md +156 -0
  306. package/expansion-packs/bmad-godot-game-dev/data/technical-preferences.md +3 -0
  307. package/expansion-packs/bmad-godot-game-dev/tasks/advanced-elicitation.md +110 -0
  308. package/expansion-packs/bmad-godot-game-dev/tasks/apply-qa-fixes.md +224 -0
  309. package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-epic.md +162 -0
  310. package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-story.md +149 -0
  311. package/expansion-packs/bmad-godot-game-dev/tasks/correct-course-game.md +159 -0
  312. package/expansion-packs/bmad-godot-game-dev/tasks/create-deep-research-prompt.md +278 -0
  313. package/expansion-packs/bmad-godot-game-dev/tasks/create-doc.md +103 -0
  314. package/expansion-packs/bmad-godot-game-dev/tasks/create-game-story.md +202 -0
  315. package/expansion-packs/bmad-godot-game-dev/tasks/document-project.md +343 -0
  316. package/expansion-packs/bmad-godot-game-dev/tasks/execute-checklist.md +88 -0
  317. package/expansion-packs/bmad-godot-game-dev/tasks/facilitate-brainstorming-session.md +136 -0
  318. package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-epic.md +160 -0
  319. package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-story.md +147 -0
  320. package/expansion-packs/bmad-godot-game-dev/tasks/game-design-brainstorming.md +290 -0
  321. package/expansion-packs/bmad-godot-game-dev/tasks/game-risk-profile.md +368 -0
  322. package/expansion-packs/bmad-godot-game-dev/tasks/game-test-design.md +219 -0
  323. package/expansion-packs/bmad-godot-game-dev/tasks/generate-ai-frontend-prompt.md +51 -0
  324. package/expansion-packs/bmad-godot-game-dev/tasks/kb-mode-interaction.md +77 -0
  325. package/expansion-packs/bmad-godot-game-dev/tasks/review-game-story.md +364 -0
  326. package/expansion-packs/bmad-godot-game-dev/tasks/shard-doc.md +187 -0
  327. package/expansion-packs/bmad-godot-game-dev/tasks/validate-game-story.md +208 -0
  328. package/expansion-packs/bmad-godot-game-dev/templates/brainstorming-output-tmpl.yaml +156 -0
  329. package/expansion-packs/bmad-godot-game-dev/templates/brownfield-prd-tmpl.yaml +281 -0
  330. package/expansion-packs/bmad-godot-game-dev/templates/competitor-analysis-tmpl.yaml +306 -0
  331. package/expansion-packs/bmad-godot-game-dev/templates/game-architecture-tmpl.yaml +1111 -0
  332. package/expansion-packs/bmad-godot-game-dev/templates/game-brief-tmpl.yaml +356 -0
  333. package/expansion-packs/bmad-godot-game-dev/templates/game-design-doc-tmpl.yaml +724 -0
  334. package/expansion-packs/bmad-godot-game-dev/templates/game-prd-tmpl.yaml +209 -0
  335. package/expansion-packs/bmad-godot-game-dev/templates/game-qa-gate-tmpl.yaml +186 -0
  336. package/expansion-packs/bmad-godot-game-dev/templates/game-story-tmpl.yaml +406 -0
  337. package/expansion-packs/bmad-godot-game-dev/templates/game-ui-spec-tmpl.yaml +601 -0
  338. package/expansion-packs/bmad-godot-game-dev/templates/level-design-doc-tmpl.yaml +620 -0
  339. package/expansion-packs/bmad-godot-game-dev/templates/market-research-tmpl.yaml +418 -0
  340. package/expansion-packs/bmad-godot-game-dev/utils/bmad-doc-template.md +327 -0
  341. package/expansion-packs/bmad-godot-game-dev/utils/workflow-management.md +71 -0
  342. package/expansion-packs/bmad-godot-game-dev/workflows/game-dev-greenfield.yaml +245 -0
  343. package/expansion-packs/bmad-godot-game-dev/workflows/game-prototype.yaml +213 -0
  344. package/expansion-packs/bmad-infrastructure-devops/README.md +147 -0
  345. package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +73 -0
  346. package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +486 -0
  347. package/expansion-packs/bmad-infrastructure-devops/config.yaml +10 -0
  348. package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +307 -0
  349. package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +161 -0
  350. package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +155 -0
  351. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +425 -0
  352. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +630 -0
  353. package/package.json +116 -0
  354. package/prettier.config.mjs +32 -0
  355. package/tools/bmad-npx-wrapper.js +39 -0
  356. package/tools/builders/web-builder.js +675 -0
  357. package/tools/bump-all-versions.js +115 -0
  358. package/tools/bump-expansion-version.js +90 -0
  359. package/tools/cli.js +152 -0
  360. package/tools/flattener/aggregate.js +76 -0
  361. package/tools/flattener/binary.js +80 -0
  362. package/tools/flattener/discovery.js +71 -0
  363. package/tools/flattener/files.js +35 -0
  364. package/tools/flattener/ignoreRules.js +178 -0
  365. package/tools/flattener/main.js +568 -0
  366. package/tools/flattener/projectRoot.js +206 -0
  367. package/tools/flattener/prompts.js +44 -0
  368. package/tools/flattener/stats.helpers.js +395 -0
  369. package/tools/flattener/stats.js +80 -0
  370. package/tools/flattener/test-matrix.js +413 -0
  371. package/tools/flattener/xml.js +88 -0
  372. package/tools/implement-fork-friendly-ci.sh +229 -0
  373. package/tools/installer/README.md +8 -0
  374. package/tools/installer/bin/bmad.js +633 -0
  375. package/tools/installer/config/ide-agent-config.yaml +58 -0
  376. package/tools/installer/config/install.config.yaml +184 -0
  377. package/tools/installer/lib/config-loader.js +257 -0
  378. package/tools/installer/lib/dependency-manager.js +383 -0
  379. package/tools/installer/lib/file-manager.js +394 -0
  380. package/tools/installer/lib/ide-base-setup.js +228 -0
  381. package/tools/installer/lib/ide-setup.js +2461 -0
  382. package/tools/installer/lib/installer.js +2094 -0
  383. package/tools/installer/lib/memory-profiler.js +225 -0
  384. package/tools/installer/lib/module-manager.js +114 -0
  385. package/tools/installer/lib/resource-locator.js +308 -0
  386. package/tools/installer/package.json +47 -0
  387. package/tools/lib/dependency-resolver.js +175 -0
  388. package/tools/lib/yaml-utils.js +29 -0
  389. package/tools/md-assets/web-agent-startup-instructions.md +39 -0
  390. package/tools/preview-release-notes.js +66 -0
  391. package/tools/setup-hooks.sh +37 -0
  392. package/tools/shared/bannerArt.js +105 -0
  393. package/tools/sync-installer-version.js +32 -0
  394. package/tools/sync-version.sh +23 -0
  395. package/tools/update-expansion-version.js +53 -0
  396. package/tools/upgraders/v3-to-v4-upgrader.js +673 -0
  397. package/tools/version-bump.js +94 -0
  398. package/tools/yaml-format.js +253 -0
@@ -0,0 +1,633 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { program } = require('commander');
4
+ const path = require('node:path');
5
+ const fs = require('node:fs').promises;
6
+ const yaml = require('js-yaml');
7
+ const chalk = require('chalk').default || require('chalk');
8
+ const inquirer = require('inquirer').default || require('inquirer');
9
+ const semver = require('semver');
10
+ const https = require('node:https');
11
+
12
+ // Handle both execution contexts (from root via npx or from installer directory)
13
+ let version;
14
+ let installer;
15
+ let packageName;
16
+ try {
17
+ // Try installer context first (when run from tools/installer/)
18
+ version = require('../package.json').version;
19
+ packageName = require('../package.json').name;
20
+ installer = require('../lib/installer');
21
+ } catch (error) {
22
+ // Fall back to root context (when run via npx from GitHub)
23
+ console.log(`Installer context not found (${error.message}), trying root context...`);
24
+ try {
25
+ version = require('../../../package.json').version;
26
+ packageName = require('../package.json').name;
27
+ installer = require('../../../tools/installer/lib/installer');
28
+ } catch (error) {
29
+ console.error(
30
+ 'Error: Could not load required modules. Please ensure you are running from the correct directory.',
31
+ );
32
+ console.error('Debug info:', {
33
+ __dirname,
34
+ cwd: process.cwd(),
35
+ error: error.message,
36
+ });
37
+ process.exit(1);
38
+ }
39
+ }
40
+
41
+ program
42
+ .version(version)
43
+ .description('BMad Stella installer - Universal AI agent framework for any domain');
44
+
45
+ program
46
+ .command('install')
47
+ .description('Install BMad Stella agents and tools')
48
+ .option('-f, --full', 'Install complete BMad Stella')
49
+ .option('-x, --expansion-only', 'Install only expansion packs (no bmad-core)')
50
+ .option('-d, --directory <path>', 'Installation directory')
51
+ .option(
52
+ '-i, --ide <ide...>',
53
+ 'Configure for specific IDE(s) - can specify multiple (cursor, claude-code, windsurf, trae, roo, kilo, cline, gemini, qwen-code, github-copilot, codex, codex-web, auggie-cli, iflow-cli, opencode, other)',
54
+ )
55
+ .option(
56
+ '-e, --expansion-packs <packs...>',
57
+ 'Install specific expansion packs (can specify multiple)',
58
+ )
59
+ .action(async (options) => {
60
+ try {
61
+ if (!options.full && !options.expansionOnly) {
62
+ // Interactive mode
63
+ const answers = await promptInstallation();
64
+ if (!answers._alreadyInstalled) {
65
+ await installer.install(answers);
66
+ process.exit(0);
67
+ }
68
+ } else {
69
+ // Direct mode
70
+ let installType = 'full';
71
+ if (options.expansionOnly) installType = 'expansion-only';
72
+
73
+ const config = {
74
+ installType,
75
+ directory: options.directory || '.',
76
+ ides: (options.ide || []).filter((ide) => ide !== 'other'),
77
+ expansionPacks: options.expansionPacks || [],
78
+ };
79
+ await installer.install(config);
80
+ process.exit(0);
81
+ }
82
+ } catch (error) {
83
+ console.error(chalk.red('Installation failed:'), error.message);
84
+ process.exit(1);
85
+ }
86
+ });
87
+
88
+ program
89
+ .command('update')
90
+ .description('Update existing BMad Stella installation')
91
+ .option('--force', 'Force update, overwriting modified files')
92
+ .option('--dry-run', 'Show what would be updated without making changes')
93
+ .action(async () => {
94
+ try {
95
+ await installer.update();
96
+ } catch (error) {
97
+ console.error(chalk.red('Update failed:'), error.message);
98
+ process.exit(1);
99
+ }
100
+ });
101
+
102
+ // Command to check if updates are available
103
+ program
104
+ .command('update-check')
105
+ .description('Check for BMad Stella Update')
106
+ .action(async () => {
107
+ console.log('Checking for updates...');
108
+
109
+ // Make HTTP request to npm registry for latest version info
110
+ const req = https.get(`https://registry.npmjs.org/${packageName}/latest`, (res) => {
111
+ // Check for HTTP errors (non-200 status codes)
112
+ if (res.statusCode !== 200) {
113
+ console.error(chalk.red(`Update check failed: Received status code ${res.statusCode}`));
114
+ return;
115
+ }
116
+
117
+ // Accumulate response data chunks
118
+ let data = '';
119
+ res.on('data', (chunk) => (data += chunk));
120
+
121
+ // Process complete response
122
+ res.on('end', () => {
123
+ try {
124
+ // Parse npm registry response and extract version
125
+ const latest = JSON.parse(data).version;
126
+
127
+ // Compare versions using semver
128
+ if (semver.gt(latest, version)) {
129
+ console.log(
130
+ chalk.bold.blue(`⚠️ ${packageName} update available: ${version} → ${latest}`),
131
+ );
132
+ console.log(chalk.bold.blue('\nInstall latest by running:'));
133
+ console.log(chalk.bold.magenta(` npm install ${packageName}@latest`));
134
+ console.log(chalk.dim(' or'));
135
+ console.log(chalk.bold.magenta(` npx ${packageName}@latest`));
136
+ } else {
137
+ console.log(chalk.bold.blue(`✨ ${packageName} is up to date`));
138
+ }
139
+ } catch (error) {
140
+ // Handle JSON parsing errors
141
+ console.error(chalk.red('Failed to parse npm registry data:'), error.message);
142
+ }
143
+ });
144
+ });
145
+
146
+ // Handle network/connection errors
147
+ req.on('error', (error) => {
148
+ console.error(chalk.red('Update check failed:'), error.message);
149
+ });
150
+
151
+ // Set 30 second timeout to prevent hanging
152
+ req.setTimeout(30_000, () => {
153
+ req.destroy();
154
+ console.error(chalk.red('Update check timed out'));
155
+ });
156
+ });
157
+
158
+ program
159
+ .command('list:expansions')
160
+ .description('List available expansion packs')
161
+ .action(async () => {
162
+ try {
163
+ await installer.listExpansionPacks();
164
+ } catch (error) {
165
+ console.error(chalk.red('Error:'), error.message);
166
+ process.exit(1);
167
+ }
168
+ });
169
+
170
+ program
171
+ .command('status')
172
+ .description('Show installation status')
173
+ .action(async () => {
174
+ try {
175
+ await installer.showStatus();
176
+ } catch (error) {
177
+ console.error(chalk.red('Error:'), error.message);
178
+ process.exit(1);
179
+ }
180
+ });
181
+
182
+ program
183
+ .command('flatten')
184
+ .description('Flatten codebase to XML format')
185
+ .option('-i, --input <path>', 'Input directory to flatten', process.cwd())
186
+ .option('-o, --output <path>', 'Output file path', 'flattened-codebase.xml')
187
+ .action(async (options) => {
188
+ try {
189
+ await installer.flatten(options);
190
+ } catch (error) {
191
+ console.error(chalk.red('Flatten failed:'), error.message);
192
+ process.exit(1);
193
+ }
194
+ });
195
+
196
+ async function promptInstallation() {
197
+ // Display ASCII logo
198
+ console.log(
199
+ chalk.bold.cyan(`
200
+ ██████╗ ███╗ ███╗ █████╗ ██████╗ ███████╗████████╗███████╗██╗ ██╗ █████╗
201
+ ██╔══██╗████╗ ████║██╔══██╗██╔══██╗ ██╔════╝╚══██╔══╝██╔════╝██║ ██║ ██╔══██╗
202
+ ██████╔╝██╔████╔██║███████║██║ ██║█████╗███████╗ ██║ █████╗ ██║ ██║ ███████║
203
+ ██╔══██╗██║╚██╔╝██║██╔══██║██║ ██║╚════╝╚════██║ ██║ ██╔══╝ ██║ ██║ ██╔══██║
204
+ ██████╔╝██║ ╚═╝ ██║██║ ██║██████╔╝ ███████║ ██║ ███████╗███████╗███████╗██║ ██║
205
+ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
206
+ `),
207
+ );
208
+
209
+ console.log(chalk.bold.magenta('🚀 Universal AI Agent Framework for Any Domain'));
210
+ console.log(chalk.bold.blue(`✨ Installer v${version}\n`));
211
+
212
+ const answers = {};
213
+
214
+ // Ask for installation directory first
215
+ const { directory } = await inquirer.prompt([
216
+ {
217
+ type: 'input',
218
+ name: 'directory',
219
+ message: 'Enter the full path to your project directory where BMad should be installed:',
220
+ default: path.resolve('.'),
221
+ validate: (input) => {
222
+ if (!input.trim()) {
223
+ return 'Please enter a valid project path';
224
+ }
225
+ return true;
226
+ },
227
+ },
228
+ ]);
229
+ answers.directory = directory;
230
+
231
+ // Detect existing installations
232
+ const installDir = path.resolve(directory);
233
+ const state = await installer.detectInstallationState(installDir);
234
+
235
+ // Check for existing expansion packs
236
+ const existingExpansionPacks = state.expansionPacks || {};
237
+
238
+ // Get available expansion packs
239
+ const availableExpansionPacks = await installer.getAvailableExpansionPacks();
240
+
241
+ // Build choices list
242
+ const choices = [];
243
+
244
+ // Load core config to get short-title
245
+ const coreConfigPath = path.join(__dirname, '..', '..', '..', 'bmad-core', 'core-config.yaml');
246
+ const coreConfig = yaml.load(await fs.readFile(coreConfigPath, 'utf8'));
247
+ const coreShortTitle = coreConfig['short-title'] || 'BMad Agile Core System';
248
+
249
+ // Add BMad core option
250
+ let bmadOptionText;
251
+ if (state.type === 'v4_existing') {
252
+ const currentVersion = state.manifest?.version || 'unknown';
253
+ const newVersion = version; // Always use package.json version
254
+ const versionInfo =
255
+ currentVersion === newVersion
256
+ ? `(v${currentVersion} - reinstall)`
257
+ : `(v${currentVersion} → v${newVersion})`;
258
+ bmadOptionText = `Update ${coreShortTitle} ${versionInfo} .bmad-core`;
259
+ } else {
260
+ bmadOptionText = `${coreShortTitle} (v${version}) .bmad-core`;
261
+ }
262
+
263
+ choices.push({
264
+ name: bmadOptionText,
265
+ value: 'bmad-core',
266
+ checked: true,
267
+ });
268
+
269
+ // Add expansion pack options
270
+ for (const pack of availableExpansionPacks) {
271
+ const existing = existingExpansionPacks[pack.id];
272
+ let packOptionText;
273
+
274
+ if (existing) {
275
+ const currentVersion = existing.manifest?.version || 'unknown';
276
+ const newVersion = pack.version;
277
+ const versionInfo =
278
+ currentVersion === newVersion
279
+ ? `(v${currentVersion} - reinstall)`
280
+ : `(v${currentVersion} → v${newVersion})`;
281
+ packOptionText = `Update ${pack.shortTitle} ${versionInfo} .${pack.id}`;
282
+ } else {
283
+ packOptionText = `${pack.shortTitle} (v${pack.version}) .${pack.id}`;
284
+ }
285
+
286
+ choices.push({
287
+ name: packOptionText,
288
+ value: pack.id,
289
+ checked: false,
290
+ });
291
+ }
292
+
293
+ // Ask what to install
294
+ const { selectedItems } = await inquirer.prompt([
295
+ {
296
+ type: 'checkbox',
297
+ name: 'selectedItems',
298
+ message: 'Select what to install/update (use space to select, enter to continue):',
299
+ choices: choices,
300
+ validate: (selected) => {
301
+ if (selected.length === 0) {
302
+ return 'Please select at least one item to install';
303
+ }
304
+ return true;
305
+ },
306
+ },
307
+ ]);
308
+
309
+ // Process selections
310
+ answers.installType = selectedItems.includes('bmad-core') ? 'full' : 'expansion-only';
311
+ answers.expansionPacks = selectedItems.filter((item) => item !== 'bmad-core');
312
+
313
+ // Configure document sharding if installing BMad core
314
+ if (selectedItems.includes('bmad-core')) {
315
+ // console.log(chalk.cyan('\n📋 Document Organization Settings'));
316
+ // console.log(
317
+ // chalk.dim(
318
+ // 'PRD and Architecture documents will be automatically sharded into multiple files.\n',
319
+ // ),
320
+ // );
321
+
322
+ // Automatically set PRD and architecture sharding to true
323
+ answers.prdSharded = true;
324
+ answers.architectureSharded = true;
325
+
326
+ // Ask architecture documents folder url in confluence
327
+ const { architectureFolderUrl } = await inquirer.prompt([
328
+ {
329
+ type: 'input',
330
+ name: 'architectureFolderUrl',
331
+ message: 'Enter confluence url of architecture folder:',
332
+ default: '',
333
+ validate: (input) => {
334
+ if (!input.trim()) {
335
+ return 'Please enter a valid URL';
336
+ }
337
+ try {
338
+ new URL(input);
339
+ return true;
340
+ } catch {
341
+ return 'Please enter a valid URL';
342
+ }
343
+ },
344
+ },
345
+ ]);
346
+ answers.architectureFolderUrl = architectureFolderUrl;
347
+ }
348
+
349
+ // Ask for IDE configuration
350
+ let ides = [];
351
+ let ideSelectionComplete = false;
352
+
353
+ while (!ideSelectionComplete) {
354
+ console.log(chalk.cyan('\n🛠️ IDE Configuration'));
355
+ console.log(
356
+ chalk.bold.yellow.bgRed(
357
+ ' ⚠️ IMPORTANT: This is a MULTISELECT! Use SPACEBAR to toggle each IDE! ',
358
+ ),
359
+ );
360
+ console.log(chalk.bold.magenta('🔸 Use arrow keys to navigate'));
361
+ console.log(chalk.bold.magenta('🔸 Use SPACEBAR to select/deselect IDEs'));
362
+ console.log(chalk.bold.magenta('🔸 Press ENTER when finished selecting\n'));
363
+
364
+ const ideResponse = await inquirer.prompt([
365
+ {
366
+ type: 'checkbox',
367
+ name: 'ides',
368
+ message:
369
+ 'Which IDE(s) do you want to configure? (Select with SPACEBAR, confirm with ENTER):',
370
+ choices: [
371
+ { name: 'Cursor', value: 'cursor' },
372
+ { name: 'Claude Code', value: 'claude-code' },
373
+ { name: 'iFlow CLI', value: 'iflow-cli' },
374
+ { name: 'Windsurf', value: 'windsurf' },
375
+ { name: 'Trae', value: 'trae' }, // { name: 'Trae', value: 'trae'}
376
+ { name: 'Roo Code', value: 'roo' },
377
+ { name: 'Kilo Code', value: 'kilo' },
378
+ { name: 'Cline', value: 'cline' },
379
+ { name: 'Gemini CLI', value: 'gemini' },
380
+ { name: 'Qwen Code', value: 'qwen-code' },
381
+ { name: 'Crush', value: 'crush' },
382
+ { name: 'Github Copilot', value: 'github-copilot' },
383
+ { name: 'Auggie CLI (Augment Code)', value: 'auggie-cli' },
384
+ { name: 'Codex CLI', value: 'codex' },
385
+ { name: 'Codex Web', value: 'codex-web' },
386
+ { name: 'OpenCode', value: 'opencode' },
387
+ ],
388
+ },
389
+ ]);
390
+
391
+ ides = ideResponse.ides;
392
+
393
+ // Confirm no IDE selection if none selected
394
+ if (ides.length === 0) {
395
+ const { confirmNoIde } = await inquirer.prompt([
396
+ {
397
+ type: 'confirm',
398
+ name: 'confirmNoIde',
399
+ message: chalk.red(
400
+ '⚠️ You have NOT selected any IDEs. This means NO IDE integration will be set up. Is this correct?',
401
+ ),
402
+ default: false,
403
+ },
404
+ ]);
405
+
406
+ if (!confirmNoIde) {
407
+ console.log(
408
+ chalk.bold.red(
409
+ '\n🔄 Returning to IDE selection. Remember to use SPACEBAR to select IDEs!\n',
410
+ ),
411
+ );
412
+ continue; // Go back to IDE selection only
413
+ }
414
+ }
415
+
416
+ ideSelectionComplete = true;
417
+ }
418
+
419
+ // Use selected IDEs directly
420
+ answers.ides = ides;
421
+
422
+ // Configure GitHub Copilot immediately if selected
423
+ if (ides.includes('github-copilot')) {
424
+ console.log(chalk.cyan('\n🔧 GitHub Copilot Configuration'));
425
+ console.log(
426
+ chalk.dim('BMad works best with specific VS Code settings for optimal agent experience.\n'),
427
+ );
428
+
429
+ const { configChoice } = await inquirer.prompt([
430
+ {
431
+ type: 'list',
432
+ name: 'configChoice',
433
+ message: chalk.yellow('How would you like to configure GitHub Copilot settings?'),
434
+ choices: [
435
+ {
436
+ name: 'Use recommended defaults (fastest setup)',
437
+ value: 'defaults',
438
+ },
439
+ {
440
+ name: 'Configure each setting manually (customize to your preferences)',
441
+ value: 'manual',
442
+ },
443
+ {
444
+ name: "Skip settings configuration (I'll configure manually later)",
445
+ value: 'skip',
446
+ },
447
+ ],
448
+ default: 'defaults',
449
+ },
450
+ ]);
451
+
452
+ answers.githubCopilotConfig = { configChoice };
453
+ }
454
+
455
+ // Configure OpenCode immediately if selected
456
+ if (ides.includes('opencode')) {
457
+ console.log(chalk.cyan('\n⚙️ OpenCode Configuration'));
458
+ console.log(
459
+ chalk.dim(
460
+ 'OpenCode will include agents and tasks from the packages you selected above; choose optional key prefixes (defaults: no prefixes).\n',
461
+ ),
462
+ );
463
+
464
+ const { useAgentPrefix, useCommandPrefix } = await inquirer.prompt([
465
+ {
466
+ type: 'confirm',
467
+ name: 'useAgentPrefix',
468
+ message: "Prefix agent keys with 'bmad-'? (e.g., 'bmad-dev')",
469
+ default: true,
470
+ },
471
+ {
472
+ type: 'confirm',
473
+ name: 'useCommandPrefix',
474
+ message: "Prefix command keys with 'bmad:tasks:'? (e.g., 'bmad:tasks:create-doc')",
475
+ default: true,
476
+ },
477
+ ]);
478
+
479
+ answers.openCodeConfig = {
480
+ opencode: {
481
+ useAgentPrefix,
482
+ useCommandPrefix,
483
+ },
484
+ // pass previously selected packages so IDE setup only applies those
485
+ selectedPackages: {
486
+ includeCore: selectedItems.includes('bmad-core'),
487
+ packs: answers.expansionPacks || [],
488
+ },
489
+ };
490
+ }
491
+
492
+ // Configure Auggie CLI (Augment Code) immediately if selected
493
+ if (ides.includes('auggie-cli')) {
494
+ console.log(chalk.cyan('\n📍 Auggie CLI Location Configuration'));
495
+ console.log(chalk.dim('Choose where to install BMad agents for Auggie CLI access.\n'));
496
+
497
+ const { selectedLocations } = await inquirer.prompt([
498
+ {
499
+ type: 'checkbox',
500
+ name: 'selectedLocations',
501
+ message: 'Select Auggie CLI command locations:',
502
+ choices: [
503
+ {
504
+ name: 'User Commands (Global): Available across all your projects (user-wide)',
505
+ value: 'user',
506
+ },
507
+ {
508
+ name: 'Workspace Commands (Project): Stored in repository, shared with team',
509
+ value: 'workspace',
510
+ },
511
+ ],
512
+ validate: (selected) => {
513
+ if (selected.length === 0) {
514
+ return 'Please select at least one location';
515
+ }
516
+ return true;
517
+ },
518
+ },
519
+ ]);
520
+
521
+ answers.augmentCodeConfig = { selectedLocations };
522
+ }
523
+
524
+ // Ask for web bundles installation
525
+ const { includeWebBundles } = await inquirer.prompt([
526
+ {
527
+ type: 'confirm',
528
+ name: 'includeWebBundles',
529
+ message:
530
+ 'Would you like to include pre-built web bundles? (standalone files for ChatGPT, Claude, Gemini)',
531
+ default: false,
532
+ },
533
+ ]);
534
+
535
+ if (includeWebBundles) {
536
+ console.log(chalk.cyan('\n📦 Web bundles are standalone files perfect for web AI platforms.'));
537
+ console.log(
538
+ chalk.dim(' You can choose different teams/agents than your IDE installation.\n'),
539
+ );
540
+
541
+ const { webBundleType } = await inquirer.prompt([
542
+ {
543
+ type: 'list',
544
+ name: 'webBundleType',
545
+ message: 'What web bundles would you like to include?',
546
+ choices: [
547
+ {
548
+ name: 'All available bundles (agents, teams, expansion packs)',
549
+ value: 'all',
550
+ },
551
+ {
552
+ name: 'Specific teams only',
553
+ value: 'teams',
554
+ },
555
+ {
556
+ name: 'Individual agents only',
557
+ value: 'agents',
558
+ },
559
+ {
560
+ name: 'Custom selection',
561
+ value: 'custom',
562
+ },
563
+ ],
564
+ },
565
+ ]);
566
+
567
+ answers.webBundleType = webBundleType;
568
+
569
+ // If specific teams, let them choose which teams
570
+ if (webBundleType === 'teams' || webBundleType === 'custom') {
571
+ const teams = await installer.getAvailableTeams();
572
+ const { selectedTeams } = await inquirer.prompt([
573
+ {
574
+ type: 'checkbox',
575
+ name: 'selectedTeams',
576
+ message: 'Select team bundles to include:',
577
+ choices: teams.map((t) => ({
578
+ name: `${t.icon || '📋'} ${t.name}: ${t.description}`,
579
+ value: t.id,
580
+ checked: webBundleType === 'teams', // Check all if teams-only mode
581
+ })),
582
+ validate: (answer) => {
583
+ if (answer.length === 0) {
584
+ return 'You must select at least one team.';
585
+ }
586
+ return true;
587
+ },
588
+ },
589
+ ]);
590
+ answers.selectedWebBundleTeams = selectedTeams;
591
+ }
592
+
593
+ // If custom selection, also ask about individual agents
594
+ if (webBundleType === 'custom') {
595
+ const { includeIndividualAgents } = await inquirer.prompt([
596
+ {
597
+ type: 'confirm',
598
+ name: 'includeIndividualAgents',
599
+ message: 'Also include individual agent bundles?',
600
+ default: true,
601
+ },
602
+ ]);
603
+ answers.includeIndividualAgents = includeIndividualAgents;
604
+ }
605
+
606
+ const { webBundlesDirectory } = await inquirer.prompt([
607
+ {
608
+ type: 'input',
609
+ name: 'webBundlesDirectory',
610
+ message: 'Enter directory for web bundles:',
611
+ default: `${answers.directory}/web-bundles`,
612
+ validate: (input) => {
613
+ if (!input.trim()) {
614
+ return 'Please enter a valid directory path';
615
+ }
616
+ return true;
617
+ },
618
+ },
619
+ ]);
620
+ answers.webBundlesDirectory = webBundlesDirectory;
621
+ }
622
+
623
+ answers.includeWebBundles = includeWebBundles;
624
+
625
+ return answers;
626
+ }
627
+
628
+ program.parse(process.argv);
629
+
630
+ // Show help if no command provided
631
+ if (process.argv.slice(2).length === 0) {
632
+ program.outputHelp();
633
+ }
@@ -0,0 +1,58 @@
1
+ # IDE-specific agent configurations
2
+ # This file defines agent-specific settings for different IDEs
3
+
4
+ # Roo Code file permissions
5
+ # Each agent can have restricted file access based on regex patterns
6
+ # If an agent is not listed here, it gets full edit access
7
+ roo-permissions:
8
+ # Core agents
9
+ analyst:
10
+ fileRegex: "\\.(md|txt)$"
11
+ description: "Documentation and text files"
12
+ pm:
13
+ fileRegex: "\\.(md|txt)$"
14
+ description: "Product documentation"
15
+ architect:
16
+ fileRegex: "\\.(md|txt|yml|yaml|json)$"
17
+ description: "Architecture docs and configs"
18
+ qa:
19
+ fileRegex: "\\.(test|spec)\\.(js|ts|jsx|tsx)$|\\.md$"
20
+ description: "Test files and documentation"
21
+ ux-expert:
22
+ fileRegex: "\\.(md|css|scss|html|jsx|tsx)$"
23
+ description: "Design-related files"
24
+ po:
25
+ fileRegex: "\\.(md|txt)$"
26
+ description: "Story and requirement docs"
27
+ sm:
28
+ fileRegex: "\\.(md|txt)$"
29
+ description: "Process and planning docs"
30
+ # Expansion pack agents
31
+ game-designer:
32
+ fileRegex: "\\.(md|txt|json|yaml|yml)$"
33
+ description: "Game design documents and configs"
34
+ game-sm:
35
+ fileRegex: "\\.(md|txt)$"
36
+ description: "Game project management docs"
37
+
38
+ # Cline agent ordering
39
+ # Lower numbers appear first in the list
40
+ # Agents not listed get order 99
41
+ cline-order:
42
+ # Core agents
43
+ bmad-master: 1
44
+ bmad-orchestrator: 2
45
+ pm: 3
46
+ analyst: 4
47
+ architect: 5
48
+ po: 6
49
+ sm: 7
50
+ dev: 8
51
+ qa: 9
52
+ ux-expert: 10
53
+ # Expansion pack agents
54
+ bmad-the-creator: 11
55
+ game-designer: 12
56
+ game-developer: 13
57
+ game-sm: 14
58
+ infra-devops-platform: 15