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
This commit is contained in:
parent
2bee7234e9
commit
a9f24509ab
|
|
@ -27,7 +27,7 @@ agent:
|
|||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
workflow: "{project-root}/_bmad/bmgd/workflows/workflow-status/workflow.yaml"
|
||||
description: Get workflow status or initialize a workflow if not already done
|
||||
|
||||
- trigger: create-architecture
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ agent:
|
|||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
workflow: "{project-root}/_bmad/bmgd/workflows/workflow-status/workflow.yaml"
|
||||
description: Get workflow status or initialize a workflow if not already done
|
||||
|
||||
- trigger: brainstorm-game
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ agent:
|
|||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
workflow: "{project-root}/_bmad/bmgd/workflows/workflow-status/workflow.yaml"
|
||||
description: Get workflow status or check current sprint progress
|
||||
|
||||
- trigger: dev-story
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ agent:
|
|||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
workflow: "{project-root}/_bmad/bmgd/workflows/workflow-status/workflow.yaml"
|
||||
description: Get workflow status or check current project state
|
||||
|
||||
- trigger: test-framework
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ agent:
|
|||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
workflow: "{project-root}/_bmad/bmgd/workflows/workflow-status/workflow.yaml"
|
||||
description: Get workflow status or initialize a workflow if not already done
|
||||
|
||||
- trigger: sprint-planning
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ agent:
|
|||
description: Implement features end-to-end solo with game-specific considerations
|
||||
|
||||
- trigger: create-tech-spec
|
||||
workflow: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml"
|
||||
workflow: "{project-root}/_bmad/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml"
|
||||
description: Architect a technical spec with implementation-ready stories
|
||||
|
||||
- trigger: code-review
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
# Create Tech-Spec - Spec Engineering for Game Development
|
||||
|
||||
<workflow>
|
||||
|
||||
<critical>Communicate in {communication_language}, tailored to {user_skill_level}</critical>
|
||||
<critical>Generate documents in {document_output_language}</critical>
|
||||
<critical>Conversational spec engineering - ask questions, investigate code, produce complete spec</critical>
|
||||
<critical>Spec must contain ALL context a fresh dev agent needs to implement it</critical>
|
||||
<critical>Focus on game-specific considerations: performance, feel, engine patterns</critical>
|
||||
|
||||
<checkpoint-handlers>
|
||||
<on-select key="a">Load and execute {advanced_elicitation}, then return to current step</on-select>
|
||||
<on-select key="p">Load and execute {party_mode_workflow}, then return to current step</on-select>
|
||||
<on-select key="b">Load and execute {quick_dev_workflow} with the tech-spec file</on-select>
|
||||
</checkpoint-handlers>
|
||||
|
||||
<step n="1" goal="Understand what the user wants to build">
|
||||
|
||||
<action>Greet {user_name} and ask them to describe what they want to build or change in their game.</action>
|
||||
|
||||
<action>Ask game-specific clarifying questions:
|
||||
|
||||
- What's the feature/mechanic?
|
||||
- How does it affect gameplay feel?
|
||||
- Performance requirements? (60fps critical path?)
|
||||
- Which game systems does it touch?
|
||||
- Existing code to integrate with?
|
||||
</action>
|
||||
|
||||
<action>Check for existing context in {output_folder} and {sprint_artifacts}</action>
|
||||
|
||||
<checkpoint title="Problem Understanding">
|
||||
[a] Advanced Elicitation [c] Continue [p] Party Mode
|
||||
</checkpoint>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Investigate existing game code (if applicable)">
|
||||
|
||||
<action>If brownfield: identify game engine (Unity/Unreal/Godot/custom)</action>
|
||||
|
||||
<action>Get file paths, read code, identify:
|
||||
|
||||
- Engine patterns and conventions
|
||||
- Existing game systems to integrate with
|
||||
- Performance-critical code paths
|
||||
- Test patterns if any
|
||||
</action>
|
||||
|
||||
<action>Document: engine version, code patterns, files to modify, system dependencies</action>
|
||||
|
||||
<checkpoint title="Context Gathered">
|
||||
[a] Advanced Elicitation [c] Continue [p] Party Mode
|
||||
</checkpoint>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Generate the technical specification">
|
||||
|
||||
<action>Create tech-spec using this game-focused structure:
|
||||
|
||||
```markdown
|
||||
# Tech-Spec: {title}
|
||||
|
||||
**Created:** {date}
|
||||
**Status:** Ready for Development
|
||||
**Engine:** {engine_name} {version}
|
||||
|
||||
## Overview
|
||||
|
||||
### Feature/Mechanic Description
|
||||
|
||||
### Gameplay Impact
|
||||
|
||||
### Scope (In/Out)
|
||||
|
||||
## Context for Development
|
||||
|
||||
### Engine Patterns
|
||||
|
||||
### Existing Systems Integration
|
||||
|
||||
### Files to Reference
|
||||
|
||||
### Technical Decisions
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
### Tasks
|
||||
|
||||
- [ ] Task 1: Description
|
||||
- [ ] Task 2: Description
|
||||
|
||||
### Performance Considerations
|
||||
|
||||
- Frame budget impact
|
||||
- Memory considerations
|
||||
- Critical path notes
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- [ ] AC 1: Given/When/Then (include feel/responsiveness criteria)
|
||||
- [ ] AC 2: ...
|
||||
|
||||
## Additional Context
|
||||
|
||||
### Dependencies
|
||||
|
||||
### Testing Strategy
|
||||
|
||||
### Notes
|
||||
```
|
||||
|
||||
</action>
|
||||
|
||||
<action>Save to {sprint_artifacts}/tech-spec-{slug}.md</action>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Review and finalize">
|
||||
|
||||
<action>Present spec to {user_name}, ask if it captures intent, make changes as needed</action>
|
||||
|
||||
<output>**Tech-Spec Complete!** 🎮
|
||||
|
||||
Saved to: {sprint_artifacts}/tech-spec-{slug}.md
|
||||
|
||||
[a] Advanced Elicitation - refine further
|
||||
[b] Begin Development (not recommended - fresh context better)
|
||||
[d] Done - exit
|
||||
[p] Party Mode - get feedback
|
||||
|
||||
**Recommended:** Run `quick-dev` in fresh context with this spec.
|
||||
</output>
|
||||
|
||||
<ask>Choice (a/b/d/p):</ask>
|
||||
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Quick-Flow: Create Tech-Spec (Game Development)
|
||||
name: create-tech-spec
|
||||
description: "Conversational spec engineering for games - ask questions, investigate code, produce implementation-ready tech-spec."
|
||||
author: "BMad"
|
||||
|
||||
# Config
|
||||
config_source: "{project-root}/_bmad/bmgd/config.yaml"
|
||||
output_folder: "{config_source}:output_folder"
|
||||
sprint_artifacts: "{config_source}:sprint_artifacts"
|
||||
user_name: "{config_source}:user_name"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
user_skill_level: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/_bmad/bmgd/workflows/bmgd-quick-flow/create-tech-spec"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
|
||||
# Related workflows
|
||||
quick_dev_workflow: "{project-root}/_bmad/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml"
|
||||
quick_prototype_workflow: "{project-root}/_bmad/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml"
|
||||
party_mode_exec: "{project-root}/_bmad/core/workflows/party-mode/workflow.md"
|
||||
advanced_elicitation: "{project-root}/_bmad/core/tasks/advanced-elicitation.xml"
|
||||
|
||||
standalone: true
|
||||
web_bundle: false
|
||||
|
|
@ -26,7 +26,7 @@ party_mode_exec: "{project-root}/_bmad/core/workflows/party-mode/workflow.md"
|
|||
advanced_elicitation: "{project-root}/_bmad/core/tasks/advanced-elicitation.xml"
|
||||
|
||||
# Routing resources (lazy-loaded)
|
||||
workflow_init: "{project-root}/_bmad/bmm/workflows/workflow-status/init/workflow.yaml"
|
||||
workflow_init: "{project-root}/_bmad/bmgd/workflows/workflow-status/init/workflow.yaml"
|
||||
|
||||
# Game-specific input patterns
|
||||
input_file_patterns:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,299 @@
|
|||
# Workflow Init - Game Project Setup Instructions
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project-root}/\_bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: workflow-init/workflow.yaml</critical>
|
||||
<critical>Communicate in {communication_language} with {user_name}</critical>
|
||||
<critical>This workflow handles BOTH new game projects AND existing game projects</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Scan for existing work">
|
||||
<output>Welcome to BMGD Game Development, {user_name}! 🎮</output>
|
||||
|
||||
<action>Perform comprehensive scan for existing work:
|
||||
|
||||
- BMGD artifacts: GDD, game brief, architecture, narrative design
|
||||
- Implementation: stories, sprint-status, workflow-status
|
||||
- Game project: engine files (Unity, Unreal, Godot), source directories
|
||||
- Check both {output_folder} and {sprint_artifacts} locations
|
||||
</action>
|
||||
|
||||
<action>Categorize into one of these states:
|
||||
|
||||
- CLEAN: No artifacts or code (or scaffold only)
|
||||
- DESIGN: Has GDD/brief but no implementation
|
||||
- ACTIVE: Has stories or sprint status
|
||||
- EXISTING: Has game code but no BMGD artifacts
|
||||
- UNCLEAR: Mixed state needs clarification
|
||||
</action>
|
||||
|
||||
<ask>What's your game project called? {{#if project_name}}(Config shows: {{project_name}}){{/if}}</ask>
|
||||
<action>Store project_name</action>
|
||||
<template-output>project_name</template-output>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Choose setup path">
|
||||
<check if="state == CLEAN">
|
||||
<output>Perfect! Fresh start detected. Let's design your game!</output>
|
||||
<action>Continue to step 3</action>
|
||||
</check>
|
||||
|
||||
<check if="state == ACTIVE AND workflow_status exists">
|
||||
<output>✅ You already have workflow tracking at: {{workflow_status_path}}
|
||||
|
||||
To check progress: Load any BMGD agent and run /bmad:bmgd:workflows:workflow-status
|
||||
|
||||
Happy game dev! 🎮</output>
|
||||
<action>Exit workflow (already initialized)</action>
|
||||
</check>
|
||||
|
||||
<check if="state != CLEAN">
|
||||
<output>Found existing work:
|
||||
{{summary_of_findings}}</output>
|
||||
|
||||
<ask>How would you like to proceed?
|
||||
|
||||
1. **Continue** - Work with existing artifacts
|
||||
2. **Archive & Start Fresh** - Move old work to archive
|
||||
3. **Express Setup** - I know exactly what I need
|
||||
4. **Guided Setup** - Walk me through options
|
||||
|
||||
Choice [1-4]</ask>
|
||||
|
||||
<check if="choice == 1">
|
||||
<action>Set continuing_existing = true</action>
|
||||
<action>Store found artifacts</action>
|
||||
<action>Continue to step 7 (detect track from artifacts)</action>
|
||||
</check>
|
||||
|
||||
<check if="choice == 2">
|
||||
<ask>Archive existing work? (y/n)</ask>
|
||||
<action if="y">Move artifacts to {output_folder}/archive/</action>
|
||||
<output>Ready for fresh start!</output>
|
||||
<action>Continue to step 3</action>
|
||||
</check>
|
||||
|
||||
<check if="choice == 3">
|
||||
<action>Jump to step 3 (express path)</action>
|
||||
</check>
|
||||
|
||||
<check if="choice == 4">
|
||||
<action>Continue to step 4 (guided path)</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="state == CLEAN">
|
||||
<ask>Setup approach:
|
||||
|
||||
1. **Express** - I know what I need
|
||||
2. **Guided** - Show me the options
|
||||
|
||||
Choice [1 or 2]:</ask>
|
||||
|
||||
<check if="choice == 1">
|
||||
<action>Continue to step 3 (express)</action>
|
||||
</check>
|
||||
|
||||
<check if="choice == 2">
|
||||
<action>Continue to step 4 (guided)</action>
|
||||
</check>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Express setup path">
|
||||
<ask>Is this for:
|
||||
1. **New game** (greenfield)
|
||||
2. **Existing game codebase** (brownfield)
|
||||
|
||||
Choice [1/2]:</ask>
|
||||
<action>Set field_type based on choice</action>
|
||||
|
||||
<ask>Development approach:
|
||||
|
||||
1. **Full Game Dev** - Complete GDD + Architecture + Production pipeline
|
||||
2. **Quick Flow** - Rapid prototyping and iteration
|
||||
|
||||
Choice [1/2]:</ask>
|
||||
<action>Map to selected_track: gamedev/quickflow</action>
|
||||
|
||||
<template-output>field_type</template-output>
|
||||
<template-output>selected_track</template-output>
|
||||
<action>Jump to step 6 (discovery options)</action>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Guided setup - understand project">
|
||||
<ask>Tell me about your game. What are you making?</ask>
|
||||
<action>Store user_description</action>
|
||||
|
||||
<action>Analyze for field type indicators:
|
||||
|
||||
- Brownfield: "existing", "current", "enhance", "update", "add to"
|
||||
- Greenfield: "new", "build", "create", "from scratch", "fresh"
|
||||
- If game project exists, default to brownfield unless user indicates new
|
||||
</action>
|
||||
|
||||
<check if="field_type unclear AND game project exists">
|
||||
<ask>I see existing game files. Are you:
|
||||
1. **Modifying** existing game (brownfield)
|
||||
2. **Starting fresh** - code is just scaffold (greenfield)
|
||||
|
||||
Choice [1/2]:</ask>
|
||||
<action>Set field_type based on answer</action>
|
||||
</check>
|
||||
|
||||
<action if="field_type not set">Set based on project presence</action>
|
||||
|
||||
<template-output>user_description</template-output>
|
||||
<template-output>field_type</template-output>
|
||||
<action>Continue to step 5</action>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Guided setup - select track">
|
||||
<output>Based on your game, here are your BMGD development options:
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
**1. Full Game Dev** 🎮 {{#if recommended}}(RECOMMENDED){{/if}}
|
||||
|
||||
- Complete: Game Brief + GDD + Architecture + Production
|
||||
- Best for: Indie games, AA projects, complete releases
|
||||
- Benefit: AI agents have full game context for better results
|
||||
|
||||
**2. Quick Flow** 🚀
|
||||
|
||||
- Rapid: Prototype → Iterate → Ship
|
||||
- Best for: Game jams, prototypes, experiments
|
||||
- Benefit: Get playable builds fast
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
{{#if brownfield}}
|
||||
💡 Architecture helps integrate new features with your existing game systems.
|
||||
{{/if}}</output>
|
||||
|
||||
<ask>Which approach fits your game?
|
||||
|
||||
1. Full Game Dev {{#if recommended}}(recommended){{/if}}
|
||||
2. Quick Flow
|
||||
3. Help me decide
|
||||
|
||||
Choice [1/2/3]:</ask>
|
||||
|
||||
<check if="choice == 3">
|
||||
<ask>What concerns you about choosing?</ask>
|
||||
<action>Provide tailored guidance based on concerns</action>
|
||||
<action>Loop back to choice</action>
|
||||
</check>
|
||||
|
||||
<action>Map choice to selected_track</action>
|
||||
<template-output>selected_track</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Discovery workflows selection (unified)">
|
||||
<action>Determine available discovery workflows based on:
|
||||
- field_type (greenfield gets game-brief option)
|
||||
- selected_track (gamedev/quickflow options)
|
||||
</action>
|
||||
|
||||
<check if="field_type == greenfield AND selected_track == gamedev">
|
||||
<output>Optional pre-production workflows can help clarify your game vision:</output>
|
||||
<ask>Select any you'd like to include:
|
||||
|
||||
1. 🧠 **Brainstorm Game** - Creative exploration and ideation
|
||||
2. 📋 **Game Brief** - Strategic game planning (recommended)
|
||||
|
||||
Enter numbers (e.g., "1,2" or "all" or "none"): </ask>
|
||||
</check>
|
||||
|
||||
<check if="field_type == brownfield AND selected_track == gamedev">
|
||||
<output>Optional discovery workflows:</output>
|
||||
<ask>Include any of these?
|
||||
|
||||
1. 🧠 **Brainstorm Game** - Creative exploration for new features
|
||||
|
||||
Enter "1" or "none": </ask>
|
||||
</check>
|
||||
|
||||
<check if="selected_track == quickflow">
|
||||
<output>Quick Flow focuses on rapid iteration. You can brainstorm during development.</output>
|
||||
</check>
|
||||
|
||||
<action>Parse selections and set:
|
||||
|
||||
- brainstorm_requested
|
||||
- game_brief_requested (if applicable)
|
||||
</action>
|
||||
|
||||
<template-output>brainstorm_requested</template-output>
|
||||
<template-output>game_brief_requested</template-output>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Detect track from artifacts" if="continuing_existing">
|
||||
<action>Analyze artifacts to detect track:
|
||||
- Has GDD → Full Game Dev
|
||||
- Has tech-spec only → Quick Flow
|
||||
</action>
|
||||
|
||||
<output>Detected: **{{detected_track}}** based on {{found_artifacts}}</output>
|
||||
<ask>Correct? (y/n)</ask>
|
||||
|
||||
<ask if="n">Which BMGD track instead?
|
||||
|
||||
1. Full Game Dev
|
||||
2. Quick Flow
|
||||
|
||||
Choice:</ask>
|
||||
|
||||
<action>Set selected_track</action>
|
||||
<template-output>selected_track</template-output>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Generate workflow path">
|
||||
<action>Load path file: {path_files}/{{selected_track}}-{{field_type}}.yaml</action>
|
||||
<action>Build workflow_items from path file</action>
|
||||
<action>Scan for existing completed work and update statuses</action>
|
||||
<action>Set generated date</action>
|
||||
|
||||
<template-output>generated</template-output>
|
||||
<template-output>workflow_path_file</template-output>
|
||||
<template-output>workflow_items</template-output>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Create tracking file">
|
||||
<output>Your BMGD workflow path:
|
||||
|
||||
**Track:** {{selected_track}}
|
||||
**Type:** {{field_type}}
|
||||
**Project:** {{project_name}}
|
||||
|
||||
{{#if brownfield}}Prerequisites: Analyze existing game code{{/if}}
|
||||
{{#if has_discovery}}Pre-production: {{list_selected_discovery}}{{/if}}
|
||||
|
||||
{{workflow_path_summary}}
|
||||
</output>
|
||||
|
||||
<ask>Create workflow tracking file? (y/n)</ask>
|
||||
|
||||
<check if="y">
|
||||
<action>Generate YAML from template with all variables</action>
|
||||
<action>Save to {output_folder}/bmgd-workflow-status.yaml</action>
|
||||
<action>Identify next workflow and agent</action>
|
||||
|
||||
<output>✅ **Created:** {output_folder}/bmgd-workflow-status.yaml
|
||||
|
||||
**Next:** {{next_workflow_name}}
|
||||
**Agent:** {{next_agent}}
|
||||
**Command:** /bmad:bmgd:workflows:{{next_workflow_id}}
|
||||
|
||||
{{#if next_agent not in [game-designer]}}
|
||||
💡 Start new chat with **{{next_agent}}** agent first.
|
||||
{{/if}}
|
||||
|
||||
To check progress: /bmad:bmgd:workflows:workflow-status
|
||||
|
||||
Happy game dev! 🎮</output>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Workflow Init - Initial Game Project Setup
|
||||
name: workflow-init
|
||||
description: "Initialize a new BMGD game project by determining level, type, and creating workflow path"
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/_bmad/bmgd/config.yaml"
|
||||
output_folder: "{config_source}:output_folder"
|
||||
sprint_artifacts: "{config_source}:sprint_artifacts"
|
||||
user_name: "{config_source}:user_name"
|
||||
project_name: "{config_source}:project_name"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
user_skill_level: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/_bmad/bmgd/workflows/workflow-status/init"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
template: "{project-root}/_bmad/bmgd/workflows/workflow-status/workflow-status-template.yaml"
|
||||
|
||||
# Path data files
|
||||
path_files: "{project-root}/_bmad/bmgd/workflows/workflow-status/paths/"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/bmgd-workflow-status.yaml"
|
||||
|
||||
standalone: true
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,395 @@
|
|||
# Workflow Status Check - Multi-Mode Service (BMGD)
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project-root}/\_bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {project-root}/\_bmad/bmgd/workflows/workflow-status/workflow.yaml</critical>
|
||||
<critical>This workflow operates in multiple modes: interactive (default), validate, data, init-check, update</critical>
|
||||
<critical>Other workflows can call this as a service to avoid duplicating status logic</critical>
|
||||
<critical>⚠️ ABSOLUTELY NO TIME ESTIMATES - NEVER mention hours, days, weeks, months, or ANY time-based predictions.</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="0" goal="Determine execution mode">
|
||||
<action>Check for {{mode}} parameter passed by calling workflow</action>
|
||||
<action>Default mode = "interactive" if not specified</action>
|
||||
|
||||
<check if="mode == interactive">
|
||||
<action>Continue to Step 1 for normal status check flow</action>
|
||||
</check>
|
||||
|
||||
<check if="mode == validate">
|
||||
<action>Jump to Step 10 for workflow validation service</action>
|
||||
</check>
|
||||
|
||||
<check if="mode == data">
|
||||
<action>Jump to Step 20 for data extraction service</action>
|
||||
</check>
|
||||
|
||||
<check if="mode == init-check">
|
||||
<action>Jump to Step 30 for simple init check</action>
|
||||
</check>
|
||||
|
||||
<check if="mode == update">
|
||||
<action>Jump to Step 40 for status update service</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="1" goal="Check for status file">
|
||||
<action>Search {output_folder}/ for file: bmgd-workflow-status.yaml</action>
|
||||
|
||||
<check if="no status file found">
|
||||
<output>No game development workflow status found.</output>
|
||||
<ask>Would you like to run Workflow Init now? (y/n)</ask>
|
||||
|
||||
<check if="response == y OR response == yes">
|
||||
<action>Launching workflow-init to set up your game project tracking...</action>
|
||||
<invoke-workflow path="{project-root}/_bmad/bmgd/workflows/workflow-status/init/workflow.yaml"></invoke-workflow>
|
||||
<action>Exit workflow and let workflow-init take over</action>
|
||||
</check>
|
||||
|
||||
<check if="else">
|
||||
<output>No workflow status file. Run workflow-init when ready to enable progress tracking.</output>
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="status file found">
|
||||
<action>Continue to step 2</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Read and parse status">
|
||||
<action>Read bmgd-workflow-status.yaml</action>
|
||||
<action>Parse YAML file and extract metadata from comments and fields:</action>
|
||||
|
||||
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)
|
||||
|
||||
<action>Parse workflow_status section:</action>
|
||||
|
||||
- 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)
|
||||
|
||||
<action>Determine current state:</action>
|
||||
|
||||
- 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
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Display current status and options">
|
||||
<action>Load workflow path file based on workflow_path field</action>
|
||||
<action>Identify current phase from next workflow to be done</action>
|
||||
<action>Build list of completed, pending, and optional workflows</action>
|
||||
<action>For each workflow, look up its agent from the path file</action>
|
||||
|
||||
<output>
|
||||
## 🎮 Game Dev Status
|
||||
|
||||
**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}}
|
||||
</output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Offer actions">
|
||||
<ask>What would you like to do?
|
||||
|
||||
1. **Start next workflow** - {{next_workflow_name}} ({{next_agent}})
|
||||
{{#if optional_workflows_available}}
|
||||
2. **Run optional workflow** - Choose from available options
|
||||
{{/if}}
|
||||
3. **View full status YAML** - See complete status file
|
||||
4. **Update workflow status** - Mark a workflow as completed or skipped
|
||||
5. **Exit** - Return to agent
|
||||
|
||||
Your choice:</ask>
|
||||
|
||||
<action>Handle user selection based on available options</action>
|
||||
|
||||
<check if="choice == 1">
|
||||
<output>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}}
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="choice == 2 AND optional_workflows_available">
|
||||
<ask>Which optional workflow?
|
||||
{{#each optional_workflows numbered}}
|
||||
{{number}}. {{workflow_name}} ({{agent}})
|
||||
{{/each}}
|
||||
|
||||
Your choice:</ask>
|
||||
<action>Display selected workflow command and agent</action>
|
||||
</check>
|
||||
|
||||
<check if="choice == 3">
|
||||
<action>Display complete bmgd-workflow-status.yaml file contents</action>
|
||||
</check>
|
||||
|
||||
<check if="choice == 4">
|
||||
<ask>What would you like to update?
|
||||
|
||||
1. Mark a workflow as **completed** (provide file path)
|
||||
2. Mark a workflow as **skipped**
|
||||
|
||||
Your choice:</ask>
|
||||
|
||||
<check if="update_choice == 1">
|
||||
<ask>Which workflow? (Enter workflow ID like 'gdd' or 'create-architecture')</ask>
|
||||
<ask>File path created? (e.g., docs/gdd.md)</ask>
|
||||
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
|
||||
<action>Update workflow_status in YAML file: {{workflow_id}}: {{file_path}}</action>
|
||||
<action>Save updated YAML file preserving ALL structure and comments</action>
|
||||
<output>✅ Updated {{workflow_id}} to completed: {{file_path}}</output>
|
||||
</check>
|
||||
|
||||
<check if="update_choice == 2">
|
||||
<ask>Which workflow to skip? (Enter workflow ID)</ask>
|
||||
<action>Update workflow_status in YAML file: {{workflow_id}}: skipped</action>
|
||||
<action>Save updated YAML file</action>
|
||||
<output>✅ Marked {{workflow_id}} as skipped</output>
|
||||
</check>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<!-- ============================================= -->
|
||||
<!-- SERVICE MODES - Called by other workflows -->
|
||||
<!-- ============================================= -->
|
||||
|
||||
<step n="10" goal="Validate mode - Check if calling workflow should proceed">
|
||||
<action>Read {output_folder}/bmgd-workflow-status.yaml if exists</action>
|
||||
|
||||
<check if="status file not found">
|
||||
<template-output>status_exists = false</template-output>
|
||||
<template-output>should_proceed = true</template-output>
|
||||
<template-output>warning = "No status file found. Running without progress tracking."</template-output>
|
||||
<template-output>suggestion = "Consider running workflow-init first for progress tracking"</template-output>
|
||||
<action>Return to calling workflow</action>
|
||||
</check>
|
||||
|
||||
<check if="status file found">
|
||||
<action>Parse YAML file to extract project metadata and workflow_status</action>
|
||||
<action>Load workflow path file from workflow_path field</action>
|
||||
<action>Find first non-completed workflow in workflow_status (next workflow)</action>
|
||||
<action>Check if {{calling_workflow}} matches next workflow or is in the workflow list</action>
|
||||
|
||||
<template-output>status_exists = true</template-output>
|
||||
<template-output>project_level = {{project_level}}</template-output>
|
||||
<template-output>project_type = {{project_type}}</template-output>
|
||||
<template-output>field_type = {{field_type}}</template-output>
|
||||
<template-output>next_workflow = {{next_workflow_id}}</template-output>
|
||||
|
||||
<check if="calling_workflow == next_workflow">
|
||||
<template-output>should_proceed = true</template-output>
|
||||
<template-output>warning = ""</template-output>
|
||||
<template-output>suggestion = "Proceeding with planned next step"</template-output>
|
||||
</check>
|
||||
|
||||
<check if="calling_workflow in workflow_status list">
|
||||
<action>Check the status of calling_workflow in YAML</action>
|
||||
|
||||
<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>
|
||||
|
||||
</check>
|
||||
|
||||
<check if="calling_workflow NOT in workflow_status list">
|
||||
<template-output>should_proceed = true</template-output>
|
||||
<template-output>warning = "⚠️ Unknown workflow: {{calling_workflow}} not in workflow path"</template-output>
|
||||
<template-output>suggestion = "This workflow is not part of the defined path for this project"</template-output>
|
||||
</check>
|
||||
|
||||
<template-output>status_file_path = {{path to bmgd-workflow-status.yaml}}</template-output>
|
||||
</check>
|
||||
|
||||
<action>Return control to calling workflow with all template outputs</action>
|
||||
</step>
|
||||
|
||||
<step n="20" goal="Data mode - Extract specific information">
|
||||
<action>Read {output_folder}/bmgd-workflow-status.yaml if exists</action>
|
||||
|
||||
<check if="status file not found">
|
||||
<template-output>status_exists = false</template-output>
|
||||
<template-output>error = "No status file to extract data from"</template-output>
|
||||
<action>Return to calling workflow</action>
|
||||
</check>
|
||||
|
||||
<check if="status file found">
|
||||
<action>Parse YAML file completely</action>
|
||||
<template-output>status_exists = true</template-output>
|
||||
|
||||
<check if="data_request == project_config">
|
||||
<template-output>project_name = {{project}}</template-output>
|
||||
<template-output>project_type = {{project_type}}</template-output>
|
||||
<template-output>project_level = {{project_level}}</template-output>
|
||||
<template-output>field_type = {{field_type}}</template-output>
|
||||
<template-output>workflow_path = {{workflow_path}}</template-output>
|
||||
</check>
|
||||
|
||||
<check if="data_request == workflow_status">
|
||||
<action>Parse workflow_status section and return all workflow: status pairs</action>
|
||||
<template-output>workflow_status = {{workflow_status_object}}</template-output>
|
||||
<action>Calculate completion stats:</action>
|
||||
<template-output>total_workflows = {{count all workflows}}</template-output>
|
||||
<template-output>completed_workflows = {{count file path statuses}}</template-output>
|
||||
<template-output>pending_workflows = {{count required/optional/etc}}</template-output>
|
||||
<template-output>skipped_workflows = {{count skipped}}</template-output>
|
||||
</check>
|
||||
|
||||
<check if="data_request == all">
|
||||
<action>Return all parsed fields as template outputs</action>
|
||||
<template-output>project = {{project}}</template-output>
|
||||
<template-output>project_type = {{project_type}}</template-output>
|
||||
<template-output>project_level = {{project_level}}</template-output>
|
||||
<template-output>field_type = {{field_type}}</template-output>
|
||||
<template-output>workflow_path = {{workflow_path}}</template-output>
|
||||
<template-output>workflow_status = {{workflow_status_object}}</template-output>
|
||||
<template-output>generated = {{generated}}</template-output>
|
||||
</check>
|
||||
|
||||
<template-output>status_file_path = {{path to bmgd-workflow-status.yaml}}</template-output>
|
||||
</check>
|
||||
|
||||
<action>Return control to calling workflow with requested data</action>
|
||||
</step>
|
||||
|
||||
<step n="30" goal="Init-check mode - Simple existence check">
|
||||
<action>Check if {output_folder}/bmgd-workflow-status.yaml exists</action>
|
||||
|
||||
<check if="exists">
|
||||
<template-output>status_exists = true</template-output>
|
||||
<template-output>suggestion = "Status file found. Ready to proceed."</template-output>
|
||||
</check>
|
||||
|
||||
<check if="not exists">
|
||||
<template-output>status_exists = false</template-output>
|
||||
<template-output>suggestion = "No status file. Run workflow-init to create one (optional for progress tracking)"</template-output>
|
||||
</check>
|
||||
|
||||
<action>Return immediately to calling workflow</action>
|
||||
</step>
|
||||
|
||||
<step n="40" goal="Update mode - Centralized status file updates">
|
||||
<action>Read {output_folder}/bmgd-workflow-status.yaml</action>
|
||||
|
||||
<check if="status file not found">
|
||||
<template-output>success = false</template-output>
|
||||
<template-output>error = "No status file found. Cannot update."</template-output>
|
||||
<action>Return to calling workflow</action>
|
||||
</check>
|
||||
|
||||
<check if="status file found">
|
||||
<action>Parse YAML file completely</action>
|
||||
<action>Load workflow path file from workflow_path field</action>
|
||||
<action>Check {{action}} parameter to determine update type</action>
|
||||
|
||||
<!-- ============================================= -->
|
||||
<!-- ACTION: complete_workflow -->
|
||||
<!-- ============================================= -->
|
||||
<check if="action == complete_workflow">
|
||||
<action>Get {{workflow_id}} parameter (required)</action>
|
||||
<action>Get {{output_file}} parameter (required - path to created file)</action>
|
||||
|
||||
<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>
|
||||
|
||||
</check>
|
||||
|
||||
<!-- ============================================= -->
|
||||
<!-- ACTION: skip_workflow -->
|
||||
<!-- ============================================= -->
|
||||
<check if="action == skip_workflow">
|
||||
<action>Get {{workflow_id}} parameter (required)</action>
|
||||
|
||||
<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>
|
||||
|
||||
</check>
|
||||
|
||||
<!-- ============================================= -->
|
||||
<!-- Unknown action -->
|
||||
<!-- ============================================= -->
|
||||
<check if="action not recognized">
|
||||
<template-output>success = false</template-output>
|
||||
<template-output>error = "Unknown action: {{action}}. Valid actions: complete_workflow, skip_workflow"</template-output>
|
||||
</check>
|
||||
|
||||
</check>
|
||||
|
||||
<action>Return control to calling workflow with template outputs</action>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
# BMGD Game Development - Brownfield
|
||||
# Game development methodology for existing game projects
|
||||
|
||||
method_name: "BMGD Game Development"
|
||||
track: "gamedev"
|
||||
field_type: "brownfield"
|
||||
description: "Game development methodology for existing codebases and projects"
|
||||
|
||||
phases:
|
||||
- phase: 0
|
||||
name: "Discovery (Optional)"
|
||||
optional: true
|
||||
note: "User-selected during workflow-init"
|
||||
workflows:
|
||||
- id: "brainstorm-game"
|
||||
optional: true
|
||||
agent: "game-designer"
|
||||
command: "brainstorm-game"
|
||||
included_by: "user_choice"
|
||||
note: "Creative exploration for new features or improvements"
|
||||
|
||||
- phase: 1
|
||||
name: "Design"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "gdd"
|
||||
required: true
|
||||
agent: "game-designer"
|
||||
command: "create-gdd"
|
||||
output: "Game Design Document for new features/systems"
|
||||
note: "Focus on changes and additions to existing game"
|
||||
|
||||
- id: "narrative"
|
||||
conditional: "if_narrative_focused"
|
||||
agent: "game-designer"
|
||||
command: "narrative"
|
||||
note: "For story-driven additions"
|
||||
|
||||
- phase: 2
|
||||
name: "Technical"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "game-architecture"
|
||||
required: true
|
||||
agent: "game-architect"
|
||||
command: "create-architecture"
|
||||
output: "Architecture update document"
|
||||
note: "Focus on integration with existing systems"
|
||||
|
||||
- id: "test-framework"
|
||||
recommended: true
|
||||
agent: "game-qa"
|
||||
command: "test-framework"
|
||||
output: "Testing framework extension"
|
||||
note: "Extend existing tests or set up new framework"
|
||||
|
||||
- phase: 3
|
||||
name: "Production"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "sprint-planning"
|
||||
required: true
|
||||
agent: "game-scrum-master"
|
||||
command: "sprint-planning"
|
||||
note: "Creates sprint plan - subsequent work tracked in sprint-status.yaml"
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
# BMGD Game Development - Greenfield
|
||||
# Full game design and development methodology for new game projects
|
||||
|
||||
method_name: "BMGD Game Development"
|
||||
track: "gamedev"
|
||||
field_type: "greenfield"
|
||||
description: "Complete game design and development methodology for greenfield projects"
|
||||
|
||||
phases:
|
||||
- phase: 0
|
||||
name: "Pre-production (Optional)"
|
||||
optional: true
|
||||
note: "User-selected during workflow-init"
|
||||
workflows:
|
||||
- id: "brainstorm-game"
|
||||
optional: true
|
||||
agent: "game-designer"
|
||||
command: "brainstorm-game"
|
||||
included_by: "user_choice"
|
||||
note: "Creative exploration and ideation for game concepts"
|
||||
|
||||
- id: "game-brief"
|
||||
optional: true
|
||||
agent: "game-designer"
|
||||
command: "create-game-brief"
|
||||
included_by: "user_choice"
|
||||
note: "Recommended for greenfield game projects"
|
||||
|
||||
- phase: 1
|
||||
name: "Design"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "gdd"
|
||||
required: true
|
||||
agent: "game-designer"
|
||||
command: "create-gdd"
|
||||
output: "Game Design Document with mechanics, systems, and content"
|
||||
|
||||
- id: "narrative"
|
||||
conditional: "if_narrative_focused"
|
||||
agent: "game-designer"
|
||||
command: "narrative"
|
||||
note: "For story-driven games - determined after GDD"
|
||||
|
||||
- phase: 2
|
||||
name: "Technical"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "game-architecture"
|
||||
required: true
|
||||
agent: "game-architect"
|
||||
command: "create-architecture"
|
||||
output: "Game architecture document with systems and patterns"
|
||||
note: "Complete technical design for game systems"
|
||||
|
||||
- id: "test-framework"
|
||||
recommended: true
|
||||
agent: "game-qa"
|
||||
command: "test-framework"
|
||||
output: "Game testing framework setup"
|
||||
note: "Set up automated testing early"
|
||||
|
||||
- phase: 3
|
||||
name: "Production"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "sprint-planning"
|
||||
required: true
|
||||
agent: "game-scrum-master"
|
||||
command: "sprint-planning"
|
||||
note: "Creates sprint plan - subsequent work tracked in sprint-status.yaml"
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# BMGD Quick Flow - Brownfield
|
||||
# Rapid game development for existing projects
|
||||
|
||||
method_name: "BMGD Quick Flow"
|
||||
track: "quickflow"
|
||||
field_type: "brownfield"
|
||||
description: "Rapid development and iteration for existing game projects"
|
||||
|
||||
phases:
|
||||
- phase: 1
|
||||
name: "Planning"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "create-tech-spec"
|
||||
required: true
|
||||
agent: "game-solo-dev"
|
||||
command: "create-tech-spec"
|
||||
output: "Technical specification"
|
||||
note: "Define changes for existing codebase"
|
||||
|
||||
- phase: 2
|
||||
name: "Development"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "quick-dev"
|
||||
required: true
|
||||
agent: "game-solo-dev"
|
||||
command: "quick-dev"
|
||||
note: "Iterative development - repeat as needed"
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# BMGD Quick Flow - Greenfield
|
||||
# Rapid game prototyping and development for new projects
|
||||
|
||||
method_name: "BMGD Quick Flow"
|
||||
track: "quickflow"
|
||||
field_type: "greenfield"
|
||||
description: "Rapid prototyping and development for new game projects"
|
||||
|
||||
phases:
|
||||
- phase: 0
|
||||
name: "Concept (Optional)"
|
||||
optional: true
|
||||
workflows:
|
||||
- id: "brainstorm-game"
|
||||
optional: true
|
||||
agent: "game-solo-dev"
|
||||
command: "brainstorm-game"
|
||||
included_by: "user_choice"
|
||||
|
||||
- phase: 1
|
||||
name: "Prototype"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "quick-prototype"
|
||||
required: true
|
||||
agent: "game-solo-dev"
|
||||
command: "quick-prototype"
|
||||
output: "Playable prototype"
|
||||
note: "Test core mechanic quickly"
|
||||
|
||||
- phase: 2
|
||||
name: "Development"
|
||||
required: true
|
||||
workflows:
|
||||
- id: "quick-dev"
|
||||
required: true
|
||||
agent: "game-solo-dev"
|
||||
command: "quick-dev"
|
||||
note: "Iterative development - repeat as needed"
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
# BMGD Game Project Scale Levels - Source of Truth
|
||||
|
||||
levels:
|
||||
0:
|
||||
name: "Level 0"
|
||||
title: "Game Jam / Prototype"
|
||||
stories: "1-5 stories"
|
||||
description: "48-72 hour game jam, mechanic prototype, proof of concept"
|
||||
documentation: "Minimal - quick GDD notes only"
|
||||
architecture: false
|
||||
|
||||
1:
|
||||
name: "Level 1"
|
||||
title: "Mini Game"
|
||||
stories: "5-15 stories"
|
||||
description: "Small complete game, single mechanic focus, mobile hypercasual"
|
||||
documentation: "Game Brief + Light GDD"
|
||||
architecture: false
|
||||
|
||||
2:
|
||||
name: "Level 2"
|
||||
title: "Indie Game"
|
||||
stories: "15-40 stories"
|
||||
description: "Full indie title, multiple systems, polished experience"
|
||||
documentation: "Game Brief + GDD + Architecture"
|
||||
architecture: true
|
||||
|
||||
3:
|
||||
name: "Level 3"
|
||||
title: "AA Game"
|
||||
stories: "40-100 stories"
|
||||
description: "Mid-size production, team coordination, multiple platforms"
|
||||
documentation: "Full GDD + Architecture + Narrative Design"
|
||||
architecture: true
|
||||
|
||||
4:
|
||||
name: "Level 4"
|
||||
title: "AAA Game"
|
||||
stories: "100+ stories"
|
||||
description: "Large-scale production, multiple teams, live service potential"
|
||||
documentation: "Full documentation suite + production pipelines"
|
||||
architecture: true
|
||||
|
||||
# Quick detection hints for workflow-init
|
||||
detection_hints:
|
||||
keywords:
|
||||
level_0: ["jam", "prototype", "poc", "test", "experiment", "48 hour", "weekend"]
|
||||
level_1: ["simple", "mini", "casual", "hypercasual", "mobile", "small game"]
|
||||
level_2: ["indie", "steam", "itch", "complete game", "full game"]
|
||||
level_3: ["aa", "mid-size", "production", "team", "publisher"]
|
||||
level_4: ["aaa", "large", "enterprise", "live service", "multiple teams"]
|
||||
|
||||
story_counts:
|
||||
level_0: [1, 5]
|
||||
level_1: [5, 15]
|
||||
level_2: [15, 40]
|
||||
level_3: [40, 100]
|
||||
level_4: [100, 999]
|
||||
|
||||
# Game-specific indicators
|
||||
game_indicators:
|
||||
engine_keywords: ["unity", "unreal", "godot", "gamemaker", "construct", "rpgmaker"]
|
||||
genre_keywords: ["platformer", "rpg", "roguelike", "shooter", "puzzle", "adventure", "strategy", "simulation"]
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Workflow Status Template (BMGD)
|
||||
|
||||
# This tracks progress through BMGD methodology Pre-production, Design, and Technical phases.
|
||||
# Implementation phase is tracked separately in sprint-status.yaml
|
||||
|
||||
# STATUS DEFINITIONS:
|
||||
# ==================
|
||||
# Initial Status (before completion):
|
||||
# - required: Must be completed to progress
|
||||
# - optional: Can be completed but not required
|
||||
# - recommended: Strongly suggested but not required
|
||||
# - conditional: Required only if certain conditions met (e.g., if_narrative_focused)
|
||||
#
|
||||
# Completion Status:
|
||||
# - {file-path}: File created/found (e.g., "docs/gdd.md")
|
||||
# - skipped: Optional/conditional workflow that was skipped
|
||||
|
||||
generated: "{{generated}}"
|
||||
project: "{{project_name}}"
|
||||
project_type: "{{project_type}}"
|
||||
selected_track: "{{selected_track}}"
|
||||
field_type: "{{field_type}}"
|
||||
workflow_path: "{{workflow_path_file}}"
|
||||
workflow_status: "{{workflow_items}}"
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Workflow Status - Master Router and Status Tracker for BMGD
|
||||
name: workflow-status
|
||||
description: 'Lightweight status checker - answers "what should I do now?" for any game dev agent. Reads YAML status file for workflow tracking. Use workflow-init for new projects.'
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/_bmad/bmgd/config.yaml"
|
||||
output_folder: "{config_source}:output_folder"
|
||||
user_name: "{config_source}:user_name"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
user_skill_level: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/_bmad/bmgd/workflows/workflow-status"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
|
||||
# Template for status file creation (used by workflow-init)
|
||||
template: "{installed_path}/workflow-status-template.yaml"
|
||||
|
||||
# Path definitions for project types
|
||||
path_files: "{installed_path}/paths/"
|
||||
|
||||
# Output configuration - reads existing status
|
||||
default_output_file: "{output_folder}/bmgd-workflow-status.yaml"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
Loading…
Reference in New Issue