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
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import js from '@eslint/js';
|
|
2
|
+
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
|
3
|
+
import nodePlugin from 'eslint-plugin-n';
|
|
4
|
+
import unicorn from 'eslint-plugin-unicorn';
|
|
5
|
+
import yml from 'eslint-plugin-yml';
|
|
6
|
+
|
|
7
|
+
export default [
|
|
8
|
+
// Global ignores for files/folders that should not be linted
|
|
9
|
+
{
|
|
10
|
+
ignores: ['dist/**', 'coverage/**', '**/*.min.js'],
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
// Base JavaScript recommended rules
|
|
14
|
+
js.configs.recommended,
|
|
15
|
+
|
|
16
|
+
// Node.js rules
|
|
17
|
+
...nodePlugin.configs['flat/mixed-esm-and-cjs'],
|
|
18
|
+
|
|
19
|
+
// Unicorn rules (modern best practices)
|
|
20
|
+
unicorn.configs.recommended,
|
|
21
|
+
|
|
22
|
+
// YAML linting
|
|
23
|
+
...yml.configs['flat/recommended'],
|
|
24
|
+
|
|
25
|
+
// Place Prettier last to disable conflicting stylistic rules
|
|
26
|
+
eslintConfigPrettier,
|
|
27
|
+
|
|
28
|
+
// Project-specific tweaks
|
|
29
|
+
{
|
|
30
|
+
rules: {
|
|
31
|
+
// Allow console for CLI tools in this repo
|
|
32
|
+
'no-console': 'off',
|
|
33
|
+
// Enforce .yaml file extension for consistency
|
|
34
|
+
'yml/file-extension': [
|
|
35
|
+
'error',
|
|
36
|
+
{
|
|
37
|
+
extension: 'yaml',
|
|
38
|
+
caseSensitive: true,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
// Prefer double quotes in YAML wherever quoting is used, but allow the other to avoid escapes
|
|
42
|
+
'yml/quotes': [
|
|
43
|
+
'error',
|
|
44
|
+
{
|
|
45
|
+
prefer: 'double',
|
|
46
|
+
avoidEscape: true,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
// Relax some Unicorn rules that are too opinionated for this codebase
|
|
50
|
+
'unicorn/prevent-abbreviations': 'off',
|
|
51
|
+
'unicorn/no-null': 'off',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
// CLI/CommonJS scripts under tools/**
|
|
56
|
+
{
|
|
57
|
+
files: ['tools/**/*.js'],
|
|
58
|
+
rules: {
|
|
59
|
+
// Allow CommonJS patterns for Node CLI scripts
|
|
60
|
+
'unicorn/prefer-module': 'off',
|
|
61
|
+
'unicorn/import-style': 'off',
|
|
62
|
+
'unicorn/no-process-exit': 'off',
|
|
63
|
+
'n/no-process-exit': 'off',
|
|
64
|
+
'unicorn/no-await-expression-member': 'off',
|
|
65
|
+
'unicorn/prefer-top-level-await': 'off',
|
|
66
|
+
// Avoid failing CI on incidental unused vars in internal scripts
|
|
67
|
+
'no-unused-vars': 'off',
|
|
68
|
+
// Reduce style-only churn in internal tools
|
|
69
|
+
'unicorn/prefer-ternary': 'off',
|
|
70
|
+
'unicorn/filename-case': 'off',
|
|
71
|
+
'unicorn/no-array-reduce': 'off',
|
|
72
|
+
'unicorn/no-array-callback-reference': 'off',
|
|
73
|
+
'unicorn/consistent-function-scoping': 'off',
|
|
74
|
+
'n/no-extraneous-require': 'off',
|
|
75
|
+
'n/no-extraneous-import': 'off',
|
|
76
|
+
'n/no-unpublished-require': 'off',
|
|
77
|
+
'n/no-unpublished-import': 'off',
|
|
78
|
+
// Some scripts intentionally use globals provided at runtime
|
|
79
|
+
'no-undef': 'off',
|
|
80
|
+
// Additional relaxed rules for legacy/internal scripts
|
|
81
|
+
'no-useless-catch': 'off',
|
|
82
|
+
'unicorn/prefer-number-properties': 'off',
|
|
83
|
+
'no-unreachable': 'off',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
// ESLint config file should not be checked for publish-related Node rules
|
|
88
|
+
{
|
|
89
|
+
files: ['eslint.config.mjs'],
|
|
90
|
+
rules: {
|
|
91
|
+
'n/no-unpublished-import': 'off',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
// YAML workflow templates allow empty mapping values intentionally
|
|
96
|
+
{
|
|
97
|
+
files: ['bmad-core/workflows/**/*.yaml'],
|
|
98
|
+
rules: {
|
|
99
|
+
'yml/no-empty-mapping-value': 'off',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
// GitHub workflow files in this repo may use empty mapping values
|
|
104
|
+
{
|
|
105
|
+
files: ['.github/workflows/**/*.yaml'],
|
|
106
|
+
rules: {
|
|
107
|
+
'yml/no-empty-mapping-value': 'off',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
// Other GitHub YAML files may intentionally use empty values and reserved filenames
|
|
112
|
+
{
|
|
113
|
+
files: ['.github/**/*.yaml'],
|
|
114
|
+
rules: {
|
|
115
|
+
'yml/no-empty-mapping-value': 'off',
|
|
116
|
+
'unicorn/filename-case': 'off',
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
];
|
|
@@ -60,10 +60,10 @@ commands:
|
|
|
60
60
|
task-execution:
|
|
61
61
|
flow: Read story → Implement game feature → Write tests → Pass tests → Update [x] → Next task
|
|
62
62
|
updates-ONLY:
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
63
|
+
- 'Checkboxes: [ ] not started | [-] in progress | [x] complete'
|
|
64
|
+
- 'Debug Log: | Task | File | Change | Reverted? |'
|
|
65
|
+
- 'Completion Notes: Deviations only, <50 words'
|
|
66
|
+
- 'Change Log: Requirement changes only'
|
|
67
67
|
blocking: Unapproved deps | Ambiguous after story check | 3 failures | Missing game config
|
|
68
68
|
done: Game feature works + Tests pass + 60 FPS + No lint errors + Follows Phaser 3 best practices
|
|
69
69
|
dependencies:
|
|
@@ -27,7 +27,7 @@ activation-instructions:
|
|
|
27
27
|
- When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
|
|
28
28
|
- STAY IN CHARACTER!
|
|
29
29
|
- CRITICAL: On activation, ONLY greet user and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
|
|
30
|
-
-
|
|
30
|
+
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Game Developer Agent'
|
|
31
31
|
agent:
|
|
32
32
|
name: Jordan
|
|
33
33
|
id: game-sm
|
|
@@ -73,7 +73,7 @@ interface GameState {
|
|
|
73
73
|
interface GameSettings {
|
|
74
74
|
musicVolume: number;
|
|
75
75
|
sfxVolume: number;
|
|
76
|
-
difficulty:
|
|
76
|
+
difficulty: 'easy' | 'normal' | 'hard';
|
|
77
77
|
controls: ControlScheme;
|
|
78
78
|
}
|
|
79
79
|
```
|
|
@@ -114,12 +114,12 @@ class GameScene extends Phaser.Scene {
|
|
|
114
114
|
private inputManager!: InputManager;
|
|
115
115
|
|
|
116
116
|
constructor() {
|
|
117
|
-
super({ key:
|
|
117
|
+
super({ key: 'GameScene' });
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
preload(): void {
|
|
121
121
|
// Load only scene-specific assets
|
|
122
|
-
this.load.image(
|
|
122
|
+
this.load.image('player', 'assets/player.png');
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
create(data: SceneData): void {
|
|
@@ -144,7 +144,7 @@ class GameScene extends Phaser.Scene {
|
|
|
144
144
|
this.inputManager.destroy();
|
|
145
145
|
|
|
146
146
|
// Remove event listeners
|
|
147
|
-
this.events.off(
|
|
147
|
+
this.events.off('*');
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
```
|
|
@@ -153,13 +153,13 @@ class GameScene extends Phaser.Scene {
|
|
|
153
153
|
|
|
154
154
|
```typescript
|
|
155
155
|
// Proper scene transitions with data
|
|
156
|
-
this.scene.start(
|
|
156
|
+
this.scene.start('NextScene', {
|
|
157
157
|
playerScore: this.playerScore,
|
|
158
158
|
currentLevel: this.currentLevel + 1,
|
|
159
159
|
});
|
|
160
160
|
|
|
161
161
|
// Scene overlays for UI
|
|
162
|
-
this.scene.launch(
|
|
162
|
+
this.scene.launch('PauseMenuScene');
|
|
163
163
|
this.scene.pause();
|
|
164
164
|
```
|
|
165
165
|
|
|
@@ -203,7 +203,7 @@ class Player extends GameEntity {
|
|
|
203
203
|
private health!: HealthComponent;
|
|
204
204
|
|
|
205
205
|
constructor(scene: Phaser.Scene, x: number, y: number) {
|
|
206
|
-
super(scene, x, y,
|
|
206
|
+
super(scene, x, y, 'player');
|
|
207
207
|
|
|
208
208
|
this.movement = this.addComponent(new MovementComponent(this));
|
|
209
209
|
this.health = this.addComponent(new HealthComponent(this, 100));
|
|
@@ -223,7 +223,7 @@ class GameManager {
|
|
|
223
223
|
|
|
224
224
|
constructor(scene: Phaser.Scene) {
|
|
225
225
|
if (GameManager.instance) {
|
|
226
|
-
throw new Error(
|
|
226
|
+
throw new Error('GameManager already exists!');
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
this.scene = scene;
|
|
@@ -233,7 +233,7 @@ class GameManager {
|
|
|
233
233
|
|
|
234
234
|
static getInstance(): GameManager {
|
|
235
235
|
if (!GameManager.instance) {
|
|
236
|
-
throw new Error(
|
|
236
|
+
throw new Error('GameManager not initialized!');
|
|
237
237
|
}
|
|
238
238
|
return GameManager.instance;
|
|
239
239
|
}
|
|
@@ -280,7 +280,7 @@ class BulletPool {
|
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
// Pool exhausted - create new bullet
|
|
283
|
-
console.warn(
|
|
283
|
+
console.warn('Bullet pool exhausted, creating new bullet');
|
|
284
284
|
return new Bullet(this.scene, 0, 0);
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -380,14 +380,12 @@ class InputManager {
|
|
|
380
380
|
}
|
|
381
381
|
|
|
382
382
|
private setupKeyboard(): void {
|
|
383
|
-
this.keys = this.scene.input.keyboard.addKeys(
|
|
384
|
-
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
|
|
385
|
-
);
|
|
383
|
+
this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
|
|
386
384
|
}
|
|
387
385
|
|
|
388
386
|
private setupTouch(): void {
|
|
389
|
-
this.scene.input.on(
|
|
390
|
-
this.scene.input.on(
|
|
387
|
+
this.scene.input.on('pointerdown', this.handlePointerDown, this);
|
|
388
|
+
this.scene.input.on('pointerup', this.handlePointerUp, this);
|
|
391
389
|
}
|
|
392
390
|
|
|
393
391
|
update(): void {
|
|
@@ -414,9 +412,9 @@ class InputManager {
|
|
|
414
412
|
class AssetManager {
|
|
415
413
|
loadAssets(): Promise<void> {
|
|
416
414
|
return new Promise((resolve, reject) => {
|
|
417
|
-
this.scene.load.on(
|
|
418
|
-
this.scene.load.on(
|
|
419
|
-
this.scene.load.on(
|
|
415
|
+
this.scene.load.on('filecomplete', this.handleFileComplete, this);
|
|
416
|
+
this.scene.load.on('loaderror', this.handleLoadError, this);
|
|
417
|
+
this.scene.load.on('complete', () => resolve());
|
|
420
418
|
|
|
421
419
|
this.scene.load.start();
|
|
422
420
|
});
|
|
@@ -432,8 +430,8 @@ class AssetManager {
|
|
|
432
430
|
private loadFallbackAsset(key: string): void {
|
|
433
431
|
// Load placeholder or default assets
|
|
434
432
|
switch (key) {
|
|
435
|
-
case
|
|
436
|
-
this.scene.load.image(
|
|
433
|
+
case 'player':
|
|
434
|
+
this.scene.load.image('player', 'assets/defaults/default-player.png');
|
|
437
435
|
break;
|
|
438
436
|
default:
|
|
439
437
|
console.warn(`No fallback for asset: ${key}`);
|
|
@@ -460,11 +458,11 @@ class GameSystem {
|
|
|
460
458
|
|
|
461
459
|
private attemptRecovery(context: string): void {
|
|
462
460
|
switch (context) {
|
|
463
|
-
case
|
|
461
|
+
case 'update':
|
|
464
462
|
// Reset system state
|
|
465
463
|
this.reset();
|
|
466
464
|
break;
|
|
467
|
-
case
|
|
465
|
+
case 'render':
|
|
468
466
|
// Disable visual effects
|
|
469
467
|
this.disableEffects();
|
|
470
468
|
break;
|
|
@@ -484,7 +482,7 @@ class GameSystem {
|
|
|
484
482
|
|
|
485
483
|
```typescript
|
|
486
484
|
// Example test for game mechanics
|
|
487
|
-
describe(
|
|
485
|
+
describe('HealthComponent', () => {
|
|
488
486
|
let healthComponent: HealthComponent;
|
|
489
487
|
|
|
490
488
|
beforeEach(() => {
|
|
@@ -492,18 +490,18 @@ describe("HealthComponent", () => {
|
|
|
492
490
|
healthComponent = new HealthComponent(mockEntity, 100);
|
|
493
491
|
});
|
|
494
492
|
|
|
495
|
-
test(
|
|
493
|
+
test('should initialize with correct health', () => {
|
|
496
494
|
expect(healthComponent.currentHealth).toBe(100);
|
|
497
495
|
expect(healthComponent.maxHealth).toBe(100);
|
|
498
496
|
});
|
|
499
497
|
|
|
500
|
-
test(
|
|
498
|
+
test('should handle damage correctly', () => {
|
|
501
499
|
healthComponent.takeDamage(25);
|
|
502
500
|
expect(healthComponent.currentHealth).toBe(75);
|
|
503
501
|
expect(healthComponent.isAlive()).toBe(true);
|
|
504
502
|
});
|
|
505
503
|
|
|
506
|
-
test(
|
|
504
|
+
test('should handle death correctly', () => {
|
|
507
505
|
healthComponent.takeDamage(150);
|
|
508
506
|
expect(healthComponent.currentHealth).toBe(0);
|
|
509
507
|
expect(healthComponent.isAlive()).toBe(false);
|
|
@@ -516,7 +514,7 @@ describe("HealthComponent", () => {
|
|
|
516
514
|
**Scene Testing:**
|
|
517
515
|
|
|
518
516
|
```typescript
|
|
519
|
-
describe(
|
|
517
|
+
describe('GameScene Integration', () => {
|
|
520
518
|
let scene: GameScene;
|
|
521
519
|
let mockGame: Phaser.Game;
|
|
522
520
|
|
|
@@ -526,7 +524,7 @@ describe("GameScene Integration", () => {
|
|
|
526
524
|
scene = new GameScene();
|
|
527
525
|
});
|
|
528
526
|
|
|
529
|
-
test(
|
|
527
|
+
test('should initialize all systems', () => {
|
|
530
528
|
scene.create({});
|
|
531
529
|
|
|
532
530
|
expect(scene.gameManager).toBeDefined();
|
|
@@ -14,7 +14,7 @@ sections:
|
|
|
14
14
|
- id: initial-setup
|
|
15
15
|
instruction: |
|
|
16
16
|
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.
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
|
|
19
19
|
|
|
20
20
|
- id: introduction
|
|
@@ -22,7 +22,7 @@ sections:
|
|
|
22
22
|
instruction: Establish the document's purpose and scope for game development
|
|
23
23
|
content: |
|
|
24
24
|
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.
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
|
|
27
27
|
sections:
|
|
28
28
|
- id: change-log
|
|
@@ -41,7 +41,7 @@ sections:
|
|
|
41
41
|
title: Architecture Summary
|
|
42
42
|
instruction: |
|
|
43
43
|
Provide a comprehensive overview covering:
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
- Game engine choice and configuration
|
|
46
46
|
- Project structure and organization
|
|
47
47
|
- Key systems and their interactions
|
|
@@ -129,23 +129,23 @@ sections:
|
|
|
129
129
|
title: Scene Management System
|
|
130
130
|
template: |
|
|
131
131
|
**Purpose:** Handle game flow and scene transitions
|
|
132
|
-
|
|
132
|
+
|
|
133
133
|
**Key Components:**
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
- Scene loading and unloading
|
|
136
136
|
- Data passing between scenes
|
|
137
137
|
- Transition effects
|
|
138
138
|
- Memory management
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
**Implementation Requirements:**
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
- Preload scene for asset loading
|
|
143
143
|
- Menu system with navigation
|
|
144
144
|
- Gameplay scenes with state management
|
|
145
145
|
- Pause/resume functionality
|
|
146
|
-
|
|
146
|
+
|
|
147
147
|
**Files to Create:**
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
- `src/scenes/BootScene.ts`
|
|
150
150
|
- `src/scenes/PreloadScene.ts`
|
|
151
151
|
- `src/scenes/MenuScene.ts`
|
|
@@ -155,23 +155,23 @@ sections:
|
|
|
155
155
|
title: Game State Management
|
|
156
156
|
template: |
|
|
157
157
|
**Purpose:** Track player progress and game status
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
**State Categories:**
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
- Player progress (levels, unlocks)
|
|
162
162
|
- Game settings (audio, controls)
|
|
163
163
|
- Session data (current level, score)
|
|
164
164
|
- Persistent data (achievements, statistics)
|
|
165
|
-
|
|
165
|
+
|
|
166
166
|
**Implementation Requirements:**
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
- Save/load system with localStorage
|
|
169
169
|
- State validation and error recovery
|
|
170
170
|
- Cross-session data persistence
|
|
171
171
|
- Settings management
|
|
172
|
-
|
|
172
|
+
|
|
173
173
|
**Files to Create:**
|
|
174
|
-
|
|
174
|
+
|
|
175
175
|
- `src/systems/GameState.ts`
|
|
176
176
|
- `src/systems/SaveManager.ts`
|
|
177
177
|
- `src/types/GameData.ts`
|
|
@@ -179,23 +179,23 @@ sections:
|
|
|
179
179
|
title: Asset Management System
|
|
180
180
|
template: |
|
|
181
181
|
**Purpose:** Efficient loading and management of game assets
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
**Asset Categories:**
|
|
184
|
-
|
|
184
|
+
|
|
185
185
|
- Sprite sheets and animations
|
|
186
186
|
- Audio files and music
|
|
187
187
|
- Level data and configurations
|
|
188
188
|
- UI assets and fonts
|
|
189
|
-
|
|
189
|
+
|
|
190
190
|
**Implementation Requirements:**
|
|
191
|
-
|
|
191
|
+
|
|
192
192
|
- Progressive loading strategy
|
|
193
193
|
- Asset caching and optimization
|
|
194
194
|
- Error handling for failed loads
|
|
195
195
|
- Memory management for large assets
|
|
196
|
-
|
|
196
|
+
|
|
197
197
|
**Files to Create:**
|
|
198
|
-
|
|
198
|
+
|
|
199
199
|
- `src/systems/AssetManager.ts`
|
|
200
200
|
- `src/config/AssetConfig.ts`
|
|
201
201
|
- `src/utils/AssetLoader.ts`
|
|
@@ -203,23 +203,23 @@ sections:
|
|
|
203
203
|
title: Input Management System
|
|
204
204
|
template: |
|
|
205
205
|
**Purpose:** Handle all player input across platforms
|
|
206
|
-
|
|
206
|
+
|
|
207
207
|
**Input Types:**
|
|
208
|
-
|
|
208
|
+
|
|
209
209
|
- Keyboard controls
|
|
210
210
|
- Mouse/pointer interaction
|
|
211
211
|
- Touch gestures (mobile)
|
|
212
212
|
- Gamepad support (optional)
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
**Implementation Requirements:**
|
|
215
|
-
|
|
215
|
+
|
|
216
216
|
- Input mapping and configuration
|
|
217
217
|
- Touch-friendly mobile controls
|
|
218
218
|
- Input buffering for responsive gameplay
|
|
219
219
|
- Customizable control schemes
|
|
220
|
-
|
|
220
|
+
|
|
221
221
|
**Files to Create:**
|
|
222
|
-
|
|
222
|
+
|
|
223
223
|
- `src/systems/InputManager.ts`
|
|
224
224
|
- `src/utils/TouchControls.ts`
|
|
225
225
|
- `src/types/InputTypes.ts`
|
|
@@ -232,19 +232,19 @@ sections:
|
|
|
232
232
|
title: "{{mechanic_name}} System"
|
|
233
233
|
template: |
|
|
234
234
|
**Purpose:** {{system_purpose}}
|
|
235
|
-
|
|
235
|
+
|
|
236
236
|
**Core Functionality:**
|
|
237
|
-
|
|
237
|
+
|
|
238
238
|
- {{feature_1}}
|
|
239
239
|
- {{feature_2}}
|
|
240
240
|
- {{feature_3}}
|
|
241
|
-
|
|
241
|
+
|
|
242
242
|
**Dependencies:** {{required_systems}}
|
|
243
|
-
|
|
243
|
+
|
|
244
244
|
**Performance Considerations:** {{optimization_notes}}
|
|
245
|
-
|
|
245
|
+
|
|
246
246
|
**Files to Create:**
|
|
247
|
-
|
|
247
|
+
|
|
248
248
|
- `src/systems/{{system_name}}.ts`
|
|
249
249
|
- `src/gameObjects/{{related_object}}.ts`
|
|
250
250
|
- `src/types/{{system_types}}.ts`
|
|
@@ -252,65 +252,65 @@ sections:
|
|
|
252
252
|
title: Physics & Collision System
|
|
253
253
|
template: |
|
|
254
254
|
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
|
|
255
|
-
|
|
255
|
+
|
|
256
256
|
**Collision Categories:**
|
|
257
|
-
|
|
257
|
+
|
|
258
258
|
- Player collision
|
|
259
259
|
- Enemy interactions
|
|
260
260
|
- Environmental objects
|
|
261
261
|
- Collectibles and items
|
|
262
|
-
|
|
262
|
+
|
|
263
263
|
**Implementation Requirements:**
|
|
264
|
-
|
|
264
|
+
|
|
265
265
|
- Optimized collision detection
|
|
266
266
|
- Physics body management
|
|
267
267
|
- Collision callbacks and events
|
|
268
268
|
- Performance monitoring
|
|
269
|
-
|
|
269
|
+
|
|
270
270
|
**Files to Create:**
|
|
271
|
-
|
|
271
|
+
|
|
272
272
|
- `src/systems/PhysicsManager.ts`
|
|
273
273
|
- `src/utils/CollisionGroups.ts`
|
|
274
274
|
- id: audio-system
|
|
275
275
|
title: Audio System
|
|
276
276
|
template: |
|
|
277
277
|
**Audio Requirements:**
|
|
278
|
-
|
|
278
|
+
|
|
279
279
|
- Background music with looping
|
|
280
280
|
- Sound effects for actions
|
|
281
281
|
- Audio settings and volume control
|
|
282
282
|
- Mobile audio optimization
|
|
283
|
-
|
|
283
|
+
|
|
284
284
|
**Implementation Features:**
|
|
285
|
-
|
|
285
|
+
|
|
286
286
|
- Audio sprite management
|
|
287
287
|
- Dynamic music system
|
|
288
288
|
- Spatial audio (if applicable)
|
|
289
289
|
- Audio pooling for performance
|
|
290
|
-
|
|
290
|
+
|
|
291
291
|
**Files to Create:**
|
|
292
|
-
|
|
292
|
+
|
|
293
293
|
- `src/systems/AudioManager.ts`
|
|
294
294
|
- `src/config/AudioConfig.ts`
|
|
295
295
|
- id: ui-system
|
|
296
296
|
title: UI System
|
|
297
297
|
template: |
|
|
298
298
|
**UI Components:**
|
|
299
|
-
|
|
299
|
+
|
|
300
300
|
- HUD elements (score, health, etc.)
|
|
301
301
|
- Menu navigation
|
|
302
302
|
- Modal dialogs
|
|
303
303
|
- Settings screens
|
|
304
|
-
|
|
304
|
+
|
|
305
305
|
**Implementation Requirements:**
|
|
306
|
-
|
|
306
|
+
|
|
307
307
|
- Responsive layout system
|
|
308
308
|
- Touch-friendly interface
|
|
309
309
|
- Keyboard navigation support
|
|
310
310
|
- Animation and transitions
|
|
311
|
-
|
|
311
|
+
|
|
312
312
|
**Files to Create:**
|
|
313
|
-
|
|
313
|
+
|
|
314
314
|
- `src/systems/UIManager.ts`
|
|
315
315
|
- `src/gameObjects/UI/`
|
|
316
316
|
- `src/types/UITypes.ts`
|
|
@@ -610,4 +610,4 @@ sections:
|
|
|
610
610
|
- 90%+ test coverage on game logic
|
|
611
611
|
- Zero TypeScript errors in strict mode
|
|
612
612
|
- Consistent adherence to coding standards
|
|
613
|
-
- Comprehensive documentation coverage
|
|
613
|
+
- Comprehensive documentation coverage
|