@zeyue0329/xiaoma-cli 1.0.7 → 1.0.10

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