@bmad/bmad-game-dev-studio 0.1.4

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 (57) hide show
  1. package/.markdownlint-cli2.yaml +35 -0
  2. package/.nvmrc +1 -0
  3. package/.prettierignore +9 -0
  4. package/LICENSE +26 -0
  5. package/README.md +119 -0
  6. package/eslint.config.mjs +152 -0
  7. package/package.json +91 -0
  8. package/prettier.config.mjs +32 -0
  9. package/src/_module-installer/installer.js +110 -0
  10. package/src/_module-installer/platform-specifics/claude-code.js +23 -0
  11. package/src/_module-installer/platform-specifics/windsurf.js +18 -0
  12. package/src/agents/game-architect.agent.yaml +40 -0
  13. package/src/agents/game-designer.agent.yaml +45 -0
  14. package/src/agents/game-dev.agent.yaml +49 -0
  15. package/src/agents/game-qa.agent.yaml +63 -0
  16. package/src/agents/game-scrum-master.agent.yaml +56 -0
  17. package/src/agents/game-solo-dev.agent.yaml +49 -0
  18. package/src/agents/tech-writer/tech-writer.agent.yaml +45 -0
  19. package/src/gametest/qa-index.csv +18 -0
  20. package/src/module-help.csv +26 -0
  21. package/src/module.yaml +65 -0
  22. package/src/teams/default-party.csv +12 -0
  23. package/src/teams/team-gamedev.yaml +29 -0
  24. package/src/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +26 -0
  25. package/src/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
  26. package/src/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
  27. package/src/workflows/2-design/gdd/game-types.csv +25 -0
  28. package/src/workflows/2-design/gdd/workflow.yaml +101 -0
  29. package/src/workflows/2-design/narrative/workflow.yaml +77 -0
  30. package/src/workflows/3-technical/game-architecture/architecture-patterns.yaml +507 -0
  31. package/src/workflows/3-technical/game-architecture/decision-catalog.yaml +340 -0
  32. package/src/workflows/3-technical/game-architecture/engine-mcps.yaml +270 -0
  33. package/src/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
  34. package/src/workflows/3-technical/game-architecture/workflow.yaml +101 -0
  35. package/src/workflows/4-production/code-review/instructions.xml +226 -0
  36. package/src/workflows/4-production/code-review/workflow.yaml +64 -0
  37. package/src/workflows/4-production/correct-course/workflow.yaml +65 -0
  38. package/src/workflows/4-production/create-story/instructions.xml +345 -0
  39. package/src/workflows/4-production/create-story/workflow.yaml +61 -0
  40. package/src/workflows/4-production/dev-story/instructions.xml +410 -0
  41. package/src/workflows/4-production/dev-story/workflow.yaml +27 -0
  42. package/src/workflows/4-production/retrospective/workflow.yaml +58 -0
  43. package/src/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  44. package/src/workflows/4-production/sprint-planning/workflow.yaml +54 -0
  45. package/src/workflows/4-production/sprint-status/workflow.yaml +35 -0
  46. package/src/workflows/document-project/documentation-requirements.csv +12 -0
  47. package/src/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  48. package/src/workflows/document-project/workflow.yaml +30 -0
  49. package/src/workflows/document-project/workflows/deep-dive.yaml +31 -0
  50. package/src/workflows/document-project/workflows/full-scan.yaml +31 -0
  51. package/src/workflows/gametest/automate/workflow.yaml +50 -0
  52. package/src/workflows/gametest/e2e-scaffold/workflow.yaml +145 -0
  53. package/src/workflows/gametest/performance/workflow.yaml +48 -0
  54. package/src/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  55. package/src/workflows/gametest/test-design/workflow.yaml +47 -0
  56. package/src/workflows/gametest/test-framework/workflow.yaml +48 -0
  57. package/src/workflows/gametest/test-review/workflow.yaml +48 -0
@@ -0,0 +1,12 @@
1
+ project_type_id,requires_api_scan,requires_data_models,requires_state_management,requires_ui_components,requires_deployment_config,key_file_patterns,critical_directories,integration_scan_patterns,test_file_patterns,config_patterns,auth_security_patterns,schema_migration_patterns,entry_point_patterns,shared_code_patterns,monorepo_workspace_patterns,async_event_patterns,ci_cd_patterns,asset_patterns,hardware_interface_patterns,protocol_schema_patterns,localization_patterns,requires_hardware_docs,requires_asset_inventory
2
+ web,true,true,true,true,true,package.json;tsconfig.json;*.config.js;*.config.ts;vite.config.*;webpack.config.*;next.config.*;nuxt.config.*,src/;app/;pages/;components/;api/;lib/;styles/;public/;static/,*client.ts;*service.ts;*api.ts;fetch*.ts;axios*.ts;*http*.ts,*.test.ts;*.spec.ts;*.test.tsx;*.spec.tsx;**/__tests__/**;**/*.test.*;**/*.spec.*,.env*;config/*;*.config.*;.config/;settings/,*auth*.ts;*session*.ts;middleware/auth*;*.guard.ts;*authenticat*;*permission*;guards/,migrations/**;prisma/**;*.prisma;alembic/**;knex/**;*migration*.sql;*migration*.ts,main.ts;index.ts;app.ts;server.ts;_app.tsx;_app.ts;layout.tsx,shared/**;common/**;utils/**;lib/**;helpers/**;@*/**;packages/**,pnpm-workspace.yaml;lerna.json;nx.json;turbo.json;workspace.json;rush.json,*event*.ts;*queue*.ts;*subscriber*.ts;*consumer*.ts;*producer*.ts;*worker*.ts;jobs/**,.github/workflows/**;.gitlab-ci.yml;Jenkinsfile;.circleci/**;azure-pipelines.yml;bitbucket-pipelines.yml,.drone.yml,public/**;static/**;assets/**;images/**;media/**,N/A,*.proto;*.graphql;graphql/**;schema.graphql;*.avro;openapi.*;swagger.*,i18n/**;locales/**;lang/**;translations/**;messages/**;*.po;*.pot,false,false
3
+ mobile,true,true,true,true,true,package.json;pubspec.yaml;Podfile;build.gradle;app.json;capacitor.config.*;ionic.config.json,src/;app/;screens/;components/;services/;models/;assets/;ios/;android/,*client.ts;*service.ts;*api.ts;fetch*.ts;axios*.ts;*http*.ts,*.test.ts;*.test.tsx;*_test.dart;*.test.dart;**/__tests__/**,.env*;config/*;app.json;capacitor.config.*;google-services.json;GoogleService-Info.plist,*auth*.ts;*session*.ts;*authenticat*;*permission*;*biometric*;secure-store*,migrations/**;realm/**;*.realm;watermelondb/**;sqlite/**,main.ts;index.ts;App.tsx;App.ts;main.dart,shared/**;common/**;utils/**;lib/**;components/shared/**;@*/**,pnpm-workspace.yaml;lerna.json;nx.json;turbo.json,*event*.ts;*notification*.ts;*push*.ts;background-fetch*,fastlane/**;.github/workflows/**;.gitlab-ci.yml;bitbucket-pipelines.yml;appcenter-*,assets/**;Resources/**;res/**;*.xcassets;drawable*/;mipmap*/;images/**,N/A,*.proto;graphql/**;*.graphql,i18n/**;locales/**;translations/**;*.strings;*.xml,false,true
4
+ backend,true,true,false,false,true,package.json;requirements.txt;go.mod;Gemfile;pom.xml;build.gradle;Cargo.toml;*.csproj,src/;api/;services/;models/;routes/;controllers/;middleware/;handlers/;repositories/;domain/,*client.ts;*repository.ts;*service.ts;*connector*.ts;*adapter*.ts,*.test.ts;*.spec.ts;*_test.go;test_*.py;*Test.java;*_test.rs,.env*;config/*;*.config.*;application*.yml;application*.yaml;appsettings*.json;settings.py,*auth*.ts;*session*.ts;*authenticat*;*authorization*;middleware/auth*;guards/;*jwt*;*oauth*,migrations/**;alembic/**;flyway/**;liquibase/**;prisma/**;*.prisma;*migration*.sql;*migration*.ts;db/migrate,main.ts;index.ts;server.ts;app.ts;main.go;main.py;Program.cs;__init__.py,shared/**;common/**;utils/**;lib/**;core/**;@*/**;pkg/**,pnpm-workspace.yaml;lerna.json;nx.json;go.work,*event*.ts;*queue*.ts;*subscriber*.ts;*consumer*.ts;*producer*.ts;*worker*.ts;*handler*.ts;jobs/**;workers/**,.github/workflows/**;.gitlab-ci.yml;Jenkinsfile;.circleci/**;azure-pipelines.yml;.drone.yml,N/A,N/A,*.proto;*.graphql;graphql/**;*.avro;*.thrift;openapi.*;swagger.*;schema/**,N/A,false,false
5
+ cli,false,false,false,false,false,package.json;go.mod;Cargo.toml;setup.py;pyproject.toml;*.gemspec,src/;cmd/;cli/;bin/;lib/;commands/,N/A,*.test.ts;*_test.go;test_*.py;*.spec.ts;*_spec.rb,.env*;config/*;*.config.*;.*.rc;.*rc,N/A,N/A,main.ts;index.ts;cli.ts;main.go;main.py;__main__.py;bin/*,shared/**;common/**;utils/**;lib/**;helpers/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml;goreleaser.yml,N/A,N/A,N/A,N/A,false,false
6
+ library,false,false,false,false,false,package.json;setup.py;Cargo.toml;go.mod;*.gemspec;*.csproj;pom.xml,src/;lib/;dist/;pkg/;build/;target/,N/A,*.test.ts;*_test.go;test_*.py;*.spec.ts;*Test.java;*_test.rs,.*.rc;tsconfig.json;rollup.config.*;vite.config.*;webpack.config.*,N/A,N/A,index.ts;index.js;lib.rs;main.go;__init__.py,src/**;lib/**;core/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml;.circleci/**,N/A,N/A,N/A,N/A,false,false
7
+ desktop,false,false,true,true,true,package.json;Cargo.toml;*.csproj;CMakeLists.txt;tauri.conf.json;electron-builder.yml;wails.json,src/;app/;components/;main/;renderer/;resources/;assets/;build/,*service.ts;ipc*.ts;*bridge*.ts;*native*.ts;invoke*,*.test.ts;*.spec.ts;*_test.rs;*.spec.tsx,.env*;config/*;*.config.*;app.config.*;forge.config.*;builder.config.*,*auth*.ts;*session*.ts;keychain*;secure-storage*,N/A,main.ts;index.ts;main.js;src-tauri/main.rs;electron.ts,shared/**;common/**;utils/**;lib/**;components/shared/**,N/A,*event*.ts;*ipc*.ts;*message*.ts,.github/workflows/**;.gitlab-ci.yml;.circleci/**,resources/**;assets/**;icons/**;static/**;build/resources,N/A,N/A,i18n/**;locales/**;translations/**;lang/**,false,true
8
+ game,false,false,true,false,false,*.unity;*.godot;*.uproject;package.json;project.godot,Assets/;Scenes/;Scripts/;Prefabs/;Resources/;Content/;Source/;src/;scenes/;scripts/,N/A,*Test.cs;*_test.gd;*Test.cpp;*.test.ts,.env*;config/*;*.ini;settings/;GameSettings/,N/A,N/A,main.gd;Main.cs;GameManager.cs;main.cpp;index.ts,shared/**;common/**;utils/**;Core/**;Framework/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml,Assets/**;Scenes/**;Prefabs/**;Materials/**;Textures/**;Audio/**;Models/**;*.fbx;*.blend;*.shader;*.hlsl;*.glsl;Shaders/**;VFX/**,N/A,N/A,Localization/**;Languages/**;i18n/**,false,true
9
+ data,false,true,false,false,true,requirements.txt;pyproject.toml;dbt_project.yml;airflow.cfg;setup.py;Pipfile,dags/;pipelines/;models/;transformations/;notebooks/;sql/;etl/;jobs/,N/A,test_*.py;*_test.py;tests/**,.env*;config/*;profiles.yml;dbt_project.yml;airflow.cfg,N/A,migrations/**;dbt/models/**;*.sql;schemas/**,main.py;__init__.py;pipeline.py;dag.py,shared/**;common/**;utils/**;lib/**;helpers/**,N/A,*event*.py;*consumer*.py;*producer*.py;*worker*.py;jobs/**;tasks/**,.github/workflows/**;.gitlab-ci.yml;airflow/dags/**,N/A,N/A,*.proto;*.avro;schemas/**;*.parquet,N/A,false,false
10
+ extension,true,false,true,true,false,manifest.json;package.json;wxt.config.ts,src/;popup/;content/;background/;assets/;components/,*message.ts;*runtime.ts;*storage.ts;*tabs.ts,*.test.ts;*.spec.ts;*.test.tsx,.env*;wxt.config.*;webpack.config.*;vite.config.*,*auth*.ts;*session*.ts;*permission*,N/A,index.ts;popup.ts;background.ts;content.ts,shared/**;common/**;utils/**;lib/**,N/A,*message*.ts;*event*.ts;chrome.runtime*;browser.runtime*,.github/workflows/**,assets/**;icons/**;images/**;static/**,N/A,N/A,_locales/**;locales/**;i18n/**,false,false
11
+ infra,false,false,false,false,true,*.tf;*.tfvars;pulumi.yaml;cdk.json;*.yml;*.yaml;Dockerfile;docker-compose*.yml,terraform/;modules/;k8s/;charts/;playbooks/;roles/;policies/;stacks/,N/A,*_test.go;test_*.py;*_test.tf;*_spec.rb,.env*;*.tfvars;config/*;vars/;group_vars/;host_vars/,N/A,N/A,main.tf;index.ts;__main__.py;playbook.yml,modules/**;shared/**;common/**;lib/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml;.circleci/**,N/A,N/A,N/A,N/A,false,false
12
+ embedded,false,false,false,false,false,platformio.ini;CMakeLists.txt;*.ino;Makefile;*.ioc;mbed-os.lib,src/;lib/;include/;firmware/;drivers/;hal/;bsp/;components/,N/A,test_*.c;*_test.cpp;*_test.c;tests/**,.env*;config/*;sdkconfig;*.json;settings/,N/A,N/A,main.c;main.cpp;main.ino;app_main.c,lib/**;shared/**;common/**;drivers/**,N/A,N/A,.github/workflows/**;.gitlab-ci.yml,N/A,*.h;*.hpp;drivers/**;hal/**;bsp/**;pinout.*;peripheral*;gpio*;*.fzz;schematics/**,*.proto;mqtt*;coap*;modbus*,N/A,true,false
@@ -0,0 +1,160 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Project Scan Report Schema",
4
+ "description": "State tracking file for document-project workflow resumability",
5
+ "type": "object",
6
+ "required": ["workflow_version", "timestamps", "mode", "scan_level", "completed_steps", "current_step"],
7
+ "properties": {
8
+ "workflow_version": {
9
+ "type": "string",
10
+ "description": "Version of document-project workflow",
11
+ "example": "1.2.0"
12
+ },
13
+ "timestamps": {
14
+ "type": "object",
15
+ "required": ["started", "last_updated"],
16
+ "properties": {
17
+ "started": {
18
+ "type": "string",
19
+ "format": "date-time",
20
+ "description": "ISO 8601 timestamp when workflow started"
21
+ },
22
+ "last_updated": {
23
+ "type": "string",
24
+ "format": "date-time",
25
+ "description": "ISO 8601 timestamp of last state update"
26
+ },
27
+ "completed": {
28
+ "type": "string",
29
+ "format": "date-time",
30
+ "description": "ISO 8601 timestamp when workflow completed (if finished)"
31
+ }
32
+ }
33
+ },
34
+ "mode": {
35
+ "type": "string",
36
+ "enum": ["initial_scan", "full_rescan", "deep_dive"],
37
+ "description": "Workflow execution mode"
38
+ },
39
+ "scan_level": {
40
+ "type": "string",
41
+ "enum": ["quick", "deep", "exhaustive"],
42
+ "description": "Scan depth level (deep_dive mode always uses exhaustive)"
43
+ },
44
+ "project_root": {
45
+ "type": "string",
46
+ "description": "Absolute path to project root directory"
47
+ },
48
+ "output_folder": {
49
+ "type": "string",
50
+ "description": "Absolute path to output folder"
51
+ },
52
+ "completed_steps": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "object",
56
+ "required": ["step", "status"],
57
+ "properties": {
58
+ "step": {
59
+ "type": "string",
60
+ "description": "Step identifier (e.g., 'step_1', 'step_2')"
61
+ },
62
+ "status": {
63
+ "type": "string",
64
+ "enum": ["completed", "partial", "failed"]
65
+ },
66
+ "timestamp": {
67
+ "type": "string",
68
+ "format": "date-time"
69
+ },
70
+ "outputs": {
71
+ "type": "array",
72
+ "items": { "type": "string" },
73
+ "description": "Files written during this step"
74
+ },
75
+ "summary": {
76
+ "type": "string",
77
+ "description": "1-2 sentence summary of step outcome"
78
+ }
79
+ }
80
+ }
81
+ },
82
+ "current_step": {
83
+ "type": "string",
84
+ "description": "Current step identifier for resumption"
85
+ },
86
+ "findings": {
87
+ "type": "object",
88
+ "description": "High-level summaries only (detailed findings purged after writing)",
89
+ "properties": {
90
+ "project_classification": {
91
+ "type": "object",
92
+ "properties": {
93
+ "repository_type": { "type": "string" },
94
+ "parts_count": { "type": "integer" },
95
+ "primary_language": { "type": "string" },
96
+ "architecture_type": { "type": "string" }
97
+ }
98
+ },
99
+ "technology_stack": {
100
+ "type": "array",
101
+ "items": {
102
+ "type": "object",
103
+ "properties": {
104
+ "part_id": { "type": "string" },
105
+ "tech_summary": { "type": "string" }
106
+ }
107
+ }
108
+ },
109
+ "batches_completed": {
110
+ "type": "array",
111
+ "description": "For deep/exhaustive scans: subfolders processed",
112
+ "items": {
113
+ "type": "object",
114
+ "properties": {
115
+ "path": { "type": "string" },
116
+ "files_scanned": { "type": "integer" },
117
+ "summary": { "type": "string" }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ },
123
+ "outputs_generated": {
124
+ "type": "array",
125
+ "items": { "type": "string" },
126
+ "description": "List of all output files generated"
127
+ },
128
+ "resume_instructions": {
129
+ "type": "string",
130
+ "description": "Instructions for resuming from current_step"
131
+ },
132
+ "validation_status": {
133
+ "type": "object",
134
+ "properties": {
135
+ "last_validated": {
136
+ "type": "string",
137
+ "format": "date-time"
138
+ },
139
+ "validation_errors": {
140
+ "type": "array",
141
+ "items": { "type": "string" }
142
+ }
143
+ }
144
+ },
145
+ "deep_dive_targets": {
146
+ "type": "array",
147
+ "description": "Track deep-dive areas analyzed (for deep_dive mode)",
148
+ "items": {
149
+ "type": "object",
150
+ "properties": {
151
+ "target_name": { "type": "string" },
152
+ "target_path": { "type": "string" },
153
+ "files_analyzed": { "type": "integer" },
154
+ "output_file": { "type": "string" },
155
+ "timestamp": { "type": "string", "format": "date-time" }
156
+ }
157
+ }
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,30 @@
1
+ # Document Project Workflow Configuration
2
+ name: "document-project"
3
+ version: "1.2.0"
4
+ description: "Analyzes and documents brownfield projects by scanning codebase, architecture, and patterns to create comprehensive reference documentation for AI-assisted development"
5
+ author: "BMad"
6
+
7
+ # Critical variables
8
+ config_source: "{project-root}/_bmad/gds/config.yaml"
9
+ output_folder: "{config_source}:project_knowledge"
10
+ user_name: "{config_source}:user_name"
11
+ communication_language: "{config_source}:communication_language"
12
+ document_output_language: "{config_source}:document_output_language"
13
+ game_dev_experience: "{config_source}:game_dev_experience"
14
+ date: system-generated
15
+
16
+ # Module path and component files
17
+ installed_path: "{project-root}/_bmad/gds/workflows/document-project"
18
+ instructions: "{installed_path}/instructions.md"
19
+ validation: "{installed_path}/checklist.md"
20
+
21
+ # Required data files - CRITICAL for project type detection and documentation requirements
22
+ documentation_requirements_csv: "{installed_path}/documentation-requirements.csv"
23
+
24
+ # Output configuration - Multiple files generated in output folder
25
+ # Primary output: {output_folder}/project-documentation/
26
+ # Additional files generated by sub-workflows based on project structure
27
+
28
+ standalone: true
29
+
30
+ web_bundle: false
@@ -0,0 +1,31 @@
1
+ # Deep-Dive Documentation Workflow Configuration
2
+ name: "document-project-deep-dive"
3
+ description: "Exhaustive deep-dive documentation of specific project areas"
4
+ author: "BMad"
5
+
6
+ # This is a sub-workflow called by document-project/workflow.yaml
7
+ parent_workflow: "{project-root}/_bmad/gds/workflows/document-project/workflow.yaml"
8
+
9
+ # Critical variables inherited from parent
10
+ config_source: "{project-root}/_bmad/gds/config.yaml"
11
+ output_folder: "{config_source}:output_folder"
12
+ user_name: "{config_source}:user_name"
13
+ date: system-generated
14
+
15
+ # Module path and component files
16
+ installed_path: "{project-root}/_bmad/gds/workflows/document-project/workflows"
17
+ template: false # Action workflow
18
+ instructions: "{installed_path}/deep-dive-instructions.md"
19
+ validation: "{project-root}/_bmad/gds/workflows/document-project/checklist.md"
20
+
21
+ # Templates
22
+ deep_dive_template: "{project-root}/_bmad/gds/workflows/document-project/templates/deep-dive-template.md"
23
+
24
+ # Runtime inputs (passed from parent workflow)
25
+ workflow_mode: "deep_dive"
26
+ scan_level: "exhaustive" # Deep-dive always uses exhaustive scan
27
+ project_root_path: ""
28
+ existing_index_path: "" # Path to existing index.md
29
+
30
+ # Configuration
31
+ autonomous: false # Requires user input to select target area
@@ -0,0 +1,31 @@
1
+ # Full Project Scan Workflow Configuration
2
+ name: "document-project-full-scan"
3
+ description: "Complete project documentation workflow (initial scan or full rescan)"
4
+ author: "BMad"
5
+
6
+ # This is a sub-workflow called by document-project/workflow.yaml
7
+ parent_workflow: "{project-root}/_bmad/gds/workflows/document-project/workflow.yaml"
8
+
9
+ # Critical variables inherited from parent
10
+ config_source: "{project-root}/_bmad/gds/config.yaml"
11
+ output_folder: "{config_source}:output_folder"
12
+ user_name: "{config_source}:user_name"
13
+ date: system-generated
14
+
15
+ # Data files
16
+ documentation_requirements_csv: "{project-root}/_bmad/gds/workflows/document-project/documentation-requirements.csv"
17
+
18
+ # Module path and component files
19
+ installed_path: "{project-root}/_bmad/gds/workflows/document-project/workflows"
20
+ template: false # Action workflow
21
+ instructions: "{installed_path}/full-scan-instructions.md"
22
+ validation: "{project-root}/_bmad/gds/workflows/document-project/checklist.md"
23
+
24
+ # Runtime inputs (passed from parent workflow)
25
+ workflow_mode: "" # "initial_scan" or "full_rescan"
26
+ scan_level: "" # "quick", "deep", or "exhaustive"
27
+ resume_mode: false
28
+ project_root_path: ""
29
+
30
+ # Configuration
31
+ autonomous: false # Requires user input at key decision points
@@ -0,0 +1,50 @@
1
+ # Game QA workflow: automate
2
+ name: gametest-automate
3
+ description: "Generate automated game tests for Unity, Unreal, or Godot based on test design scenarios"
4
+ author: "BMad"
5
+
6
+ # Critical variables from config
7
+ config_source: "{project-root}/_bmad/gds/config.yaml"
8
+ output_folder: "{config_source}:output_folder"
9
+ user_name: "{config_source}:user_name"
10
+ communication_language: "{config_source}:communication_language"
11
+ document_output_language: "{config_source}:document_output_language"
12
+ date: system-generated
13
+
14
+ # Workflow components
15
+ installed_path: "{project-root}/_bmad/gds/workflows/gametest/automate"
16
+ instructions: "{installed_path}/instructions.md"
17
+ validation: "{installed_path}/checklist.md"
18
+
19
+ # Variables and inputs
20
+ variables:
21
+ test_dir: "{project-root}/tests"
22
+ source_dir: "{project-root}/src"
23
+ coverage_target: "critical-paths" # critical-paths, comprehensive, selective
24
+ game_engine: "auto" # auto, unity, unreal, godot
25
+
26
+ # Output configuration
27
+ default_output_file: "{output_folder}/automation-summary.md"
28
+
29
+ # Required tools
30
+ required_tools:
31
+ - read_file
32
+ - write_file
33
+ - create_directory
34
+ - list_files
35
+ - search_repo
36
+ - glob
37
+
38
+ tags:
39
+ - qa
40
+ - automation
41
+ - game-testing
42
+ - regression
43
+ - coverage
44
+
45
+ execution_hints:
46
+ interactive: false
47
+ autonomous: true
48
+ iterative: true
49
+
50
+ web_bundle: false
@@ -0,0 +1,145 @@
1
+ # E2E Test Infrastructure Scaffold Workflow
2
+
3
+ workflow:
4
+ id: e2e-scaffold
5
+ name: E2E Test Infrastructure Scaffold
6
+ version: 1.0
7
+ module: gds
8
+ agent: game-qa
9
+
10
+ description: |
11
+ Scaffold complete E2E testing infrastructure for an existing game project.
12
+ Creates test fixtures, scenario builders, input simulators, and async
13
+ assertion utilities tailored to the project's architecture.
14
+
15
+ triggers:
16
+ - "ES"
17
+ - "e2e-scaffold"
18
+ - "scaffold e2e"
19
+ - "e2e infrastructure"
20
+ - "setup e2e"
21
+
22
+ preflight:
23
+ - "Test framework initialized (run `test-framework` workflow first)"
24
+ - "Game has identifiable state manager"
25
+ - "Main gameplay scene exists"
26
+
27
+ # Paths are relative to this workflow file's location
28
+ knowledge_fragments:
29
+ - "../../../gametest/knowledge/e2e-testing.md"
30
+ - "../../../gametest/knowledge/unity-testing.md"
31
+ - "../../../gametest/knowledge/unreal-testing.md"
32
+ - "../../../gametest/knowledge/godot-testing.md"
33
+
34
+ inputs:
35
+ game_state_class:
36
+ description: "Primary game state manager class name"
37
+ required: true
38
+ example: "GameStateManager"
39
+
40
+ main_scene:
41
+ description: "Scene name where core gameplay occurs"
42
+ required: true
43
+ example: "GameScene"
44
+
45
+ input_system:
46
+ description: "Input system in use"
47
+ required: false
48
+ default: "auto-detect"
49
+ options:
50
+ - "unity-input-system"
51
+ - "unity-legacy"
52
+ - "unreal-enhanced"
53
+ - "godot-input"
54
+ - "custom"
55
+
56
+ # Output paths vary by engine. Generate files matching detected engine.
57
+ outputs:
58
+ unity:
59
+ condition: "engine == 'unity'"
60
+ infrastructure_files:
61
+ description: "Generated E2E infrastructure classes"
62
+ files:
63
+ - "Tests/PlayMode/E2E/Infrastructure/GameE2ETestFixture.cs"
64
+ - "Tests/PlayMode/E2E/Infrastructure/ScenarioBuilder.cs"
65
+ - "Tests/PlayMode/E2E/Infrastructure/InputSimulator.cs"
66
+ - "Tests/PlayMode/E2E/Infrastructure/AsyncAssert.cs"
67
+ assembly_definition:
68
+ description: "E2E test assembly configuration"
69
+ files:
70
+ - "Tests/PlayMode/E2E/E2E.asmdef"
71
+ example_test:
72
+ description: "Working example E2E test"
73
+ files:
74
+ - "Tests/PlayMode/E2E/ExampleE2ETest.cs"
75
+ documentation:
76
+ description: "E2E testing README"
77
+ files:
78
+ - "Tests/PlayMode/E2E/README.md"
79
+
80
+ unreal:
81
+ condition: "engine == 'unreal'"
82
+ infrastructure_files:
83
+ description: "Generated E2E infrastructure classes"
84
+ files:
85
+ - "Source/{ProjectName}/Tests/E2E/GameE2ETestBase.h"
86
+ - "Source/{ProjectName}/Tests/E2E/GameE2ETestBase.cpp"
87
+ - "Source/{ProjectName}/Tests/E2E/ScenarioBuilder.h"
88
+ - "Source/{ProjectName}/Tests/E2E/ScenarioBuilder.cpp"
89
+ - "Source/{ProjectName}/Tests/E2E/InputSimulator.h"
90
+ - "Source/{ProjectName}/Tests/E2E/InputSimulator.cpp"
91
+ - "Source/{ProjectName}/Tests/E2E/AsyncAssert.h"
92
+ build_configuration:
93
+ description: "E2E test build configuration"
94
+ files:
95
+ - "Source/{ProjectName}/Tests/E2E/{ProjectName}E2ETests.Build.cs"
96
+ example_test:
97
+ description: "Working example E2E test"
98
+ files:
99
+ - "Source/{ProjectName}/Tests/E2E/ExampleE2ETest.cpp"
100
+ documentation:
101
+ description: "E2E testing README"
102
+ files:
103
+ - "Source/{ProjectName}/Tests/E2E/README.md"
104
+
105
+ godot:
106
+ condition: "engine == 'godot'"
107
+ infrastructure_files:
108
+ description: "Generated E2E infrastructure classes"
109
+ files:
110
+ - "tests/e2e/infrastructure/game_e2e_test_fixture.gd"
111
+ - "tests/e2e/infrastructure/scenario_builder.gd"
112
+ - "tests/e2e/infrastructure/input_simulator.gd"
113
+ - "tests/e2e/infrastructure/async_assert.gd"
114
+ example_test:
115
+ description: "Working example E2E test"
116
+ files:
117
+ - "tests/e2e/scenarios/example_e2e_test.gd"
118
+ documentation:
119
+ description: "E2E testing README"
120
+ files:
121
+ - "tests/e2e/README.md"
122
+
123
+ steps:
124
+ - id: analyze
125
+ name: "Analyze Game Architecture"
126
+ instruction_file: "instructions.md#step-1-analyze-game-architecture"
127
+
128
+ - id: scaffold
129
+ name: "Generate Infrastructure"
130
+ instruction_file: "instructions.md#step-2-generate-infrastructure"
131
+
132
+ - id: example
133
+ name: "Generate Example Test"
134
+ instruction_file: "instructions.md#step-3-generate-example-test"
135
+
136
+ - id: document
137
+ name: "Generate Documentation"
138
+ instruction_file: "instructions.md#step-4-generate-documentation"
139
+
140
+ - id: complete
141
+ name: "Output Summary"
142
+ instruction_file: "instructions.md#step-5-output-summary"
143
+
144
+ validation:
145
+ checklist: "checklist.md"
@@ -0,0 +1,48 @@
1
+ # Game QA workflow: performance
2
+ name: gametest-performance
3
+ description: "Design performance testing strategy for frame rate, memory, and loading times"
4
+ author: "BMad"
5
+
6
+ # Critical variables from config
7
+ config_source: "{project-root}/_bmad/gds/config.yaml"
8
+ output_folder: "{config_source}:output_folder"
9
+ user_name: "{config_source}:user_name"
10
+ communication_language: "{config_source}:communication_language"
11
+ document_output_language: "{config_source}:document_output_language"
12
+ date: system-generated
13
+
14
+ # Workflow components
15
+ installed_path: "{project-root}/_bmad/gds/workflows/gametest/performance"
16
+ instructions: "{installed_path}/instructions.md"
17
+ validation: "{installed_path}/checklist.md"
18
+ template: "{installed_path}/performance-template.md"
19
+
20
+ # Variables and inputs
21
+ variables:
22
+ target_fps: 60
23
+ target_platform: "auto" # auto, pc, console, mobile
24
+ game_engine: "auto" # auto, unity, unreal, godot
25
+
26
+ # Output configuration
27
+ default_output_file: "{output_folder}/performance-test-plan.md"
28
+
29
+ # Required tools
30
+ required_tools:
31
+ - read_file
32
+ - write_file
33
+ - list_files
34
+ - search_repo
35
+
36
+ tags:
37
+ - qa
38
+ - performance
39
+ - profiling
40
+ - optimization
41
+ - benchmarks
42
+
43
+ execution_hints:
44
+ interactive: false
45
+ autonomous: true
46
+ iterative: true
47
+
48
+ web_bundle: false
@@ -0,0 +1,59 @@
1
+ # Game QA workflow: playtest-plan
2
+ name: gametest-playtest-plan
3
+ description: "Create structured playtesting sessions for gameplay validation and user feedback"
4
+ author: "BMad"
5
+
6
+ # Critical variables from config
7
+ config_source: "{project-root}/_bmad/gds/config.yaml"
8
+ output_folder: "{config_source}:output_folder"
9
+ user_name: "{config_source}:user_name"
10
+ communication_language: "{config_source}:communication_language"
11
+ document_output_language: "{config_source}:document_output_language"
12
+ date: system-generated
13
+
14
+ # Workflow components
15
+ installed_path: "{project-root}/_bmad/gds/workflows/gametest/playtest-plan"
16
+ instructions: "{installed_path}/instructions.md"
17
+ validation: "{installed_path}/checklist.md"
18
+ template: "{installed_path}/playtest-template.md"
19
+
20
+ # Variables and inputs
21
+ variables:
22
+ playtest_type: "internal" # internal, external, focused
23
+ session_duration: 60 # minutes
24
+ participant_count: 5
25
+
26
+ # Smart input file references - for understanding game mechanics to test
27
+ input_file_patterns:
28
+ gdd:
29
+ description: "Game Design Document for mechanics to validate"
30
+ whole: "{output_folder}/*gdd*.md"
31
+ sharded: "{output_folder}/*gdd*/*.md"
32
+ load_strategy: "FULL_LOAD"
33
+ game_brief:
34
+ description: "Game Brief for understanding core pillars"
35
+ whole: "{output_folder}/*brief*.md"
36
+ load_strategy: "FULL_LOAD"
37
+
38
+ # Output configuration
39
+ default_output_file: "{output_folder}/playtest-plan.md"
40
+
41
+ # Required tools
42
+ required_tools:
43
+ - read_file
44
+ - write_file
45
+ - list_files
46
+
47
+ tags:
48
+ - qa
49
+ - playtesting
50
+ - user-research
51
+ - design-validation
52
+ - feedback
53
+
54
+ execution_hints:
55
+ interactive: true
56
+ autonomous: false
57
+ iterative: true
58
+
59
+ web_bundle: false
@@ -0,0 +1,47 @@
1
+ # Game QA workflow: test-design
2
+ name: gametest-test-design
3
+ description: "Create comprehensive game test scenarios covering gameplay, progression, and quality requirements"
4
+ author: "BMad"
5
+
6
+ # Critical variables from config
7
+ config_source: "{project-root}/_bmad/gds/config.yaml"
8
+ output_folder: "{config_source}:output_folder"
9
+ user_name: "{config_source}:user_name"
10
+ communication_language: "{config_source}:communication_language"
11
+ document_output_language: "{config_source}:document_output_language"
12
+ date: system-generated
13
+
14
+ # Workflow components
15
+ installed_path: "{project-root}/_bmad/gds/workflows/gametest/test-design"
16
+ instructions: "{installed_path}/instructions.md"
17
+ validation: "{installed_path}/checklist.md"
18
+ template: "{installed_path}/test-design-template.md"
19
+
20
+ # Variables and inputs
21
+ variables:
22
+ design_level: "full" # full, targeted, minimal
23
+ focus_area: "auto" # auto, gameplay, progression, multiplayer, performance
24
+
25
+ # Output configuration
26
+ default_output_file: "{output_folder}/game-test-design.md"
27
+
28
+ # Required tools
29
+ required_tools:
30
+ - read_file
31
+ - write_file
32
+ - list_files
33
+ - search_repo
34
+
35
+ tags:
36
+ - qa
37
+ - planning
38
+ - game-testing
39
+ - risk-assessment
40
+ - coverage
41
+
42
+ execution_hints:
43
+ interactive: false
44
+ autonomous: true
45
+ iterative: true
46
+
47
+ web_bundle: false