@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.
- package/.markdownlint-cli2.yaml +35 -0
- package/.nvmrc +1 -0
- package/.prettierignore +9 -0
- package/LICENSE +26 -0
- package/README.md +119 -0
- package/eslint.config.mjs +152 -0
- package/package.json +91 -0
- package/prettier.config.mjs +32 -0
- package/src/_module-installer/installer.js +110 -0
- package/src/_module-installer/platform-specifics/claude-code.js +23 -0
- package/src/_module-installer/platform-specifics/windsurf.js +18 -0
- package/src/agents/game-architect.agent.yaml +40 -0
- package/src/agents/game-designer.agent.yaml +45 -0
- package/src/agents/game-dev.agent.yaml +49 -0
- package/src/agents/game-qa.agent.yaml +63 -0
- package/src/agents/game-scrum-master.agent.yaml +56 -0
- package/src/agents/game-solo-dev.agent.yaml +49 -0
- package/src/agents/tech-writer/tech-writer.agent.yaml +45 -0
- package/src/gametest/qa-index.csv +18 -0
- package/src/module-help.csv +26 -0
- package/src/module.yaml +65 -0
- package/src/teams/default-party.csv +12 -0
- package/src/teams/team-gamedev.yaml +29 -0
- package/src/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +26 -0
- package/src/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
- package/src/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
- package/src/workflows/2-design/gdd/game-types.csv +25 -0
- package/src/workflows/2-design/gdd/workflow.yaml +101 -0
- package/src/workflows/2-design/narrative/workflow.yaml +77 -0
- package/src/workflows/3-technical/game-architecture/architecture-patterns.yaml +507 -0
- package/src/workflows/3-technical/game-architecture/decision-catalog.yaml +340 -0
- package/src/workflows/3-technical/game-architecture/engine-mcps.yaml +270 -0
- package/src/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
- package/src/workflows/3-technical/game-architecture/workflow.yaml +101 -0
- package/src/workflows/4-production/code-review/instructions.xml +226 -0
- package/src/workflows/4-production/code-review/workflow.yaml +64 -0
- package/src/workflows/4-production/correct-course/workflow.yaml +65 -0
- package/src/workflows/4-production/create-story/instructions.xml +345 -0
- package/src/workflows/4-production/create-story/workflow.yaml +61 -0
- package/src/workflows/4-production/dev-story/instructions.xml +410 -0
- package/src/workflows/4-production/dev-story/workflow.yaml +27 -0
- package/src/workflows/4-production/retrospective/workflow.yaml +58 -0
- package/src/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/workflows/4-production/sprint-planning/workflow.yaml +54 -0
- package/src/workflows/4-production/sprint-status/workflow.yaml +35 -0
- package/src/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/workflows/document-project/workflow.yaml +30 -0
- package/src/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/workflows/gametest/automate/workflow.yaml +50 -0
- package/src/workflows/gametest/e2e-scaffold/workflow.yaml +145 -0
- package/src/workflows/gametest/performance/workflow.yaml +48 -0
- package/src/workflows/gametest/playtest-plan/workflow.yaml +59 -0
- package/src/workflows/gametest/test-design/workflow.yaml +47 -0
- package/src/workflows/gametest/test-framework/workflow.yaml +48 -0
- 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
|