* feat(bmgd): comprehensive BMGD module upgrade ## New Agents - **Game QA (GLaDOS)**: Game QA Architect + Test Automation Specialist - Engine-specific testing (Unity, Unreal, Godot) - Knowledge base with 15+ testing topics - Workflows: test-framework, test-design, automate, playtest-plan, performance-test, test-review - **Game Solo Dev (Indie)**: Elite Indie Game Developer + Quick Flow Specialist - Rapid prototyping and iteration focused - Quick-flow workflows for solo/small team development ## Production Workflow Alignment Aligned BMGD 4-production workflows with BMM 4-implementation: ### Removed Obsolete Workflows - story-done (merged into dev-story) - story-ready (merged into create-story) - story-context (merged into create-story) - epic-tech-context (no longer separate workflow) ### Added Workflows - sprint-status: View sprint progress, surface risks, recommend next action ### Updated Workflows (now standalone, copied from BMM) - code-review: Adversarial review with instructions.xml - correct-course: Sprint change management - create-story: Direct ready-for-dev marking - dev-story: TDD implementation with instructions.xml - retrospective: Epic completion review - sprint-planning: Sprint status generation ## Game Testing Architecture (gametest/) New knowledge base for game-specific testing: - qa-index.csv: Knowledge fragment index - 15 knowledge files covering: - Engine-specific: Unity, Unreal, Godot testing - Game-specific: Playtesting, balance, save systems, multiplayer - Platform: Certification (TRC/XR), localization, input - General QA: Automation, performance, regression, smoke tests ## Quick-Flow Workflows (bmgd-quick-flow/) - quick-prototype: Rapid mechanic testing - quick-dev: Flexible feature implementation ## Documentation Complete documentation suite in docs/: - README.md: Documentation index - quick-start.md: Getting started guide - agents-guide.md: All 6 agents reference - workflows-guide.md: Complete workflow reference - quick-flow-guide.md: Rapid development guide - game-types-guide.md: 24 game type templates - glossary.md: Game dev terminology - troubleshooting.md: Common issues ## Teams & Installer - Updated team-gamedev.yaml with all 6 agents and workflows - Updated default-party.csv with Game QA and Game Solo Dev - Created _module-installer/ with: - installer.js: Creates directories, logs engine selection - platform-specifics/: Claude Code and Windsurf handlers ## Agent Updates All agents now reference standalone BMGD workflows: - game-architect: correct-course → BMGD - game-dev: dev-story, code-review → BMGD - game-scrum-master: All production workflows → BMGD - game-solo-dev: code-review → BMGD ## Module Configuration - Added sprint_artifacts alias for workflow compatibility - All workflows use bmgd/config.yaml * fix(bmgd): update sprint-status workflow to reference bmgd instead of bmm Replace all /bmad:bmm:workflows references with /bmad:bmgd:workflows in the sprint-status workflow instructions. * feat(bmgd): add workflow-status and create-tech-spec workflows Add BMGD-native workflow-status and create-tech-spec workflows, replacing all BMM references with BMGD paths. ## New Workflows ### workflow-status - Multi-mode status checker for game projects - Game-specific project levels (Game Jam → AAA) - Workflow paths: gamedev-greenfield, gamedev-brownfield, quickflow-greenfield, quickflow-brownfield - Init workflow for new game project setup ### create-tech-spec - Game-focused spec engineering workflow - Engine-aware (Unity/Unreal/Godot) - Performance and gameplay feel considerations ## Agent Updates Updated all BMGD agents to reference BMGD workflows: - game-architect, game-designer, game-dev, game-qa, game-scrum-master, game-solo-dev All agents now use /bmad:bmgd:workflows instead of /bmad:bmm:workflows * fix(bmgd): address PR review findings and enhance playtesting docs ## PR Review Fixes (F1-F20) ### Configuration & Naming - F1: Changed user_skill_level to game_dev_experience in module.yaml - F3: Renamed gametest/framework to gametest/test-framework ### Cleanup - F2: Deleted 4 orphaned root-level template files - F6: Removed duplicate code block in create-story/instructions.xml - F9: Removed trailing empty line from qa-index.csv - F20: Deleted orphaned docs/unnamed.jpg ### Installer Improvements - F7: Simplified platform handler stubs (removed unused code) - F8: Added return value checking for platform handlers - F13: Added path traversal validation (isWithinProjectRoot) - F18: Added type validation for config string values ### Agent Fixes - F10: Added workflow-status and advanced-elicitation to game-solo-dev - F12: Fixed "GOTO step 2a" → "GOTO step 2" references - F14: Removed duplicate project-context.md from principles in 5 agents ### Workflow Updates - F17: Added input_file_patterns to playtest-plan workflow ### Documentation - F4-F5: Updated quick-start.md with 6 agents and fixed table - Updated workflows-guide.md with test-framework reference ### Knowledge Base Updates (from earlier CodeRabbit comments) - Updated unity-testing.md to Test Framework 1.6.0 - Fixed unreal-testing.md (MarkAsGarbage, UnrealEditor.exe) - Added FVerifyPlayerMoved note to smoke-testing.md - Fixed certification-testing.md table formatting ### Playtesting Documentation Enhancement - Added "Playtesting by Game Type" section (7 genres) - Added "Processing Feedback Effectively" section - Expanded from ~138 to ~340 lines * refactor(bmgd): use exec for step-file workflows and multi format Update agent menu items to use correct notation for step-file workflows: **game-designer.agent.yaml:** - Convert 4 step-file workflows to multi format with shortcodes: - [BG] brainstorm-game - [GB] create-game-brief - [GDD] create-gdd - [ND] narrative - Changed from workflow: .yaml to exec: .md **game-architect.agent.yaml:** - Changed create-architecture from workflow: to exec: with workflow.md --------- Co-authored-by: Scott Jennings <scott.jennings+CIGINT@cloudimperiumgames.com>
15 KiB
Workflow Status Check - Multi-Mode Service (BMGD)
The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml You MUST have already loaded and processed: {project-root}/_bmad/bmgd/workflows/workflow-status/workflow.yaml This workflow operates in multiple modes: interactive (default), validate, data, init-check, update Other workflows can call this as a service to avoid duplicating status logic ⚠️ ABSOLUTELY NO TIME ESTIMATES - NEVER mention hours, days, weeks, months, or ANY time-based predictions.
Check for {{mode}} parameter passed by calling workflow Default mode = "interactive" if not specified Continue to Step 1 for normal status check flow Jump to Step 10 for workflow validation service Jump to Step 20 for data extraction service Jump to Step 30 for simple init check Jump to Step 40 for status update service Search {output_folder}/ for file: bmgd-workflow-status.yaml No game development workflow status found. Would you like to run Workflow Init now? (y/n) Launching workflow-init to set up your game project tracking... Exit workflow and let workflow-init take over No workflow status file. Run workflow-init when ready to enable progress tracking. Exit workflow Continue to step 2 Read bmgd-workflow-status.yaml Parse YAML file and extract metadata from comments and fields:Parse these fields from YAML comments and metadata:
- project (from YAML field)
- project_type (from YAML field)
- project_level (from YAML field)
- field_type (from YAML field)
- workflow_path (from YAML field)
Parse workflow_status section:
- Extract all workflow entries with their statuses
- Identify completed workflows (status = file path)
- Identify pending workflows (status = required/optional/recommended/conditional)
- Identify skipped workflows (status = skipped)
Determine current state:
- Find first workflow with status != file path and != skipped
- This is the NEXT workflow to work on
- Look up agent and command from workflow path file
Project: {{project}} (Level {{project_level}} {{project_type}})
Path: {{workflow_path}}
Progress:
{{#each phases}} {{phase_name}}: {{#each workflows_in_phase}}
- {{workflow_name}} ({{agent}}): {{status_display}} {{/each}} {{/each}}
🎯 Next Steps
Next Workflow: {{next_workflow_name}}
Agent: {{next_agent}}
Command: /bmad:bmgd:workflows:{{next_workflow_id}}
{{#if optional_workflows_available}} Optional Workflows Available: {{#each optional_workflows}}
- {{workflow_name}} ({{agent}}) - {{status}} {{/each}} {{/if}}
- Start next workflow - {{next_workflow_name}} ({{next_agent}}) {{#if optional_workflows_available}}
- Run optional workflow - Choose from available options {{/if}}
- View full status YAML - See complete status file
- Update workflow status - Mark a workflow as completed or skipped
- Exit - Return to agent
Your choice:
Handle user selection based on available options
Ready to run {{next_workflow_name}}!Command: /bmad:bmgd:workflows:{{next_workflow_id}}
Agent: Load {{next_agent}} agent first
{{#if next_agent !== current_agent}} Tip: Start a new chat and load the {{next_agent}} agent before running this workflow. {{/if}}
Which optional workflow? {{#each optional_workflows numbered}} {{number}}. {{workflow_name}} ({{agent}}) {{/each}}Your choice: Display selected workflow command and agent
Display complete bmgd-workflow-status.yaml file contents What would you like to update?- Mark a workflow as completed (provide file path)
- Mark a workflow as skipped
Your choice:
Which workflow? (Enter workflow ID like 'gdd' or 'create-architecture') File path created? (e.g., docs/gdd.md) ONLY write the file path as the status value - no other text, notes, or metadata Update workflow_status in YAML file: {{workflow_id}}: {{file_path}} Save updated YAML file preserving ALL structure and comments ✅ Updated {{workflow_id}} to completed: {{file_path}} Which workflow to skip? (Enter workflow ID) Update workflow_status in YAML file: {{workflow_id}}: skipped Save updated YAML file ✅ Marked {{workflow_id}} as skipped Read {output_folder}/bmgd-workflow-status.yaml if exists status_exists = false should_proceed = true warning = "No status file found. Running without progress tracking." suggestion = "Consider running workflow-init first for progress tracking" Return to calling workflow Parse YAML file to extract project metadata and workflow_status Load workflow path file from workflow_path field Find first non-completed workflow in workflow_status (next workflow) Check if {{calling_workflow}} matches next workflow or is in the workflow liststatus_exists = true project_level = {{project_level}} project_type = {{project_type}} field_type = {{field_type}} next_workflow = {{next_workflow_id}}
should_proceed = true warning = "" suggestion = "Proceeding with planned next step" Check the status of calling_workflow in YAML<check if="status is file path">
<template-output>should_proceed = true</template-output>
<template-output>warning = "⚠️ Workflow already completed: {{calling_workflow}}"</template-output>
<template-output>suggestion = "This workflow was already completed. Re-running will overwrite: {{status}}"</template-output>
</check>
<check if="status is optional/recommended">
<template-output>should_proceed = true</template-output>
<template-output>warning = "Running optional workflow {{calling_workflow}}"</template-output>
<template-output>suggestion = "This is optional. Expected next: {{next_workflow}}"</template-output>
</check>
<check if="status is required but not next">
<template-output>should_proceed = true</template-output>
<template-output>warning = "⚠️ Out of sequence: Expected {{next_workflow}}, running {{calling_workflow}}"</template-output>
<template-output>suggestion = "Consider running {{next_workflow}} instead, or continue if intentional"</template-output>
</check>
should_proceed = true
warning = "⚠️ Unknown workflow: {{calling_workflow}} not in workflow path"
suggestion = "This workflow is not part of the defined path for this project"
status_file_path = {{path to bmgd-workflow-status.yaml}}
Return control to calling workflow with all template outputs
Read {output_folder}/bmgd-workflow-status.yaml if exists status_exists = false error = "No status file to extract data from" Return to calling workflow Parse YAML file completely status_exists = true project_name = {{project}} project_type = {{project_type}} project_level = {{project_level}} field_type = {{field_type}} workflow_path = {{workflow_path}} Parse workflow_status section and return all workflow: status pairs workflow_status = {{workflow_status_object}} Calculate completion stats: total_workflows = {{count all workflows}} completed_workflows = {{count file path statuses}} pending_workflows = {{count required/optional/etc}} skipped_workflows = {{count skipped}} Return all parsed fields as template outputs project = {{project}} project_type = {{project_type}} project_level = {{project_level}} field_type = {{field_type}} workflow_path = {{workflow_path}} workflow_status = {{workflow_status_object}} generated = {{generated}}status_file_path = {{path to bmgd-workflow-status.yaml}}
Return control to calling workflow with requested data
Check if {output_folder}/bmgd-workflow-status.yaml exists status_exists = true suggestion = "Status file found. Ready to proceed." status_exists = false suggestion = "No status file. Run workflow-init to create one (optional for progress tracking)"Return immediately to calling workflow
Read {output_folder}/bmgd-workflow-status.yaml success = false error = "No status file found. Cannot update." Return to calling workflow Parse YAML file completely Load workflow path file from workflow_path field Check {{action}} parameter to determine update type Get {{workflow_id}} parameter (required) Get {{output_file}} parameter (required - path to created file)<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: {{output_file}}
<action>Find {{workflow_id}} in loaded path YAML</action>
<action>Determine next workflow from path sequence</action>
<action>Find first workflow in workflow_status with status != file path and != skipped</action>
<action>Save updated YAML file preserving ALL structure and comments</action>
<template-output>success = true</template-output>
<template-output>next_workflow = {{determined next workflow}}</template-output>
<template-output>next_agent = {{determined next agent from path file}}</template-output>
<template-output>completed_workflow = {{workflow_id}}</template-output>
<template-output>output_file = {{output_file}}</template-output>
Get {{workflow_id}} parameter (required)
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: skipped
<action>Save updated YAML file</action>
<template-output>success = true</template-output>
<template-output>skipped_workflow = {{workflow_id}}</template-output>
success = false
error = "Unknown action: {{action}}. Valid actions: complete_workflow, skip_workflow"
Return control to calling workflow with template outputs