@zeyue0329/xiaoma-cli 1.0.8 → 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 (326) 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 +390 -150
  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 -117
  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 -699
  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/XiaoMa-Web/345/244/232/346/231/272/350/203/275/344/275/2230-1/351/241/271/347/233/256/345/274/200/345/217/221/345/256/214/346/225/264/346/214/207/345/215/227.md +0 -977
  301. package/XiaoMa-Web/347/216/260/346/234/211/351/241/271/347/233/256/351/234/200/346/261/202/345/274/200/345/217/221/345/256/214/346/225/264/346/214/207/345/215/227.md +0 -873
  302. package/XiaoMa-Web/347/272/257/345/211/215/347/253/257/351/241/271/347/233/256Claude-Code/345/274/200/345/217/221/345/256/214/346/225/264/346/214/207/345/215/227.md +0 -372
  303. package/XiaoMa-Web/351/241/271/347/233/256/346/200/273/347/273/223/346/212/245/345/221/212.md +0 -310
  304. package/dist/agents/analyst.txt +0 -2882
  305. package/dist/agents/architect.txt +0 -3543
  306. package/dist/agents/dev-cn.txt +0 -428
  307. package/dist/agents/dev.txt +0 -428
  308. package/dist/agents/pm.txt +0 -2229
  309. package/dist/agents/po.txt +0 -1364
  310. package/dist/agents/qa.txt +0 -386
  311. package/dist/agents/sm.txt +0 -668
  312. package/dist/agents/ux-expert.txt +0 -701
  313. package/dist/agents/xiaoma-master.txt +0 -8756
  314. package/dist/agents/xiaoma-orchestrator.txt +0 -1490
  315. package/dist/teams/team-all.txt +0 -11062
  316. package/dist/teams/team-fullstack.txt +0 -10392
  317. package/dist/teams/team-ide-minimal.txt +0 -3507
  318. package/dist/teams/team-no-ui.txt +0 -8951
  319. package/docs/quick-start.md +0 -179
  320. package/tools/bmad-npx-wrapper.js +0 -39
  321. package/tools/installer/package-lock.json +0 -704
  322. package/tools/semantic-release-sync-installer.js +0 -30
  323. package/xiaoma-core/bmad-core/user-guide.md +0 -0
  324. package/xiaoma-core/enhanced-ide-development-workflow.md +0 -43
  325. package/xiaoma-core/user-guide.md +0 -251
  326. package/xiaoma-core/working-in-the-brownfield.md +0 -364
@@ -0,0 +1,649 @@
1
+ <!-- Powered by BMAD™ Core -->
2
+
3
+ # Game Development Guidelines
4
+
5
+ ## Overview
6
+
7
+ This document establishes coding standards, architectural patterns, and development practices for 2D game development using Phaser 3 and TypeScript. These guidelines ensure consistency, performance, and maintainability across all game development stories.
8
+
9
+ ## TypeScript Standards
10
+
11
+ ### Strict Mode Configuration
12
+
13
+ **Required tsconfig.json settings:**
14
+
15
+ ```json
16
+ {
17
+ "compilerOptions": {
18
+ "strict": true,
19
+ "noImplicitAny": true,
20
+ "strictNullChecks": true,
21
+ "strictFunctionTypes": true,
22
+ "noImplicitReturns": true,
23
+ "noUnusedLocals": true,
24
+ "noUnusedParameters": true,
25
+ "exactOptionalPropertyTypes": true
26
+ }
27
+ }
28
+ ```
29
+
30
+ ### Type Definitions
31
+
32
+ **Game Object Interfaces:**
33
+
34
+ ```typescript
35
+ // Core game entity interface
36
+ interface GameEntity {
37
+ readonly id: string;
38
+ position: Phaser.Math.Vector2;
39
+ active: boolean;
40
+ destroy(): void;
41
+ }
42
+
43
+ // Player controller interface
44
+ interface PlayerController {
45
+ readonly inputEnabled: boolean;
46
+ handleInput(input: InputState): void;
47
+ update(delta: number): void;
48
+ }
49
+
50
+ // Game system interface
51
+ interface GameSystem {
52
+ readonly name: string;
53
+ initialize(): void;
54
+ update(delta: number): void;
55
+ shutdown(): void;
56
+ }
57
+ ```
58
+
59
+ **Scene Data Interfaces:**
60
+
61
+ ```typescript
62
+ // Scene transition data
63
+ interface SceneData {
64
+ [key: string]: any;
65
+ }
66
+
67
+ // Game state interface
68
+ interface GameState {
69
+ currentLevel: number;
70
+ score: number;
71
+ lives: number;
72
+ settings: GameSettings;
73
+ }
74
+
75
+ interface GameSettings {
76
+ musicVolume: number;
77
+ sfxVolume: number;
78
+ difficulty: 'easy' | 'normal' | 'hard';
79
+ controls: ControlScheme;
80
+ }
81
+ ```
82
+
83
+ ### Naming Conventions
84
+
85
+ **Classes and Interfaces:**
86
+
87
+ - PascalCase for classes: `PlayerSprite`, `GameManager`, `AudioSystem`
88
+ - PascalCase with 'I' prefix for interfaces: `IGameEntity`, `IPlayerController`
89
+ - Descriptive names that indicate purpose: `CollisionManager` not `CM`
90
+
91
+ **Methods and Variables:**
92
+
93
+ - camelCase for methods and variables: `updatePosition()`, `playerSpeed`
94
+ - Descriptive names: `calculateDamage()` not `calcDmg()`
95
+ - Boolean variables with is/has/can prefix: `isActive`, `hasCollision`, `canMove`
96
+
97
+ **Constants:**
98
+
99
+ - UPPER_SNAKE_CASE for constants: `MAX_PLAYER_SPEED`, `DEFAULT_VOLUME`
100
+ - Group related constants in enums or const objects
101
+
102
+ **Files and Directories:**
103
+
104
+ - kebab-case for file names: `player-controller.ts`, `audio-manager.ts`
105
+ - PascalCase for scene files: `MenuScene.ts`, `GameScene.ts`
106
+
107
+ ## Phaser 3 Architecture Patterns
108
+
109
+ ### Scene Organization
110
+
111
+ **Scene Lifecycle Management:**
112
+
113
+ ```typescript
114
+ class GameScene extends Phaser.Scene {
115
+ private gameManager!: GameManager;
116
+ private inputManager!: InputManager;
117
+
118
+ constructor() {
119
+ super({ key: 'GameScene' });
120
+ }
121
+
122
+ preload(): void {
123
+ // Load only scene-specific assets
124
+ this.load.image('player', 'assets/player.png');
125
+ }
126
+
127
+ create(data: SceneData): void {
128
+ // Initialize game systems
129
+ this.gameManager = new GameManager(this);
130
+ this.inputManager = new InputManager(this);
131
+
132
+ // Set up scene-specific logic
133
+ this.setupGameObjects();
134
+ this.setupEventListeners();
135
+ }
136
+
137
+ update(time: number, delta: number): void {
138
+ // Update all game systems
139
+ this.gameManager.update(delta);
140
+ this.inputManager.update(delta);
141
+ }
142
+
143
+ shutdown(): void {
144
+ // Clean up resources
145
+ this.gameManager.destroy();
146
+ this.inputManager.destroy();
147
+
148
+ // Remove event listeners
149
+ this.events.off('*');
150
+ }
151
+ }
152
+ ```
153
+
154
+ **Scene Transitions:**
155
+
156
+ ```typescript
157
+ // Proper scene transitions with data
158
+ this.scene.start('NextScene', {
159
+ playerScore: this.playerScore,
160
+ currentLevel: this.currentLevel + 1,
161
+ });
162
+
163
+ // Scene overlays for UI
164
+ this.scene.launch('PauseMenuScene');
165
+ this.scene.pause();
166
+ ```
167
+
168
+ ### Game Object Patterns
169
+
170
+ **Component-Based Architecture:**
171
+
172
+ ```typescript
173
+ // Base game entity
174
+ abstract class GameEntity extends Phaser.GameObjects.Sprite {
175
+ protected components: Map<string, GameComponent> = new Map();
176
+
177
+ constructor(scene: Phaser.Scene, x: number, y: number, texture: string) {
178
+ super(scene, x, y, texture);
179
+ scene.add.existing(this);
180
+ }
181
+
182
+ addComponent<T extends GameComponent>(component: T): T {
183
+ this.components.set(component.name, component);
184
+ return component;
185
+ }
186
+
187
+ getComponent<T extends GameComponent>(name: string): T | undefined {
188
+ return this.components.get(name) as T;
189
+ }
190
+
191
+ update(delta: number): void {
192
+ this.components.forEach((component) => component.update(delta));
193
+ }
194
+
195
+ destroy(): void {
196
+ this.components.forEach((component) => component.destroy());
197
+ this.components.clear();
198
+ super.destroy();
199
+ }
200
+ }
201
+
202
+ // Example player implementation
203
+ class Player extends GameEntity {
204
+ private movement!: MovementComponent;
205
+ private health!: HealthComponent;
206
+
207
+ constructor(scene: Phaser.Scene, x: number, y: number) {
208
+ super(scene, x, y, 'player');
209
+
210
+ this.movement = this.addComponent(new MovementComponent(this));
211
+ this.health = this.addComponent(new HealthComponent(this, 100));
212
+ }
213
+ }
214
+ ```
215
+
216
+ ### System Management
217
+
218
+ **Singleton Managers:**
219
+
220
+ ```typescript
221
+ class GameManager {
222
+ private static instance: GameManager;
223
+ private scene: Phaser.Scene;
224
+ private gameState: GameState;
225
+
226
+ constructor(scene: Phaser.Scene) {
227
+ if (GameManager.instance) {
228
+ throw new Error('GameManager already exists!');
229
+ }
230
+
231
+ this.scene = scene;
232
+ this.gameState = this.loadGameState();
233
+ GameManager.instance = this;
234
+ }
235
+
236
+ static getInstance(): GameManager {
237
+ if (!GameManager.instance) {
238
+ throw new Error('GameManager not initialized!');
239
+ }
240
+ return GameManager.instance;
241
+ }
242
+
243
+ update(delta: number): void {
244
+ // Update game logic
245
+ }
246
+
247
+ destroy(): void {
248
+ GameManager.instance = null!;
249
+ }
250
+ }
251
+ ```
252
+
253
+ ## Performance Optimization
254
+
255
+ ### Object Pooling
256
+
257
+ **Required for High-Frequency Objects:**
258
+
259
+ ```typescript
260
+ class BulletPool {
261
+ private pool: Bullet[] = [];
262
+ private scene: Phaser.Scene;
263
+
264
+ constructor(scene: Phaser.Scene, initialSize: number = 50) {
265
+ this.scene = scene;
266
+
267
+ // Pre-create bullets
268
+ for (let i = 0; i < initialSize; i++) {
269
+ const bullet = new Bullet(scene, 0, 0);
270
+ bullet.setActive(false);
271
+ bullet.setVisible(false);
272
+ this.pool.push(bullet);
273
+ }
274
+ }
275
+
276
+ getBullet(): Bullet | null {
277
+ const bullet = this.pool.find((b) => !b.active);
278
+ if (bullet) {
279
+ bullet.setActive(true);
280
+ bullet.setVisible(true);
281
+ return bullet;
282
+ }
283
+
284
+ // Pool exhausted - create new bullet
285
+ console.warn('Bullet pool exhausted, creating new bullet');
286
+ return new Bullet(this.scene, 0, 0);
287
+ }
288
+
289
+ releaseBullet(bullet: Bullet): void {
290
+ bullet.setActive(false);
291
+ bullet.setVisible(false);
292
+ bullet.setPosition(0, 0);
293
+ }
294
+ }
295
+ ```
296
+
297
+ ### Frame Rate Optimization
298
+
299
+ **Performance Monitoring:**
300
+
301
+ ```typescript
302
+ class PerformanceMonitor {
303
+ private frameCount: number = 0;
304
+ private lastTime: number = 0;
305
+ private frameRate: number = 60;
306
+
307
+ update(time: number): void {
308
+ this.frameCount++;
309
+
310
+ if (time - this.lastTime >= 1000) {
311
+ this.frameRate = this.frameCount;
312
+ this.frameCount = 0;
313
+ this.lastTime = time;
314
+
315
+ if (this.frameRate < 55) {
316
+ console.warn(`Low frame rate detected: ${this.frameRate} FPS`);
317
+ this.optimizePerformance();
318
+ }
319
+ }
320
+ }
321
+
322
+ private optimizePerformance(): void {
323
+ // Reduce particle counts, disable effects, etc.
324
+ }
325
+ }
326
+ ```
327
+
328
+ **Update Loop Optimization:**
329
+
330
+ ```typescript
331
+ // Avoid expensive operations in update loops
332
+ class GameScene extends Phaser.Scene {
333
+ private updateTimer: number = 0;
334
+ private readonly UPDATE_INTERVAL = 100; // ms
335
+
336
+ update(time: number, delta: number): void {
337
+ // High-frequency updates (every frame)
338
+ this.updatePlayer(delta);
339
+ this.updatePhysics(delta);
340
+
341
+ // Low-frequency updates (10 times per second)
342
+ this.updateTimer += delta;
343
+ if (this.updateTimer >= this.UPDATE_INTERVAL) {
344
+ this.updateUI();
345
+ this.updateAI();
346
+ this.updateTimer = 0;
347
+ }
348
+ }
349
+ }
350
+ ```
351
+
352
+ ## Input Handling
353
+
354
+ ### Cross-Platform Input
355
+
356
+ **Input Abstraction:**
357
+
358
+ ```typescript
359
+ interface InputState {
360
+ moveLeft: boolean;
361
+ moveRight: boolean;
362
+ jump: boolean;
363
+ action: boolean;
364
+ pause: boolean;
365
+ }
366
+
367
+ class InputManager {
368
+ private inputState: InputState = {
369
+ moveLeft: false,
370
+ moveRight: false,
371
+ jump: false,
372
+ action: false,
373
+ pause: false,
374
+ };
375
+
376
+ private keys!: { [key: string]: Phaser.Input.Keyboard.Key };
377
+ private pointer!: Phaser.Input.Pointer;
378
+
379
+ constructor(private scene: Phaser.Scene) {
380
+ this.setupKeyboard();
381
+ this.setupTouch();
382
+ }
383
+
384
+ private setupKeyboard(): void {
385
+ this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
386
+ }
387
+
388
+ private setupTouch(): void {
389
+ this.scene.input.on('pointerdown', this.handlePointerDown, this);
390
+ this.scene.input.on('pointerup', this.handlePointerUp, this);
391
+ }
392
+
393
+ update(): void {
394
+ // Update input state from multiple sources
395
+ this.inputState.moveLeft = this.keys.A.isDown || this.keys.LEFT.isDown;
396
+ this.inputState.moveRight = this.keys.D.isDown || this.keys.RIGHT.isDown;
397
+ this.inputState.jump = Phaser.Input.Keyboard.JustDown(this.keys.SPACE);
398
+ // ... handle touch input
399
+ }
400
+
401
+ getInputState(): InputState {
402
+ return { ...this.inputState };
403
+ }
404
+ }
405
+ ```
406
+
407
+ ## Error Handling
408
+
409
+ ### Graceful Degradation
410
+
411
+ **Asset Loading Error Handling:**
412
+
413
+ ```typescript
414
+ class AssetManager {
415
+ loadAssets(): Promise<void> {
416
+ return new Promise((resolve, reject) => {
417
+ this.scene.load.on('filecomplete', this.handleFileComplete, this);
418
+ this.scene.load.on('loaderror', this.handleLoadError, this);
419
+ this.scene.load.on('complete', () => resolve());
420
+
421
+ this.scene.load.start();
422
+ });
423
+ }
424
+
425
+ private handleLoadError(file: Phaser.Loader.File): void {
426
+ console.error(`Failed to load asset: ${file.key}`);
427
+
428
+ // Use fallback assets
429
+ this.loadFallbackAsset(file.key);
430
+ }
431
+
432
+ private loadFallbackAsset(key: string): void {
433
+ // Load placeholder or default assets
434
+ switch (key) {
435
+ case 'player':
436
+ this.scene.load.image('player', 'assets/defaults/default-player.png');
437
+ break;
438
+ default:
439
+ console.warn(`No fallback for asset: ${key}`);
440
+ }
441
+ }
442
+ }
443
+ ```
444
+
445
+ ### Runtime Error Recovery
446
+
447
+ **System Error Handling:**
448
+
449
+ ```typescript
450
+ class GameSystem {
451
+ protected handleError(error: Error, context: string): void {
452
+ console.error(`Error in ${context}:`, error);
453
+
454
+ // Report to analytics/logging service
455
+ this.reportError(error, context);
456
+
457
+ // Attempt recovery
458
+ this.attemptRecovery(context);
459
+ }
460
+
461
+ private attemptRecovery(context: string): void {
462
+ switch (context) {
463
+ case 'update':
464
+ // Reset system state
465
+ this.reset();
466
+ break;
467
+ case 'render':
468
+ // Disable visual effects
469
+ this.disableEffects();
470
+ break;
471
+ default:
472
+ // Generic recovery
473
+ this.safeShutdown();
474
+ }
475
+ }
476
+ }
477
+ ```
478
+
479
+ ## Testing Standards
480
+
481
+ ### Unit Testing
482
+
483
+ **Game Logic Testing:**
484
+
485
+ ```typescript
486
+ // Example test for game mechanics
487
+ describe('HealthComponent', () => {
488
+ let healthComponent: HealthComponent;
489
+
490
+ beforeEach(() => {
491
+ const mockEntity = {} as GameEntity;
492
+ healthComponent = new HealthComponent(mockEntity, 100);
493
+ });
494
+
495
+ test('should initialize with correct health', () => {
496
+ expect(healthComponent.currentHealth).toBe(100);
497
+ expect(healthComponent.maxHealth).toBe(100);
498
+ });
499
+
500
+ test('should handle damage correctly', () => {
501
+ healthComponent.takeDamage(25);
502
+ expect(healthComponent.currentHealth).toBe(75);
503
+ expect(healthComponent.isAlive()).toBe(true);
504
+ });
505
+
506
+ test('should handle death correctly', () => {
507
+ healthComponent.takeDamage(150);
508
+ expect(healthComponent.currentHealth).toBe(0);
509
+ expect(healthComponent.isAlive()).toBe(false);
510
+ });
511
+ });
512
+ ```
513
+
514
+ ### Integration Testing
515
+
516
+ **Scene Testing:**
517
+
518
+ ```typescript
519
+ describe('GameScene Integration', () => {
520
+ let scene: GameScene;
521
+ let mockGame: Phaser.Game;
522
+
523
+ beforeEach(() => {
524
+ // Mock Phaser game instance
525
+ mockGame = createMockGame();
526
+ scene = new GameScene();
527
+ });
528
+
529
+ test('should initialize all systems', () => {
530
+ scene.create({});
531
+
532
+ expect(scene.gameManager).toBeDefined();
533
+ expect(scene.inputManager).toBeDefined();
534
+ });
535
+ });
536
+ ```
537
+
538
+ ## File Organization
539
+
540
+ ### Project Structure
541
+
542
+ ```
543
+ src/
544
+ ├── scenes/
545
+ │ ├── BootScene.ts # Initial loading and setup
546
+ │ ├── PreloadScene.ts # Asset loading with progress
547
+ │ ├── MenuScene.ts # Main menu and navigation
548
+ │ ├── GameScene.ts # Core gameplay
549
+ │ └── UIScene.ts # Overlay UI elements
550
+ ├── gameObjects/
551
+ │ ├── entities/
552
+ │ │ ├── Player.ts # Player game object
553
+ │ │ ├── Enemy.ts # Enemy base class
554
+ │ │ └── Collectible.ts # Collectible items
555
+ │ ├── components/
556
+ │ │ ├── MovementComponent.ts
557
+ │ │ ├── HealthComponent.ts
558
+ │ │ └── CollisionComponent.ts
559
+ │ └── ui/
560
+ │ ├── Button.ts # Interactive buttons
561
+ │ ├── HealthBar.ts # Health display
562
+ │ └── ScoreDisplay.ts # Score UI
563
+ ├── systems/
564
+ │ ├── GameManager.ts # Core game state management
565
+ │ ├── InputManager.ts # Cross-platform input handling
566
+ │ ├── AudioManager.ts # Sound and music system
567
+ │ ├── SaveManager.ts # Save/load functionality
568
+ │ └── PerformanceMonitor.ts # Performance tracking
569
+ ├── utils/
570
+ │ ├── ObjectPool.ts # Generic object pooling
571
+ │ ├── MathUtils.ts # Game math helpers
572
+ │ ├── AssetLoader.ts # Asset management utilities
573
+ │ └── EventBus.ts # Global event system
574
+ ├── types/
575
+ │ ├── GameTypes.ts # Core game type definitions
576
+ │ ├── UITypes.ts # UI-related types
577
+ │ └── SystemTypes.ts # System interface definitions
578
+ ├── config/
579
+ │ ├── GameConfig.ts # Phaser game configuration
580
+ │ ├── GameBalance.ts # Game balance parameters
581
+ │ └── AssetConfig.ts # Asset loading configuration
582
+ └── main.ts # Application entry point
583
+ ```
584
+
585
+ ## Development Workflow
586
+
587
+ ### Story Implementation Process
588
+
589
+ 1. **Read Story Requirements:**
590
+ - Understand acceptance criteria
591
+ - Identify technical requirements
592
+ - Review performance constraints
593
+
594
+ 2. **Plan Implementation:**
595
+ - Identify files to create/modify
596
+ - Consider component architecture
597
+ - Plan testing approach
598
+
599
+ 3. **Implement Feature:**
600
+ - Follow TypeScript strict mode
601
+ - Use established patterns
602
+ - Maintain 60 FPS performance
603
+
604
+ 4. **Test Implementation:**
605
+ - Write unit tests for game logic
606
+ - Test cross-platform functionality
607
+ - Validate performance targets
608
+
609
+ 5. **Update Documentation:**
610
+ - Mark story checkboxes complete
611
+ - Document any deviations
612
+ - Update architecture if needed
613
+
614
+ ### Code Review Checklist
615
+
616
+ **Before Committing:**
617
+
618
+ - [ ] TypeScript compiles without errors
619
+ - [ ] All tests pass
620
+ - [ ] Performance targets met (60 FPS)
621
+ - [ ] No console errors or warnings
622
+ - [ ] Cross-platform compatibility verified
623
+ - [ ] Memory usage within bounds
624
+ - [ ] Code follows naming conventions
625
+ - [ ] Error handling implemented
626
+ - [ ] Documentation updated
627
+
628
+ ## Performance Targets
629
+
630
+ ### Frame Rate Requirements
631
+
632
+ - **Desktop**: Maintain 60 FPS at 1080p
633
+ - **Mobile**: Maintain 60 FPS on mid-range devices, minimum 30 FPS on low-end
634
+ - **Optimization**: Implement dynamic quality scaling when performance drops
635
+
636
+ ### Memory Management
637
+
638
+ - **Total Memory**: Under 100MB for full game
639
+ - **Per Scene**: Under 50MB per gameplay scene
640
+ - **Asset Loading**: Progressive loading to stay under limits
641
+ - **Garbage Collection**: Minimize object creation in update loops
642
+
643
+ ### Loading Performance
644
+
645
+ - **Initial Load**: Under 5 seconds for game start
646
+ - **Scene Transitions**: Under 2 seconds between scenes
647
+ - **Asset Streaming**: Background loading for upcoming content
648
+
649
+ These guidelines ensure consistent, high-quality game development that meets performance targets and maintains code quality across all implementation stories.