bmad-method 4.37.0 → 4.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
- package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
- package/.github/workflows/discord.yaml +11 -2
- package/.github/workflows/format-check.yaml +42 -0
- package/.github/workflows/manual-release.yaml +173 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +2 -23
- package/README.md +2 -0
- package/bmad-core/agent-teams/team-all.yaml +1 -1
- package/bmad-core/agents/analyst.md +16 -15
- package/bmad-core/agents/architect.md +11 -11
- package/bmad-core/agents/bmad-master.md +23 -22
- package/bmad-core/agents/bmad-orchestrator.md +13 -17
- package/bmad-core/agents/dev.md +14 -11
- package/bmad-core/agents/pm.md +15 -14
- package/bmad-core/agents/po.md +9 -8
- package/bmad-core/agents/qa.md +42 -22
- package/bmad-core/agents/sm.md +7 -6
- package/bmad-core/agents/ux-expert.md +6 -5
- package/bmad-core/core-config.yaml +2 -0
- package/bmad-core/data/bmad-kb.md +1 -1
- package/bmad-core/data/test-levels-framework.md +146 -0
- package/bmad-core/data/test-priorities-matrix.md +172 -0
- package/bmad-core/tasks/apply-qa-fixes.md +148 -0
- package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
- package/bmad-core/tasks/nfr-assess.md +343 -0
- package/bmad-core/tasks/qa-gate.md +161 -0
- package/bmad-core/tasks/review-story.md +234 -74
- package/bmad-core/tasks/risk-profile.md +353 -0
- package/bmad-core/tasks/test-design.md +174 -0
- package/bmad-core/tasks/trace-requirements.md +264 -0
- package/bmad-core/templates/architecture-tmpl.yaml +49 -49
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
- package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
- package/bmad-core/templates/market-research-tmpl.yaml +2 -2
- package/bmad-core/templates/prd-tmpl.yaml +9 -9
- package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
- package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
- package/bmad-core/templates/story-tmpl.yaml +12 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
- package/bmad-core/workflows/brownfield-service.yaml +1 -1
- package/bmad-core/workflows/brownfield-ui.yaml +1 -1
- package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/bmad-core/workflows/greenfield-ui.yaml +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +1086 -1079
- package/dist/agents/architect.txt +1534 -1526
- package/dist/agents/bmad-master.txt +646 -632
- package/dist/agents/bmad-orchestrator.txt +40 -18
- package/dist/agents/dev.txt +158 -19
- package/dist/agents/pm.txt +1082 -1107
- package/dist/agents/po.txt +314 -332
- package/dist/agents/qa.txt +1754 -151
- package/dist/agents/sm.txt +88 -98
- package/dist/agents/ux-expert.txt +80 -87
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
- package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
- package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
- package/dist/teams/team-all.txt +5541 -3768
- package/dist/teams/team-fullstack.txt +3014 -2987
- package/dist/teams/team-ide-minimal.txt +2219 -469
- package/dist/teams/team-no-ui.txt +2993 -2966
- package/docs/enhanced-ide-development-workflow.md +220 -15
- package/docs/user-guide.md +271 -18
- package/docs/versioning-and-releases.md +122 -44
- package/docs/working-in-the-brownfield.md +264 -31
- package/eslint.config.mjs +119 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
- package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-creative-writing/README.md +132 -0
- package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
- package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
- package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
- package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
- package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
- package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
- package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
- package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
- package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
- package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
- package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
- package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
- package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
- package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
- package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
- package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
- package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
- package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
- package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
- package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
- package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
- package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
- package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
- package/package.json +62 -39
- package/prettier.config.mjs +32 -0
- package/sync-version.sh +23 -0
- package/tools/bmad-npx-wrapper.js +10 -10
- package/tools/builders/web-builder.js +124 -130
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +10 -12
- package/tools/flattener/aggregate.js +10 -10
- package/tools/flattener/binary.js +44 -17
- package/tools/flattener/discovery.js +19 -18
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +125 -125
- package/tools/flattener/main.js +426 -70
- package/tools/flattener/projectRoot.js +186 -25
- package/tools/flattener/prompts.js +9 -9
- package/tools/flattener/stats.helpers.js +395 -0
- package/tools/flattener/stats.js +64 -14
- package/tools/flattener/test-matrix.js +413 -0
- package/tools/flattener/xml.js +33 -31
- package/tools/installer/bin/bmad.js +156 -113
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +13 -3
- package/tools/installer/lib/config-loader.js +46 -42
- package/tools/installer/lib/file-manager.js +91 -113
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +545 -399
- package/tools/installer/lib/installer.js +875 -714
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +26 -28
- package/tools/installer/package.json +19 -19
- package/tools/lib/dependency-resolver.js +26 -30
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/preview-release-notes.js +66 -0
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +7 -9
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/yaml-format.js +56 -43
- package/.github/workflows/release.yaml +0 -60
- package/.releaserc.json +0 -21
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
- package/tools/semantic-release-sync-installer.js +0 -30
|
@@ -113,7 +113,6 @@ If the user asks or does not specify a specific checklist, list the checklists a
|
|
|
113
113
|
## Instructions
|
|
114
114
|
|
|
115
115
|
1. **Initial Assessment**
|
|
116
|
-
|
|
117
116
|
- If user or the task being run provides a checklist name:
|
|
118
117
|
- Try fuzzy matching (e.g. "architecture checklist" -> "architect-checklist")
|
|
119
118
|
- If multiple matches found, ask user to clarify
|
|
@@ -126,14 +125,12 @@ If the user asks or does not specify a specific checklist, list the checklists a
|
|
|
126
125
|
- All at once (YOLO mode - recommended for checklists, there will be a summary of sections at the end to discuss)
|
|
127
126
|
|
|
128
127
|
2. **Document and Artifact Gathering**
|
|
129
|
-
|
|
130
128
|
- Each checklist will specify its required documents/artifacts at the beginning
|
|
131
129
|
- Follow the checklist's specific instructions for what to gather, generally a file can be resolved in the docs folder, if not or unsure, halt and ask or confirm with the user.
|
|
132
130
|
|
|
133
131
|
3. **Checklist Processing**
|
|
134
132
|
|
|
135
133
|
If in interactive mode:
|
|
136
|
-
|
|
137
134
|
- Work through each section of the checklist one at a time
|
|
138
135
|
- For each section:
|
|
139
136
|
- Review all items in the section following instructions for that section embedded in the checklist
|
|
@@ -142,7 +139,6 @@ If the user asks or does not specify a specific checklist, list the checklists a
|
|
|
142
139
|
- Get user confirmation before proceeding to next section or if any thing major do we need to halt and take corrective action
|
|
143
140
|
|
|
144
141
|
If in YOLO mode:
|
|
145
|
-
|
|
146
142
|
- Process all sections at once
|
|
147
143
|
- Create a comprehensive report of all findings
|
|
148
144
|
- Present the complete analysis to the user
|
|
@@ -150,7 +146,6 @@ If the user asks or does not specify a specific checklist, list the checklists a
|
|
|
150
146
|
4. **Validation Approach**
|
|
151
147
|
|
|
152
148
|
For each checklist item:
|
|
153
|
-
|
|
154
149
|
- Read and understand the requirement
|
|
155
150
|
- Look for evidence in the documentation that satisfies the requirement
|
|
156
151
|
- Consider both explicit mentions and implicit coverage
|
|
@@ -164,7 +159,6 @@ If the user asks or does not specify a specific checklist, list the checklists a
|
|
|
164
159
|
5. **Section Analysis**
|
|
165
160
|
|
|
166
161
|
For each section:
|
|
167
|
-
|
|
168
162
|
- think step by step to calculate pass rate
|
|
169
163
|
- Identify common themes in failed items
|
|
170
164
|
- Provide specific recommendations for improvement
|
|
@@ -174,7 +168,6 @@ If the user asks or does not specify a specific checklist, list the checklists a
|
|
|
174
168
|
6. **Final Report**
|
|
175
169
|
|
|
176
170
|
Prepare a summary that includes:
|
|
177
|
-
|
|
178
171
|
- Overall checklist completion status
|
|
179
172
|
- Pass rates by section
|
|
180
173
|
- List of failed items with context
|
|
@@ -214,7 +207,7 @@ sections:
|
|
|
214
207
|
- id: initial-setup
|
|
215
208
|
instruction: |
|
|
216
209
|
This template creates a comprehensive game architecture document specifically for Phaser 3 + TypeScript projects. This should provide the technical foundation for all game development stories and epics.
|
|
217
|
-
|
|
210
|
+
|
|
218
211
|
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
|
|
219
212
|
|
|
220
213
|
- id: introduction
|
|
@@ -222,7 +215,7 @@ sections:
|
|
|
222
215
|
instruction: Establish the document's purpose and scope for game development
|
|
223
216
|
content: |
|
|
224
217
|
This document outlines the complete technical architecture for {{game_title}}, a 2D game built with Phaser 3 and TypeScript. It serves as the technical foundation for AI-driven game development, ensuring consistency and scalability across all game systems.
|
|
225
|
-
|
|
218
|
+
|
|
226
219
|
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
|
|
227
220
|
sections:
|
|
228
221
|
- id: change-log
|
|
@@ -241,7 +234,7 @@ sections:
|
|
|
241
234
|
title: Architecture Summary
|
|
242
235
|
instruction: |
|
|
243
236
|
Provide a comprehensive overview covering:
|
|
244
|
-
|
|
237
|
+
|
|
245
238
|
- Game engine choice and configuration
|
|
246
239
|
- Project structure and organization
|
|
247
240
|
- Key systems and their interactions
|
|
@@ -329,23 +322,23 @@ sections:
|
|
|
329
322
|
title: Scene Management System
|
|
330
323
|
template: |
|
|
331
324
|
**Purpose:** Handle game flow and scene transitions
|
|
332
|
-
|
|
325
|
+
|
|
333
326
|
**Key Components:**
|
|
334
|
-
|
|
327
|
+
|
|
335
328
|
- Scene loading and unloading
|
|
336
329
|
- Data passing between scenes
|
|
337
330
|
- Transition effects
|
|
338
331
|
- Memory management
|
|
339
|
-
|
|
332
|
+
|
|
340
333
|
**Implementation Requirements:**
|
|
341
|
-
|
|
334
|
+
|
|
342
335
|
- Preload scene for asset loading
|
|
343
336
|
- Menu system with navigation
|
|
344
337
|
- Gameplay scenes with state management
|
|
345
338
|
- Pause/resume functionality
|
|
346
|
-
|
|
339
|
+
|
|
347
340
|
**Files to Create:**
|
|
348
|
-
|
|
341
|
+
|
|
349
342
|
- `src/scenes/BootScene.ts`
|
|
350
343
|
- `src/scenes/PreloadScene.ts`
|
|
351
344
|
- `src/scenes/MenuScene.ts`
|
|
@@ -355,23 +348,23 @@ sections:
|
|
|
355
348
|
title: Game State Management
|
|
356
349
|
template: |
|
|
357
350
|
**Purpose:** Track player progress and game status
|
|
358
|
-
|
|
351
|
+
|
|
359
352
|
**State Categories:**
|
|
360
|
-
|
|
353
|
+
|
|
361
354
|
- Player progress (levels, unlocks)
|
|
362
355
|
- Game settings (audio, controls)
|
|
363
356
|
- Session data (current level, score)
|
|
364
357
|
- Persistent data (achievements, statistics)
|
|
365
|
-
|
|
358
|
+
|
|
366
359
|
**Implementation Requirements:**
|
|
367
|
-
|
|
360
|
+
|
|
368
361
|
- Save/load system with localStorage
|
|
369
362
|
- State validation and error recovery
|
|
370
363
|
- Cross-session data persistence
|
|
371
364
|
- Settings management
|
|
372
|
-
|
|
365
|
+
|
|
373
366
|
**Files to Create:**
|
|
374
|
-
|
|
367
|
+
|
|
375
368
|
- `src/systems/GameState.ts`
|
|
376
369
|
- `src/systems/SaveManager.ts`
|
|
377
370
|
- `src/types/GameData.ts`
|
|
@@ -379,23 +372,23 @@ sections:
|
|
|
379
372
|
title: Asset Management System
|
|
380
373
|
template: |
|
|
381
374
|
**Purpose:** Efficient loading and management of game assets
|
|
382
|
-
|
|
375
|
+
|
|
383
376
|
**Asset Categories:**
|
|
384
|
-
|
|
377
|
+
|
|
385
378
|
- Sprite sheets and animations
|
|
386
379
|
- Audio files and music
|
|
387
380
|
- Level data and configurations
|
|
388
381
|
- UI assets and fonts
|
|
389
|
-
|
|
382
|
+
|
|
390
383
|
**Implementation Requirements:**
|
|
391
|
-
|
|
384
|
+
|
|
392
385
|
- Progressive loading strategy
|
|
393
386
|
- Asset caching and optimization
|
|
394
387
|
- Error handling for failed loads
|
|
395
388
|
- Memory management for large assets
|
|
396
|
-
|
|
389
|
+
|
|
397
390
|
**Files to Create:**
|
|
398
|
-
|
|
391
|
+
|
|
399
392
|
- `src/systems/AssetManager.ts`
|
|
400
393
|
- `src/config/AssetConfig.ts`
|
|
401
394
|
- `src/utils/AssetLoader.ts`
|
|
@@ -403,23 +396,23 @@ sections:
|
|
|
403
396
|
title: Input Management System
|
|
404
397
|
template: |
|
|
405
398
|
**Purpose:** Handle all player input across platforms
|
|
406
|
-
|
|
399
|
+
|
|
407
400
|
**Input Types:**
|
|
408
|
-
|
|
401
|
+
|
|
409
402
|
- Keyboard controls
|
|
410
403
|
- Mouse/pointer interaction
|
|
411
404
|
- Touch gestures (mobile)
|
|
412
405
|
- Gamepad support (optional)
|
|
413
|
-
|
|
406
|
+
|
|
414
407
|
**Implementation Requirements:**
|
|
415
|
-
|
|
408
|
+
|
|
416
409
|
- Input mapping and configuration
|
|
417
410
|
- Touch-friendly mobile controls
|
|
418
411
|
- Input buffering for responsive gameplay
|
|
419
412
|
- Customizable control schemes
|
|
420
|
-
|
|
413
|
+
|
|
421
414
|
**Files to Create:**
|
|
422
|
-
|
|
415
|
+
|
|
423
416
|
- `src/systems/InputManager.ts`
|
|
424
417
|
- `src/utils/TouchControls.ts`
|
|
425
418
|
- `src/types/InputTypes.ts`
|
|
@@ -432,19 +425,19 @@ sections:
|
|
|
432
425
|
title: "{{mechanic_name}} System"
|
|
433
426
|
template: |
|
|
434
427
|
**Purpose:** {{system_purpose}}
|
|
435
|
-
|
|
428
|
+
|
|
436
429
|
**Core Functionality:**
|
|
437
|
-
|
|
430
|
+
|
|
438
431
|
- {{feature_1}}
|
|
439
432
|
- {{feature_2}}
|
|
440
433
|
- {{feature_3}}
|
|
441
|
-
|
|
434
|
+
|
|
442
435
|
**Dependencies:** {{required_systems}}
|
|
443
|
-
|
|
436
|
+
|
|
444
437
|
**Performance Considerations:** {{optimization_notes}}
|
|
445
|
-
|
|
438
|
+
|
|
446
439
|
**Files to Create:**
|
|
447
|
-
|
|
440
|
+
|
|
448
441
|
- `src/systems/{{system_name}}.ts`
|
|
449
442
|
- `src/gameObjects/{{related_object}}.ts`
|
|
450
443
|
- `src/types/{{system_types}}.ts`
|
|
@@ -452,65 +445,65 @@ sections:
|
|
|
452
445
|
title: Physics & Collision System
|
|
453
446
|
template: |
|
|
454
447
|
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
|
|
455
|
-
|
|
448
|
+
|
|
456
449
|
**Collision Categories:**
|
|
457
|
-
|
|
450
|
+
|
|
458
451
|
- Player collision
|
|
459
452
|
- Enemy interactions
|
|
460
453
|
- Environmental objects
|
|
461
454
|
- Collectibles and items
|
|
462
|
-
|
|
455
|
+
|
|
463
456
|
**Implementation Requirements:**
|
|
464
|
-
|
|
457
|
+
|
|
465
458
|
- Optimized collision detection
|
|
466
459
|
- Physics body management
|
|
467
460
|
- Collision callbacks and events
|
|
468
461
|
- Performance monitoring
|
|
469
|
-
|
|
462
|
+
|
|
470
463
|
**Files to Create:**
|
|
471
|
-
|
|
464
|
+
|
|
472
465
|
- `src/systems/PhysicsManager.ts`
|
|
473
466
|
- `src/utils/CollisionGroups.ts`
|
|
474
467
|
- id: audio-system
|
|
475
468
|
title: Audio System
|
|
476
469
|
template: |
|
|
477
470
|
**Audio Requirements:**
|
|
478
|
-
|
|
471
|
+
|
|
479
472
|
- Background music with looping
|
|
480
473
|
- Sound effects for actions
|
|
481
474
|
- Audio settings and volume control
|
|
482
475
|
- Mobile audio optimization
|
|
483
|
-
|
|
476
|
+
|
|
484
477
|
**Implementation Features:**
|
|
485
|
-
|
|
478
|
+
|
|
486
479
|
- Audio sprite management
|
|
487
480
|
- Dynamic music system
|
|
488
481
|
- Spatial audio (if applicable)
|
|
489
482
|
- Audio pooling for performance
|
|
490
|
-
|
|
483
|
+
|
|
491
484
|
**Files to Create:**
|
|
492
|
-
|
|
485
|
+
|
|
493
486
|
- `src/systems/AudioManager.ts`
|
|
494
487
|
- `src/config/AudioConfig.ts`
|
|
495
488
|
- id: ui-system
|
|
496
489
|
title: UI System
|
|
497
490
|
template: |
|
|
498
491
|
**UI Components:**
|
|
499
|
-
|
|
492
|
+
|
|
500
493
|
- HUD elements (score, health, etc.)
|
|
501
494
|
- Menu navigation
|
|
502
495
|
- Modal dialogs
|
|
503
496
|
- Settings screens
|
|
504
|
-
|
|
497
|
+
|
|
505
498
|
**Implementation Requirements:**
|
|
506
|
-
|
|
499
|
+
|
|
507
500
|
- Responsive layout system
|
|
508
501
|
- Touch-friendly interface
|
|
509
502
|
- Keyboard navigation support
|
|
510
503
|
- Animation and transitions
|
|
511
|
-
|
|
504
|
+
|
|
512
505
|
**Files to Create:**
|
|
513
|
-
|
|
506
|
+
|
|
514
507
|
- `src/systems/UIManager.ts`
|
|
515
508
|
- `src/gameObjects/UI/`
|
|
516
509
|
- `src/types/UITypes.ts`
|
|
@@ -1052,7 +1045,7 @@ interface GameState {
|
|
|
1052
1045
|
interface GameSettings {
|
|
1053
1046
|
musicVolume: number;
|
|
1054
1047
|
sfxVolume: number;
|
|
1055
|
-
difficulty:
|
|
1048
|
+
difficulty: 'easy' | 'normal' | 'hard';
|
|
1056
1049
|
controls: ControlScheme;
|
|
1057
1050
|
}
|
|
1058
1051
|
```
|
|
@@ -1093,12 +1086,12 @@ class GameScene extends Phaser.Scene {
|
|
|
1093
1086
|
private inputManager!: InputManager;
|
|
1094
1087
|
|
|
1095
1088
|
constructor() {
|
|
1096
|
-
super({ key:
|
|
1089
|
+
super({ key: 'GameScene' });
|
|
1097
1090
|
}
|
|
1098
1091
|
|
|
1099
1092
|
preload(): void {
|
|
1100
1093
|
// Load only scene-specific assets
|
|
1101
|
-
this.load.image(
|
|
1094
|
+
this.load.image('player', 'assets/player.png');
|
|
1102
1095
|
}
|
|
1103
1096
|
|
|
1104
1097
|
create(data: SceneData): void {
|
|
@@ -1123,7 +1116,7 @@ class GameScene extends Phaser.Scene {
|
|
|
1123
1116
|
this.inputManager.destroy();
|
|
1124
1117
|
|
|
1125
1118
|
// Remove event listeners
|
|
1126
|
-
this.events.off(
|
|
1119
|
+
this.events.off('*');
|
|
1127
1120
|
}
|
|
1128
1121
|
}
|
|
1129
1122
|
```
|
|
@@ -1132,13 +1125,13 @@ class GameScene extends Phaser.Scene {
|
|
|
1132
1125
|
|
|
1133
1126
|
```typescript
|
|
1134
1127
|
// Proper scene transitions with data
|
|
1135
|
-
this.scene.start(
|
|
1128
|
+
this.scene.start('NextScene', {
|
|
1136
1129
|
playerScore: this.playerScore,
|
|
1137
1130
|
currentLevel: this.currentLevel + 1,
|
|
1138
1131
|
});
|
|
1139
1132
|
|
|
1140
1133
|
// Scene overlays for UI
|
|
1141
|
-
this.scene.launch(
|
|
1134
|
+
this.scene.launch('PauseMenuScene');
|
|
1142
1135
|
this.scene.pause();
|
|
1143
1136
|
```
|
|
1144
1137
|
|
|
@@ -1182,7 +1175,7 @@ class Player extends GameEntity {
|
|
|
1182
1175
|
private health!: HealthComponent;
|
|
1183
1176
|
|
|
1184
1177
|
constructor(scene: Phaser.Scene, x: number, y: number) {
|
|
1185
|
-
super(scene, x, y,
|
|
1178
|
+
super(scene, x, y, 'player');
|
|
1186
1179
|
|
|
1187
1180
|
this.movement = this.addComponent(new MovementComponent(this));
|
|
1188
1181
|
this.health = this.addComponent(new HealthComponent(this, 100));
|
|
@@ -1202,7 +1195,7 @@ class GameManager {
|
|
|
1202
1195
|
|
|
1203
1196
|
constructor(scene: Phaser.Scene) {
|
|
1204
1197
|
if (GameManager.instance) {
|
|
1205
|
-
throw new Error(
|
|
1198
|
+
throw new Error('GameManager already exists!');
|
|
1206
1199
|
}
|
|
1207
1200
|
|
|
1208
1201
|
this.scene = scene;
|
|
@@ -1212,7 +1205,7 @@ class GameManager {
|
|
|
1212
1205
|
|
|
1213
1206
|
static getInstance(): GameManager {
|
|
1214
1207
|
if (!GameManager.instance) {
|
|
1215
|
-
throw new Error(
|
|
1208
|
+
throw new Error('GameManager not initialized!');
|
|
1216
1209
|
}
|
|
1217
1210
|
return GameManager.instance;
|
|
1218
1211
|
}
|
|
@@ -1259,7 +1252,7 @@ class BulletPool {
|
|
|
1259
1252
|
}
|
|
1260
1253
|
|
|
1261
1254
|
// Pool exhausted - create new bullet
|
|
1262
|
-
console.warn(
|
|
1255
|
+
console.warn('Bullet pool exhausted, creating new bullet');
|
|
1263
1256
|
return new Bullet(this.scene, 0, 0);
|
|
1264
1257
|
}
|
|
1265
1258
|
|
|
@@ -1359,12 +1352,12 @@ class InputManager {
|
|
|
1359
1352
|
}
|
|
1360
1353
|
|
|
1361
1354
|
private setupKeyboard(): void {
|
|
1362
|
-
this.keys = this.scene.input.keyboard.addKeys(
|
|
1355
|
+
this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
|
|
1363
1356
|
}
|
|
1364
1357
|
|
|
1365
1358
|
private setupTouch(): void {
|
|
1366
|
-
this.scene.input.on(
|
|
1367
|
-
this.scene.input.on(
|
|
1359
|
+
this.scene.input.on('pointerdown', this.handlePointerDown, this);
|
|
1360
|
+
this.scene.input.on('pointerup', this.handlePointerUp, this);
|
|
1368
1361
|
}
|
|
1369
1362
|
|
|
1370
1363
|
update(): void {
|
|
@@ -1391,9 +1384,9 @@ class InputManager {
|
|
|
1391
1384
|
class AssetManager {
|
|
1392
1385
|
loadAssets(): Promise<void> {
|
|
1393
1386
|
return new Promise((resolve, reject) => {
|
|
1394
|
-
this.scene.load.on(
|
|
1395
|
-
this.scene.load.on(
|
|
1396
|
-
this.scene.load.on(
|
|
1387
|
+
this.scene.load.on('filecomplete', this.handleFileComplete, this);
|
|
1388
|
+
this.scene.load.on('loaderror', this.handleLoadError, this);
|
|
1389
|
+
this.scene.load.on('complete', () => resolve());
|
|
1397
1390
|
|
|
1398
1391
|
this.scene.load.start();
|
|
1399
1392
|
});
|
|
@@ -1409,8 +1402,8 @@ class AssetManager {
|
|
|
1409
1402
|
private loadFallbackAsset(key: string): void {
|
|
1410
1403
|
// Load placeholder or default assets
|
|
1411
1404
|
switch (key) {
|
|
1412
|
-
case
|
|
1413
|
-
this.scene.load.image(
|
|
1405
|
+
case 'player':
|
|
1406
|
+
this.scene.load.image('player', 'assets/defaults/default-player.png');
|
|
1414
1407
|
break;
|
|
1415
1408
|
default:
|
|
1416
1409
|
console.warn(`No fallback for asset: ${key}`);
|
|
@@ -1437,11 +1430,11 @@ class GameSystem {
|
|
|
1437
1430
|
|
|
1438
1431
|
private attemptRecovery(context: string): void {
|
|
1439
1432
|
switch (context) {
|
|
1440
|
-
case
|
|
1433
|
+
case 'update':
|
|
1441
1434
|
// Reset system state
|
|
1442
1435
|
this.reset();
|
|
1443
1436
|
break;
|
|
1444
|
-
case
|
|
1437
|
+
case 'render':
|
|
1445
1438
|
// Disable visual effects
|
|
1446
1439
|
this.disableEffects();
|
|
1447
1440
|
break;
|
|
@@ -1461,7 +1454,7 @@ class GameSystem {
|
|
|
1461
1454
|
|
|
1462
1455
|
```typescript
|
|
1463
1456
|
// Example test for game mechanics
|
|
1464
|
-
describe(
|
|
1457
|
+
describe('HealthComponent', () => {
|
|
1465
1458
|
let healthComponent: HealthComponent;
|
|
1466
1459
|
|
|
1467
1460
|
beforeEach(() => {
|
|
@@ -1469,18 +1462,18 @@ describe("HealthComponent", () => {
|
|
|
1469
1462
|
healthComponent = new HealthComponent(mockEntity, 100);
|
|
1470
1463
|
});
|
|
1471
1464
|
|
|
1472
|
-
test(
|
|
1465
|
+
test('should initialize with correct health', () => {
|
|
1473
1466
|
expect(healthComponent.currentHealth).toBe(100);
|
|
1474
1467
|
expect(healthComponent.maxHealth).toBe(100);
|
|
1475
1468
|
});
|
|
1476
1469
|
|
|
1477
|
-
test(
|
|
1470
|
+
test('should handle damage correctly', () => {
|
|
1478
1471
|
healthComponent.takeDamage(25);
|
|
1479
1472
|
expect(healthComponent.currentHealth).toBe(75);
|
|
1480
1473
|
expect(healthComponent.isAlive()).toBe(true);
|
|
1481
1474
|
});
|
|
1482
1475
|
|
|
1483
|
-
test(
|
|
1476
|
+
test('should handle death correctly', () => {
|
|
1484
1477
|
healthComponent.takeDamage(150);
|
|
1485
1478
|
expect(healthComponent.currentHealth).toBe(0);
|
|
1486
1479
|
expect(healthComponent.isAlive()).toBe(false);
|
|
@@ -1493,7 +1486,7 @@ describe("HealthComponent", () => {
|
|
|
1493
1486
|
**Scene Testing:**
|
|
1494
1487
|
|
|
1495
1488
|
```typescript
|
|
1496
|
-
describe(
|
|
1489
|
+
describe('GameScene Integration', () => {
|
|
1497
1490
|
let scene: GameScene;
|
|
1498
1491
|
let mockGame: Phaser.Game;
|
|
1499
1492
|
|
|
@@ -1503,7 +1496,7 @@ describe("GameScene Integration", () => {
|
|
|
1503
1496
|
scene = new GameScene();
|
|
1504
1497
|
});
|
|
1505
1498
|
|
|
1506
|
-
test(
|
|
1499
|
+
test('should initialize all systems', () => {
|
|
1507
1500
|
scene.create({});
|
|
1508
1501
|
|
|
1509
1502
|
expect(scene.gameManager).toBeDefined();
|
|
@@ -1564,25 +1557,21 @@ src/
|
|
|
1564
1557
|
### Story Implementation Process
|
|
1565
1558
|
|
|
1566
1559
|
1. **Read Story Requirements:**
|
|
1567
|
-
|
|
1568
1560
|
- Understand acceptance criteria
|
|
1569
1561
|
- Identify technical requirements
|
|
1570
1562
|
- Review performance constraints
|
|
1571
1563
|
|
|
1572
1564
|
2. **Plan Implementation:**
|
|
1573
|
-
|
|
1574
1565
|
- Identify files to create/modify
|
|
1575
1566
|
- Consider component architecture
|
|
1576
1567
|
- Plan testing approach
|
|
1577
1568
|
|
|
1578
1569
|
3. **Implement Feature:**
|
|
1579
|
-
|
|
1580
1570
|
- Follow TypeScript strict mode
|
|
1581
1571
|
- Use established patterns
|
|
1582
1572
|
- Maintain 60 FPS performance
|
|
1583
1573
|
|
|
1584
1574
|
4. **Test Implementation:**
|
|
1585
|
-
|
|
1586
1575
|
- Write unit tests for game logic
|
|
1587
1576
|
- Test cross-platform functionality
|
|
1588
1577
|
- Validate performance targets
|