Merge branch 'main' into debug-agent-workflow
This commit is contained in:
commit
89c15be567
|
|
@ -311,6 +311,66 @@ bmad status -v # Detailed status
|
|||
- Agent references (cross-module)
|
||||
- Template dependencies
|
||||
- Partial module installation (only required files)
|
||||
- Workflow vendoring for standalone module operation
|
||||
|
||||
## Workflow Vendoring
|
||||
|
||||
**Problem**: Modules that reference workflows from other modules create dependencies, forcing users to install multiple modules even when they only need one.
|
||||
|
||||
**Solution**: Workflow vendoring allows modules to copy workflows from other modules during installation, making them fully standalone.
|
||||
|
||||
### How It Works
|
||||
|
||||
Agents can specify both `workflow` (source location) and `workflow-install` (destination location) in their menu items:
|
||||
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: create-story
|
||||
workflow: '{project-root}/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml'
|
||||
workflow-install: '{project-root}/bmad/bmgd/workflows/4-production/create-story/workflow.yaml'
|
||||
description: 'Create a game feature story'
|
||||
```
|
||||
|
||||
**During Installation:**
|
||||
|
||||
1. **Vendoring Phase**: Before copying module files, the installer:
|
||||
- Scans source agent YAML files for `workflow-install` attributes
|
||||
- Copies entire workflow folders from `workflow` path to `workflow-install` path
|
||||
- Updates vendored `workflow.yaml` files to reference target module's config
|
||||
|
||||
2. **Compilation Phase**: When compiling agents:
|
||||
- If `workflow-install` exists, uses its value for the `workflow` attribute
|
||||
- `workflow-install` is build-time metadata only, never appears in final XML
|
||||
- Compiled agent references vendored workflow location
|
||||
|
||||
3. **Config Update**: Vendored workflows get their `config_source` updated:
|
||||
|
||||
```yaml
|
||||
# Source workflow (in bmm):
|
||||
config_source: "{project-root}/bmad/bmm/config.yaml"
|
||||
|
||||
# Vendored workflow (in bmgd):
|
||||
config_source: "{project-root}/bmad/bmgd/config.yaml"
|
||||
```
|
||||
|
||||
**Result**: Modules become completely standalone with their own copies of needed workflows, configured for their specific use case.
|
||||
|
||||
### Example Use Case: BMGD Module
|
||||
|
||||
The BMad Game Development module vendors implementation workflows from BMM:
|
||||
|
||||
- Game Dev Scrum Master agent references BMM workflows
|
||||
- During installation, workflows are copied to `bmgd/workflows/4-production/`
|
||||
- Vendored workflows use BMGD's config (with game-specific settings)
|
||||
- BMGD can be installed without BMM dependency
|
||||
|
||||
### Benefits
|
||||
|
||||
✅ **Module Independence** - No forced dependencies
|
||||
✅ **Clean Namespace** - Workflows live in their module
|
||||
✅ **Config Isolation** - Each module uses its own configuration
|
||||
✅ **Customization Ready** - Vendored workflows can be modified independently
|
||||
✅ **No User Confusion** - Avoid partial module installations
|
||||
|
||||
### File Processing
|
||||
|
||||
|
|
@ -318,6 +378,7 @@ bmad status -v # Detailed status
|
|||
- Excludes `_module-installer/` directories
|
||||
- Replaces path placeholders at runtime
|
||||
- Injects activation blocks
|
||||
- Vendors cross-module workflows (see Workflow Vendoring below)
|
||||
|
||||
### Web Bundling
|
||||
|
||||
|
|
|
|||
|
|
@ -193,9 +193,23 @@ menu:
|
|||
- trigger: [emerging from conversation]
|
||||
workflow: [path based on capability]
|
||||
description: [user's words refined]
|
||||
```
|
||||
|
||||
# For cross-module workflow references (advanced):
|
||||
|
||||
- trigger: [another capability]
|
||||
workflow: "{project-root}/bmad/SOURCE_MODULE/workflows/path/to/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/THIS_MODULE/workflows/vendored/path/workflow.yaml"
|
||||
description: [description]
|
||||
|
||||
`````
|
||||
</example>
|
||||
|
||||
<note>**Workflow Vendoring (Advanced):**
|
||||
When an agent needs workflows from another module, use both `workflow` (source) and `workflow-install` (destination).
|
||||
During installation, the workflow will be copied and configured for this module, making it standalone.
|
||||
This is typically used when creating specialized modules that reuse common workflows with different configurations.
|
||||
</note>
|
||||
|
||||
<template-output>agent_commands</template-output>
|
||||
</step>
|
||||
|
||||
|
|
@ -298,14 +312,16 @@ menu: {{The capabilities built}}
|
|||
|
||||
**Folder Structure:**
|
||||
|
||||
```
|
||||
`````
|
||||
|
||||
{{agent_filename}}-sidecar/
|
||||
├── memories.md # Persistent memory
|
||||
├── instructions.md # Private directives
|
||||
├── knowledge/ # Knowledge base
|
||||
│ └── README.md
|
||||
└── sessions/ # Session notes
|
||||
```
|
||||
|
||||
````
|
||||
|
||||
**File: memories.md**
|
||||
|
||||
|
|
@ -323,7 +339,7 @@ menu: {{The capabilities built}}
|
|||
## Personal Notes
|
||||
|
||||
<!-- My observations and insights -->
|
||||
```
|
||||
````
|
||||
|
||||
**File: instructions.md**
|
||||
|
||||
|
|
|
|||
|
|
@ -136,6 +136,40 @@ Tasks should be used for:
|
|||
- Declare dependencies in config.yaml
|
||||
- Version compatibility notes
|
||||
|
||||
### Workflow Vendoring (Advanced)
|
||||
|
||||
For modules that need workflows from other modules but want to remain standalone, use **workflow vendoring**:
|
||||
|
||||
**In Agent YAML:**
|
||||
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: command-name
|
||||
workflow: '{project-root}/bmad/SOURCE_MODULE/workflows/path/workflow.yaml'
|
||||
workflow-install: '{project-root}/bmad/THIS_MODULE/workflows/vendored/workflow.yaml'
|
||||
description: 'Command description'
|
||||
```
|
||||
|
||||
**What Happens:**
|
||||
|
||||
- During installation, workflows are copied from `workflow` to `workflow-install` location
|
||||
- Vendored workflows get `config_source` updated to reference this module's config
|
||||
- Compiled agent only references the `workflow-install` path
|
||||
- Module becomes fully standalone - no source module dependency required
|
||||
|
||||
**Use Cases:**
|
||||
|
||||
- Specialized modules that reuse common workflows with different configs
|
||||
- Domain-specific adaptations (e.g., game dev using standard dev workflows)
|
||||
- Testing workflows in isolation
|
||||
|
||||
**Benefits:**
|
||||
|
||||
- Module independence (no forced dependencies)
|
||||
- Clean namespace (workflows in your module)
|
||||
- Config isolation (use your module's settings)
|
||||
- Customization ready (modify vendored workflows freely)
|
||||
|
||||
## Installation Infrastructure
|
||||
|
||||
### Required: \_module-installer/install-config.yaml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,208 @@
|
|||
# BMad Game Development (BMGD)
|
||||
|
||||
A comprehensive game development toolkit providing specialized agents and workflows for creating games from initial concept through production.
|
||||
|
||||
## Overview
|
||||
|
||||
The BMGD module brings together game-specific development workflows organized around industry-standard development phases:
|
||||
|
||||
- **Preproduction** - Concept development, brainstorming, game brief creation
|
||||
- **Design** - Game Design Document (GDD) and narrative design
|
||||
- **Technical** - Game architecture and technical specifications
|
||||
- **Production** - Sprint-based implementation using BMM workflows
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
bmad install bmgd
|
||||
```
|
||||
|
||||
During installation, you'll be asked to configure:
|
||||
|
||||
- Game project name
|
||||
- Document storage locations
|
||||
- Development experience level
|
||||
- Primary target platform
|
||||
|
||||
## Components
|
||||
|
||||
### Agents (4)
|
||||
|
||||
**Game Designer** 🎨
|
||||
Creative vision and game design documentation specialist. Creates compelling GDDs and defines game mechanics.
|
||||
|
||||
**Game Developer** 🕹️
|
||||
Senior implementation specialist with expertise across Unity, Unreal, and custom engines. Handles gameplay programming, physics, AI, and optimization.
|
||||
|
||||
**Game Architect** 🏗️
|
||||
Technical systems and infrastructure expert. Designs scalable game architecture and engine-level solutions.
|
||||
|
||||
**Game Dev Scrum Master** 🎯
|
||||
Sprint orchestrator specialized in game development workflows. Coordinates multi-disciplinary teams and translates GDDs into actionable development stories.
|
||||
|
||||
### Team Bundle
|
||||
|
||||
**Team Game Development** 🎮
|
||||
Pre-configured team including Game Designer, Game Developer, and Game Architect for comprehensive game projects.
|
||||
|
||||
### Workflows
|
||||
|
||||
#### Phase 1: Preproduction
|
||||
|
||||
- **brainstorm-game** - Interactive game concept brainstorming
|
||||
- **game-brief** - Create focused game brief document
|
||||
|
||||
#### Phase 2: Design
|
||||
|
||||
- **gdd** - Generate comprehensive Game Design Document
|
||||
- **narrative** - Design narrative structure and story elements
|
||||
|
||||
#### Phase 3: Technical
|
||||
|
||||
- **game-architecture** - Define technical architecture (adapted from BMM architecture workflow)
|
||||
|
||||
#### Phase 4: Production
|
||||
|
||||
Production workflows are provided by the BMM module and accessible through the Game Dev Scrum Master agent:
|
||||
|
||||
- Sprint planning
|
||||
- Story creation and management
|
||||
- Epic technical specifications
|
||||
- Code review and retrospectives
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Start with Concept Development
|
||||
|
||||
```
|
||||
Load agent: game-designer
|
||||
Run workflow: brainstorm-game
|
||||
```
|
||||
|
||||
### 2. Create Game Brief
|
||||
|
||||
```
|
||||
Run workflow: game-brief
|
||||
```
|
||||
|
||||
### 3. Develop Game Design Document
|
||||
|
||||
```
|
||||
Run workflow: gdd
|
||||
```
|
||||
|
||||
### 4. Define Technical Architecture
|
||||
|
||||
```
|
||||
Load agent: game-architect
|
||||
Run workflow: game-architecture
|
||||
```
|
||||
|
||||
### 5. Begin Production Sprints
|
||||
|
||||
```
|
||||
Load agent: game-scrum-master
|
||||
Run: *sprint-planning
|
||||
```
|
||||
|
||||
## Module Structure
|
||||
|
||||
```
|
||||
bmgd/
|
||||
├── agents/
|
||||
│ ├── game-designer.agent.yaml
|
||||
│ ├── game-dev.agent.yaml
|
||||
│ ├── game-architect.agent.yaml
|
||||
│ └── game-scrum-master.agent.yaml
|
||||
├── teams/
|
||||
│ └── team-gamedev.yaml
|
||||
├── workflows/
|
||||
│ ├── 1-preproduction/
|
||||
│ │ ├── brainstorm-game/
|
||||
│ │ └── game-brief/
|
||||
│ ├── 2-design/
|
||||
│ │ ├── gdd/
|
||||
│ │ └── narrative/
|
||||
│ ├── 3-technical/
|
||||
│ │ └── game-architecture/
|
||||
│ └── 4-production/
|
||||
│ (Uses BMM workflows via cross-module references)
|
||||
├── templates/
|
||||
├── data/
|
||||
└── _module-installer/
|
||||
└── install-config.yaml
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
After installation, configure the module in `bmad/bmgd/config.yaml`
|
||||
|
||||
Key settings:
|
||||
|
||||
- **game_project_name** - Your game's working title
|
||||
- **game_design_docs** - Location for GDD and design documents
|
||||
- **game_tech_docs** - Location for technical documentation
|
||||
- **game_story_location** - Location for development user stories
|
||||
- **game_dev_experience** - Your experience level (affects agent communication)
|
||||
- **primary_platform** - Target platform (PC, mobile, console, web, multi-platform)
|
||||
|
||||
## Workflow Integration
|
||||
|
||||
BMGD leverages the BMM module for production/implementation workflows. The Game Dev Scrum Master agent provides access to:
|
||||
|
||||
- Sprint planning and management
|
||||
- Story creation from GDD specifications
|
||||
- Epic technical context generation
|
||||
- Code review workflows
|
||||
- Retrospectives and course correction
|
||||
|
||||
This separation allows BMGD to focus on game-specific design and architecture while using battle-tested agile implementation workflows.
|
||||
|
||||
## Example: Creating a 2D Platformer
|
||||
|
||||
1. **Brainstorm** concepts with `brainstorm-game` workflow
|
||||
2. **Define** the vision with `game-brief` workflow
|
||||
3. **Design** mechanics and progression with `gdd` workflow
|
||||
4. **Craft** character arcs and story with `narrative` workflow
|
||||
5. **Architect** technical systems with `game-architecture` workflow
|
||||
6. **Implement** via Game Dev Scrum Master sprint workflows
|
||||
|
||||
## Development Roadmap
|
||||
|
||||
### Phase 1: Core Enhancement
|
||||
|
||||
- [ ] Customize game-architecture workflow for game-specific patterns
|
||||
- [ ] Add game-specific templates (level design, character sheets, etc.)
|
||||
- [ ] Create asset pipeline workflows
|
||||
|
||||
### Phase 2: Expanded Features
|
||||
|
||||
- [ ] Add monetization planning workflows
|
||||
- [ ] Create playtesting and feedback workflows
|
||||
- [ ] Develop game balancing tools
|
||||
|
||||
### Phase 3: Platform Integration
|
||||
|
||||
- [ ] Add platform-specific deployment workflows
|
||||
- [ ] Create build and release automation
|
||||
- [ ] Develop live ops workflows
|
||||
|
||||
## Contributing
|
||||
|
||||
To extend this module:
|
||||
|
||||
1. Add new agents using `/bmad:bmb:workflows:create-agent`
|
||||
2. Add new workflows using `/bmad:bmb:workflows:create-workflow`
|
||||
3. Submit improvements via pull request
|
||||
|
||||
## Dependencies
|
||||
|
||||
- **BMM Module** - Required for production/implementation workflows
|
||||
|
||||
## Author
|
||||
|
||||
Extracted and refined from BMM module on 2025-11-05
|
||||
|
||||
## License
|
||||
|
||||
Part of the BMAD Method ecosystem
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
# BMad Game Dev Module Configuration
|
||||
|
||||
code: bmgd
|
||||
name: "BMGD: BMad Game Development"
|
||||
default_selected: false
|
||||
|
||||
prompt:
|
||||
- "Welcome to the BMad Game Development Module!"
|
||||
- "This module provides specialized agents and workflows for game creation,"
|
||||
- "from initial concept through production, covering all major game dev phases."
|
||||
- "All paths are relative to project root, with no leading slash."
|
||||
|
||||
# Core config values automatically inherited:
|
||||
## user_name
|
||||
## communication_language
|
||||
## document_output_language
|
||||
## output_folder
|
||||
|
||||
game_project_name:
|
||||
prompt: "What is the name of your game project?"
|
||||
default: "{directory_name}"
|
||||
result: "{value}"
|
||||
|
||||
game_design_docs:
|
||||
prompt: "Where should game design documents (GDD, narrative, etc.) be stored?"
|
||||
default: "docs/design"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
game_tech_docs:
|
||||
prompt: "Where should game technical documentation be stored?"
|
||||
default: "docs/technical"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
game_story_location:
|
||||
prompt: "Where should game development stories be stored?"
|
||||
default: "docs/stories"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
game_dev_experience:
|
||||
prompt: "What is your game development experience level?"
|
||||
default: "intermediate"
|
||||
result: "{value}"
|
||||
single-select:
|
||||
- value: "beginner"
|
||||
label: "Beginner - New to game development, provide detailed guidance"
|
||||
- value: "intermediate"
|
||||
label: "Intermediate - Familiar with game dev concepts, balanced approach"
|
||||
- value: "expert"
|
||||
label: "Expert - Experienced game developer, be direct and technical"
|
||||
|
||||
specified_framework:
|
||||
prompt: "Which game development framework or engine do you want to install support for?"
|
||||
default: "unity"
|
||||
result: "{value}"
|
||||
multi-select:
|
||||
- value: "unity"
|
||||
label: "Unity"
|
||||
- value: "unreal"
|
||||
label: "Unreal Engine"
|
||||
- value: "godot"
|
||||
label: "Godot"
|
||||
- value: "custom"
|
||||
label: "Custom / Other"
|
||||
|
||||
data_path:
|
||||
result: "{project-root}/bmad/bmgd/data"
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
agent:
|
||||
metadata:
|
||||
id: bmad/bmm/agents/game-architect.md
|
||||
id: bmad/bmgd/agents/game-architect.md
|
||||
name: Cloud Dragonborn
|
||||
title: Game Architect
|
||||
icon: 🏛️
|
||||
module: bmm
|
||||
module: bmgd
|
||||
|
||||
persona:
|
||||
role: Principal Game Systems Architect + Technical Director
|
||||
|
|
@ -18,18 +18,11 @@ agent:
|
|||
- Scalability means building for tomorrow without over-engineering today. Simplicity is the ultimate sophistication in system design.
|
||||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
description: Check workflow status and get recommendations
|
||||
|
||||
- trigger: correct-course
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/correct-course/workflow.yaml"
|
||||
description: Course Correction Analysis
|
||||
|
||||
- trigger: create-architecture
|
||||
workflow: "{project-root}/bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml"
|
||||
description: Produce a Scale Adaptive Architecture
|
||||
|
||||
- trigger: solutioning-gate-check
|
||||
workflow: "{project-root}/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml"
|
||||
description: Validate solutioning complete, ready for Phase 4 (Level 2-4 only)
|
||||
workflow: "{project-root}/bmad/bmgd/workflows/3-technical/game-architecture/workflow.yaml"
|
||||
description: Produce a Scale Adaptive Game Architecture
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
agent:
|
||||
metadata:
|
||||
id: bmad/bmm/agents/game-designer.md
|
||||
id: bmad/bmgd/agents/game-designer.md
|
||||
name: Samus Shepard
|
||||
title: Game Designer
|
||||
icon: 🎲
|
||||
module: bmm
|
||||
module: bmgd
|
||||
|
||||
persona:
|
||||
role: Lead Game Designer + Creative Vision Architect
|
||||
|
|
@ -18,30 +18,18 @@ agent:
|
|||
- Design is about making meaningful choices matter, creating moments of mastery, and respecting player time while delivering compelling challenge.
|
||||
|
||||
menu:
|
||||
- trigger: workflow-init
|
||||
workflow: "{project-root}/bmad/bmm/workflows/workflow-status/init/workflow.yaml"
|
||||
description: Start a new sequenced workflow path
|
||||
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
description: Check workflow status and get recommendations (START HERE!)
|
||||
|
||||
- trigger: brainstorm-game
|
||||
workflow: "{project-root}/bmad/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml"
|
||||
description: Guide me through Game Brainstorming
|
||||
workflow: "{project-root}/bmad/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml"
|
||||
description: 1. Guide me through Game Brainstorming
|
||||
|
||||
- trigger: create-game-brief
|
||||
workflow: "{project-root}/bmad/bmm/workflows/1-analysis/game-brief/workflow.yaml"
|
||||
description: Create Game Brief
|
||||
workflow: "{project-root}/bmad/bmgd/workflows/1-preproduction/game-brief/workflow.yaml"
|
||||
description: 3. Create Game Brief
|
||||
|
||||
- trigger: create-gdd
|
||||
workflow: "{project-root}/bmad/bmm/workflows/2-plan-workflows/gdd/workflow.yaml"
|
||||
description: Create Game Design Document (GDD)
|
||||
workflow: "{project-root}/bmad/bmgd/workflows/2-design/gdd/workflow.yaml"
|
||||
description: 4. Create Game Design Document (GDD)
|
||||
|
||||
- trigger: narrative
|
||||
workflow: "{project-root}/bmad/bmm/workflows/2-plan-workflows/narrative/workflow.yaml"
|
||||
description: Create Narrative Design Document (story-driven games)
|
||||
|
||||
- trigger: research
|
||||
workflow: "{project-root}/bmad/bmm/workflows/1-analysis/research/workflow.yaml"
|
||||
description: Conduct Game Market Research
|
||||
workflow: "{project-root}/bmad/bmgd/workflows/2-design/narrative/workflow.yaml"
|
||||
description: 5. Create Narrative Design Document (story-driven games)
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
agent:
|
||||
metadata:
|
||||
id: bmad/bmm/agents/game-dev.md
|
||||
id: bmad/bmgd/agents/game-dev.md
|
||||
name: Link Freeman
|
||||
title: Game Developer
|
||||
icon: 🕹️
|
||||
module: bmm
|
||||
module: bmgd
|
||||
|
||||
persona:
|
||||
role: Senior Game Developer + Technical Implementation Specialist
|
||||
|
|
@ -18,18 +18,17 @@ agent:
|
|||
- Clean architecture enables creativity - messy code kills innovation. Ship early, ship often, iterate based on player feedback.
|
||||
|
||||
menu:
|
||||
- trigger: workflow-status
|
||||
workflow: "{project-root}/bmad/bmm/workflows/workflow-status/workflow.yaml"
|
||||
description: "Check workflow status and get recommendations"
|
||||
|
||||
- trigger: develop-story
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/dev-story/workflow.yaml"
|
||||
description: "Execute Dev Story workflow, implementing tasks and tests, or performing updates to the story"
|
||||
|
||||
- trigger: story-done
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/story-done/workflow.yaml"
|
||||
description: "Mark story done after DoD complete"
|
||||
|
||||
- trigger: code-review
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/code-review/workflow.yaml"
|
||||
description: "Perform a thorough clean context QA code review on a story flagged Ready for Review"
|
||||
|
||||
- trigger: story-done
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/story-done/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/story-done/workflow.yaml"
|
||||
description: "Mark story done after DoD complete"
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
# Game Dev Scrum Master Agent Definition
|
||||
|
||||
agent:
|
||||
metadata:
|
||||
id: bmad/bmgd/agents/game-scrum-master.md
|
||||
name: Max
|
||||
title: Game Dev Scrum Master
|
||||
icon: 🎯
|
||||
module: bmgd
|
||||
|
||||
persona:
|
||||
role: Game Development Scrum Master + Sprint Orchestrator
|
||||
identity: Certified Scrum Master specializing in game development workflows. Expert in agile game development, story preparation for game features, and coordinating multi-disciplinary game teams (designers, developers, artists). Experienced in managing sprints across all game development phases from preproduction through production. Skilled at translating game design documents into actionable development stories.
|
||||
communication_style: Energetic and milestone-focused. I speak in game dev terminology and celebrate hitting development milestones like hitting save points in a tough level. Clear handoffs and structured preparation are my special abilities. I keep the team moving forward through each phase of development.
|
||||
principles:
|
||||
- I maintain clean separation between design specification and implementation, ensuring GDDs and Tech Specs flow smoothly into developer-ready user stories that capture the essence of gameplay features.
|
||||
- My commitment to iterative development means every sprint delivers playable increments, enabling rapid playtesting and feedback loops that keep the game fun.
|
||||
- I coordinate across disciplines - ensuring designers, developers, and architects are aligned on feature implementation and technical approach.
|
||||
|
||||
critical_actions:
|
||||
- "When running *create-story for game features, use GDD, Architecture, and Tech Spec to generate complete draft stories without elicitation, focusing on playable outcomes."
|
||||
|
||||
menu:
|
||||
- trigger: sprint-planning
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/sprint-planning/workflow.yaml"
|
||||
description: Generate or update sprint-status.yaml from epic files
|
||||
|
||||
- trigger: epic-tech-context
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/epic-tech-context/workflow.yaml"
|
||||
description: (Optional) Use the GDD and Architecture to create an Epic-Tech-Spec for a specific epic
|
||||
|
||||
- trigger: validate-epic-tech-context
|
||||
validate-workflow: "{project-root}/bmad/bmgd/workflows/4-production/epic-tech-context/workflow.yaml"
|
||||
description: (Optional) Validate latest Tech Spec against checklist
|
||||
|
||||
- trigger: create-story-draft
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/create-story/workflow.yaml"
|
||||
description: Create a Story Draft for a game feature
|
||||
|
||||
- trigger: validate-create-story
|
||||
validate-workflow: "{project-root}/bmad/bmgd/workflows/4-production/create-story/workflow.yaml"
|
||||
description: (Optional) Validate Story Draft with Independent Review
|
||||
|
||||
- trigger: story-context
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/story-context/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/story-context/workflow.yaml"
|
||||
description: (Optional) Assemble dynamic Story Context (XML) from latest docs and code and mark story ready for dev
|
||||
|
||||
- trigger: validate-story-context
|
||||
validate-workflow: "{project-root}/bmad/bmgd/workflows/4-production/story-context/workflow.yaml"
|
||||
description: (Optional) Validate latest Story Context XML against checklist
|
||||
|
||||
- trigger: story-ready-for-dev
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/story-ready/workflow.yaml"
|
||||
description: (Optional) Mark drafted story ready for dev without generating Story Context
|
||||
|
||||
- trigger: epic-retrospective
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/retrospective/workflow.yaml"
|
||||
data: "{project-root}/bmad/_cfg/agent-manifest.csv"
|
||||
description: (Optional) Facilitate team retrospective after a game development epic is completed
|
||||
|
||||
- trigger: correct-course
|
||||
workflow: "{project-root}/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml"
|
||||
workflow-install: "{project-root}/bmad/bmgd/workflows/4-production/correct-course/workflow.yaml"
|
||||
description: (Optional) Navigate significant changes during game dev sprint
|
||||
|
|
@ -2,13 +2,15 @@
|
|||
bundle:
|
||||
name: Team Game Development
|
||||
icon: 🎮
|
||||
description: Specialized game development team including Game Designer (creative vision and GDD), Game Developer (implementation and code), and Game Architect (technical systems and infrastructure). Perfect for game projects across all scales and platforms.
|
||||
description: Specialized game development team including Game Designer (creative vision and GDD), Game Developer (implementation and code), Game Architect (technical systems and infrastructure), and Game Dev Scrum Master (sprint coordination). Perfect for game projects across all scales and platforms.
|
||||
agents:
|
||||
- game-designer
|
||||
- game-dev
|
||||
- game-architect
|
||||
- game-scrum-master
|
||||
|
||||
workflows:
|
||||
- brainstorm-game
|
||||
- game-brief
|
||||
- gdd
|
||||
- narrative
|
||||
|
|
@ -4,16 +4,16 @@ description: "Facilitate game brainstorming sessions by orchestrating the CIS br
|
|||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/bmad/bmm/config.yaml"
|
||||
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}:user_skill_level"
|
||||
game_dev_experience: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/1-analysis/brainstorm-game"
|
||||
installed_path: "{project-root}/bmad/bmgd/workflows/1-preproduction/brainstorm-game"
|
||||
template: false
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
|
||||
|
|
@ -30,12 +30,12 @@ web_bundle:
|
|||
name: "brainstorm-game"
|
||||
description: "Facilitate game brainstorming sessions by orchestrating the CIS brainstorming workflow with game-specific context, guidance, and additional game design techniques."
|
||||
author: "BMad"
|
||||
instructions: "bmad/bmm/workflows/1-analysis/brainstorm-game/instructions.md"
|
||||
instructions: "bmad/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md"
|
||||
template: false
|
||||
web_bundle_files:
|
||||
- "bmad/bmm/workflows/1-analysis/brainstorm-game/instructions.md"
|
||||
- "bmad/bmm/workflows/1-analysis/brainstorm-game/game-context.md"
|
||||
- "bmad/bmm/workflows/1-analysis/brainstorm-game/game-brain-methods.csv"
|
||||
- "bmad/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md"
|
||||
- "bmad/bmgd/workflows/1-preproduction/brainstorm-game/game-context.md"
|
||||
- "bmad/bmgd/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv"
|
||||
- "bmad/core/workflows/brainstorming/workflow.yaml"
|
||||
existing_workflows:
|
||||
- core_brainstorming: "bmad/core/workflows/brainstorming/workflow.yaml"
|
||||
|
|
@ -4,12 +4,12 @@ description: "Interactive game brief creation workflow that guides users through
|
|||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/bmad/bmm/config.yaml"
|
||||
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}:user_skill_level"
|
||||
game_dev_experience: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Optional input documents
|
||||
|
|
@ -21,7 +21,7 @@ recommended_inputs:
|
|||
- reference_games: "List of inspiration games (optional)"
|
||||
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/1-analysis/game-brief"
|
||||
installed_path: "{project-root}/bmad/bmgd/workflows/1-preproduction/game-brief"
|
||||
template: "{installed_path}/template.md"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
|
@ -35,10 +35,10 @@ web_bundle:
|
|||
name: "game-brief"
|
||||
description: "Interactive game brief creation workflow that guides users through defining their game vision with multiple input sources and conversational collaboration"
|
||||
author: "BMad"
|
||||
instructions: "bmad/bmm/workflows/1-analysis/game-brief/instructions.md"
|
||||
validation: "bmad/bmm/workflows/1-analysis/game-brief/checklist.md"
|
||||
template: "bmad/bmm/workflows/1-analysis/game-brief/template.md"
|
||||
instructions: "bmad/bmgd/workflows/1-preproduction/game-brief/instructions.md"
|
||||
validation: "bmad/bmgd/workflows/1-preproduction/game-brief/checklist.md"
|
||||
template: "bmad/bmgd/workflows/1-preproduction/game-brief/template.md"
|
||||
web_bundle_files:
|
||||
- "bmad/bmm/workflows/1-analysis/game-brief/instructions.md"
|
||||
- "bmad/bmm/workflows/1-analysis/game-brief/checklist.md"
|
||||
- "bmad/bmm/workflows/1-analysis/game-brief/template.md"
|
||||
- "bmad/bmgd/workflows/1-preproduction/game-brief/instructions.md"
|
||||
- "bmad/bmgd/workflows/1-preproduction/game-brief/checklist.md"
|
||||
- "bmad/bmgd/workflows/1-preproduction/game-brief/template.md"
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
# Game Design Document (GDD) Workflow
|
||||
name: gdd
|
||||
description: "Game Design Document workflow for all game project levels - from small prototypes to full AAA games. Generates comprehensive GDD with game mechanics, systems, progression, and implementation guidance."
|
||||
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"
|
||||
game_dev_experience: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmgd/workflows/2-design/gdd"
|
||||
instructions: "{installed_path}/instructions-gdd.md"
|
||||
template: "{installed_path}/gdd-template.md"
|
||||
game_types_csv: "{installed_path}/game-types.csv"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/GDD.md"
|
||||
|
||||
# Game type references (loaded based on game type selection)
|
||||
game_type_guides: "{installed_path}/game-types/"
|
||||
|
||||
# Recommended input documents
|
||||
recommended_inputs:
|
||||
- game_brief: "{output_folder}/game-brief.md"
|
||||
- narrative_design: "{output_folder}/narrative-design.md"
|
||||
- market_research: "{output_folder}/market-research.md"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
input_file_patterns:
|
||||
game_brief:
|
||||
whole: "{output_folder}/*game-brief*.md"
|
||||
sharded: "{output_folder}/*game-brief*/index.md"
|
||||
|
||||
research:
|
||||
whole: "{output_folder}/*research*.md"
|
||||
sharded: "{output_folder}/*research*/index.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle:
|
||||
name: "gdd"
|
||||
description: "Game Design Document workflow for all game project levels - from small prototypes to full AAA games. Generates comprehensive GDD with game mechanics, systems, progression, and implementation guidance."
|
||||
author: "BMad"
|
||||
instructions: "bmad/bmgd/workflows/2-design/gdd/instructions-gdd.md"
|
||||
web_bundle_files:
|
||||
- "bmad/bmgd/workflows/2-design/gdd/instructions-gdd.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/gdd-template.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types.csv"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/action-platformer.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/adventure.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/card-game.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/fighting.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/horror.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/idle-incremental.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/metroidvania.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/moba.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/party-game.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/puzzle.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/racing.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/rhythm.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/roguelike.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/rpg.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/sandbox.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/shooter.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/simulation.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/sports.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/strategy.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/survival.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/text-based.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/tower-defense.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/turn-based-tactics.md"
|
||||
- "bmad/bmgd/workflows/2-design/gdd/game-types/visual-novel.md"
|
||||
|
|
@ -4,16 +4,16 @@ description: "Narrative design workflow for story-driven games and applications.
|
|||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/bmad/bmm/config.yaml"
|
||||
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}:user_skill_level"
|
||||
game_dev_experience: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/2-plan-workflows/narrative"
|
||||
installed_path: "{project-root}/bmad/bmgd/workflows/2-design/narrative"
|
||||
instructions: "{installed_path}/instructions-narrative.md"
|
||||
template: "{installed_path}/narrative-template.md"
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ web_bundle:
|
|||
name: "narrative"
|
||||
description: "Narrative design workflow for story-driven games and applications. Creates comprehensive narrative documentation including story structure, character arcs, dialogue systems, and narrative implementation guidance."
|
||||
author: "BMad"
|
||||
instructions: "bmad/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md"
|
||||
instructions: "bmad/bmgd/workflows/2-design/narrative/instructions-narrative.md"
|
||||
web_bundle_files:
|
||||
- "bmad/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/narrative/narrative-template.md"
|
||||
- "bmad/bmgd/workflows/2-design/narrative/instructions-narrative.md"
|
||||
- "bmad/bmgd/workflows/2-design/narrative/narrative-template.md"
|
||||
|
|
@ -0,0 +1,347 @@
|
|||
# Architecture Patterns - Common patterns identified from requirements
|
||||
|
||||
requirement_patterns:
|
||||
realtime_collaboration:
|
||||
triggers:
|
||||
- "real-time"
|
||||
- "collaborative"
|
||||
- "live updates"
|
||||
- "multi-user"
|
||||
- "simultaneous editing"
|
||||
decisions_needed:
|
||||
- websocket_solution
|
||||
- conflict_resolution
|
||||
- state_synchronization
|
||||
- presence_tracking
|
||||
- optimistic_updates
|
||||
suggested_stack:
|
||||
- "Socket.io or WebSocket native"
|
||||
- "Redis for pub/sub"
|
||||
- "Operational Transforms or CRDTs for conflict resolution"
|
||||
- "PostgreSQL for persistence"
|
||||
|
||||
ecommerce:
|
||||
triggers:
|
||||
- "shopping cart"
|
||||
- "checkout"
|
||||
- "payments"
|
||||
- "inventory"
|
||||
- "product catalog"
|
||||
decisions_needed:
|
||||
- payment_processor
|
||||
- cart_persistence
|
||||
- inventory_management
|
||||
- order_workflow
|
||||
- tax_calculation
|
||||
suggested_stack:
|
||||
- "Stripe or PayPal for payments"
|
||||
- "PostgreSQL for products and orders"
|
||||
- "Redis for cart sessions"
|
||||
- "BullMQ for order processing"
|
||||
|
||||
saas_platform:
|
||||
triggers:
|
||||
- "multi-tenant"
|
||||
- "subscription"
|
||||
- "billing"
|
||||
- "team management"
|
||||
- "roles and permissions"
|
||||
decisions_needed:
|
||||
- tenancy_model
|
||||
- subscription_billing
|
||||
- permission_system
|
||||
- team_collaboration
|
||||
- usage_tracking
|
||||
suggested_stack:
|
||||
- "PostgreSQL with Row Level Security"
|
||||
- "Stripe Billing for subscriptions"
|
||||
- "RBAC or ABAC for permissions"
|
||||
- "NextAuth or Clerk for auth"
|
||||
|
||||
content_platform:
|
||||
triggers:
|
||||
- "CMS"
|
||||
- "blog"
|
||||
- "publishing"
|
||||
- "content management"
|
||||
- "editorial workflow"
|
||||
decisions_needed:
|
||||
- content_storage
|
||||
- rich_text_editor
|
||||
- media_handling
|
||||
- version_control
|
||||
- publishing_workflow
|
||||
suggested_stack:
|
||||
- "PostgreSQL for structured content"
|
||||
- "S3 or Cloudinary for media"
|
||||
- "Tiptap or Slate for rich text"
|
||||
- "Algolia for search"
|
||||
|
||||
data_analytics:
|
||||
triggers:
|
||||
- "dashboards"
|
||||
- "reporting"
|
||||
- "metrics"
|
||||
- "analytics"
|
||||
- "data visualization"
|
||||
decisions_needed:
|
||||
- data_warehouse
|
||||
- etl_pipeline
|
||||
- visualization_library
|
||||
- query_optimization
|
||||
- caching_strategy
|
||||
suggested_stack:
|
||||
- "PostgreSQL or ClickHouse"
|
||||
- "Apache Airflow or Temporal for ETL"
|
||||
- "Chart.js or D3 for visualization"
|
||||
- "Redis for query caching"
|
||||
|
||||
social_platform:
|
||||
triggers:
|
||||
- "social network"
|
||||
- "feed"
|
||||
- "following"
|
||||
- "likes"
|
||||
- "comments"
|
||||
decisions_needed:
|
||||
- graph_relationships
|
||||
- feed_algorithm
|
||||
- notification_system
|
||||
- content_moderation
|
||||
- privacy_controls
|
||||
suggested_stack:
|
||||
- "PostgreSQL with graph extensions or Neo4j"
|
||||
- "Redis for feed caching"
|
||||
- "Elasticsearch for user search"
|
||||
- "WebSockets for notifications"
|
||||
|
||||
marketplace:
|
||||
triggers:
|
||||
- "marketplace"
|
||||
- "vendors"
|
||||
- "buyers and sellers"
|
||||
- "transactions"
|
||||
- "escrow"
|
||||
decisions_needed:
|
||||
- payment_splitting
|
||||
- escrow_handling
|
||||
- vendor_management
|
||||
- dispute_resolution
|
||||
- commission_model
|
||||
suggested_stack:
|
||||
- "Stripe Connect for payments"
|
||||
- "PostgreSQL for transactions"
|
||||
- "BullMQ for async processing"
|
||||
- "S3 for vendor assets"
|
||||
|
||||
streaming_platform:
|
||||
triggers:
|
||||
- "video streaming"
|
||||
- "live streaming"
|
||||
- "media delivery"
|
||||
- "broadcast"
|
||||
decisions_needed:
|
||||
- video_encoding
|
||||
- cdn_strategy
|
||||
- streaming_protocol
|
||||
- bandwidth_optimization
|
||||
- drm_protection
|
||||
suggested_stack:
|
||||
- "AWS MediaConvert or Mux"
|
||||
- "CloudFront or Fastly CDN"
|
||||
- "HLS or DASH protocol"
|
||||
- "S3 for video storage"
|
||||
|
||||
iot_platform:
|
||||
triggers:
|
||||
- "IoT"
|
||||
- "sensors"
|
||||
- "device management"
|
||||
- "telemetry"
|
||||
- "edge computing"
|
||||
decisions_needed:
|
||||
- message_protocol
|
||||
- time_series_database
|
||||
- device_authentication
|
||||
- data_ingestion
|
||||
- edge_processing
|
||||
suggested_stack:
|
||||
- "MQTT or CoAP protocol"
|
||||
- "TimescaleDB or InfluxDB"
|
||||
- "Apache Kafka for ingestion"
|
||||
- "Grafana for monitoring"
|
||||
|
||||
ai_application:
|
||||
triggers:
|
||||
- "machine learning"
|
||||
- "AI features"
|
||||
- "LLM integration"
|
||||
- "computer vision"
|
||||
- "NLP"
|
||||
decisions_needed:
|
||||
- model_serving
|
||||
- vector_database
|
||||
- prompt_management
|
||||
- token_optimization
|
||||
- fallback_strategy
|
||||
suggested_stack:
|
||||
- "OpenAI or Anthropic API"
|
||||
- "Pinecone or pgvector for embeddings"
|
||||
- "Redis for prompt caching"
|
||||
- "Langchain or LlamaIndex"
|
||||
|
||||
# Quality attribute patterns
|
||||
quality_attributes:
|
||||
high_availability:
|
||||
triggers:
|
||||
- "99.9% uptime"
|
||||
- "high availability"
|
||||
- "fault tolerance"
|
||||
- "disaster recovery"
|
||||
architectural_needs:
|
||||
- load_balancing
|
||||
- database_replication
|
||||
- health_checks
|
||||
- circuit_breakers
|
||||
- graceful_degradation
|
||||
|
||||
high_performance:
|
||||
triggers:
|
||||
- "millisecond response"
|
||||
- "high throughput"
|
||||
- "low latency"
|
||||
- "performance critical"
|
||||
architectural_needs:
|
||||
- caching_layers
|
||||
- database_optimization
|
||||
- cdn_strategy
|
||||
- code_splitting
|
||||
- lazy_loading
|
||||
|
||||
high_security:
|
||||
triggers:
|
||||
- "compliance"
|
||||
- "HIPAA"
|
||||
- "GDPR"
|
||||
- "financial data"
|
||||
- "PCI DSS"
|
||||
architectural_needs:
|
||||
- encryption_at_rest
|
||||
- encryption_in_transit
|
||||
- audit_logging
|
||||
- access_controls
|
||||
- data_isolation
|
||||
|
||||
scalability:
|
||||
triggers:
|
||||
- "millions of users"
|
||||
- "elastic scale"
|
||||
- "global reach"
|
||||
- "viral growth"
|
||||
architectural_needs:
|
||||
- horizontal_scaling
|
||||
- database_sharding
|
||||
- microservices
|
||||
- queue_systems
|
||||
- auto_scaling
|
||||
|
||||
# Integration patterns
|
||||
integration_requirements:
|
||||
payment_processing:
|
||||
common_choices:
|
||||
- "Stripe - most developer friendly"
|
||||
- "PayPal - widest consumer adoption"
|
||||
- "Square - best for in-person + online"
|
||||
considerations:
|
||||
- transaction_fees
|
||||
- international_support
|
||||
- subscription_handling
|
||||
- marketplace_capabilities
|
||||
|
||||
email_service:
|
||||
common_choices:
|
||||
- "Resend - modern, developer friendly"
|
||||
- "SendGrid - mature, scalable"
|
||||
- "Amazon SES - cost effective at scale"
|
||||
- "Postmark - transactional focus"
|
||||
considerations:
|
||||
- deliverability
|
||||
- template_management
|
||||
- analytics_needs
|
||||
- cost_per_email
|
||||
|
||||
sms_notifications:
|
||||
common_choices:
|
||||
- "Twilio - most comprehensive"
|
||||
- "Amazon SNS - AWS integrated"
|
||||
- "Vonage - competitive pricing"
|
||||
considerations:
|
||||
- international_coverage
|
||||
- delivery_rates
|
||||
- two_way_messaging
|
||||
- cost_per_message
|
||||
|
||||
authentication_providers:
|
||||
social_providers:
|
||||
- "Google - highest adoption"
|
||||
- "GitHub - developer focused"
|
||||
- "Microsoft - enterprise"
|
||||
- "Apple - iOS users"
|
||||
enterprise_providers:
|
||||
- "SAML 2.0"
|
||||
- "OAuth 2.0"
|
||||
- "OpenID Connect"
|
||||
- "Active Directory"
|
||||
|
||||
# Decision heuristics
|
||||
decision_rules:
|
||||
database_selection:
|
||||
if_requirements_include:
|
||||
- complex_relationships: "PostgreSQL"
|
||||
- flexible_schema: "MongoDB"
|
||||
- time_series: "TimescaleDB"
|
||||
- graph_data: "Neo4j or PostgreSQL with extensions"
|
||||
- key_value: "Redis"
|
||||
- wide_column: "Cassandra"
|
||||
|
||||
api_pattern_selection:
|
||||
if_requirements_include:
|
||||
- simple_crud: "REST"
|
||||
- complex_queries: "GraphQL"
|
||||
- type_safety_critical: "tRPC"
|
||||
- microservices: "gRPC"
|
||||
- public_api: "REST with OpenAPI"
|
||||
|
||||
deployment_selection:
|
||||
if_requirements_include:
|
||||
- nextjs_only: "Vercel"
|
||||
- complex_infrastructure: "AWS"
|
||||
- quick_prototype: "Railway"
|
||||
- global_edge: "Fly.io"
|
||||
- kubernetes_needed: "GCP or AWS EKS"
|
||||
|
||||
# Anti-patterns to avoid
|
||||
anti_patterns:
|
||||
overengineering:
|
||||
signs:
|
||||
- "Microservices for < 10k users"
|
||||
- "Kubernetes for single app"
|
||||
- "GraphQL for 5 endpoints"
|
||||
- "Event sourcing for CRUD app"
|
||||
recommendation: "Start simple, evolve as needed"
|
||||
|
||||
underengineering:
|
||||
signs:
|
||||
- "No authentication strategy"
|
||||
- "No error handling plan"
|
||||
- "No monitoring approach"
|
||||
- "No backup strategy"
|
||||
recommendation: "Cover the fundamentals"
|
||||
|
||||
technology_soup:
|
||||
signs:
|
||||
- "5+ different databases"
|
||||
- "Multiple frontend frameworks"
|
||||
- "Inconsistent patterns"
|
||||
- "Too many languages"
|
||||
recommendation: "Maintain consistency"
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
# Architecture
|
||||
|
||||
## Executive Summary
|
||||
|
||||
{{executive_summary}}
|
||||
|
||||
{{project_initialization_section}}
|
||||
|
||||
## Decision Summary
|
||||
|
||||
| Category | Decision | Version | Affects Epics | Rationale |
|
||||
| -------- | -------- | ------- | ------------- | --------- |
|
||||
|
||||
{{decision_table_rows}}
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
{{project_root}}/
|
||||
{{source_tree}}
|
||||
```
|
||||
|
||||
## Epic to Architecture Mapping
|
||||
|
||||
{{epic_mapping_table}}
|
||||
|
||||
## Technology Stack Details
|
||||
|
||||
### Core Technologies
|
||||
|
||||
{{core_stack_details}}
|
||||
|
||||
### Integration Points
|
||||
|
||||
{{integration_details}}
|
||||
|
||||
{{novel_pattern_designs_section}}
|
||||
|
||||
## Implementation Patterns
|
||||
|
||||
These patterns ensure consistent implementation across all AI agents:
|
||||
|
||||
{{implementation_patterns}}
|
||||
|
||||
## Consistency Rules
|
||||
|
||||
### Naming Conventions
|
||||
|
||||
{{naming_conventions}}
|
||||
|
||||
### Code Organization
|
||||
|
||||
{{code_organization_patterns}}
|
||||
|
||||
### Error Handling
|
||||
|
||||
{{error_handling_approach}}
|
||||
|
||||
### Logging Strategy
|
||||
|
||||
{{logging_approach}}
|
||||
|
||||
## Data Architecture
|
||||
|
||||
{{data_models_and_relationships}}
|
||||
|
||||
## API Contracts
|
||||
|
||||
{{api_specifications}}
|
||||
|
||||
## Security Architecture
|
||||
|
||||
{{security_approach}}
|
||||
|
||||
## Performance Considerations
|
||||
|
||||
{{performance_strategies}}
|
||||
|
||||
## Deployment Architecture
|
||||
|
||||
{{deployment_approach}}
|
||||
|
||||
## Development Environment
|
||||
|
||||
### Prerequisites
|
||||
|
||||
{{development_prerequisites}}
|
||||
|
||||
### Setup Commands
|
||||
|
||||
```bash
|
||||
{{setup_commands}}
|
||||
```
|
||||
|
||||
## Architecture Decision Records (ADRs)
|
||||
|
||||
{{key_architecture_decisions}}
|
||||
|
||||
---
|
||||
|
||||
_Generated by BMAD Decision Architecture Workflow v1.0_
|
||||
_Date: {{date}}_
|
||||
_For: {{user_name}}_
|
||||
|
|
@ -0,0 +1,244 @@
|
|||
# Architecture Document Validation Checklist
|
||||
|
||||
**Purpose**: Validate the architecture document itself is complete, implementable, and provides clear guidance for AI agents.
|
||||
|
||||
**Note**: This checklist validates the ARCHITECTURE DOCUMENT only. For cross-workflow validation (PRD → Architecture → Stories alignment), use the solutioning-gate-check workflow.
|
||||
|
||||
---
|
||||
|
||||
## 1. Decision Completeness
|
||||
|
||||
### All Decisions Made
|
||||
|
||||
- [ ] Every critical decision category has been resolved
|
||||
- [ ] All important decision categories addressed
|
||||
- [ ] No placeholder text like "TBD", "[choose]", or "{TODO}" remains
|
||||
- [ ] Optional decisions either resolved or explicitly deferred with rationale
|
||||
|
||||
### Decision Coverage
|
||||
|
||||
- [ ] Data persistence approach decided
|
||||
- [ ] API pattern chosen
|
||||
- [ ] Authentication/authorization strategy defined
|
||||
- [ ] Deployment target selected
|
||||
- [ ] All functional requirements have architectural support
|
||||
|
||||
---
|
||||
|
||||
## 2. Version Specificity
|
||||
|
||||
### Technology Versions
|
||||
|
||||
- [ ] Every technology choice includes a specific version number
|
||||
- [ ] Version numbers are current (verified via WebSearch, not hardcoded)
|
||||
- [ ] Compatible versions selected (e.g., Node.js version supports chosen packages)
|
||||
- [ ] Verification dates noted for version checks
|
||||
|
||||
### Version Verification Process
|
||||
|
||||
- [ ] WebSearch used during workflow to verify current versions
|
||||
- [ ] No hardcoded versions from decision catalog trusted without verification
|
||||
- [ ] LTS vs. latest versions considered and documented
|
||||
- [ ] Breaking changes between versions noted if relevant
|
||||
|
||||
---
|
||||
|
||||
## 3. Starter Template Integration (if applicable)
|
||||
|
||||
### Template Selection
|
||||
|
||||
- [ ] Starter template chosen (or "from scratch" decision documented)
|
||||
- [ ] Project initialization command documented with exact flags
|
||||
- [ ] Starter template version is current and specified
|
||||
- [ ] Command search term provided for verification
|
||||
|
||||
### Starter-Provided Decisions
|
||||
|
||||
- [ ] Decisions provided by starter marked as "PROVIDED BY STARTER"
|
||||
- [ ] List of what starter provides is complete
|
||||
- [ ] Remaining decisions (not covered by starter) clearly identified
|
||||
- [ ] No duplicate decisions that starter already makes
|
||||
|
||||
---
|
||||
|
||||
## 4. Novel Pattern Design (if applicable)
|
||||
|
||||
### Pattern Detection
|
||||
|
||||
- [ ] All unique/novel concepts from PRD identified
|
||||
- [ ] Patterns that don't have standard solutions documented
|
||||
- [ ] Multi-epic workflows requiring custom design captured
|
||||
|
||||
### Pattern Documentation Quality
|
||||
|
||||
- [ ] Pattern name and purpose clearly defined
|
||||
- [ ] Component interactions specified
|
||||
- [ ] Data flow documented (with sequence diagrams if complex)
|
||||
- [ ] Implementation guide provided for agents
|
||||
- [ ] Edge cases and failure modes considered
|
||||
- [ ] States and transitions clearly defined
|
||||
|
||||
### Pattern Implementability
|
||||
|
||||
- [ ] Pattern is implementable by AI agents with provided guidance
|
||||
- [ ] No ambiguous decisions that could be interpreted differently
|
||||
- [ ] Clear boundaries between components
|
||||
- [ ] Explicit integration points with standard patterns
|
||||
|
||||
---
|
||||
|
||||
## 5. Implementation Patterns
|
||||
|
||||
### Pattern Categories Coverage
|
||||
|
||||
- [ ] **Naming Patterns**: API routes, database tables, components, files
|
||||
- [ ] **Structure Patterns**: Test organization, component organization, shared utilities
|
||||
- [ ] **Format Patterns**: API responses, error formats, date handling
|
||||
- [ ] **Communication Patterns**: Events, state updates, inter-component messaging
|
||||
- [ ] **Lifecycle Patterns**: Loading states, error recovery, retry logic
|
||||
- [ ] **Location Patterns**: URL structure, asset organization, config placement
|
||||
- [ ] **Consistency Patterns**: UI date formats, logging, user-facing errors
|
||||
|
||||
### Pattern Quality
|
||||
|
||||
- [ ] Each pattern has concrete examples
|
||||
- [ ] Conventions are unambiguous (agents can't interpret differently)
|
||||
- [ ] Patterns cover all technologies in the stack
|
||||
- [ ] No gaps where agents would have to guess
|
||||
- [ ] Implementation patterns don't conflict with each other
|
||||
|
||||
---
|
||||
|
||||
## 6. Technology Compatibility
|
||||
|
||||
### Stack Coherence
|
||||
|
||||
- [ ] Database choice compatible with ORM choice
|
||||
- [ ] Frontend framework compatible with deployment target
|
||||
- [ ] Authentication solution works with chosen frontend/backend
|
||||
- [ ] All API patterns consistent (not mixing REST and GraphQL for same data)
|
||||
- [ ] Starter template compatible with additional choices
|
||||
|
||||
### Integration Compatibility
|
||||
|
||||
- [ ] Third-party services compatible with chosen stack
|
||||
- [ ] Real-time solutions (if any) work with deployment target
|
||||
- [ ] File storage solution integrates with framework
|
||||
- [ ] Background job system compatible with infrastructure
|
||||
|
||||
---
|
||||
|
||||
## 7. Document Structure
|
||||
|
||||
### Required Sections Present
|
||||
|
||||
- [ ] Executive summary exists (2-3 sentences maximum)
|
||||
- [ ] Project initialization section (if using starter template)
|
||||
- [ ] Decision summary table with ALL required columns:
|
||||
- Category
|
||||
- Decision
|
||||
- Version
|
||||
- Rationale
|
||||
- [ ] Project structure section shows complete source tree
|
||||
- [ ] Implementation patterns section comprehensive
|
||||
- [ ] Novel patterns section (if applicable)
|
||||
|
||||
### Document Quality
|
||||
|
||||
- [ ] Source tree reflects actual technology decisions (not generic)
|
||||
- [ ] Technical language used consistently
|
||||
- [ ] Tables used instead of prose where appropriate
|
||||
- [ ] No unnecessary explanations or justifications
|
||||
- [ ] Focused on WHAT and HOW, not WHY (rationale is brief)
|
||||
|
||||
---
|
||||
|
||||
## 8. AI Agent Clarity
|
||||
|
||||
### Clear Guidance for Agents
|
||||
|
||||
- [ ] No ambiguous decisions that agents could interpret differently
|
||||
- [ ] Clear boundaries between components/modules
|
||||
- [ ] Explicit file organization patterns
|
||||
- [ ] Defined patterns for common operations (CRUD, auth checks, etc.)
|
||||
- [ ] Novel patterns have clear implementation guidance
|
||||
- [ ] Document provides clear constraints for agents
|
||||
- [ ] No conflicting guidance present
|
||||
|
||||
### Implementation Readiness
|
||||
|
||||
- [ ] Sufficient detail for agents to implement without guessing
|
||||
- [ ] File paths and naming conventions explicit
|
||||
- [ ] Integration points clearly defined
|
||||
- [ ] Error handling patterns specified
|
||||
- [ ] Testing patterns documented
|
||||
|
||||
---
|
||||
|
||||
## 9. Practical Considerations
|
||||
|
||||
### Technology Viability
|
||||
|
||||
- [ ] Chosen stack has good documentation and community support
|
||||
- [ ] Development environment can be set up with specified versions
|
||||
- [ ] No experimental or alpha technologies for critical path
|
||||
- [ ] Deployment target supports all chosen technologies
|
||||
- [ ] Starter template (if used) is stable and well-maintained
|
||||
|
||||
### Scalability
|
||||
|
||||
- [ ] Architecture can handle expected user load
|
||||
- [ ] Data model supports expected growth
|
||||
- [ ] Caching strategy defined if performance is critical
|
||||
- [ ] Background job processing defined if async work needed
|
||||
- [ ] Novel patterns scalable for production use
|
||||
|
||||
---
|
||||
|
||||
## 10. Common Issues to Check
|
||||
|
||||
### Beginner Protection
|
||||
|
||||
- [ ] Not overengineered for actual requirements
|
||||
- [ ] Standard patterns used where possible (starter templates leveraged)
|
||||
- [ ] Complex technologies justified by specific needs
|
||||
- [ ] Maintenance complexity appropriate for team size
|
||||
|
||||
### Expert Validation
|
||||
|
||||
- [ ] No obvious anti-patterns present
|
||||
- [ ] Performance bottlenecks addressed
|
||||
- [ ] Security best practices followed
|
||||
- [ ] Future migration paths not blocked
|
||||
- [ ] Novel patterns follow architectural principles
|
||||
|
||||
---
|
||||
|
||||
## Validation Summary
|
||||
|
||||
### Document Quality Score
|
||||
|
||||
- Architecture Completeness: [Complete / Mostly Complete / Partial / Incomplete]
|
||||
- Version Specificity: [All Verified / Most Verified / Some Missing / Many Missing]
|
||||
- Pattern Clarity: [Crystal Clear / Clear / Somewhat Ambiguous / Ambiguous]
|
||||
- AI Agent Readiness: [Ready / Mostly Ready / Needs Work / Not Ready]
|
||||
|
||||
### Critical Issues Found
|
||||
|
||||
- [ ] Issue 1: **\*\***\_\_\_**\*\***
|
||||
- [ ] Issue 2: **\*\***\_\_\_**\*\***
|
||||
- [ ] Issue 3: **\*\***\_\_\_**\*\***
|
||||
|
||||
### Recommended Actions Before Implementation
|
||||
|
||||
1. ***
|
||||
2. ***
|
||||
3. ***
|
||||
|
||||
---
|
||||
|
||||
**Next Step**: Run the **solutioning-gate-check** workflow to validate alignment between PRD, Architecture, and Stories before beginning implementation.
|
||||
|
||||
---
|
||||
|
||||
_This checklist validates architecture document quality only. Use solutioning-gate-check for comprehensive readiness validation._
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
# Decision Catalog - Composability knowledge for architectural decisions
|
||||
# This provides RELATIONSHIPS and WORKFLOW LOGIC, not generic tech knowledge
|
||||
#
|
||||
# ⚠️ CRITICAL: All version/feature info MUST be verified via WebSearch during workflow
|
||||
# This file only provides: triggers, relationships (pairs_with), and opinionated stacks
|
||||
|
||||
decision_categories:
|
||||
data_persistence:
|
||||
triggers: ["database", "storage", "data model", "persistence", "state management"]
|
||||
importance: "critical"
|
||||
affects: "most epics"
|
||||
options:
|
||||
postgresql:
|
||||
pairs_with: ["Prisma ORM", "TypeORM", "Drizzle", "node-postgres"]
|
||||
mongodb:
|
||||
pairs_with: ["Mongoose", "Prisma", "MongoDB driver"]
|
||||
redis:
|
||||
pairs_with: ["ioredis", "node-redis"]
|
||||
supabase:
|
||||
pairs_with: ["@supabase/supabase-js"]
|
||||
firebase:
|
||||
pairs_with: ["firebase-admin"]
|
||||
|
||||
api_pattern:
|
||||
triggers: ["API", "client communication", "frontend backend", "service communication"]
|
||||
importance: "critical"
|
||||
affects: "all client-facing epics"
|
||||
options:
|
||||
rest:
|
||||
pairs_with: ["Express", "Fastify", "NestJS", "Hono"]
|
||||
graphql:
|
||||
pairs_with: ["Apollo Server", "GraphQL Yoga", "Mercurius"]
|
||||
trpc:
|
||||
pairs_with: ["Next.js", "React Query"]
|
||||
grpc:
|
||||
pairs_with: ["@grpc/grpc-js", "protobufjs"]
|
||||
|
||||
authentication:
|
||||
triggers: ["auth", "login", "user management", "security", "identity"]
|
||||
importance: "critical"
|
||||
affects: "security and user epics"
|
||||
options:
|
||||
nextauth:
|
||||
pairs_with: ["Next.js", "Prisma"]
|
||||
auth0:
|
||||
pairs_with: ["@auth0/nextjs-auth0"]
|
||||
clerk:
|
||||
pairs_with: ["@clerk/nextjs"]
|
||||
supabase_auth:
|
||||
pairs_with: ["@supabase/supabase-js"]
|
||||
firebase_auth:
|
||||
pairs_with: ["firebase-admin"]
|
||||
|
||||
real_time:
|
||||
triggers: ["real-time", "websocket", "live updates", "chat", "collaboration"]
|
||||
importance: "medium"
|
||||
affects: "real-time features"
|
||||
options:
|
||||
socket_io:
|
||||
pairs_with: ["Express", "socket.io-client"]
|
||||
pusher:
|
||||
pairs_with: ["pusher-js"]
|
||||
ably:
|
||||
pairs_with: ["ably"]
|
||||
supabase_realtime:
|
||||
pairs_with: ["@supabase/supabase-js"]
|
||||
firebase_realtime:
|
||||
pairs_with: ["firebase"]
|
||||
|
||||
email:
|
||||
triggers: ["email", "notifications", "transactional email"]
|
||||
importance: "medium"
|
||||
affects: "notification epics"
|
||||
options:
|
||||
resend:
|
||||
pairs_with: ["resend", "react-email"]
|
||||
sendgrid:
|
||||
pairs_with: ["@sendgrid/mail"]
|
||||
postmark:
|
||||
pairs_with: ["postmark"]
|
||||
ses:
|
||||
pairs_with: ["@aws-sdk/client-ses"]
|
||||
|
||||
file_storage:
|
||||
triggers: ["upload", "file storage", "images", "media", "CDN"]
|
||||
importance: "medium"
|
||||
affects: "media handling epics"
|
||||
options:
|
||||
s3:
|
||||
pairs_with: ["@aws-sdk/client-s3", "multer"]
|
||||
cloudinary:
|
||||
pairs_with: ["cloudinary"]
|
||||
uploadthing:
|
||||
pairs_with: ["uploadthing"]
|
||||
supabase_storage:
|
||||
pairs_with: ["@supabase/supabase-js"]
|
||||
|
||||
search:
|
||||
triggers: ["search", "full text", "elasticsearch", "algolia", "fuzzy"]
|
||||
importance: "medium"
|
||||
affects: "search and discovery epics"
|
||||
options:
|
||||
postgres_fts:
|
||||
pairs_with: ["PostgreSQL"]
|
||||
elasticsearch:
|
||||
pairs_with: ["@elastic/elasticsearch"]
|
||||
algolia:
|
||||
pairs_with: ["algoliasearch"]
|
||||
typesense:
|
||||
pairs_with: ["typesense"]
|
||||
|
||||
background_jobs:
|
||||
triggers: ["queue", "jobs", "workers", "async", "background processing", "scheduled"]
|
||||
importance: "medium"
|
||||
affects: "async processing epics"
|
||||
options:
|
||||
bullmq:
|
||||
pairs_with: ["Redis"]
|
||||
sqs:
|
||||
pairs_with: ["@aws-sdk/client-sqs"]
|
||||
temporal:
|
||||
pairs_with: ["@temporalio/client"]
|
||||
inngest:
|
||||
pairs_with: ["inngest"]
|
||||
|
||||
deployment_target:
|
||||
triggers: ["deployment", "hosting", "infrastructure", "cloud", "server"]
|
||||
importance: "high"
|
||||
affects: "all epics"
|
||||
options:
|
||||
vercel:
|
||||
pairs_with: ["Next.js", "serverless functions"]
|
||||
aws:
|
||||
pairs_with: ["any stack"]
|
||||
railway:
|
||||
pairs_with: ["any stack", "managed databases"]
|
||||
fly_io:
|
||||
pairs_with: ["Docker containers"]
|
||||
|
||||
# Opinionated stack combinations (BMM methodology)
|
||||
common_stacks:
|
||||
modern_fullstack:
|
||||
name: "Modern Full-Stack"
|
||||
components: ["Next.js", "PostgreSQL or Supabase", "Prisma ORM", "NextAuth.js", "Tailwind CSS", "TypeScript", "Vercel"]
|
||||
good_for: "Most web applications"
|
||||
|
||||
enterprise_stack:
|
||||
name: "Enterprise Stack"
|
||||
components: ["NestJS", "PostgreSQL", "TypeORM", "Auth0", "Redis", "Docker", "AWS"]
|
||||
good_for: "Large-scale enterprise applications"
|
||||
|
||||
rapid_prototype:
|
||||
name: "Rapid Prototype"
|
||||
components: ["Next.js", "Supabase", "shadcn/ui", "Vercel"]
|
||||
good_for: "MVP and rapid development"
|
||||
|
||||
real_time_app:
|
||||
name: "Real-Time Application"
|
||||
components: ["Next.js", "Supabase Realtime", "PostgreSQL", "Prisma", "Socket.io fallback"]
|
||||
good_for: "Chat, collaboration, live updates"
|
||||
|
||||
mobile_app:
|
||||
name: "Mobile Application"
|
||||
components: ["Expo", "React Native", "Supabase or Firebase", "React Query"]
|
||||
good_for: "Cross-platform mobile apps"
|
||||
|
||||
# Starter templates and what decisions they make
|
||||
starter_templates:
|
||||
create_next_app:
|
||||
name: "Create Next App"
|
||||
command_search: "npx create-next-app@latest"
|
||||
decisions_provided: ["Next.js framework", "TypeScript option", "App Router vs Pages", "Tailwind CSS option", "ESLint"]
|
||||
good_for: ["React web applications", "Full-stack apps", "SSR/SSG"]
|
||||
|
||||
create_t3_app:
|
||||
name: "Create T3 App"
|
||||
command_search: "npm create t3-app@latest"
|
||||
decisions_provided: ["Next.js", "TypeScript", "tRPC", "Prisma", "NextAuth", "Tailwind CSS"]
|
||||
good_for: ["Type-safe full-stack apps"]
|
||||
|
||||
create_vite:
|
||||
name: "Create Vite"
|
||||
command_search: "npm create vite@latest"
|
||||
decisions_provided: ["Framework choice (React/Vue/Svelte)", "TypeScript option", "Vite bundler"]
|
||||
good_for: ["Fast dev SPAs", "Library development"]
|
||||
|
||||
create_remix:
|
||||
name: "Create Remix"
|
||||
command_search: "npx create-remix@latest"
|
||||
decisions_provided: ["Remix framework", "TypeScript option", "Deployment target", "CSS solution"]
|
||||
good_for: ["Web standards", "Nested routing", "Progressive enhancement"]
|
||||
|
||||
nest_new:
|
||||
name: "NestJS CLI"
|
||||
command_search: "nest new project"
|
||||
decisions_provided: ["TypeScript (always)", "Package manager", "Testing framework (Jest)", "Project structure"]
|
||||
good_for: ["Enterprise APIs", "Microservices", "GraphQL APIs"]
|
||||
|
||||
create_expo_app:
|
||||
name: "Create Expo App"
|
||||
command_search: "npx create-expo-app"
|
||||
decisions_provided: ["React Native", "Expo SDK", "TypeScript option", "Navigation option"]
|
||||
good_for: ["Cross-platform mobile", "React Native apps"]
|
||||
|
||||
# Starter selection heuristics (workflow logic)
|
||||
starter_selection_rules:
|
||||
by_project_type:
|
||||
web_application:
|
||||
recommended: ["create_next_app", "create_t3_app", "create_vite"]
|
||||
considerations: "SSR needs? → Next.js. Type safety critical? → T3. SPA only? → Vite"
|
||||
|
||||
mobile_app:
|
||||
recommended: ["create_expo_app"]
|
||||
considerations: "Cross-platform → Expo. Native-heavy → React Native CLI"
|
||||
|
||||
api_backend:
|
||||
recommended: ["nest_new"]
|
||||
considerations: "Enterprise → NestJS. Simple → Express starter. Performance → Fastify"
|
||||
|
||||
full_stack:
|
||||
recommended: ["create_t3_app", "create_remix"]
|
||||
considerations: "Type safety → T3. Web standards → Remix. Monolith → RedwoodJS"
|
||||
|
|
@ -0,0 +1,704 @@
|
|||
# Decision Architecture Workflow Instructions
|
||||
|
||||
<workflow name="architecture">
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>This workflow uses ADAPTIVE FACILITATION - adjust your communication style based on {user_skill_level}</critical>
|
||||
<critical>The goal is ARCHITECTURAL DECISIONS that prevent AI agent conflicts, not detailed implementation specs</critical>
|
||||
<critical>Communicate all responses in {communication_language} and tailor to {user_skill_level}</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
<critical>This workflow replaces architecture with a conversation-driven approach</critical>
|
||||
<critical>Input documents specified in workflow.yaml input_file_patterns - workflow engine handles fuzzy matching, whole vs sharded document discovery automatically</critical>
|
||||
<critical>ELICITATION POINTS: After completing each major architectural decision area (identified by template-output tags for decision_record, project_structure, novel_pattern_designs, implementation_patterns, and architecture_document), invoke advanced elicitation to refine decisions before proceeding</critical>
|
||||
|
||||
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
|
||||
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>No workflow status file found. Decision Architecture can run standalone or as part of BMM workflow path.</output>
|
||||
<output>**Recommended:** Run `workflow-init` first for project context tracking and workflow sequencing.</output>
|
||||
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
|
||||
<check if="continue">
|
||||
<action>Set standalone_mode = true</action>
|
||||
</check>
|
||||
<check if="exit">
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="status file found">
|
||||
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
|
||||
<action>Parse workflow_status section</action>
|
||||
<action>Check status of "create-architecture" workflow</action>
|
||||
<action>Get project_level from YAML metadata</action>
|
||||
<action>Find first non-completed workflow (next expected workflow)</action>
|
||||
|
||||
<check if="project_level < 3">
|
||||
<output>**Note: Level {{project_level}} Project**
|
||||
|
||||
The Detailed Architecture is typically for Level 3-4 projects, but can be used for any project that needs architectural planning.
|
||||
|
||||
For Level {{project_level}}, we'll keep the architecture appropriately scoped.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="create-architecture status is file path (already completed)">
|
||||
<output>⚠️ Architecture already completed: {{create-architecture status}}</output>
|
||||
<ask>Re-running will overwrite the existing architecture. Continue? (y/n)</ask>
|
||||
<check if="n">
|
||||
<output>Exiting. Use workflow-status to see your next step.</output>
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="create-architecture is not the next expected workflow">
|
||||
<output>⚠️ Next expected workflow: {{next_workflow}}. Architecture is out of sequence.</output>
|
||||
<ask>Continue with Architecture anyway? (y/n)</ask>
|
||||
<check if="n">
|
||||
<output>Exiting. Run {{next_workflow}} instead.</output>
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<action>Set standalone_mode = false</action>
|
||||
</check>
|
||||
|
||||
<action>Check for existing PRD and epics files using fuzzy matching</action>
|
||||
|
||||
<action>Fuzzy match PRD file: {prd_file}</action>
|
||||
<check if="PRD_not_found">
|
||||
<output>**PRD Not Found**
|
||||
|
||||
Decision Architecture works from your Product Requirements Document (PRD).
|
||||
|
||||
Looking for: _PRD_, PRD.md, or prd/index.md + files in {output_folder}
|
||||
|
||||
Please run the PRD workflow first to define your requirements.
|
||||
|
||||
Architect: `create-prd`
|
||||
</output>
|
||||
<action>Exit workflow - PRD required</action>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="1" goal="Load and understand project context">
|
||||
<action>Load the PRD using fuzzy matching: {prd_file}, if the PRD is mulitple files in a folder, load the index file and all files associated with the PRD</action>
|
||||
<action>Load epics file using fuzzy matching: {epics_file}</action>
|
||||
|
||||
<action>Check for UX specification using fuzzy matching:
|
||||
<action>Attempt to locate: {ux_spec_file}</action>
|
||||
<check if="ux_spec_found">
|
||||
<action>Load UX spec and extract architectural implications: - Component complexity (simple forms vs rich interactions) - Animation/transition requirements - Real-time update needs (live data, collaborative features) - Platform-specific UI requirements - Accessibility standards (WCAG compliance level) - Responsive design breakpoints - Offline capability requirements - Performance expectations (load times, interaction responsiveness)
|
||||
</action>
|
||||
</check>
|
||||
</action>
|
||||
|
||||
<action>Extract and understand from PRD: - Functional Requirements (what it must do) - Non-Functional Requirements (performance, security, compliance, etc.) - Epic structure and user stories - Acceptance criteria - Any technical constraints mentioned
|
||||
</action>
|
||||
|
||||
<action>Count and assess project scale: - Number of epics: {{epic_count}} - Number of stories: {{story_count}} - Complexity indicators (real-time, multi-tenant, regulated, etc.) - UX complexity level (if UX spec exists) - Novel features
|
||||
</action>
|
||||
|
||||
<action>Reflect understanding back to {user_name}:
|
||||
"I'm reviewing your project documentation for {{project_name}}.
|
||||
I see {{epic_count}} epics with {{story_count}} total stories.
|
||||
{{if_ux_spec}}I also found your UX specification which defines the user experience requirements.{{/if_ux_spec}}
|
||||
|
||||
Key aspects I notice:
|
||||
- [Summarize core functionality]
|
||||
- [Note critical NFRs]
|
||||
{{if_ux_spec}}- [Note UX complexity and requirements]{{/if_ux_spec}}
|
||||
- [Identify unique challenges]
|
||||
|
||||
This will help me guide you through the architectural decisions needed
|
||||
to ensure AI agents implement this consistently."
|
||||
|
||||
</action>
|
||||
|
||||
<ask>Does this match your understanding of the project?</ask>
|
||||
<template-output>project_context_understanding</template-output>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Discover and evaluate starter templates">
|
||||
<critical>Modern starter templates make many good architectural decisions by default</critical>
|
||||
|
||||
<action>Based on PRD analysis, identify the primary technology domain: - Web application → Look for Next.js, Vite, Remix starters - Mobile app → Look for React Native, Expo, Flutter starters - API/Backend → Look for NestJS, Express, Fastify starters - CLI tool → Look for CLI framework starters - Full-stack → Look for T3, RedwoodJS, Blitz starters
|
||||
</action>
|
||||
|
||||
<check if="ux_spec_loaded">
|
||||
<action>Consider UX requirements when selecting starter:
|
||||
- Rich animations → Framer Motion compatible starter
|
||||
- Complex forms → React Hook Form included starter
|
||||
- Real-time features → Socket.io or WebSocket ready starter
|
||||
- Accessibility focus → WCAG-compliant component library starter
|
||||
- Design system → Storybook-enabled starter
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<action>Search for relevant starter templates with websearch, examples:
|
||||
<WebSearch>{{primary_technology}} starter template CLI create command latest {date}</WebSearch>
|
||||
<WebSearch>{{primary_technology}} boilerplate generator latest options</WebSearch>
|
||||
</action>
|
||||
|
||||
<check if="starter_templates_found">
|
||||
<action>Investigate what each starter provides:
|
||||
<WebSearch>{{starter_name}} default setup technologies included latest</WebSearch>
|
||||
<WebSearch>{{starter_name}} project structure file organization</WebSearch>
|
||||
</action>
|
||||
|
||||
<check if="{user_skill_level} == 'expert'">
|
||||
<action>Present starter options concisely:
|
||||
"Found {{starter_name}} which provides:
|
||||
{{quick_decision_list}}
|
||||
|
||||
This would establish our base architecture. Use it?"
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<check if="{user_skill_level} == 'beginner'">
|
||||
<action>Explain starter benefits:
|
||||
"I found {{starter_name}}, which is like a pre-built foundation for your project.
|
||||
|
||||
Think of it like buying a prefab house frame instead of cutting each board yourself.
|
||||
|
||||
It makes these decisions for you:
|
||||
{{friendly_decision_list}}
|
||||
|
||||
This is a great starting point that follows best practices. Should we use it?"
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<ask>Use {{starter_name}} as the foundation? (recommended) [y/n]</ask>
|
||||
|
||||
<check if="user_accepts_starter">
|
||||
<action>Get current starter command and options:
|
||||
<WebSearch>{{starter_name}} CLI command options flags latest 2024</WebSearch>
|
||||
</action>
|
||||
|
||||
<action>Document the initialization command:
|
||||
Store command: {{full_starter_command_with_options}}
|
||||
Example: "npx create-next-app@latest my-app --typescript --tailwind --app"
|
||||
</action>
|
||||
|
||||
<action>Extract and document starter-provided decisions:
|
||||
Starter provides these architectural decisions:
|
||||
- Language/TypeScript: {{provided_or_not}}
|
||||
- Styling solution: {{provided_or_not}}
|
||||
- Testing framework: {{provided_or_not}}
|
||||
- Linting/Formatting: {{provided_or_not}}
|
||||
- Build tooling: {{provided_or_not}}
|
||||
- Project structure: {{provided_pattern}}
|
||||
</action>
|
||||
|
||||
<action>Mark these decisions as "PROVIDED BY STARTER" in our decision tracking</action>
|
||||
|
||||
<action>Note for first implementation story:
|
||||
"Project initialization using {{starter_command}} should be the first implementation story"
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<check if="user_rejects_starter">
|
||||
<ask>Any specific reason to avoid the starter? (helps me understand constraints)</ask>
|
||||
<action>Note: Manual setup required, all decisions need to be made explicitly</action>
|
||||
</check>
|
||||
|
||||
</check>
|
||||
|
||||
<check if="no_starter_found_or_applicable">
|
||||
<action>Note: No standard starter template found for this project type.
|
||||
We will make all architectural decisions explicitly.</action>
|
||||
</check>
|
||||
|
||||
<template-output>starter_template_decision</template-output>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Adapt facilitation style and identify remaining decisions">
|
||||
<action>Based on {user_skill_level} from config, set facilitation approach:
|
||||
|
||||
<check if="{user_skill_level} == 'expert'">
|
||||
Set mode: EXPERT
|
||||
- Use technical terminology freely
|
||||
- Move quickly through decisions
|
||||
- Assume familiarity with patterns and tools
|
||||
- Focus on edge cases and advanced concerns
|
||||
</check>
|
||||
|
||||
<check if="{user_skill_level} == 'intermediate'">
|
||||
Set mode: INTERMEDIATE
|
||||
- Balance technical accuracy with clarity
|
||||
- Explain complex patterns briefly
|
||||
- Confirm understanding at key points
|
||||
- Provide context for non-obvious choices
|
||||
</check>
|
||||
|
||||
<check if="{user_skill_level} == 'beginner'">
|
||||
Set mode: BEGINNER
|
||||
- Use analogies and real-world examples
|
||||
- Explain technical concepts in simple terms
|
||||
- Provide education about why decisions matter
|
||||
- Protect from complexity overload
|
||||
</check>
|
||||
</action>
|
||||
|
||||
<action>Load decision catalog: {decision_catalog}</action>
|
||||
<action>Load architecture patterns: {architecture_patterns}</action>
|
||||
|
||||
<action>Analyze PRD against patterns to identify needed decisions: - Match functional requirements to known patterns - Identify which categories of decisions are needed - Flag any novel/unique aspects requiring special attention - Consider which decisions the starter template already made (if applicable)
|
||||
</action>
|
||||
|
||||
<action>Create decision priority list:
|
||||
CRITICAL (blocks everything): - {{list_of_critical_decisions}}
|
||||
|
||||
IMPORTANT (shapes architecture):
|
||||
- {{list_of_important_decisions}}
|
||||
|
||||
NICE-TO-HAVE (can defer):
|
||||
- {{list_of_optional_decisions}}
|
||||
|
||||
</action>
|
||||
|
||||
<action>Announce plan to {user_name} based on mode:
|
||||
<check if="mode == 'EXPERT'">
|
||||
"Based on your PRD, we need to make {{total_decision_count}} architectural decisions.
|
||||
{{starter_covered_count}} are covered by the starter template.
|
||||
Let's work through the remaining {{remaining_count}} decisions."
|
||||
</check>
|
||||
|
||||
<check if="mode == 'BEGINNER'">
|
||||
"Great! I've analyzed your requirements and found {{total_decision_count}} technical
|
||||
choices we need to make. Don't worry - I'll guide you through each one and explain
|
||||
why it matters. {{if_starter}}The starter template handles {{starter_covered_count}}
|
||||
of these automatically.{{/if_starter}}"
|
||||
</check>
|
||||
|
||||
</action>
|
||||
|
||||
<template-output>decision_identification</template-output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Facilitate collaborative decision making" repeat="for-each-decision">
|
||||
<critical>Each decision must be made WITH the user, not FOR them</critical>
|
||||
<critical>ALWAYS verify current versions using WebSearch - NEVER trust hardcoded versions</critical>
|
||||
|
||||
<action>For each decision in priority order:</action>
|
||||
|
||||
<action>Present the decision based on mode:
|
||||
<check if="mode == 'EXPERT'">
|
||||
"{{Decision_Category}}: {{Specific_Decision}}
|
||||
|
||||
Options: {{concise_option_list_with_tradeoffs}}
|
||||
|
||||
Recommendation: {{recommendation}} for {{reason}}"
|
||||
|
||||
</check>
|
||||
|
||||
<check if="mode == 'INTERMEDIATE'">
|
||||
"Next decision: {{Human_Friendly_Category}}
|
||||
|
||||
We need to choose {{Specific_Decision}}.
|
||||
|
||||
Common options:
|
||||
{{option_list_with_brief_explanations}}
|
||||
|
||||
For your project, {{recommendation}} would work well because {{reason}}."
|
||||
|
||||
</check>
|
||||
|
||||
<check if="mode == 'BEGINNER'">
|
||||
"Let's talk about {{Human_Friendly_Category}}.
|
||||
|
||||
{{Educational_Context_About_Why_This_Matters}}
|
||||
|
||||
Think of it like {{real_world_analogy}}.
|
||||
|
||||
Your main options:
|
||||
{{friendly_options_with_pros_cons}}
|
||||
|
||||
My suggestion: {{recommendation}}
|
||||
This is good for you because {{beginner_friendly_reason}}."
|
||||
|
||||
</check>
|
||||
|
||||
</action>
|
||||
|
||||
<check if="decision_involves_specific_technology">
|
||||
<action>Verify current stable version:
|
||||
<WebSearch>{{technology}} latest stable version 2024</WebSearch>
|
||||
<WebSearch>{{technology}} current LTS version</WebSearch>
|
||||
</action>
|
||||
|
||||
<action>Update decision record with verified version:
|
||||
Technology: {{technology}}
|
||||
Verified Version: {{version_from_search}}
|
||||
Verification Date: {{today}}
|
||||
</action>
|
||||
|
||||
</check>
|
||||
|
||||
<ask>What's your preference? (or 'explain more' for details)</ask>
|
||||
|
||||
<check if="user_wants_more_info">
|
||||
<action>Provide deeper explanation appropriate to skill level</action>
|
||||
<check if="complex_tradeoffs">
|
||||
<action>Consider using advanced elicitation:
|
||||
"Would you like to explore innovative approaches to this decision?
|
||||
I can help brainstorm unconventional solutions if you have specific goals."
|
||||
</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<action>Record decision:
|
||||
Category: {{category}}
|
||||
Decision: {{user_choice}}
|
||||
Version: {{verified_version_if_applicable}}
|
||||
Affects Epics: {{list_of_affected_epics}}
|
||||
Rationale: {{user_reasoning_or_default}}
|
||||
Provided by Starter: {{yes_if_from_starter}}
|
||||
</action>
|
||||
|
||||
<action>Check for cascading implications:
|
||||
"This choice means we'll also need to {{related_decisions}}"
|
||||
</action>
|
||||
|
||||
<template-output>decision_record</template-output>
|
||||
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Address cross-cutting concerns">
|
||||
<critical>These decisions affect EVERY epic and story</critical>
|
||||
|
||||
<action>Facilitate decisions for consistency patterns: - Error handling strategy (How will all agents handle errors?) - Logging approach (Structured? Format? Levels?) - Date/time handling (Timezone? Format? Library?) - Authentication pattern (Where? How? Token format?) - API response format (Structure? Status codes? Errors?) - Testing strategy (Unit? Integration? E2E?)
|
||||
</action>
|
||||
|
||||
<check if="{user_skill_level} == 'beginner'">
|
||||
<action>Explain why these matter why its critical to go through and decide these things now.</action>
|
||||
</check>
|
||||
|
||||
<template-output>cross_cutting_decisions</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Define project structure and boundaries">
|
||||
<action>Based on all decisions made, define the project structure</action>
|
||||
|
||||
<action>Create comprehensive source tree: - Root configuration files - Source code organization - Test file locations - Build/dist directories - Documentation structure
|
||||
</action>
|
||||
|
||||
<action>Map epics to architectural boundaries:
|
||||
"Epic: {{epic_name}} → Lives in {{module/directory/service}}"
|
||||
</action>
|
||||
|
||||
<action>Define integration points: - Where do components communicate? - What are the API boundaries? - How do services interact?
|
||||
</action>
|
||||
|
||||
<template-output>project_structure</template-output>
|
||||
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Design novel architectural patterns" optional="true">
|
||||
<critical>Some projects require INVENTING new patterns, not just choosing existing ones</critical>
|
||||
|
||||
<action>Scan PRD for concepts that don't have standard solutions: - Novel interaction patterns (e.g., "swipe to match" before Tinder existed) - Unique multi-component workflows (e.g., "viral invitation system") - New data relationships (e.g., "social graph" before Facebook) - Unprecedented user experiences (e.g., "ephemeral messages" before Snapchat) - Complex state machines crossing multiple epics
|
||||
</action>
|
||||
|
||||
<check if="novel_patterns_detected">
|
||||
<action>For each novel pattern identified:</action>
|
||||
|
||||
<action>Engage user in design collaboration:
|
||||
<check if="{user_skill_level} == 'expert'">
|
||||
"The {{pattern_name}} concept requires architectural innovation.
|
||||
|
||||
Core challenge: {{challenge_description}}
|
||||
|
||||
Let's design the component interaction model:"
|
||||
</check>
|
||||
|
||||
<check if="{user_skill_level} == 'beginner'">
|
||||
"Your idea about {{pattern_name}} is unique - there isn't a standard way to build this yet!
|
||||
|
||||
This is exciting - we get to invent the architecture together.
|
||||
|
||||
Let me help you think through how this should work:"
|
||||
</check>
|
||||
</action>
|
||||
|
||||
<action>Facilitate pattern design:
|
||||
1. Identify core components involved
|
||||
2. Map data flow between components
|
||||
3. Design state management approach
|
||||
4. Create sequence diagrams for complex flows
|
||||
5. Define API contracts for the pattern
|
||||
6. Consider edge cases and failure modes
|
||||
</action>
|
||||
|
||||
<action>Use advanced elicitation for innovation:
|
||||
"What if we approached this differently?
|
||||
- What would the ideal user experience look like?
|
||||
- Are there analogies from other domains we could apply?
|
||||
- What constraints can we challenge?"
|
||||
</action>
|
||||
|
||||
<action>Document the novel pattern:
|
||||
Pattern Name: {{pattern_name}}
|
||||
Purpose: {{what_problem_it_solves}}
|
||||
Components:
|
||||
{{component_list_with_responsibilities}}
|
||||
Data Flow:
|
||||
{{sequence_description_or_diagram}}
|
||||
Implementation Guide:
|
||||
{{how_agents_should_build_this}}
|
||||
Affects Epics:
|
||||
{{epics_that_use_this_pattern}}
|
||||
</action>
|
||||
|
||||
<action>Validate pattern completeness:
|
||||
"Does this {{pattern_name}} design cover all the use cases in your epics?
|
||||
- {{use_case_1}}: ✓ Handled by {{component}}
|
||||
- {{use_case_2}}: ✓ Handled by {{component}}
|
||||
..."
|
||||
</action>
|
||||
|
||||
</check>
|
||||
|
||||
<check if="no_novel_patterns">
|
||||
<action>Note: All patterns in this project have established solutions.
|
||||
Proceeding with standard architectural patterns.</action>
|
||||
</check>
|
||||
|
||||
<template-output>novel_pattern_designs</template-output>
|
||||
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Define implementation patterns to prevent agent conflicts">
|
||||
<critical>These patterns ensure multiple AI agents write compatible code</critical>
|
||||
<critical>Focus on what agents could decide DIFFERENTLY if not specified</critical>
|
||||
|
||||
<action>Load pattern categories: {pattern_categories}</action>
|
||||
|
||||
<action>Based on chosen technologies, identify potential conflict points:
|
||||
"Given that we're using {{tech_stack}}, agents need consistency rules for:"
|
||||
</action>
|
||||
|
||||
<action>For each relevant pattern category, facilitate decisions:
|
||||
|
||||
NAMING PATTERNS (How things are named):
|
||||
<check if="has_api">
|
||||
- REST endpoint naming: /users or /user? Plural or singular?
|
||||
- Route parameter format: :id or {id}?
|
||||
</check>
|
||||
<check if="has_database">
|
||||
- Table naming: users or Users or user?
|
||||
- Column naming: user_id or userId?
|
||||
- Foreign key format: user_id or fk_user?
|
||||
</check>
|
||||
<check if="has_frontend">
|
||||
- Component naming: UserCard or user-card?
|
||||
- File naming: UserCard.tsx or user-card.tsx?
|
||||
</check>
|
||||
|
||||
STRUCTURE PATTERNS (How things are organized):
|
||||
- Where do tests live? __tests__/ or *.test.ts co-located?
|
||||
- How are components organized? By feature or by type?
|
||||
- Where do shared utilities go?
|
||||
|
||||
FORMAT PATTERNS (Data exchange formats):
|
||||
<check if="has_api">
|
||||
- API response wrapper? {data: ..., error: ...} or direct response?
|
||||
- Error format? {message, code} or {error: {type, detail}}?
|
||||
- Date format in JSON? ISO strings or timestamps?
|
||||
</check>
|
||||
|
||||
COMMUNICATION PATTERNS (How components interact):
|
||||
<check if="has_events">
|
||||
- Event naming convention?
|
||||
- Event payload structure?
|
||||
</check>
|
||||
<check if="has_state_management">
|
||||
- State update pattern?
|
||||
- Action naming convention?
|
||||
</check>
|
||||
|
||||
LIFECYCLE PATTERNS (State and flow):
|
||||
- How are loading states handled?
|
||||
- What's the error recovery pattern?
|
||||
- How are retries implemented?
|
||||
|
||||
LOCATION PATTERNS (Where things go):
|
||||
- API route structure?
|
||||
- Static asset organization?
|
||||
- Config file locations?
|
||||
|
||||
CONSISTENCY PATTERNS (Cross-cutting):
|
||||
- How are dates formatted in the UI?
|
||||
- What's the logging format?
|
||||
- How are user-facing errors written?
|
||||
|
||||
</action>
|
||||
|
||||
<check if="{user_skill_level} == 'expert'">
|
||||
<action>Rapid-fire through patterns:
|
||||
"Quick decisions on implementation patterns:
|
||||
- {{pattern}}: {{suggested_convention}} OK? [y/n/specify]"
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<check if="{user_skill_level} == 'beginner'">
|
||||
<action>Explain each pattern's importance:
|
||||
"Let me explain why this matters:
|
||||
If one AI agent names database tables 'users' and another names them 'Users',
|
||||
your app will crash. We need to pick one style and make sure everyone follows it."
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<action>Document implementation patterns:
|
||||
Category: {{pattern_category}}
|
||||
Pattern: {{specific_pattern}}
|
||||
Convention: {{decided_convention}}
|
||||
Example: {{concrete_example}}
|
||||
Enforcement: "All agents MUST follow this pattern"
|
||||
</action>
|
||||
|
||||
<template-output>implementation_patterns</template-output>
|
||||
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Validate architectural coherence">
|
||||
<action>Run coherence checks:</action>
|
||||
|
||||
<action>Check decision compatibility: - Do all decisions work together? - Are there any conflicting choices? - Do the versions align properly?
|
||||
</action>
|
||||
|
||||
<action>Verify epic coverage: - Does every epic have architectural support? - Are all user stories implementable with these decisions? - Are there any gaps?
|
||||
</action>
|
||||
|
||||
<action>Validate pattern completeness: - Are there any patterns we missed that agents would need? - Do novel patterns integrate with standard architecture? - Are implementation patterns comprehensive enough?
|
||||
</action>
|
||||
|
||||
<check if="issues_found">
|
||||
<action>Address issues with {user_name}:
|
||||
"I notice {{issue_description}}.
|
||||
We should {{suggested_resolution}}."
|
||||
</action>
|
||||
<ask>How would you like to resolve this?</ask>
|
||||
<action>Update decisions based on resolution</action>
|
||||
</check>
|
||||
|
||||
<template-output>coherence_validation</template-output>
|
||||
</step>
|
||||
|
||||
<step n="10" goal="Generate decision architecture document">
|
||||
<critical>The document must be complete, specific, and validation-ready</critical>
|
||||
<critical>This is the consistency contract for all AI agents</critical>
|
||||
|
||||
<action>Load template: {architecture_template}</action>
|
||||
|
||||
<action>Generate sections: 1. Executive Summary (2-3 sentences about the architecture approach) 2. Project Initialization (starter command if applicable) 3. Decision Summary Table (with verified versions and epic mapping) 4. Complete Project Structure (full tree, no placeholders) 5. Epic to Architecture Mapping (every epic placed) 6. Technology Stack Details (versions, configurations) 7. Integration Points (how components connect) 8. Novel Pattern Designs (if any were created) 9. Implementation Patterns (all consistency rules) 10. Consistency Rules (naming, organization, formats) 11. Data Architecture (models and relationships) 12. API Contracts (request/response formats) 13. Security Architecture (auth, authorization, data protection) 14. Performance Considerations (from NFRs) 15. Deployment Architecture (where and how) 16. Development Environment (setup and prerequisites) 17. Architecture Decision Records (key decisions with rationale)
|
||||
</action>
|
||||
|
||||
<action>Fill template with all collected decisions and patterns</action>
|
||||
|
||||
<action>Ensure starter command is first implementation story:
|
||||
<check if="using_starter_template">
|
||||
"## Project Initialization
|
||||
|
||||
First implementation story should execute:
|
||||
```bash
|
||||
{{starter_command_with_options}}
|
||||
```
|
||||
|
||||
This establishes the base architecture with these decisions:
|
||||
{{starter_provided_decisions}}"
|
||||
</check>
|
||||
|
||||
</action>
|
||||
|
||||
<template-output>architecture_document</template-output>
|
||||
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="11" goal="Validate document completeness">
|
||||
<action>Load validation checklist: {installed_path}/checklist.md</action>
|
||||
|
||||
<action>Run validation checklist from {installed_path}/checklist.md</action>
|
||||
|
||||
<action>Verify MANDATORY items:
|
||||
□ Decision table has Version column with specific versions
|
||||
□ Every epic is mapped to architecture components
|
||||
□ Source tree is complete, not generic
|
||||
□ No placeholder text remains
|
||||
□ All FRs from PRD have architectural support
|
||||
□ All NFRs from PRD are addressed
|
||||
□ Implementation patterns cover all potential conflicts
|
||||
□ Novel patterns are fully documented (if applicable)
|
||||
</action>
|
||||
|
||||
<check if="validation_failed">
|
||||
<action>Fix missing items automatically</action>
|
||||
<goto step="10">Regenerate document section</goto>
|
||||
</check>
|
||||
|
||||
<template-output>validation_results</template-output>
|
||||
</step>
|
||||
|
||||
<step n="12" goal="Final review and update workflow status">
|
||||
<action>Present completion summary:</action>
|
||||
|
||||
<check if="{user_skill_level} == 'expert'">
|
||||
"Architecture complete. {{decision_count}} decisions documented.
|
||||
Ready for implementation phase."
|
||||
</check>
|
||||
|
||||
<check if="{user_skill_level} == 'beginner'">
|
||||
"Excellent! Your architecture is complete. You made {{decision_count}} important
|
||||
decisions that will keep AI agents consistent as they build your app.
|
||||
|
||||
What happens next:
|
||||
1. AI agents will read this architecture before implementing each story
|
||||
2. They'll follow your technical choices exactly
|
||||
3. Your app will be built with consistent patterns throughout
|
||||
|
||||
You're ready to move to the implementation phase!"
|
||||
|
||||
</check>
|
||||
|
||||
<action>Save document to {output_folder}/architecture.md</action>
|
||||
|
||||
<check if="standalone_mode != true">
|
||||
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
|
||||
<action>Find workflow_status key "create-architecture"</action>
|
||||
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
|
||||
<action>Update workflow_status["create-architecture"] = "{output_folder}/bmm-architecture-{{date}}.md"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
|
||||
<action>Determine next agent from path file based on next workflow</action>
|
||||
|
||||
</check>
|
||||
|
||||
<output>✅ Decision Architecture workflow complete!</output>
|
||||
|
||||
<output>**Deliverables Created:**
|
||||
|
||||
- ✅ architecture.md - Complete architectural decisions document
|
||||
{{if_novel_patterns}}
|
||||
- ✅ Novel pattern designs for unique concepts
|
||||
{{/if_novel_patterns}}
|
||||
{{if_starter_template}}
|
||||
- ✅ Project initialization command documented
|
||||
{{/if_starter_template}}
|
||||
|
||||
The architecture is ready to guide AI agents through consistent implementation.
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
|
||||
- Review the architecture.md document before proceeding
|
||||
|
||||
Check status anytime with: `workflow-status`
|
||||
</output>
|
||||
|
||||
<template-output>completion_summary</template-output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
category,when_needed,what_to_define,why_critical
|
||||
naming_patterns,Any technology with named entities,How things are named (format/case/structure),Agents will create different names for same concept
|
||||
structure_patterns,Any technology with organization,How things are organized (folders/modules/layers),Agents will put things in different places
|
||||
format_patterns,Any technology with data exchange,How data is formatted (JSON/XML/responses),Agents will use incompatible formats
|
||||
communication_patterns,Any technology with inter-component communication,How components talk (protocols/events/messages),Agents will use different communication methods
|
||||
lifecycle_patterns,Any technology with state or flow,How state changes and flows work,Agents will handle state transitions differently
|
||||
location_patterns,Any technology with storage or routing,Where things go (URLs/paths/storage),Agents will put things in different locations
|
||||
consistency_patterns,Always,Cross-cutting concerns (dates/errors/logs),Every agent will do these differently
|
||||
|
||||
# PRINCIPLE FOR LLM:
|
||||
# Any time multiple agents might make the SAME decision DIFFERENTLY, that's a pattern to capture.
|
||||
# Think about: What could an agent encounter where they'd have to guess?
|
||||
# If they'd guess, define the pattern. If it's obvious from the tech choice, skip it.
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
# Game Architecture Workflow Configuration
|
||||
name: game-architecture
|
||||
description: "Collaborative game architecture workflow for AI-agent consistency. Intelligent, adaptive conversation that produces a decision-focused game architecture document covering engine, systems, networking, and technical design optimized for game development."
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables
|
||||
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"
|
||||
game_dev_experience: "{config_source}:game_dev_experience"
|
||||
date: system-generated
|
||||
|
||||
# Input requirements - We work from GDD, Epics, and optionally Narrative Design
|
||||
recommended_inputs:
|
||||
- gdd: "Game Design Document with mechanics, systems, and features"
|
||||
- epics: "Epic definitions with user stories and acceptance criteria"
|
||||
- narrative: "Narrative design document with story and character systems (optional)"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
input_file_patterns:
|
||||
gdd:
|
||||
whole: "{output_folder}/*gdd*.md"
|
||||
sharded: "{output_folder}/*gdd*/index.md"
|
||||
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded: "{output_folder}/*epic*/index.md"
|
||||
|
||||
narrative:
|
||||
whole: "{output_folder}/*narrative*.md"
|
||||
sharded: "{output_folder}/*narrative*/index.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/bmad/bmgd/workflows/3-technical/game-architecture"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
template: "{installed_path}/architecture-template.md"
|
||||
|
||||
# Knowledge bases for intelligent decision making
|
||||
decision_catalog: "{installed_path}/decision-catalog.yaml"
|
||||
architecture_patterns: "{installed_path}/architecture-patterns.yaml"
|
||||
pattern_categories: "{installed_path}/pattern-categories.csv"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/game-architecture.md"
|
||||
|
||||
# Workflow metadata
|
||||
version: "1.3.2"
|
||||
replaces: "architecture"
|
||||
paradigm: "facilitation-driven"
|
||||
execution_time: "30-90 minutes depending on user skill level"
|
||||
features:
|
||||
- "Starter template discovery and integration"
|
||||
- "Dynamic version verification via web search"
|
||||
- "Adaptive facilitation by skill level"
|
||||
- "Decision-focused architecture"
|
||||
- "Novel pattern design for unique concepts"
|
||||
- "Intelligent pattern identification - LLM figures out what patterns matter"
|
||||
- "Implementation patterns for agent consistency"
|
||||
|
||||
standalone: true
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Engineering Backlog
|
||||
|
||||
This backlog collects cross-cutting or future action items that emerge from reviews and planning.
|
||||
|
||||
Routing guidance:
|
||||
|
||||
- Use this file for non-urgent optimizations, refactors, or follow-ups that span multiple stories/epics.
|
||||
- Must-fix items to ship a story belong in that story’s `Tasks / Subtasks`.
|
||||
- Same-epic improvements may also be captured under the epic Tech Spec `Post-Review Follow-ups` section.
|
||||
|
||||
| Date | Story | Epic | Type | Severity | Owner | Status | Notes |
|
||||
| ---- | ----- | ---- | ---- | -------- | ----- | ------ | ----- |
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Senior Developer Review - Validation Checklist
|
||||
|
||||
- [ ] Story file loaded from `{{story_path}}`
|
||||
- [ ] Story Status verified as one of: {{allow_status_values}}
|
||||
- [ ] Epic and Story IDs resolved ({{epic_num}}.{{story_num}})
|
||||
- [ ] Story Context located or warning recorded
|
||||
- [ ] Epic Tech Spec located or warning recorded
|
||||
- [ ] Architecture/standards docs loaded (as available)
|
||||
- [ ] Tech stack detected and documented
|
||||
- [ ] MCP doc search performed (or web fallback) and references captured
|
||||
- [ ] Acceptance Criteria cross-checked against implementation
|
||||
- [ ] File List reviewed and validated for completeness
|
||||
- [ ] Tests identified and mapped to ACs; gaps noted
|
||||
- [ ] Code quality review performed on changed files
|
||||
- [ ] Security review performed on changed files and dependencies
|
||||
- [ ] Outcome decided (Approve/Changes Requested/Blocked)
|
||||
- [ ] Review notes appended under "Senior Developer Review (AI)"
|
||||
- [ ] Change Log updated with review entry
|
||||
- [ ] Status updated according to settings (if enabled)
|
||||
- [ ] Story saved successfully
|
||||
|
||||
_Reviewer: {{user_name}} on {{date}}_
|
||||
|
|
@ -0,0 +1,420 @@
|
|||
# Senior Developer Review - Workflow Instructions
|
||||
|
||||
````xml
|
||||
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
<critical>This workflow performs a SYSTEMATIC Senior Developer Review on a story with status "review", validates EVERY acceptance criterion and EVERY completed task, appends structured review notes with evidence, and updates the story status based on outcome.</critical>
|
||||
<critical>If story_path is provided, use it. Otherwise, find the first story in sprint-status.yaml with status "review". If none found, offer ad-hoc review option.</critical>
|
||||
<critical>Ad-hoc review mode: User can specify any files to review and what to review for (quality, security, requirements, etc.). Creates standalone review report.</critical>
|
||||
<critical>SYSTEMATIC VALIDATION REQUIREMENT: For EVERY acceptance criterion, verify implementation with evidence (file:line). For EVERY task marked complete, verify it was actually done. Tasks marked complete but not done = HIGH SEVERITY finding.</critical>
|
||||
<critical>⚠️ ZERO TOLERANCE FOR LAZY VALIDATION ⚠️</critical>
|
||||
<critical>If you FAIL to catch even ONE task marked complete that was NOT actually implemented, or ONE acceptance criterion marked done that is NOT in the code with evidence, you have FAILED YOUR ONLY PURPOSE. This is an IMMEDIATE DISQUALIFICATION. No shortcuts. No assumptions. No "looks good enough." You WILL read every file. You WILL verify every claim. You WILL provide evidence (file:line) for EVERY validation. Failure to catch false completions = you failed humanity and the project. Your job is to be the uncompromising gatekeeper. DO YOUR JOB COMPLETELY OR YOU WILL BE REPLACED.</critical>
|
||||
<critical>Only modify the story file in these areas: Status, Dev Agent Record (Completion Notes), File List (if corrections needed), Change Log, and the appended "Senior Developer Review (AI)" section.</critical>
|
||||
<critical>Execute ALL steps in exact order; do NOT skip steps</critical>
|
||||
|
||||
<critical>DOCUMENT OUTPUT: Technical review reports. Structured findings with severity levels and action items. User skill level ({user_skill_level}) affects conversation style ONLY, not review content.</critical>
|
||||
|
||||
## 📚 Document Discovery - Selective Epic Loading
|
||||
|
||||
**Strategy**: This workflow needs only ONE specific epic and its stories for review context, not all epics. This provides huge efficiency gains when epics are sharded.
|
||||
|
||||
**Epic Discovery Process (SELECTIVE OPTIMIZATION):**
|
||||
|
||||
1. **Determine which epic** you need (epic_num from story being reviewed - e.g., story "3-2-feature-name" needs Epic 3)
|
||||
2. **Check for sharded version**: Look for `epics/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- **Load ONLY `epic-{epic_num}.md`** (e.g., `epics/epic-3.md` for Epic 3)
|
||||
- DO NOT load all epic files - only the one needed!
|
||||
- This is the key efficiency optimization for large multi-epic projects
|
||||
4. **If whole document found**: Load the complete `epics.md` file and extract the relevant epic
|
||||
|
||||
**Other Documents (architecture, ux-design) - Full Load:**
|
||||
|
||||
1. **Search for whole document first** - Use fuzzy file matching
|
||||
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- Read ALL section files listed in the index
|
||||
- Treat combined content as single document
|
||||
4. **Brownfield projects**: The `document-project` workflow creates `{output_folder}/docs/index.md`
|
||||
|
||||
**Priority**: If both whole and sharded versions exist, use the whole document.
|
||||
|
||||
**UX-Heavy Projects**: Always check for ux-design documentation as it provides critical context for reviewing UI-focused stories.
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Find story ready for review" tag="sprint-status">
|
||||
<check if="{{story_path}} is provided">
|
||||
<action>Use {{story_path}} directly</action>
|
||||
<action>Read COMPLETE story file and parse sections</action>
|
||||
<action>Extract story_key from filename or story metadata</action>
|
||||
<action>Verify Status is "review" - if not, HALT with message: "Story status must be 'review' to proceed"</action>
|
||||
</check>
|
||||
|
||||
<check if="{{story_path}} is NOT provided">
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file from start to end to preserve order</critical>
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||
<action>Parse the development_status section completely</action>
|
||||
|
||||
<action>Find FIRST story (reading in order from top to bottom) where:
|
||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||
- Status value equals "review"
|
||||
</action>
|
||||
|
||||
<check if="no story with status 'review' found">
|
||||
<output>📋 No stories with status "review" found
|
||||
|
||||
**What would you like to do?**
|
||||
1. Run `dev-story` to implement and mark a story ready for review
|
||||
2. Check sprint-status.yaml for current story states
|
||||
3. Tell me what code to review and what to review it for
|
||||
</output>
|
||||
<ask>Select an option (1/2/3):</ask>
|
||||
|
||||
<check if="option 3 selected">
|
||||
<ask>What code would you like me to review?
|
||||
|
||||
Provide:
|
||||
- File path(s) or directory to review
|
||||
- What to review for:
|
||||
• General quality and standards
|
||||
• Requirements compliance
|
||||
• Security concerns
|
||||
• Performance issues
|
||||
• Architecture alignment
|
||||
• Something else (specify)
|
||||
|
||||
Your input:</ask>
|
||||
|
||||
<action>Parse user input to extract:
|
||||
- {{review_files}}: file paths or directories to review
|
||||
- {{review_focus}}: what aspects to focus on
|
||||
- {{review_context}}: any additional context provided
|
||||
</action>
|
||||
|
||||
<action>Set ad_hoc_review_mode = true</action>
|
||||
<action>Skip to step 4 with custom scope</action>
|
||||
</check>
|
||||
|
||||
<check if="option 1 or 2 or no option 3">
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<action>Use the first story found with status "review"</action>
|
||||
<action>Resolve story file path in {{story_dir}}</action>
|
||||
<action>Read the COMPLETE story file</action>
|
||||
</check>
|
||||
|
||||
<action>Extract {{epic_num}} and {{story_num}} from filename (e.g., story-2.3.*.md) and story metadata</action>
|
||||
<action>Parse sections: Status, Story, Acceptance Criteria, Tasks/Subtasks (and completion states), Dev Notes, Dev Agent Record (Context Reference, Completion Notes, File List), Change Log</action>
|
||||
<action if="story cannot be read">HALT with message: "Unable to read story file"</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Resolve story context file and specification inputs">
|
||||
<action>Locate story context file: Under Dev Agent Record → Context Reference, read referenced path(s). If missing, search {{output_folder}} for files matching pattern "story-{{epic_num}}.{{story_num}}*.context.xml" and use the most recent.</action>
|
||||
<action if="no story context file found">Continue but record a WARNING in review notes: "No story context file found"</action>
|
||||
|
||||
<action>Locate Epic Tech Spec: Search {{tech_spec_search_dir}} with glob {{tech_spec_glob_template}} (resolve {{epic_num}})</action>
|
||||
<action if="no tech spec found">Continue but record a WARNING in review notes: "No Tech Spec found for epic {{epic_num}}"</action>
|
||||
|
||||
<action>Load architecture/standards docs: For each file name in {{arch_docs_file_names}} within {{arch_docs_search_dirs}}, read if exists. Collect testing, coding standards, security, and architectural patterns.</action>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Detect tech stack and establish best-practice reference set">
|
||||
<action>Detect primary ecosystem(s) by scanning for manifests (e.g., package.json, pyproject.toml, go.mod, Dockerfile). Record key frameworks (e.g., Node/Express, React/Vue, Python/FastAPI, etc.).</action>
|
||||
<action>Synthesize a concise "Best-Practices and References" note capturing any updates or considerations that should influence the review (cite links and versions if available).</action>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Systematic validation of implementation against acceptance criteria and tasks">
|
||||
<check if="ad_hoc_review_mode == true">
|
||||
<action>Use {{review_files}} as the file list to review</action>
|
||||
<action>Focus review on {{review_focus}} aspects specified by user</action>
|
||||
<action>Use {{review_context}} for additional guidance</action>
|
||||
<action>Skip acceptance criteria checking (no story context)</action>
|
||||
<action>If architecture docs exist, verify alignment with architectural constraints</action>
|
||||
</check>
|
||||
|
||||
<check if="ad_hoc_review_mode != true">
|
||||
<critical>SYSTEMATIC VALIDATION - Check EVERY AC and EVERY task marked complete</critical>
|
||||
|
||||
<action>From the story, read Acceptance Criteria section completely - parse into numbered list</action>
|
||||
<action>From the story, read Tasks/Subtasks section completely - parse ALL tasks and subtasks with their completion state ([x] = completed, [ ] = incomplete)</action>
|
||||
<action>From Dev Agent Record → File List, compile list of changed/added files. If File List is missing or clearly incomplete, search repo for recent changes relevant to the story scope (heuristics: filenames matching components/services/routes/tests inferred from ACs/tasks).</action>
|
||||
|
||||
<critical>Step 4A: SYSTEMATIC ACCEPTANCE CRITERIA VALIDATION</critical>
|
||||
<action>Create AC validation checklist with one entry per AC</action>
|
||||
<action>For EACH acceptance criterion (AC1, AC2, AC3, etc.):
|
||||
1. Read the AC requirement completely
|
||||
2. Search changed files for evidence of implementation
|
||||
3. Determine: IMPLEMENTED, PARTIAL, or MISSING
|
||||
4. Record specific evidence (file:line references where AC is satisfied)
|
||||
5. Check for corresponding tests (unit/integration/E2E as applicable)
|
||||
6. If PARTIAL or MISSING: Flag as finding with severity based on AC criticality
|
||||
7. Document in AC validation checklist
|
||||
</action>
|
||||
<action>Generate AC Coverage Summary: "X of Y acceptance criteria fully implemented"</action>
|
||||
|
||||
<critical>Step 4B: SYSTEMATIC TASK COMPLETION VALIDATION</critical>
|
||||
<action>Create task validation checklist with one entry per task/subtask</action>
|
||||
<action>For EACH task/subtask marked as COMPLETED ([x]):
|
||||
1. Read the task description completely
|
||||
2. Search changed files for evidence the task was actually done
|
||||
3. Determine: VERIFIED COMPLETE, QUESTIONABLE, or NOT DONE
|
||||
4. Record specific evidence (file:line references proving task completion)
|
||||
5. **CRITICAL**: If marked complete but NOT DONE → Flag as HIGH SEVERITY finding with message: "Task marked complete but implementation not found: [task description]"
|
||||
6. If QUESTIONABLE → Flag as MEDIUM SEVERITY finding: "Task completion unclear: [task description]"
|
||||
7. Document in task validation checklist
|
||||
</action>
|
||||
<action>For EACH task/subtask marked as INCOMPLETE ([ ]):
|
||||
1. Note it was not claimed to be complete
|
||||
2. Check if it was actually done anyway (sometimes devs forget to check boxes)
|
||||
3. If done but not marked: Note in review (helpful correction, not a finding)
|
||||
</action>
|
||||
<action>Generate Task Completion Summary: "X of Y completed tasks verified, Z questionable, W falsely marked complete"</action>
|
||||
|
||||
<critical>Step 4C: CROSS-CHECK EPIC TECH-SPEC REQUIREMENTS</critical>
|
||||
<action>Cross-check epic tech-spec requirements and architecture constraints against the implementation intent in files.</action>
|
||||
<action if="critical architecture constraints are violated (e.g., layering, dependency rules)">flag as High Severity finding.</action>
|
||||
|
||||
<critical>Step 4D: COMPILE VALIDATION FINDINGS</critical>
|
||||
<action>Compile all validation findings into structured list:
|
||||
- Missing AC implementations (severity based on AC importance)
|
||||
- Partial AC implementations (MEDIUM severity)
|
||||
- Tasks falsely marked complete (HIGH severity - this is critical)
|
||||
- Questionable task completions (MEDIUM severity)
|
||||
- Missing tests for ACs (severity based on AC criticality)
|
||||
- Architecture violations (HIGH severity)
|
||||
</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Perform code quality and risk review">
|
||||
<action>For each changed file, skim for common issues appropriate to the stack: error handling, input validation, logging, dependency injection, thread-safety/async correctness, resource cleanup, performance anti-patterns.</action>
|
||||
<action>Perform security review: injection risks, authZ/authN handling, secret management, unsafe defaults, un-validated redirects, CORS misconfigured, dependency vulnerabilities (based on manifests).</action>
|
||||
<action>Check tests quality: assertions are meaningful, edge cases covered, deterministic behavior, proper fixtures, no flakiness patterns.</action>
|
||||
<action>Capture concrete, actionable suggestions with severity (High/Med/Low) and rationale. When possible, suggest specific code-level changes (filenames + line ranges) without rewriting large sections.</action>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Decide review outcome and prepare comprehensive notes">
|
||||
<action>Determine outcome based on validation results:
|
||||
- BLOCKED: Any HIGH severity finding (AC missing, task falsely marked complete, critical architecture violation)
|
||||
- CHANGES REQUESTED: Any MEDIUM severity findings or multiple LOW severity issues
|
||||
- APPROVE: All ACs implemented, all completed tasks verified, no significant issues
|
||||
</action>
|
||||
|
||||
<action>Prepare a structured review report with sections:
|
||||
1. **Summary**: Brief overview of review outcome and key concerns
|
||||
2. **Outcome**: Approve | Changes Requested | Blocked (with justification)
|
||||
3. **Key Findings** (by severity):
|
||||
- HIGH severity issues first (especially falsely marked complete tasks)
|
||||
- MEDIUM severity issues
|
||||
- LOW severity issues
|
||||
4. **Acceptance Criteria Coverage**:
|
||||
- Include complete AC validation checklist from Step 4A
|
||||
- Show: AC# | Description | Status (IMPLEMENTED/PARTIAL/MISSING) | Evidence (file:line)
|
||||
- Summary: "X of Y acceptance criteria fully implemented"
|
||||
- List any missing or partial ACs with severity
|
||||
5. **Task Completion Validation**:
|
||||
- Include complete task validation checklist from Step 4B
|
||||
- Show: Task | Marked As | Verified As | Evidence (file:line)
|
||||
- **CRITICAL**: Highlight any tasks marked complete but not done in RED/bold
|
||||
- Summary: "X of Y completed tasks verified, Z questionable, W falsely marked complete"
|
||||
6. **Test Coverage and Gaps**:
|
||||
- Which ACs have tests, which don't
|
||||
- Test quality issues found
|
||||
7. **Architectural Alignment**:
|
||||
- Tech-spec compliance
|
||||
- Architecture violations if any
|
||||
8. **Security Notes**: Security findings if any
|
||||
9. **Best-Practices and References**: With links
|
||||
10. **Action Items**:
|
||||
- CRITICAL: ALL action items requiring code changes MUST have checkboxes for tracking
|
||||
- Format for actionable items: `- [ ] [Severity] Description (AC #X) [file: path:line]`
|
||||
- Format for informational notes: `- Note: Description (no action required)`
|
||||
- Imperative phrasing for action items
|
||||
- Map to related ACs or files with specific line references
|
||||
- Include suggested owners if clear
|
||||
- Example format:
|
||||
```
|
||||
### Action Items
|
||||
|
||||
**Code Changes Required:**
|
||||
- [ ] [High] Add input validation on login endpoint (AC #1) [file: src/routes/auth.js:23-45]
|
||||
- [ ] [Med] Add unit test for invalid email format [file: tests/unit/auth.test.js]
|
||||
|
||||
**Advisory Notes:**
|
||||
- Note: Consider adding rate limiting for production deployment
|
||||
- Note: Document the JWT expiration policy in README
|
||||
```
|
||||
</action>
|
||||
|
||||
<critical>The AC validation checklist and task validation checklist MUST be included in the review - this is the evidence trail</critical>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Append review to story and update metadata">
|
||||
<check if="ad_hoc_review_mode == true">
|
||||
<action>Generate review report as a standalone document</action>
|
||||
<action>Save to {{output_folder}}/code-review-{{date}}.md</action>
|
||||
<action>Include sections:
|
||||
- Review Type: Ad-Hoc Code Review
|
||||
- Reviewer: {{user_name}}
|
||||
- Date: {{date}}
|
||||
- Files Reviewed: {{review_files}}
|
||||
- Review Focus: {{review_focus}}
|
||||
- Outcome: (Approve | Changes Requested | Blocked)
|
||||
- Summary
|
||||
- Key Findings
|
||||
- Test Coverage and Gaps
|
||||
- Architectural Alignment
|
||||
- Security Notes
|
||||
- Best-Practices and References (with links)
|
||||
- Action Items
|
||||
</action>
|
||||
<output>Review saved to: {{output_folder}}/code-review-{{date}}.md</output>
|
||||
</check>
|
||||
|
||||
<check if="ad_hoc_review_mode != true">
|
||||
<action>Open {{story_path}} and append a new section at the end titled exactly: "Senior Developer Review (AI)".</action>
|
||||
<action>Insert subsections:
|
||||
- Reviewer: {{user_name}}
|
||||
- Date: {{date}}
|
||||
- Outcome: (Approve | Changes Requested | Blocked) with justification
|
||||
- Summary
|
||||
- Key Findings (by severity - HIGH/MEDIUM/LOW)
|
||||
- **Acceptance Criteria Coverage**:
|
||||
* Include complete AC validation checklist with table format
|
||||
* AC# | Description | Status | Evidence
|
||||
* Summary: X of Y ACs implemented
|
||||
- **Task Completion Validation**:
|
||||
* Include complete task validation checklist with table format
|
||||
* Task | Marked As | Verified As | Evidence
|
||||
* **Highlight falsely marked complete tasks prominently**
|
||||
* Summary: X of Y tasks verified, Z questionable, W false completions
|
||||
- Test Coverage and Gaps
|
||||
- Architectural Alignment
|
||||
- Security Notes
|
||||
- Best-Practices and References (with links)
|
||||
- Action Items:
|
||||
* CRITICAL: Format with checkboxes for tracking resolution
|
||||
* Code changes required: `- [ ] [Severity] Description [file: path:line]`
|
||||
* Advisory notes: `- Note: Description (no action required)`
|
||||
* Group by type: "Code Changes Required" and "Advisory Notes"
|
||||
</action>
|
||||
<action>Add a Change Log entry with date, version bump if applicable, and description: "Senior Developer Review notes appended".</action>
|
||||
<action>If {{update_status_on_result}} is true: update Status to {{status_on_approve}} when approved; to {{status_on_changes_requested}} when changes requested; otherwise leave unchanged.</action>
|
||||
<action>Save the story file.</action>
|
||||
|
||||
<critical>MUST include the complete validation checklists - this is the evidence that systematic review was performed</critical>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Update sprint status based on review outcome" tag="sprint-status">
|
||||
<check if="ad_hoc_review_mode == true">
|
||||
<action>Skip sprint status update (no story context)</action>
|
||||
<output>📋 Ad-hoc review complete - no sprint status to update</output>
|
||||
</check>
|
||||
|
||||
<check if="ad_hoc_review_mode != true">
|
||||
<action>Determine target status based on review outcome:
|
||||
- If {{outcome}} == "Approve" → target_status = "done"
|
||||
- If {{outcome}} == "Changes Requested" → target_status = "in-progress"
|
||||
- If {{outcome}} == "Blocked" → target_status = "review" (stay in review)
|
||||
</action>
|
||||
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read all development_status entries to find {{story_key}}</action>
|
||||
<action>Verify current status is "review" (expected previous state)</action>
|
||||
<action>Update development_status[{{story_key}}] = {{target_status}}</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="update successful">
|
||||
<output>✅ Sprint status updated: review → {{target_status}}</output>
|
||||
</check>
|
||||
|
||||
<check if="story key not found">
|
||||
<output>⚠️ Could not update sprint-status: {{story_key}} not found
|
||||
|
||||
Review was saved to story file, but sprint-status.yaml may be out of sync.
|
||||
</output>
|
||||
</check>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Persist action items to tasks/backlog/epic">
|
||||
<check if="ad_hoc_review_mode == true">
|
||||
<action>All action items are included in the standalone review report</action>
|
||||
<ask if="action items exist">Would you like me to create tracking items for these action items? (backlog/tasks)</ask>
|
||||
<action if="user confirms">
|
||||
If {{backlog_file}} does not exist, copy {installed_path}/backlog_template.md to {{backlog_file}} location.
|
||||
Append a row per action item with Date={{date}}, Story="Ad-Hoc Review", Epic="N/A", Type, Severity, Owner (or "TBD"), Status="Open", Notes with file refs and context.
|
||||
</action>
|
||||
</check>
|
||||
|
||||
<check if="ad_hoc_review_mode != true">
|
||||
<action>Normalize Action Items into a structured list: description, severity (High/Med/Low), type (Bug/TechDebt/Enhancement), suggested owner (if known), related AC/file references.</action>
|
||||
<ask if="action items exist and 'story_tasks' in {{persist_targets}}">Add {{action_item_count}} follow-up items to story Tasks/Subtasks?</ask>
|
||||
<action if="user confirms or no ask needed">
|
||||
Append under the story's "Tasks / Subtasks" a new subsection titled "Review Follow-ups (AI)", adding each item as an unchecked checkbox in imperative form, prefixed with "[AI-Review]" and severity. Example: "- [ ] [AI-Review][High] Add input validation on server route /api/x (AC #2)".
|
||||
</action>
|
||||
<action if="{{persist_action_items}} == true and 'backlog_file' in {{persist_targets}}">
|
||||
If {{backlog_file}} does not exist, copy {installed_path}/backlog_template.md to {{backlog_file}} location.
|
||||
Append a row per action item with Date={{date}}, Story={{epic_num}}.{{story_num}}, Epic={{epic_num}}, Type, Severity, Owner (or "TBD"), Status="Open", Notes with short context and file refs.
|
||||
</action>
|
||||
<action if="{{persist_action_items}} == true and ('epic_followups' in {{persist_targets}} or {{update_epic_followups}} == true)">
|
||||
If an epic Tech Spec was found: open it and create (if missing) a section titled "{{epic_followups_section_title}}". Append a bullet list of action items scoped to this epic with references back to Story {{epic_num}}.{{story_num}}.
|
||||
</action>
|
||||
<action>Save modified files.</action>
|
||||
<action>Optionally invoke tests or linters to verify quick fixes if any were applied as part of review (requires user approval for any dependency changes).</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="10" goal="Validation and completion">
|
||||
<invoke-task>Run validation checklist at {installed_path}/checklist.md using {project-root}/bmad/core/tasks/validate-workflow.xml</invoke-task>
|
||||
<action>Report workflow completion.</action>
|
||||
|
||||
<check if="ad_hoc_review_mode == true">
|
||||
<output>**✅ Ad-Hoc Code Review Complete, {user_name}!**
|
||||
|
||||
**Review Details:**
|
||||
- Files Reviewed: {{review_files}}
|
||||
- Review Focus: {{review_focus}}
|
||||
- Review Outcome: {{outcome}}
|
||||
- Action Items: {{action_item_count}}
|
||||
- Review Report: {{output_folder}}/code-review-{{date}}.md
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the detailed findings in the review report
|
||||
2. If changes requested: Address action items in the code
|
||||
3. If blocked: Resolve blockers before proceeding
|
||||
4. Re-run review on updated code if needed
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="ad_hoc_review_mode != true">
|
||||
<output>**✅ Story Review Complete, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story: {{epic_num}}.{{story_num}}
|
||||
- Story Key: {{story_key}}
|
||||
- Review Outcome: {{outcome}}
|
||||
- Sprint Status: {{target_status}}
|
||||
- Action Items: {{action_item_count}}
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the Senior Developer Review notes appended to story
|
||||
2. If approved: Story is marked done, continue with next story
|
||||
3. If changes requested: Address action items and re-run `dev-story`
|
||||
4. If blocked: Resolve blockers before proceeding
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
````
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
# Review Story Workflow
|
||||
name: code-review
|
||||
description: "Perform a Senior Developer code review on a completed story flagged Ready for Review, leveraging story-context, epic tech-spec, repo docs, MCP servers for latest best-practices, and web search as fallback. Appends structured review notes to the story."
|
||||
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"
|
||||
user_skill_level: "{config_source}:user_skill_level"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/code-review"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# This is an action workflow (no output template document)
|
||||
template: false
|
||||
|
||||
# Variables (can be provided by caller)
|
||||
variables:
|
||||
story_path: "" # Optional: Explicit path to story file. If not provided, finds first story with status "review"
|
||||
story_dir: "{config_source}:dev_story_location" # Directory containing story files
|
||||
tech_spec_search_dir: "{project-root}/docs"
|
||||
tech_spec_glob_template: "tech-spec-epic-{{epic_num}}*.md"
|
||||
arch_docs_search_dirs: |
|
||||
- "{project-root}/docs"
|
||||
- "{output_folder}"
|
||||
arch_docs_file_names: |
|
||||
- architecture.md
|
||||
enable_mcp_doc_search: true # Prefer enabled MCP servers for doc/best-practice lookup
|
||||
enable_web_fallback: true # Fallback to web search/read-url if MCP not available
|
||||
# Persistence controls for review action items and notes
|
||||
persist_action_items: true
|
||||
# Valid targets: story_tasks, story_review_section, backlog_file, epic_followups
|
||||
persist_targets: |
|
||||
- story_review_section
|
||||
- story_tasks
|
||||
- backlog_file
|
||||
- epic_followups
|
||||
backlog_file: "{project-root}/docs/backlog.md"
|
||||
update_epic_followups: true
|
||||
epic_followups_section_title: "Post-Review Follow-ups"
|
||||
|
||||
# Recommended inputs
|
||||
recommended_inputs:
|
||||
- story: "Path to the story file (auto-discovered if omitted - finds first story with status 'review')"
|
||||
- tech_spec: "Epic technical specification document (auto-discovered)"
|
||||
- story_context_file: "Story context file (.context.xml) (auto-discovered)"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
# Strategy: SELECTIVE LOAD - only load the specific epic needed for this story review
|
||||
input_file_patterns:
|
||||
architecture:
|
||||
whole: "{output_folder}/*architecture*.md"
|
||||
sharded: "{output_folder}/*architecture*/index.md"
|
||||
|
||||
ux_design:
|
||||
whole: "{output_folder}/*ux*.md"
|
||||
sharded: "{output_folder}/*ux*/index.md"
|
||||
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded_index: "{output_folder}/*epic*/index.md"
|
||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,279 @@
|
|||
# Change Navigation Checklist
|
||||
|
||||
<critical>This checklist is executed as part of: {project-root}/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml</critical>
|
||||
<critical>Work through each section systematically with the user, recording findings and impacts</critical>
|
||||
|
||||
<checklist>
|
||||
|
||||
<section n="1" title="Understand the Trigger and Context">
|
||||
|
||||
<check-item id="1.1">
|
||||
<prompt>Identify the triggering story that revealed this issue</prompt>
|
||||
<action>Document story ID and brief description</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="1.2">
|
||||
<prompt>Define the core problem precisely</prompt>
|
||||
<action>Categorize issue type:</action>
|
||||
- Technical limitation discovered during implementation
|
||||
- New requirement emerged from stakeholders
|
||||
- Misunderstanding of original requirements
|
||||
- Strategic pivot or market change
|
||||
- Failed approach requiring different solution
|
||||
<action>Write clear problem statement</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="1.3">
|
||||
<prompt>Assess initial impact and gather supporting evidence</prompt>
|
||||
<action>Collect concrete examples, error messages, stakeholder feedback, or technical constraints</action>
|
||||
<action>Document evidence for later reference</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<halt-condition>
|
||||
<action if="trigger is unclear">HALT: "Cannot proceed without understanding what caused the need for change"</action>
|
||||
<action if="no evidence provided">HALT: "Need concrete evidence or examples of the issue before analyzing impact"</action>
|
||||
</halt-condition>
|
||||
|
||||
</section>
|
||||
|
||||
<section n="2" title="Epic Impact Assessment">
|
||||
|
||||
<check-item id="2.1">
|
||||
<prompt>Evaluate current epic containing the trigger story</prompt>
|
||||
<action>Can this epic still be completed as originally planned?</action>
|
||||
<action>If no, what modifications are needed?</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="2.2">
|
||||
<prompt>Determine required epic-level changes</prompt>
|
||||
<action>Check each scenario:</action>
|
||||
- Modify existing epic scope or acceptance criteria
|
||||
- Add new epic to address the issue
|
||||
- Remove or defer epic that's no longer viable
|
||||
- Completely redefine epic based on new understanding
|
||||
<action>Document specific epic changes needed</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="2.3">
|
||||
<prompt>Review all remaining planned epics for required changes</prompt>
|
||||
<action>Check each future epic for impact</action>
|
||||
<action>Identify dependencies that may be affected</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="2.4">
|
||||
<prompt>Check if issue invalidates future epics or necessitates new ones</prompt>
|
||||
<action>Does this change make any planned epics obsolete?</action>
|
||||
<action>Are new epics needed to address gaps created by this change?</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="2.5">
|
||||
<prompt>Consider if epic order or priority should change</prompt>
|
||||
<action>Should epics be resequenced based on this issue?</action>
|
||||
<action>Do priorities need adjustment?</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
</section>
|
||||
|
||||
<section n="3" title="Artifact Conflict and Impact Analysis">
|
||||
|
||||
<check-item id="3.1">
|
||||
<prompt>Check PRD for conflicts</prompt>
|
||||
<action>Does issue conflict with core PRD goals or objectives?</action>
|
||||
<action>Do requirements need modification, addition, or removal?</action>
|
||||
<action>Is the defined MVP still achievable or does scope need adjustment?</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="3.2">
|
||||
<prompt>Review Architecture document for conflicts</prompt>
|
||||
<action>Check each area for impact:</action>
|
||||
- System components and their interactions
|
||||
- Architectural patterns and design decisions
|
||||
- Technology stack choices
|
||||
- Data models and schemas
|
||||
- API designs and contracts
|
||||
- Integration points
|
||||
<action>Document specific architecture sections requiring updates</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="3.3">
|
||||
<prompt>Examine UI/UX specifications for conflicts</prompt>
|
||||
<action>Check for impact on:</action>
|
||||
- User interface components
|
||||
- User flows and journeys
|
||||
- Wireframes or mockups
|
||||
- Interaction patterns
|
||||
- Accessibility considerations
|
||||
<action>Note specific UI/UX sections needing revision</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="3.4">
|
||||
<prompt>Consider impact on other artifacts</prompt>
|
||||
<action>Review additional artifacts for impact:</action>
|
||||
- Deployment scripts
|
||||
- Infrastructure as Code (IaC)
|
||||
- Monitoring and observability setup
|
||||
- Testing strategies
|
||||
- Documentation
|
||||
- CI/CD pipelines
|
||||
<action>Document any secondary artifacts requiring updates</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
</section>
|
||||
|
||||
<section n="4" title="Path Forward Evaluation">
|
||||
|
||||
<check-item id="4.1">
|
||||
<prompt>Evaluate Option 1: Direct Adjustment</prompt>
|
||||
<action>Can the issue be addressed by modifying existing stories?</action>
|
||||
<action>Can new stories be added within the current epic structure?</action>
|
||||
<action>Would this approach maintain project timeline and scope?</action>
|
||||
<action>Effort estimate: [High/Medium/Low]</action>
|
||||
<action>Risk level: [High/Medium/Low]</action>
|
||||
<status>[ ] Viable / [ ] Not viable</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="4.2">
|
||||
<prompt>Evaluate Option 2: Potential Rollback</prompt>
|
||||
<action>Would reverting recently completed stories simplify addressing this issue?</action>
|
||||
<action>Which stories would need to be rolled back?</action>
|
||||
<action>Is the rollback effort justified by the simplification gained?</action>
|
||||
<action>Effort estimate: [High/Medium/Low]</action>
|
||||
<action>Risk level: [High/Medium/Low]</action>
|
||||
<status>[ ] Viable / [ ] Not viable</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="4.3">
|
||||
<prompt>Evaluate Option 3: PRD MVP Review</prompt>
|
||||
<action>Is the original PRD MVP still achievable with this issue?</action>
|
||||
<action>Does MVP scope need to be reduced or redefined?</action>
|
||||
<action>Do core goals need modification based on new constraints?</action>
|
||||
<action>What would be deferred to post-MVP if scope is reduced?</action>
|
||||
<action>Effort estimate: [High/Medium/Low]</action>
|
||||
<action>Risk level: [High/Medium/Low]</action>
|
||||
<status>[ ] Viable / [ ] Not viable</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="4.4">
|
||||
<prompt>Select recommended path forward</prompt>
|
||||
<action>Based on analysis of all options, choose the best path</action>
|
||||
<action>Provide clear rationale considering:</action>
|
||||
- Implementation effort and timeline impact
|
||||
- Technical risk and complexity
|
||||
- Impact on team morale and momentum
|
||||
- Long-term sustainability and maintainability
|
||||
- Stakeholder expectations and business value
|
||||
<action>Selected approach: [Option 1 / Option 2 / Option 3 / Hybrid]</action>
|
||||
<action>Justification: [Document reasoning]</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
</section>
|
||||
|
||||
<section n="5" title="Sprint Change Proposal Components">
|
||||
|
||||
<check-item id="5.1">
|
||||
<prompt>Create identified issue summary</prompt>
|
||||
<action>Write clear, concise problem statement</action>
|
||||
<action>Include context about discovery and impact</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="5.2">
|
||||
<prompt>Document epic impact and artifact adjustment needs</prompt>
|
||||
<action>Summarize findings from Epic Impact Assessment (Section 2)</action>
|
||||
<action>Summarize findings from Artifact Conflict Analysis (Section 3)</action>
|
||||
<action>Be specific about what changes are needed and why</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="5.3">
|
||||
<prompt>Present recommended path forward with rationale</prompt>
|
||||
<action>Include selected approach from Section 4</action>
|
||||
<action>Provide complete justification for recommendation</action>
|
||||
<action>Address trade-offs and alternatives considered</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="5.4">
|
||||
<prompt>Define PRD MVP impact and high-level action plan</prompt>
|
||||
<action>State clearly if MVP is affected</action>
|
||||
<action>Outline major action items needed for implementation</action>
|
||||
<action>Identify dependencies and sequencing</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="5.5">
|
||||
<prompt>Establish agent handoff plan</prompt>
|
||||
<action>Identify which roles/agents will execute the changes:</action>
|
||||
- Development team (for implementation)
|
||||
- Product Owner / Scrum Master (for backlog changes)
|
||||
- Product Manager / Architect (for strategic changes)
|
||||
<action>Define responsibilities for each role</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
</section>
|
||||
|
||||
<section n="6" title="Final Review and Handoff">
|
||||
|
||||
<check-item id="6.1">
|
||||
<prompt>Review checklist completion</prompt>
|
||||
<action>Verify all applicable sections have been addressed</action>
|
||||
<action>Confirm all [Action-needed] items have been documented</action>
|
||||
<action>Ensure analysis is comprehensive and actionable</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="6.2">
|
||||
<prompt>Verify Sprint Change Proposal accuracy</prompt>
|
||||
<action>Review complete proposal for consistency and clarity</action>
|
||||
<action>Ensure all recommendations are well-supported by analysis</action>
|
||||
<action>Check that proposal is actionable and specific</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="6.3">
|
||||
<prompt>Obtain explicit user approval</prompt>
|
||||
<action>Present complete proposal to user</action>
|
||||
<action>Get clear yes/no approval for proceeding</action>
|
||||
<action>Document approval and any conditions</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<check-item id="6.4">
|
||||
<prompt>Confirm next steps and handoff plan</prompt>
|
||||
<action>Review handoff responsibilities with user</action>
|
||||
<action>Ensure all stakeholders understand their roles</action>
|
||||
<action>Confirm timeline and success criteria</action>
|
||||
<status>[ ] Done / [ ] N/A / [ ] Action-needed</status>
|
||||
</check-item>
|
||||
|
||||
<halt-condition>
|
||||
<action if="any critical section cannot be completed">HALT: "Cannot proceed to proposal without complete impact analysis"</action>
|
||||
<action if="user approval not obtained">HALT: "Must have explicit approval before implementing changes"</action>
|
||||
<action if="handoff responsibilities unclear">HALT: "Must clearly define who will execute the proposed changes"</action>
|
||||
</halt-condition>
|
||||
|
||||
</section>
|
||||
|
||||
</checklist>
|
||||
|
||||
<execution-notes>
|
||||
<note>This checklist is for SIGNIFICANT changes affecting project direction</note>
|
||||
<note>Work interactively with user - they make final decisions</note>
|
||||
<note>Be factual, not blame-oriented when analyzing issues</note>
|
||||
<note>Handle changes professionally as opportunities to improve the project</note>
|
||||
<note>Maintain conversation context throughout - this is collaborative work</note>
|
||||
</execution-notes>
|
||||
|
|
@ -0,0 +1,201 @@
|
|||
# Correct Course - Sprint Change Management 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: {project-root}/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
|
||||
<critical>DOCUMENT OUTPUT: Updated epics, stories, or PRD sections. Clear, actionable changes. User skill level ({user_skill_level}) affects conversation style ONLY, not document updates.</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Initialize Change Navigation">
|
||||
<action>Confirm change trigger and gather user description of the issue</action>
|
||||
<action>Ask: "What specific issue or change has been identified that requires navigation?"</action>
|
||||
<action>Verify access to required project documents:</action>
|
||||
- PRD (Product Requirements Document)
|
||||
- Current Epics and Stories
|
||||
- Architecture documentation
|
||||
- UI/UX specifications
|
||||
<action>Ask user for mode preference:</action>
|
||||
- **Incremental** (recommended): Refine each edit collaboratively
|
||||
- **Batch**: Present all changes at once for review
|
||||
<action>Store mode selection for use throughout workflow</action>
|
||||
|
||||
<action if="change trigger is unclear">HALT: "Cannot navigate change without clear understanding of the triggering issue. Please provide specific details about what needs to change and why."</action>
|
||||
|
||||
<action if="core documents are unavailable">HALT: "Need access to project documents (PRD, Epics, Architecture, UI/UX) to assess change impact. Please ensure these documents are accessible."</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Execute Change Analysis Checklist">
|
||||
<action>Load and execute the systematic analysis from: {checklist}</action>
|
||||
<action>Work through each checklist section interactively with the user</action>
|
||||
<action>Record status for each checklist item:</action>
|
||||
- [x] Done - Item completed successfully
|
||||
- [N/A] Skip - Item not applicable to this change
|
||||
- [!] Action-needed - Item requires attention or follow-up
|
||||
<action>Maintain running notes of findings and impacts discovered</action>
|
||||
<action>Present checklist progress after each major section</action>
|
||||
|
||||
<action if="checklist cannot be completed">Identify blocking issues and work with user to resolve before continuing</action>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Draft Specific Change Proposals">
|
||||
<action>Based on checklist findings, create explicit edit proposals for each identified artifact</action>
|
||||
|
||||
<action>For Story changes:</action>
|
||||
|
||||
- Show old → new text format
|
||||
- Include story ID and section being modified
|
||||
- Provide rationale for each change
|
||||
- Example format:
|
||||
|
||||
```
|
||||
Story: [STORY-123] User Authentication
|
||||
Section: Acceptance Criteria
|
||||
|
||||
OLD:
|
||||
- User can log in with email/password
|
||||
|
||||
NEW:
|
||||
- User can log in with email/password
|
||||
- User can enable 2FA via authenticator app
|
||||
|
||||
Rationale: Security requirement identified during implementation
|
||||
```
|
||||
|
||||
<action>For PRD modifications:</action>
|
||||
|
||||
- Specify exact sections to update
|
||||
- Show current content and proposed changes
|
||||
- Explain impact on MVP scope and requirements
|
||||
|
||||
<action>For Architecture changes:</action>
|
||||
|
||||
- Identify affected components, patterns, or technology choices
|
||||
- Describe diagram updates needed
|
||||
- Note any ripple effects on other components
|
||||
|
||||
<action>For UI/UX specification updates:</action>
|
||||
|
||||
- Reference specific screens or components
|
||||
- Show wireframe or flow changes needed
|
||||
- Connect changes to user experience impact
|
||||
|
||||
<check if="mode is Incremental">
|
||||
<action>Present each edit proposal individually</action>
|
||||
<ask>Review and refine this change? Options: Approve [a], Edit [e], Skip [s]</ask>
|
||||
<action>Iterate on each proposal based on user feedback</action>
|
||||
</check>
|
||||
|
||||
<action if="mode is Batch">Collect all edit proposals and present together at end of step</action>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Generate Sprint Change Proposal">
|
||||
<action>Compile comprehensive Sprint Change Proposal document with following sections:</action>
|
||||
|
||||
<action>Section 1: Issue Summary</action>
|
||||
|
||||
- Clear problem statement describing what triggered the change
|
||||
- Context about when/how the issue was discovered
|
||||
- Evidence or examples demonstrating the issue
|
||||
|
||||
<action>Section 2: Impact Analysis</action>
|
||||
|
||||
- Epic Impact: Which epics are affected and how
|
||||
- Story Impact: Current and future stories requiring changes
|
||||
- Artifact Conflicts: PRD, Architecture, UI/UX documents needing updates
|
||||
- Technical Impact: Code, infrastructure, or deployment implications
|
||||
|
||||
<action>Section 3: Recommended Approach</action>
|
||||
|
||||
- Present chosen path forward from checklist evaluation:
|
||||
- Direct Adjustment: Modify/add stories within existing plan
|
||||
- Potential Rollback: Revert completed work to simplify resolution
|
||||
- MVP Review: Reduce scope or modify goals
|
||||
- Provide clear rationale for recommendation
|
||||
- Include effort estimate, risk assessment, and timeline impact
|
||||
|
||||
<action>Section 4: Detailed Change Proposals</action>
|
||||
|
||||
- Include all refined edit proposals from Step 3
|
||||
- Group by artifact type (Stories, PRD, Architecture, UI/UX)
|
||||
- Ensure each change includes before/after and justification
|
||||
|
||||
<action>Section 5: Implementation Handoff</action>
|
||||
|
||||
- Categorize change scope:
|
||||
- Minor: Direct implementation by dev team
|
||||
- Moderate: Backlog reorganization needed (PO/SM)
|
||||
- Major: Fundamental replan required (PM/Architect)
|
||||
- Specify handoff recipients and their responsibilities
|
||||
- Define success criteria for implementation
|
||||
|
||||
<action>Present complete Sprint Change Proposal to user</action>
|
||||
<action>Write Sprint Change Proposal document to {default_output_file}</action>
|
||||
<ask>Review complete proposal. Continue [c] or Edit [e]?</ask>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Finalize and Route for Implementation">
|
||||
<action>Get explicit user approval for complete proposal</action>
|
||||
<ask>Do you approve this Sprint Change Proposal for implementation? (yes/no/revise)</ask>
|
||||
|
||||
<check if="no or revise">
|
||||
<action>Gather specific feedback on what needs adjustment</action>
|
||||
<action>Return to appropriate step to address concerns</action>
|
||||
<goto step="3">If changes needed to edit proposals</goto>
|
||||
<goto step="4">If changes needed to overall proposal structure</goto>
|
||||
|
||||
</check>
|
||||
|
||||
<check if="yes the proposal is approved by the user">
|
||||
<action>Finalize Sprint Change Proposal document</action>
|
||||
<action>Determine change scope classification:</action>
|
||||
|
||||
- **Minor**: Can be implemented directly by development team
|
||||
- **Moderate**: Requires backlog reorganization and PO/SM coordination
|
||||
- **Major**: Needs fundamental replan with PM/Architect involvement
|
||||
|
||||
<action>Provide appropriate handoff based on scope:</action>
|
||||
|
||||
</check>
|
||||
|
||||
<check if="Minor scope">
|
||||
<action>Route to: Development team for direct implementation</action>
|
||||
<action>Deliverables: Finalized edit proposals and implementation tasks</action>
|
||||
</check>
|
||||
|
||||
<check if="Moderate scope">
|
||||
<action>Route to: Product Owner / Scrum Master agents</action>
|
||||
<action>Deliverables: Sprint Change Proposal + backlog reorganization plan</action>
|
||||
</check>
|
||||
|
||||
<check if="Major scope">
|
||||
<action>Route to: Product Manager / Solution Architect</action>
|
||||
<action>Deliverables: Complete Sprint Change Proposal + escalation notice</action>
|
||||
|
||||
<action>Confirm handoff completion and next steps with user</action>
|
||||
<action>Document handoff in workflow execution log</action>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Workflow Completion">
|
||||
<action>Summarize workflow execution:</action>
|
||||
- Issue addressed: {{change_trigger}}
|
||||
- Change scope: {{scope_classification}}
|
||||
- Artifacts modified: {{list_of_artifacts}}
|
||||
- Routed to: {{handoff_recipients}}
|
||||
|
||||
<action>Confirm all deliverables produced:</action>
|
||||
|
||||
- Sprint Change Proposal document
|
||||
- Specific edit proposals with before/after
|
||||
- Implementation handoff plan
|
||||
|
||||
<action>Report workflow completion to user with personalized message: "✅ Correct Course workflow complete, {user_name}!"</action>
|
||||
<action>Remind user of success criteria and next steps for implementation team</action>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Correct Course - Sprint Change Management Workflow
|
||||
name: "correct-course"
|
||||
description: "Navigate significant changes during sprint execution by analyzing impact, proposing solutions, and routing for implementation"
|
||||
author: "BMad Method"
|
||||
|
||||
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"
|
||||
user_skill_level: "{config_source}:user_skill_level"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
date: system-generated
|
||||
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/correct-course"
|
||||
template: false
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
checklist: "{installed_path}/checklist.md"
|
||||
default_output_file: "{output_folder}/sprint-change-proposal-{date}.md"
|
||||
|
||||
# Workflow execution mode (interactive: step-by-step with user, non-interactive: automated)
|
||||
mode: interactive
|
||||
|
||||
required_inputs:
|
||||
- change_trigger: "Description of the issue or change that triggered this workflow"
|
||||
- project_documents: "Access to PRD, Epics/Stories, Architecture, UI/UX specs"
|
||||
|
||||
output_artifacts:
|
||||
- sprint_change_proposal: "Comprehensive proposal documenting issue, impact, and recommended changes"
|
||||
- artifact_edits: "Specific before/after edits for affected documents"
|
||||
- handoff_plan: "Clear routing for implementation based on change scope"
|
||||
|
||||
halt_conditions:
|
||||
- "Change trigger unclear or undefined"
|
||||
- "Core project documents unavailable"
|
||||
- "Impact analysis incomplete"
|
||||
- "User approval not obtained"
|
||||
|
||||
execution_modes:
|
||||
- incremental: "Recommended - Refine each edit with user collaboration"
|
||||
- batch: "Present all changes at once for review"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,240 @@
|
|||
# Create Story Quality Validation Checklist
|
||||
|
||||
```xml
|
||||
<critical>This validation runs in a FRESH CONTEXT by an independent validator agent</critical>
|
||||
<critical>The validator audits story quality and offers to improve if issues are found</critical>
|
||||
<critical>Load only the story file and necessary source documents - do NOT load workflow instructions</critical>
|
||||
|
||||
<validation-checklist>
|
||||
|
||||
<expectations>
|
||||
**What create-story workflow should have accomplished:**
|
||||
|
||||
1. **Previous Story Continuity:** If a previous story exists (status: done/review/in-progress), current story should have "Learnings from Previous Story" subsection in Dev Notes that references: new files created, completion notes, architectural decisions, unresolved review items
|
||||
2. **Source Document Coverage:** Story should cite tech spec (if exists), epics, PRD, and relevant architecture docs (architecture.md, testing-strategy.md, coding-standards.md, unified-project-structure.md)
|
||||
3. **Requirements Traceability:** ACs sourced from tech spec (preferred) or epics, not invented
|
||||
4. **Dev Notes Quality:** Specific guidance with citations, not generic advice
|
||||
5. **Task-AC Mapping:** Every AC has tasks, every task references AC, testing subtasks present
|
||||
6. **Structure:** Status="drafted", proper story statement, Dev Agent Record sections initialized
|
||||
</expectations>
|
||||
|
||||
## Validation Steps
|
||||
|
||||
### 1. Load Story and Extract Metadata
|
||||
- [ ] Load story file: {{story_file_path}}
|
||||
- [ ] Parse sections: Status, Story, ACs, Tasks, Dev Notes, Dev Agent Record, Change Log
|
||||
- [ ] Extract: epic_num, story_num, story_key, story_title
|
||||
- [ ] Initialize issue tracker (Critical/Major/Minor)
|
||||
|
||||
### 2. Previous Story Continuity Check
|
||||
|
||||
**Find previous story:**
|
||||
- [ ] Load {output_folder}/sprint-status.yaml
|
||||
- [ ] Find current {{story_key}} in development_status
|
||||
- [ ] Identify story entry immediately above (previous story)
|
||||
- [ ] Check previous story status
|
||||
|
||||
**If previous story status is done/review/in-progress:**
|
||||
- [ ] Load previous story file: {story_dir}/{{previous_story_key}}.md
|
||||
- [ ] Extract: Dev Agent Record (Completion Notes, File List with NEW/MODIFIED)
|
||||
- [ ] Extract: Senior Developer Review section if present
|
||||
- [ ] Count unchecked [ ] items in Review Action Items
|
||||
- [ ] Count unchecked [ ] items in Review Follow-ups (AI)
|
||||
|
||||
**Validate current story captured continuity:**
|
||||
- [ ] Check: "Learnings from Previous Story" subsection exists in Dev Notes
|
||||
- If MISSING and previous story has content → **CRITICAL ISSUE**
|
||||
- [ ] If subsection exists, verify it includes:
|
||||
- [ ] References to NEW files from previous story → If missing → **MAJOR ISSUE**
|
||||
- [ ] Mentions completion notes/warnings → If missing → **MAJOR ISSUE**
|
||||
- [ ] Calls out unresolved review items (if any exist) → If missing → **CRITICAL ISSUE**
|
||||
- [ ] Cites previous story: [Source: stories/{{previous_story_key}}.md]
|
||||
|
||||
**If previous story status is backlog/drafted:**
|
||||
- [ ] No continuity expected (note this)
|
||||
|
||||
**If no previous story exists:**
|
||||
- [ ] First story in epic, no continuity expected
|
||||
|
||||
### 3. Source Document Coverage Check
|
||||
|
||||
**Build available docs list:**
|
||||
- [ ] Check exists: tech-spec-epic-{{epic_num}}*.md in {tech_spec_search_dir}
|
||||
- [ ] Check exists: {output_folder}/epics.md
|
||||
- [ ] Check exists: {output_folder}/PRD.md
|
||||
- [ ] Check exists in {output_folder}/ or {project-root}/docs/:
|
||||
- architecture.md, testing-strategy.md, coding-standards.md
|
||||
- unified-project-structure.md, tech-stack.md
|
||||
- backend-architecture.md, frontend-architecture.md, data-models.md
|
||||
|
||||
**Validate story references available docs:**
|
||||
- [ ] Extract all [Source: ...] citations from story Dev Notes
|
||||
- [ ] Tech spec exists but not cited → **CRITICAL ISSUE**
|
||||
- [ ] Epics exists but not cited → **CRITICAL ISSUE**
|
||||
- [ ] Architecture.md exists → Read for relevance → If relevant but not cited → **MAJOR ISSUE**
|
||||
- [ ] Testing-strategy.md exists → Check Dev Notes mentions testing standards → If not → **MAJOR ISSUE**
|
||||
- [ ] Testing-strategy.md exists → Check Tasks have testing subtasks → If not → **MAJOR ISSUE**
|
||||
- [ ] Coding-standards.md exists → Check Dev Notes references standards → If not → **MAJOR ISSUE**
|
||||
- [ ] Unified-project-structure.md exists → Check Dev Notes has "Project Structure Notes" subsection → If not → **MAJOR ISSUE**
|
||||
|
||||
**Validate citation quality:**
|
||||
- [ ] Verify cited file paths are correct and files exist → Bad citations → **MAJOR ISSUE**
|
||||
- [ ] Check citations include section names, not just file paths → Vague citations → **MINOR ISSUE**
|
||||
|
||||
### 4. Acceptance Criteria Quality Check
|
||||
|
||||
- [ ] Extract Acceptance Criteria from story
|
||||
- [ ] Count ACs: {{ac_count}} (if 0 → **CRITICAL ISSUE** and halt)
|
||||
- [ ] Check story indicates AC source (tech spec, epics, PRD)
|
||||
|
||||
**If tech spec exists:**
|
||||
- [ ] Load tech spec
|
||||
- [ ] Search for this story number
|
||||
- [ ] Extract tech spec ACs for this story
|
||||
- [ ] Compare story ACs vs tech spec ACs → If mismatch → **MAJOR ISSUE**
|
||||
|
||||
**If no tech spec but epics.md exists:**
|
||||
- [ ] Load epics.md
|
||||
- [ ] Search for Epic {{epic_num}}, Story {{story_num}}
|
||||
- [ ] Story not found in epics → **CRITICAL ISSUE** (should have halted)
|
||||
- [ ] Extract epics ACs
|
||||
- [ ] Compare story ACs vs epics ACs → If mismatch without justification → **MAJOR ISSUE**
|
||||
|
||||
**Validate AC quality:**
|
||||
- [ ] Each AC is testable (measurable outcome)
|
||||
- [ ] Each AC is specific (not vague)
|
||||
- [ ] Each AC is atomic (single concern)
|
||||
- [ ] Vague ACs found → **MINOR ISSUE**
|
||||
|
||||
### 5. Task-AC Mapping Check
|
||||
|
||||
- [ ] Extract Tasks/Subtasks from story
|
||||
- [ ] For each AC: Search tasks for "(AC: #{{ac_num}})" reference
|
||||
- [ ] AC has no tasks → **MAJOR ISSUE**
|
||||
- [ ] For each task: Check if references an AC number
|
||||
- [ ] Tasks without AC refs (and not testing/setup) → **MINOR ISSUE**
|
||||
- [ ] Count tasks with testing subtasks
|
||||
- [ ] Testing subtasks < ac_count → **MAJOR ISSUE**
|
||||
|
||||
### 6. Dev Notes Quality Check
|
||||
|
||||
**Check required subsections exist:**
|
||||
- [ ] Architecture patterns and constraints
|
||||
- [ ] References (with citations)
|
||||
- [ ] Project Structure Notes (if unified-project-structure.md exists)
|
||||
- [ ] Learnings from Previous Story (if previous story has content)
|
||||
- [ ] Missing required subsections → **MAJOR ISSUE**
|
||||
|
||||
**Validate content quality:**
|
||||
- [ ] Architecture guidance is specific (not generic "follow architecture docs") → If generic → **MAJOR ISSUE**
|
||||
- [ ] Count citations in References subsection
|
||||
- [ ] No citations → **MAJOR ISSUE**
|
||||
- [ ] < 3 citations and multiple arch docs exist → **MINOR ISSUE**
|
||||
- [ ] Scan for suspicious specifics without citations:
|
||||
- API endpoints, schema details, business rules, tech choices
|
||||
- [ ] Likely invented details found → **MAJOR ISSUE**
|
||||
|
||||
### 7. Story Structure Check
|
||||
|
||||
- [ ] Status = "drafted" → If not → **MAJOR ISSUE**
|
||||
- [ ] Story section has "As a / I want / so that" format → If malformed → **MAJOR ISSUE**
|
||||
- [ ] Dev Agent Record has required sections:
|
||||
- Context Reference, Agent Model Used, Debug Log References, Completion Notes List, File List
|
||||
- [ ] Missing sections → **MAJOR ISSUE**
|
||||
- [ ] Change Log initialized → If missing → **MINOR ISSUE**
|
||||
- [ ] File in correct location: {story_dir}/{{story_key}}.md → If not → **MAJOR ISSUE**
|
||||
|
||||
### 8. Unresolved Review Items Alert
|
||||
|
||||
**CRITICAL CHECK for incomplete review items from previous story:**
|
||||
|
||||
- [ ] If previous story has "Senior Developer Review (AI)" section:
|
||||
- [ ] Count unchecked [ ] items in "Action Items"
|
||||
- [ ] Count unchecked [ ] items in "Review Follow-ups (AI)"
|
||||
- [ ] If unchecked items > 0:
|
||||
- [ ] Check current story "Learnings from Previous Story" mentions these
|
||||
- [ ] If NOT mentioned → **CRITICAL ISSUE** with details:
|
||||
- List all unchecked items with severity
|
||||
- Note: "These may represent epic-wide concerns"
|
||||
- Required: Add to Learnings section with note about pending items
|
||||
|
||||
## Validation Report Generation
|
||||
|
||||
**Calculate severity counts:**
|
||||
- Critical: {{critical_count}}
|
||||
- Major: {{major_count}}
|
||||
- Minor: {{minor_count}}
|
||||
|
||||
**Determine outcome:**
|
||||
- Critical > 0 OR Major > 3 → **FAIL**
|
||||
- Major ≤ 3 and Critical = 0 → **PASS with issues**
|
||||
- All = 0 → **PASS**
|
||||
|
||||
**Generate report:**
|
||||
```
|
||||
|
||||
# Story Quality Validation Report
|
||||
|
||||
Story: {{story_key}} - {{story_title}}
|
||||
Outcome: {{outcome}} (Critical: {{critical_count}}, Major: {{major_count}}, Minor: {{minor_count}})
|
||||
|
||||
## Critical Issues (Blockers)
|
||||
|
||||
{{list_each_with_description_and_evidence}}
|
||||
|
||||
## Major Issues (Should Fix)
|
||||
|
||||
{{list_each_with_description_and_evidence}}
|
||||
|
||||
## Minor Issues (Nice to Have)
|
||||
|
||||
{{list_each_with_description}}
|
||||
|
||||
## Successes
|
||||
|
||||
{{list_what_was_done_well}}
|
||||
|
||||
```
|
||||
|
||||
## User Alert and Remediation
|
||||
|
||||
**If FAIL:**
|
||||
- Show issues summary and top 3 issues
|
||||
- Offer options: (1) Auto-improve story, (2) Show detailed findings, (3) Fix manually, (4) Accept as-is
|
||||
- If option 1: Re-load source docs, regenerate affected sections, re-run validation
|
||||
|
||||
**If PASS with issues:**
|
||||
- Show issues list
|
||||
- Ask: "Improve story? (y/n)"
|
||||
- If yes: Enhance story with missing items
|
||||
|
||||
**If PASS:**
|
||||
- Confirm: All quality standards met
|
||||
- List successes
|
||||
- Ready for story-context generation
|
||||
|
||||
</validation-checklist>
|
||||
```
|
||||
|
||||
## Quick Reference
|
||||
|
||||
**Validation runs in fresh context and checks:**
|
||||
|
||||
1. ✅ Previous story continuity captured (files, notes, **unresolved review items**)
|
||||
2. ✅ All relevant source docs discovered and cited
|
||||
3. ✅ ACs match tech spec/epics exactly
|
||||
4. ✅ Tasks cover all ACs with testing
|
||||
5. ✅ Dev Notes have specific guidance with citations (not generic)
|
||||
6. ✅ Structure and metadata complete
|
||||
|
||||
**Severity Levels:**
|
||||
|
||||
- **CRITICAL** = Missing previous story reference, missing tech spec cite, unresolved review items not called out, story not in epics
|
||||
- **MAJOR** = Missing arch docs, missing files from previous story, vague Dev Notes, ACs don't match source, no testing subtasks
|
||||
- **MINOR** = Vague citations, orphan tasks, missing Change Log
|
||||
|
||||
**Outcome Triggers:**
|
||||
|
||||
- **FAIL** = Any critical OR >3 major issues
|
||||
- **PASS with issues** = ≤3 major issues, no critical
|
||||
- **PASS** = All checks passed
|
||||
|
|
@ -0,0 +1,283 @@
|
|||
# Create Story - Workflow Instructions (Spec-compliant, non-interactive by default)
|
||||
|
||||
````xml
|
||||
<critical>The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
<critical>This workflow creates or updates the next user story from epics/PRD and architecture context, saving to the configured stories directory and optionally invoking Story Context.</critical>
|
||||
<critical>DOCUMENT OUTPUT: Concise, technical, actionable story specifications. Use tables/lists for acceptance criteria and tasks.</critical>
|
||||
|
||||
## 📚 Document Discovery - Selective Epic Loading
|
||||
|
||||
**Strategy**: This workflow needs only ONE specific epic and its stories, not all epics. This provides huge efficiency gains when epics are sharded.
|
||||
|
||||
**Epic Discovery Process (SELECTIVE OPTIMIZATION):**
|
||||
|
||||
1. **Determine which epic** you need (epic_num from story context - e.g., story "3-2-feature-name" needs Epic 3)
|
||||
2. **Check for sharded version**: Look for `epics/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- **Load ONLY `epic-{epic_num}.md`** (e.g., `epics/epic-3.md` for Epic 3)
|
||||
- DO NOT load all epic files - only the one needed!
|
||||
- This is the key efficiency optimization for large multi-epic projects
|
||||
4. **If whole document found**: Load the complete `epics.md` file and extract the relevant epic
|
||||
|
||||
**Other Documents (prd, architecture, ux-design) - Full Load:**
|
||||
|
||||
1. **Search for whole document first** - Use fuzzy file matching
|
||||
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- Read ALL section files listed in the index
|
||||
- Treat combined content as single document
|
||||
4. **Brownfield projects**: The `document-project` workflow creates `{output_folder}/docs/index.md`
|
||||
|
||||
**Priority**: If both whole and sharded versions exist, use the whole document.
|
||||
|
||||
**UX-Heavy Projects**: Always check for ux-design documentation as it provides critical context for UI-focused stories.
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Load config and initialize">
|
||||
<action>Resolve variables from config_source: story_dir (dev_story_location), output_folder, user_name, communication_language. If story_dir missing and {{non_interactive}} == false → ASK user to provide a stories directory and update variable. If {{non_interactive}} == true and missing, HALT with a clear message.</action>
|
||||
<action>Create {{story_dir}} if it does not exist</action>
|
||||
<action>Resolve installed component paths from workflow.yaml: template, instructions, validation</action>
|
||||
<action>Resolve recommended inputs if present: epics_file, prd_file, architecture_file</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Discover and load source documents">
|
||||
<critical>PREVIOUS STORY CONTINUITY: Essential for maintaining context and learning from prior development</critical>
|
||||
|
||||
<action>Find the previous completed story to extract dev agent learnings and review findings:
|
||||
1. Load {{output_folder}}/sprint-status.yaml COMPLETELY
|
||||
2. Find current {{story_key}} in development_status section
|
||||
3. Identify the story entry IMMEDIATELY ABOVE current story (previous row in file order)
|
||||
4. If previous story exists:
|
||||
- Extract {{previous_story_key}}
|
||||
- Check previous story status (done, in-progress, review, etc.)
|
||||
- If status is "done", "review", or "in-progress" (has some completion):
|
||||
* Construct path: {{story_dir}}/{{previous_story_key}}.md
|
||||
* Load the COMPLETE previous story file
|
||||
* Parse ALL sections comprehensively:
|
||||
|
||||
A) Dev Agent Record → Completion Notes List:
|
||||
- New patterns/services created (to reuse, not recreate)
|
||||
- Architectural deviations or decisions made
|
||||
- Technical debt deferred to future stories
|
||||
- Warnings or recommendations for next story
|
||||
- Interfaces/methods created for reuse
|
||||
|
||||
B) Dev Agent Record → Debug Log References:
|
||||
- Issues encountered and solutions
|
||||
- Gotchas or unexpected challenges
|
||||
- Workarounds applied
|
||||
|
||||
C) Dev Agent Record → File List:
|
||||
- Files created (NEW) - understand new capabilities
|
||||
- Files modified (MODIFIED) - track evolving components
|
||||
- Files deleted (DELETED) - removed functionality
|
||||
|
||||
D) Dev Notes:
|
||||
- Any "future story" notes or TODOs
|
||||
- Patterns established
|
||||
- Constraints discovered
|
||||
|
||||
E) Senior Developer Review (AI) section (if present):
|
||||
- Review outcome (Approve/Changes Requested/Blocked)
|
||||
- Unresolved action items (unchecked [ ] items)
|
||||
- Key findings that might affect this story
|
||||
- Architectural concerns raised
|
||||
|
||||
F) Senior Developer Review → Action Items (if present):
|
||||
- Check for unchecked [ ] items still pending
|
||||
- Note any systemic issues that apply to multiple stories
|
||||
|
||||
G) Review Follow-ups (AI) tasks (if present):
|
||||
- Check for unchecked [ ] review tasks still pending
|
||||
- Determine if they're epic-wide concerns
|
||||
|
||||
H) Story Status:
|
||||
- If "review" or "in-progress" - incomplete, note what's pending
|
||||
- If "done" - confirmed complete
|
||||
* Store ALL findings as {{previous_story_learnings}} with structure:
|
||||
- new_files: [list]
|
||||
- modified_files: [list]
|
||||
- new_services: [list with descriptions]
|
||||
- architectural_decisions: [list]
|
||||
- technical_debt: [list]
|
||||
- warnings_for_next: [list]
|
||||
- review_findings: [list if review exists]
|
||||
- pending_items: [list of unchecked action items]
|
||||
- If status is "backlog" or "drafted":
|
||||
* Set {{previous_story_learnings}} = "Previous story not yet implemented"
|
||||
5. If no previous story exists (first story in epic):
|
||||
- Set {{previous_story_learnings}} = "First story in epic - no predecessor context"
|
||||
</action>
|
||||
|
||||
<action>If {{tech_spec_file}} empty: derive from {{tech_spec_glob_template}} with {{epic_num}} and search {{tech_spec_search_dir}} recursively. If multiple, pick most recent by modified time.</action>
|
||||
<action>Build a prioritized document set for this epic:
|
||||
1) tech_spec_file (epic-scoped)
|
||||
2) epics_file (acceptance criteria and breakdown)
|
||||
3) prd_file (business requirements and constraints)
|
||||
4) architecture_file (architecture constraints)
|
||||
5) Architecture docs under docs/ and output_folder/: tech-stack.md, unified-project-structure.md, coding-standards.md, testing-strategy.md, backend-architecture.md, frontend-architecture.md, data-models.md, database-schema.md, rest-api-spec.md, external-apis.md (include if present)
|
||||
</action>
|
||||
<action>READ COMPLETE FILES for all items found in the prioritized set. Store content and paths for citation.</action>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Find next backlog story to draft" tag="sprint-status">
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file from start to end to preserve order</critical>
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||
<action>Parse the development_status section completely to understand story order</action>
|
||||
|
||||
<action>Find the FIRST story (by reading in order from top to bottom) where:
|
||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||
- Status value equals "backlog"
|
||||
</action>
|
||||
|
||||
<check if="no backlog story found">
|
||||
<output>📋 No backlog stories found in sprint-status.yaml
|
||||
|
||||
All stories are either already drafted or completed.
|
||||
|
||||
**Options:**
|
||||
1. Run sprint-planning to refresh story tracking
|
||||
2. Load PM agent and run correct-course to add more stories
|
||||
3. Check if current sprint is complete
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Extract from found story key (e.g., "1-2-user-authentication"):
|
||||
- epic_num: first number before dash (e.g., "1")
|
||||
- story_num: second number after first dash (e.g., "2")
|
||||
- story_title: remainder after second dash (e.g., "user-authentication")
|
||||
</action>
|
||||
<action>Set {{story_id}} = "{{epic_num}}.{{story_num}}"</action>
|
||||
<action>Store story_key for later use (e.g., "1-2-user-authentication")</action>
|
||||
|
||||
<action>Verify story is enumerated in {{epics_file}}. If not found, HALT with message:</action>
|
||||
<action>"Story {{story_key}} not found in epics.md. Please load PM agent and run correct-course to sync epics, then rerun create-story."</action>
|
||||
|
||||
<action>Check if story file already exists at expected path in {{story_dir}}</action>
|
||||
<check if="story file exists">
|
||||
<output>ℹ️ Story file already exists: {{story_file_path}}
|
||||
|
||||
Will update existing story file rather than creating new one.
|
||||
</output>
|
||||
<action>Set update_mode = true</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Extract requirements and derive story statement">
|
||||
<action>From tech_spec_file (preferred) or epics_file: extract epic {{epic_num}} title/summary, acceptance criteria for the next story, and any component references. If not present, fall back to PRD sections mapping to this epic/story.</action>
|
||||
<action>From architecture and architecture docs: extract constraints, patterns, component boundaries, and testing guidance relevant to the extracted ACs. ONLY capture information that directly informs implementation of this story.</action>
|
||||
<action>Derive a clear user story statement (role, action, benefit) grounded strictly in the above sources. If ambiguous and {{non_interactive}} == false → ASK user to clarify. If {{non_interactive}} == true → generate the best grounded statement WITHOUT inventing domain facts.</action>
|
||||
<template-output file="{default_output_file}">requirements_context_summary</template-output>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Project structure alignment and lessons learned">
|
||||
<action>Review {{previous_story_learnings}} and extract actionable intelligence:
|
||||
- New patterns/services created → Note for reuse (DO NOT recreate)
|
||||
- Architectural deviations → Understand and maintain consistency
|
||||
- Technical debt items → Assess if this story should address them
|
||||
- Files modified → Understand current state of evolving components
|
||||
- Warnings/recommendations → Apply to this story's approach
|
||||
- Review findings → Learn from issues found in previous story
|
||||
- Pending action items → Determine if epic-wide concerns affect this story
|
||||
</action>
|
||||
|
||||
<action>If unified-project-structure.md present: align expected file paths, module names, and component locations; note any potential conflicts.</action>
|
||||
|
||||
<action>Cross-reference {{previous_story_learnings}}.new_files with project structure to understand where new capabilities are located.</action>
|
||||
|
||||
<template-output file="{default_output_file}">structure_alignment_summary</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Assemble acceptance criteria and tasks">
|
||||
<action>Assemble acceptance criteria list from tech_spec or epics. If gaps exist, derive minimal, testable criteria from PRD verbatim phrasing (NO invention).</action>
|
||||
<action>Create tasks/subtasks directly mapped to ACs. Include explicit testing subtasks per testing-strategy and existing tests framework. Cite architecture/source documents for any technical mandates.</action>
|
||||
<template-output file="{default_output_file}">acceptance_criteria</template-output>
|
||||
<template-output file="{default_output_file}">tasks_subtasks</template-output>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Create or update story document">
|
||||
<action>Resolve output path: {default_output_file} using current {{epic_num}} and {{story_num}}. If targeting an existing story for update, use its path.</action>
|
||||
<action>Initialize from template.md if creating a new file; otherwise load existing file for edit.</action>
|
||||
<action>Compute a concise story_title from epic/story context; if missing, synthesize from PRD feature name and epic number.</action>
|
||||
<template-output file="{default_output_file}">story_header</template-output>
|
||||
<template-output file="{default_output_file}">story_body</template-output>
|
||||
<template-output file="{default_output_file}">dev_notes_with_citations</template-output>
|
||||
|
||||
<action>If {{previous_story_learnings}} contains actionable items (not "First story" or "not yet implemented"):
|
||||
- Add "Learnings from Previous Story" subsection to Dev Notes
|
||||
- Include relevant completion notes, new files/patterns, deviations
|
||||
- Cite previous story file as reference [Source: stories/{{previous_story_key}}.md]
|
||||
- Highlight interfaces/services to REUSE (not recreate)
|
||||
- Note any technical debt to address in this story
|
||||
- List pending review items that affect this story (if any)
|
||||
- Reference specific files created: "Use {{file_path}} for {{purpose}}"
|
||||
- Format example:
|
||||
```
|
||||
### Learnings from Previous Story
|
||||
|
||||
**From Story {{previous_story_key}} (Status: {{previous_status}})**
|
||||
|
||||
- **New Service Created**: `AuthService` base class available at `src/services/AuthService.js` - use `AuthService.register()` method
|
||||
- **Architectural Change**: Switched from session-based to JWT authentication
|
||||
- **Schema Changes**: User model now includes `passwordHash` field, migration applied
|
||||
- **Technical Debt**: Email verification skipped, should be included in this or subsequent story
|
||||
- **Testing Setup**: Auth test suite initialized at `tests/integration/auth.test.js` - follow patterns established there
|
||||
- **Pending Review Items**: Rate limiting mentioned in review - consider for this story
|
||||
|
||||
[Source: stories/{{previous_story_key}}.md#Dev-Agent-Record]
|
||||
```
|
||||
</action>
|
||||
|
||||
<template-output file="{default_output_file}">change_log</template-output>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Validate, save, and mark story drafted" tag="sprint-status">
|
||||
<invoke-task>Validate against checklist at {installed_path}/checklist.md using bmad/core/tasks/validate-workflow.xml</invoke-task>
|
||||
<action>Save document unconditionally (non-interactive default). In interactive mode, allow user confirmation.</action>
|
||||
|
||||
<!-- Mark story as drafted in sprint status -->
|
||||
<action>Update {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Load the FULL file and read all development_status entries</action>
|
||||
<action>Find development_status key matching {{story_key}}</action>
|
||||
<action>Verify current status is "backlog" (expected previous state)</action>
|
||||
<action>Update development_status[{{story_key}}] = "drafted"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="story key not found in file">
|
||||
<output>⚠️ Could not update story status: {{story_key}} not found in sprint-status.yaml
|
||||
|
||||
Story file was created successfully, but sprint-status.yaml was not updated.
|
||||
You may need to run sprint-planning to refresh tracking, or manually set the story row status to `drafted`.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<action>Report created/updated story path</action>
|
||||
<output>**✅ Story Created Successfully, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
|
||||
- Story ID: {{story_id}}
|
||||
- Story Key: {{story_key}}
|
||||
- File: {{story_file}}
|
||||
- Status: drafted (was backlog)
|
||||
|
||||
**⚠️ Important:** The following workflows are context-intensive. It's recommended to clear context and restart the SM agent before running the next command.
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Review the drafted story in {{story_file}}
|
||||
2. **[RECOMMENDED]** Run `story-context` to generate technical context XML and mark story ready for development (combines context + ready in one step)
|
||||
3. Or run `story-ready` to manually mark the story ready without generating technical context
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
````
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Story {{epic_num}}.{{story_num}}: {{story_title}}
|
||||
|
||||
Status: drafted
|
||||
|
||||
## Story
|
||||
|
||||
As a {{role}},
|
||||
I want {{action}},
|
||||
so that {{benefit}}.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
1. [Add acceptance criteria from epics/PRD]
|
||||
|
||||
## Tasks / Subtasks
|
||||
|
||||
- [ ] Task 1 (AC: #)
|
||||
- [ ] Subtask 1.1
|
||||
- [ ] Task 2 (AC: #)
|
||||
- [ ] Subtask 2.1
|
||||
|
||||
## Dev Notes
|
||||
|
||||
- Relevant architecture patterns and constraints
|
||||
- Source tree components to touch
|
||||
- Testing standards summary
|
||||
|
||||
### Project Structure Notes
|
||||
|
||||
- Alignment with unified project structure (paths, modules, naming)
|
||||
- Detected conflicts or variances (with rationale)
|
||||
|
||||
### References
|
||||
|
||||
- Cite all technical details with source paths and sections, e.g. [Source: docs/<file>.md#Section]
|
||||
|
||||
## Dev Agent Record
|
||||
|
||||
### Context Reference
|
||||
|
||||
<!-- Path(s) to story context XML will be added here by context workflow -->
|
||||
|
||||
### Agent Model Used
|
||||
|
||||
{{agent_model_name_version}}
|
||||
|
||||
### Debug Log References
|
||||
|
||||
### Completion Notes List
|
||||
|
||||
### File List
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
name: create-story
|
||||
description: "Create the next user story markdown from epics/PRD and architecture, using a standard template and saving to the stories folder"
|
||||
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"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/create-story"
|
||||
template: "{installed_path}/template.md"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Variables and inputs
|
||||
variables:
|
||||
story_dir: "{config_source}:dev_story_location" # Directory where stories are stored
|
||||
epics_file: "{output_folder}/epics.md" # Preferred source for epic/story breakdown
|
||||
prd_file: "{output_folder}/PRD.md" # Fallback for requirements
|
||||
architecture_file: "{output_folder}/architecture.md" # Optional architecture context
|
||||
tech_spec_file: "" # Will be auto-discovered from docs as tech-spec-epic-{{epic_num}}-*.md
|
||||
tech_spec_search_dir: "{project-root}/docs"
|
||||
tech_spec_glob_template: "tech-spec-epic-{{epic_num}}*.md"
|
||||
arch_docs_search_dirs: |
|
||||
- "{project-root}/docs"
|
||||
- "{output_folder}"
|
||||
arch_docs_file_names: |
|
||||
- architecture.md
|
||||
- infrastructure-architecture.md
|
||||
story_title: "" # Will be elicited if not derivable
|
||||
epic_num: 1
|
||||
story_num: 1
|
||||
non_interactive: true # Generate without elicitation; avoid interactive prompts
|
||||
|
||||
# Output configuration
|
||||
# Uses story_key from sprint-status.yaml (e.g., "1-2-user-authentication")
|
||||
default_output_file: "{story_dir}/{{story_key}}.md"
|
||||
|
||||
recommended_inputs:
|
||||
- epics: "Epic breakdown (epics.md)"
|
||||
- prd: "PRD document"
|
||||
- architecture: "Architecture (optional)"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
# Strategy: SELECTIVE LOAD - only load the specific epic needed for this story
|
||||
input_file_patterns:
|
||||
prd:
|
||||
whole: "{output_folder}/*prd*.md"
|
||||
sharded: "{output_folder}/*prd*/index.md"
|
||||
|
||||
tech_spec:
|
||||
whole: "{output_folder}/tech-spec.md"
|
||||
|
||||
architecture:
|
||||
whole: "{output_folder}/*architecture*.md"
|
||||
sharded: "{output_folder}/*architecture*/index.md"
|
||||
|
||||
ux_design:
|
||||
whole: "{output_folder}/*ux*.md"
|
||||
sharded: "{output_folder}/*ux*/index.md"
|
||||
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded_index: "{output_folder}/*epic*/index.md"
|
||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,367 @@
|
|||
# Workflow Audit Report
|
||||
|
||||
**Workflow:** dev-story
|
||||
**Audit Date:** 2025-10-25
|
||||
**Auditor:** Audit Workflow (BMAD v6)
|
||||
**Workflow Type:** Action Workflow
|
||||
**Module:** BMM (BMad Method)
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
**Overall Status:** GOOD - Minor issues to address
|
||||
|
||||
- Critical Issues: 0
|
||||
- Important Issues: 3
|
||||
- Cleanup Recommendations: 2
|
||||
|
||||
The dev-story workflow is well-structured and follows most BMAD v6 standards. The workflow correctly sets `web_bundle: false` as expected for implementation workflows. However, there are several config variable usage issues and some variables referenced in instructions that are not defined in the YAML.
|
||||
|
||||
---
|
||||
|
||||
## 1. Standard Config Block Validation
|
||||
|
||||
**Status:** PASS ✓
|
||||
|
||||
The workflow.yaml contains all required standard config variables:
|
||||
|
||||
- ✓ `config_source: "{project-root}/bmad/bmm/config.yaml"` - Correctly defined
|
||||
- ✓ `output_folder: "{config_source}:output_folder"` - Pulls from config_source
|
||||
- ✓ `user_name: "{config_source}:user_name"` - Pulls from config_source
|
||||
- ✓ `communication_language: "{config_source}:communication_language"` - Pulls from config_source
|
||||
- ✓ `date: system-generated` - Correctly set
|
||||
|
||||
All standard config variables are present and properly formatted using {project-root} variable syntax.
|
||||
|
||||
---
|
||||
|
||||
## 2. YAML/Instruction/Template Alignment
|
||||
|
||||
**Variables Analyzed:** 9 (excluding standard config)
|
||||
**Used in Instructions:** 6
|
||||
**Unused (Bloat):** 3
|
||||
|
||||
### YAML Variables Defined
|
||||
|
||||
1. `story_dir` - USED in instructions (file paths)
|
||||
2. `context_path` - UNUSED (appears to duplicate story_dir)
|
||||
3. `story_file` - USED in instructions
|
||||
4. `context_file` - USED in instructions
|
||||
5. `installed_path` - USED in instructions (workflow.xml reference)
|
||||
6. `instructions` - USED in instructions (self-reference in critical tag)
|
||||
7. `validation` - USED in instructions (checklist reference)
|
||||
8. `web_bundle` - CONFIGURATION (correctly set to false)
|
||||
9. `date` - USED in instructions (config variable)
|
||||
|
||||
### Variables Used in Instructions But NOT Defined in YAML
|
||||
|
||||
**IMPORTANT ISSUE:** The following variables are referenced in instructions.md but are NOT defined in workflow.yaml:
|
||||
|
||||
1. `{user_skill_level}` - Used 4 times (lines 6, 13, 173, 182)
|
||||
2. `{document_output_language}` - Used 1 time (line 7)
|
||||
3. `{run_until_complete}` - Used 1 time (line 108)
|
||||
4. `{run_tests_command}` - Used 1 time (line 120)
|
||||
|
||||
These variables appear to be pulling from config.yaml but are not explicitly defined in the workflow.yaml file. While the config_source mechanism may provide these, workflow.yaml should document all variables used in the workflow for clarity.
|
||||
|
||||
### Unused Variables (Bloat)
|
||||
|
||||
1. **context_path** - Defined as `"{config_source}:dev_story_location"` but never used. This duplicates `story_dir` functionality.
|
||||
|
||||
---
|
||||
|
||||
## 3. Config Variable Usage
|
||||
|
||||
**Communication Language:** PASS ✓
|
||||
**User Name:** PASS ✓
|
||||
**Output Folder:** PASS ✓
|
||||
**Date:** PASS ✓
|
||||
|
||||
### Detailed Analysis
|
||||
|
||||
**Communication Language:**
|
||||
|
||||
- ✓ Used in line 6: "Communicate all responses in {communication_language}"
|
||||
- ✓ Properly used as agent instruction variable (not in template)
|
||||
|
||||
**User Name:**
|
||||
|
||||
- ✓ Used in line 169: "Communicate to {user_name} that story implementation is complete"
|
||||
- ✓ Appropriately used for personalization
|
||||
|
||||
**Output Folder:**
|
||||
|
||||
- ✓ Used multiple times for sprint-status.yaml file paths
|
||||
- ✓ All file operations target {output_folder} correctly
|
||||
- ✓ No hardcoded paths detected
|
||||
|
||||
**Date:**
|
||||
|
||||
- ✓ Available for agent use (system-generated)
|
||||
- ✓ Used appropriately in context of workflow execution
|
||||
|
||||
### Additional Config Variables
|
||||
|
||||
**IMPORTANT ISSUE:** The workflow uses additional variables that appear to come from config but are not explicitly documented:
|
||||
|
||||
1. `{user_skill_level}` - Used to tailor communication style
|
||||
2. `{document_output_language}` - Used for document generation
|
||||
3. `{run_until_complete}` - Used for execution control
|
||||
4. `{run_tests_command}` - Used for test execution
|
||||
|
||||
These should either be:
|
||||
|
||||
- Added to workflow.yaml with proper config_source references, OR
|
||||
- Documented as optional config variables with defaults
|
||||
|
||||
---
|
||||
|
||||
## 4. Web Bundle Validation
|
||||
|
||||
**Web Bundle Present:** No (Intentional)
|
||||
**Status:** EXPECTED ✓
|
||||
|
||||
The workflow correctly sets `web_bundle: false`. This is the expected configuration for implementation workflows that:
|
||||
|
||||
- Run locally in the development environment
|
||||
- Don't need to be bundled for web deployment
|
||||
- Are IDE-integrated workflows
|
||||
|
||||
**No issues found** - This is the correct configuration for dev-story.
|
||||
|
||||
---
|
||||
|
||||
## 5. Bloat Detection
|
||||
|
||||
**Bloat Percentage:** 11% (1 unused field / 9 total fields)
|
||||
**Cleanup Potential:** Low
|
||||
|
||||
### Unused YAML Fields
|
||||
|
||||
1. **context_path** (line 11 in workflow.yaml)
|
||||
- Defined as: `"{config_source}:dev_story_location"`
|
||||
- Never referenced in instructions.md
|
||||
- Duplicates functionality of `story_dir` variable
|
||||
- **Recommendation:** Remove this variable as `story_dir` serves the same purpose
|
||||
|
||||
### Hardcoded Values
|
||||
|
||||
No significant hardcoded values that should be variables were detected. The workflow properly uses variables for:
|
||||
|
||||
- File paths ({output_folder}, {story_dir})
|
||||
- User personalization ({user_name})
|
||||
- Communication style ({communication_language}, {user_skill_level})
|
||||
|
||||
### Calculation
|
||||
|
||||
- Total yaml fields: 9 (excluding standard config and metadata)
|
||||
- Used fields: 8
|
||||
- Unused fields: 1 (context_path)
|
||||
- Bloat percentage: 11%
|
||||
|
||||
**Status:** Acceptable (under 15% threshold)
|
||||
|
||||
---
|
||||
|
||||
## 6. Template Variable Mapping
|
||||
|
||||
**Not Applicable** - This is an action workflow, not a document workflow.
|
||||
|
||||
No template.md file exists, which is correct for action-type workflows.
|
||||
|
||||
---
|
||||
|
||||
## 7. Instructions Quality Analysis
|
||||
|
||||
### Structure
|
||||
|
||||
- ✓ Steps numbered sequentially (1, 1.5, 2-7)
|
||||
- ✓ Each step has clear goal attributes
|
||||
- ✓ Proper use of XML tags (<action>, <check>, <goto>, <anchor>, <output>)
|
||||
- ✓ Logical flow control with anchors and conditional checks
|
||||
- ✓ Repeat patterns used appropriately (step 2-5 loop)
|
||||
|
||||
### Critical Tags
|
||||
|
||||
- ✓ Critical blocks present and well-defined
|
||||
- ✓ Clear references to workflow execution engine
|
||||
- ✓ Workflow.yaml load requirement specified
|
||||
- ✓ Communication preferences documented
|
||||
|
||||
### Variable Usage Consistency
|
||||
|
||||
**ISSUE:** Inconsistent variable syntax found:
|
||||
|
||||
1. Lines 4, 5 use `{project_root}` (underscore)
|
||||
2. Line 166 uses `{project-root}` (hyphen)
|
||||
|
||||
**Recommendation:** Standardize to `{project-root}` throughout (hyphen is the standard in BMAD v6)
|
||||
|
||||
### Step Quality
|
||||
|
||||
**Excellent:**
|
||||
|
||||
- Steps are focused and single-purpose
|
||||
- Clear HALT conditions defined
|
||||
- Comprehensive validation checks
|
||||
- Good error handling patterns
|
||||
- Iterative execution model well-structured
|
||||
|
||||
**Areas for improvement:**
|
||||
|
||||
- Step 1 is complex and could potentially be split
|
||||
- Some <action if="..."> conditionals could be clearer with <check> blocks
|
||||
|
||||
---
|
||||
|
||||
## Recommendations
|
||||
|
||||
### Critical (Fix Immediately)
|
||||
|
||||
None - No critical issues detected.
|
||||
|
||||
### Important (Address Soon)
|
||||
|
||||
1. **Document or Define Missing Variables**
|
||||
- Add explicit definitions in workflow.yaml for: `user_skill_level`, `document_output_language`, `run_until_complete`, `run_tests_command`
|
||||
- OR document these as optional config variables with defaults
|
||||
- These variables are used in instructions but not defined in YAML
|
||||
- **Impact:** Reduces clarity and may cause confusion about variable sources
|
||||
|
||||
2. **Standardize project-root Variable Syntax**
|
||||
- Change line 4 `{project_root}` to `{project-root}` (hyphen)
|
||||
- Ensure consistency with BMAD v6 standard naming convention
|
||||
- **Impact:** Maintains consistency with framework standards
|
||||
|
||||
3. **Remove or Use context_path Variable**
|
||||
- Variable `context_path` is defined but never used
|
||||
- Since `story_dir` serves the same purpose, remove `context_path`
|
||||
- OR if there's a semantic difference, document why both exist
|
||||
- **Impact:** Reduces bloat and potential confusion
|
||||
|
||||
### Cleanup (Nice to Have)
|
||||
|
||||
1. **Consider Splitting Step 1**
|
||||
- Step 1 handles both story discovery AND file loading
|
||||
- Could be split into "1. Find Story" and "2. Load Story Files"
|
||||
- Would improve clarity and maintainability
|
||||
- **Impact:** Minor improvement to workflow structure
|
||||
|
||||
2. **Add Variable Documentation Comment**
|
||||
- Add a comment block in workflow.yaml listing all variables used by this workflow
|
||||
- Include both explicit YAML variables and config-pulled variables
|
||||
- Example format:
|
||||
```yaml
|
||||
# Workflow-specific variables
|
||||
# - story_file: Path to story markdown
|
||||
# - story_dir: Directory containing stories
|
||||
#
|
||||
# Config-pulled variables (from bmm/config.yaml)
|
||||
# - user_skill_level: User's technical skill level
|
||||
# - document_output_language: Language for generated docs
|
||||
```
|
||||
- **Impact:** Improves developer understanding and maintenance
|
||||
|
||||
---
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
### Structure ✓
|
||||
|
||||
- [x] workflow.yaml loads without YAML syntax errors
|
||||
- [x] instructions.md exists and is properly formatted
|
||||
- [x] No template.md (correct for action workflow)
|
||||
- [x] All critical headers present in instructions
|
||||
- [x] Workflow type correctly identified (action)
|
||||
- [x] All referenced files exist
|
||||
- [x] No placeholder text remains
|
||||
|
||||
### Standard Config Block ✓
|
||||
|
||||
- [x] config_source points to correct module config
|
||||
- [x] output_folder pulls from config_source
|
||||
- [x] user_name pulls from config_source
|
||||
- [x] communication_language pulls from config_source
|
||||
- [x] date is system-generated
|
||||
- [x] Config source uses {project-root} variable
|
||||
- [x] Standard config comment present
|
||||
|
||||
### Config Variable Usage ✓
|
||||
|
||||
- [x] Instructions communicate in {communication_language}
|
||||
- [x] Instructions address {user_name}
|
||||
- [x] All file outputs use {output_folder}
|
||||
- [x] No hardcoded paths
|
||||
- [x] Date available for agent awareness
|
||||
|
||||
### YAML/Instruction/Template Alignment ⚠️
|
||||
|
||||
- [⚠️] Some variables used in instructions not defined in YAML
|
||||
- [x] Template variables N/A (action workflow)
|
||||
- [x] Variable names are descriptive
|
||||
- [⚠️] One unused yaml field (context_path)
|
||||
|
||||
### Web Bundle Validation ✓
|
||||
|
||||
- [x] web_bundle: false is correct for this workflow
|
||||
- [x] No web_bundle section needed
|
||||
- [x] Workflow is local/IDE-integrated only
|
||||
|
||||
### Instructions Quality ✓
|
||||
|
||||
- [x] Steps numbered sequentially
|
||||
- [x] Clear goal attributes
|
||||
- [x] Proper XML tag usage
|
||||
- [x] Logical flow control
|
||||
- [⚠️] Minor inconsistency: {project_root} vs {project-root}
|
||||
|
||||
### Bloat Detection ✓
|
||||
|
||||
- [x] Bloat percentage: 11% (acceptable, under 15%)
|
||||
- [x] No significant hardcoded values
|
||||
- [x] No redundant configuration
|
||||
- [x] One cleanup recommendation (context_path)
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Define missing variables** - Add explicit YAML definitions or document as config-pulled variables
|
||||
2. **Standardize variable syntax** - Change `{project_root}` to `{project-root}`
|
||||
3. **Remove context_path** - Clean up unused variable
|
||||
4. **Re-run audit** - Verify improvements after fixes
|
||||
|
||||
---
|
||||
|
||||
## Additional Notes
|
||||
|
||||
### Strengths
|
||||
|
||||
1. **Comprehensive Workflow Logic:** The dev-story workflow is well-thought-out with proper error handling, validation gates, and iterative execution
|
||||
2. **Config Integration:** Excellent use of config variables for user personalization and output management
|
||||
3. **Clear Documentation:** Instructions are detailed with specific HALT conditions and validation checkpoints
|
||||
4. **Proper Web Bundle Setting:** Correctly identifies this as a local-only workflow with web_bundle: false
|
||||
5. **Step Flow:** Excellent use of anchors, goto, and conditional checks for complex flow control
|
||||
|
||||
### Workflow Purpose
|
||||
|
||||
This workflow executes user stories by:
|
||||
|
||||
- Finding ready-for-dev stories from sprint status
|
||||
- Implementing tasks and subtasks incrementally
|
||||
- Writing comprehensive tests
|
||||
- Validating against acceptance criteria
|
||||
- Updating story status through sprint lifecycle
|
||||
- Supporting different user skill levels with adaptive communication
|
||||
|
||||
The workflow is a critical part of the BMM implementation phase and shows mature design patterns.
|
||||
|
||||
---
|
||||
|
||||
**Audit Complete** - Generated by audit-workflow v1.0
|
||||
|
||||
**Pass Rate:** 89% (62 passed / 70 total checks)
|
||||
**Recommendation:** Good - Minor fixes needed
|
||||
|
||||
The dev-story workflow is production-ready with minor improvements recommended. The issues identified are primarily documentation and consistency improvements rather than functional problems.
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
title: 'Dev Story Completion Checklist'
|
||||
validation-target: 'Story markdown ({{story_path}})'
|
||||
required-inputs:
|
||||
- 'Story markdown file with Tasks/Subtasks, Acceptance Criteria'
|
||||
optional-inputs:
|
||||
- 'Test results output (if saved)'
|
||||
- 'CI logs (if applicable)'
|
||||
validation-rules:
|
||||
- 'Only permitted sections in story were modified: Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, Change Log, and Status'
|
||||
---
|
||||
|
||||
# Dev Story Completion Checklist
|
||||
|
||||
## Tasks Completion
|
||||
|
||||
- [ ] All tasks and subtasks for this story are marked complete with [x]
|
||||
- [ ] Implementation aligns with every Acceptance Criterion in the story
|
||||
|
||||
## Tests and Quality
|
||||
|
||||
- [ ] Unit tests added/updated for core functionality changed by this story
|
||||
- [ ] Integration tests added/updated when component interactions are affected
|
||||
- [ ] End-to-end tests created for critical user flows, if applicable
|
||||
- [ ] All tests pass locally (no regressions introduced)
|
||||
- [ ] Linting and static checks (if configured) pass
|
||||
|
||||
## Story File Updates
|
||||
|
||||
- [ ] File List section includes every new/modified/deleted file (paths relative to repo root)
|
||||
- [ ] Dev Agent Record contains relevant Debug Log and/or Completion Notes for this work
|
||||
- [ ] Change Log includes a brief summary of what changed
|
||||
- [ ] Only permitted sections of the story file were modified
|
||||
|
||||
## Final Status
|
||||
|
||||
- [ ] Regression suite executed successfully
|
||||
- [ ] Story Status is set to "Ready for Review"
|
||||
|
|
@ -0,0 +1,262 @@
|
|||
# Develop Story - Workflow Instructions
|
||||
|
||||
```xml
|
||||
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
<critical>Only modify the story file in these areas: Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, Change Log, and Status</critical>
|
||||
<critical>Execute ALL steps in exact order; do NOT skip steps</critical>
|
||||
<critical>Absolutely DO NOT stop because of "milestones", "significant progress", or "session boundaries". Continue in a single execution until the story is COMPLETE (all ACs satisfied and all tasks/subtasks checked) UNLESS a HALT condition is triggered or the USER gives other instruction.</critical>
|
||||
<critical>Do NOT schedule a "next session" or request review pauses unless a HALT condition applies. Only Step 6 decides completion.</critical>
|
||||
|
||||
<critical>User skill level ({user_skill_level}) affects conversation style ONLY, not code updates.</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Find next ready story and load it" tag="sprint-status">
|
||||
<check if="{{story_path}} is provided">
|
||||
<action>Use {{story_path}} directly</action>
|
||||
<action>Read COMPLETE story file</action>
|
||||
<action>Extract story_key from filename or metadata</action>
|
||||
<goto>task_check</goto>
|
||||
</check>
|
||||
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file from start to end to preserve order</critical>
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||
<action>Parse the development_status section completely to understand story order</action>
|
||||
|
||||
<action>Find the FIRST story (by reading in order from top to bottom) where:
|
||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||
- Status value equals "ready-for-dev"
|
||||
</action>
|
||||
|
||||
<check if="no ready-for-dev or in-progress story found">
|
||||
<output>📋 No ready-for-dev stories found in sprint-status.yaml
|
||||
**Options:**
|
||||
1. Run `story-context` to generate context file and mark drafted stories as ready
|
||||
2. Run `story-ready` to quickly mark drafted stories as ready without generating context
|
||||
3. Run `create-story` if no incomplete stories are drafted yet
|
||||
4. Check {output-folder}/sprint-status.yaml to see current sprint status
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Store the found story_key (e.g., "1-2-user-authentication") for later status updates</action>
|
||||
<action>Find matching story file in {{story_dir}} using story_key pattern: {{story_key}}.md</action>
|
||||
<action>Read COMPLETE story file from discovered path</action>
|
||||
|
||||
<anchor id="task_check" />
|
||||
|
||||
<action>Parse sections: Story, Acceptance Criteria, Tasks/Subtasks, Dev Notes, Dev Agent Record, File List, Change Log, Status</action>
|
||||
|
||||
<action>Check if context file exists at: {{story_dir}}/{{story_key}}.context.xml</action>
|
||||
<check if="context file exists">
|
||||
<action>Read COMPLETE context file</action>
|
||||
<action>Parse all sections: story details, artifacts (docs, code, dependencies), interfaces, constraints, tests</action>
|
||||
<action>Use this context to inform implementation decisions and approaches</action>
|
||||
</check>
|
||||
<check if="context file does NOT exist">
|
||||
<output>ℹ️ No context file found for {{story_key}}
|
||||
|
||||
Proceeding with story file only. For better context, consider running `story-context` workflow first.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<action>Identify first incomplete task (unchecked [ ]) in Tasks/Subtasks</action>
|
||||
|
||||
<action if="no incomplete tasks"><goto step="6">Completion sequence</goto></action>
|
||||
<action if="story file inaccessible">HALT: "Cannot develop story without access to story file"</action>
|
||||
<action if="incomplete task or subtask requirements ambiguous">ASK user to clarify or HALT</action>
|
||||
</step>
|
||||
|
||||
<step n="1.5" goal="Detect review continuation and extract review context">
|
||||
<critical>Determine if this is a fresh start or continuation after code review</critical>
|
||||
|
||||
<action>Check if "Senior Developer Review (AI)" section exists in the story file</action>
|
||||
<action>Check if "Review Follow-ups (AI)" subsection exists under Tasks/Subtasks</action>
|
||||
|
||||
<check if="Senior Developer Review section exists">
|
||||
<action>Set review_continuation = true</action>
|
||||
<action>Extract from "Senior Developer Review (AI)" section:
|
||||
- Review outcome (Approve/Changes Requested/Blocked)
|
||||
- Review date
|
||||
- Total action items with checkboxes (count checked vs unchecked)
|
||||
- Severity breakdown (High/Med/Low counts)
|
||||
</action>
|
||||
<action>Count unchecked [ ] review follow-up tasks in "Review Follow-ups (AI)" subsection</action>
|
||||
<action>Store list of unchecked review items as {{pending_review_items}}</action>
|
||||
|
||||
<output>⏯️ **Resuming Story After Code Review** ({{review_date}})
|
||||
|
||||
**Review Outcome:** {{review_outcome}}
|
||||
**Action Items:** {{unchecked_review_count}} remaining to address
|
||||
**Priorities:** {{high_count}} High, {{med_count}} Medium, {{low_count}} Low
|
||||
|
||||
**Strategy:** Will prioritize review follow-up tasks (marked [AI-Review]) before continuing with regular tasks.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="Senior Developer Review section does NOT exist">
|
||||
<action>Set review_continuation = false</action>
|
||||
<action>Set {{pending_review_items}} = empty</action>
|
||||
|
||||
<output>🚀 **Starting Fresh Implementation**
|
||||
|
||||
Story: {{story_key}}
|
||||
Context file: {{context_available}}
|
||||
First incomplete task: {{first_task_description}}
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="1.6" goal="Mark story in-progress" tag="sprint-status">
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read all development_status entries to find {{story_key}}</action>
|
||||
<action>Get current status value for development_status[{{story_key}}]</action>
|
||||
|
||||
<check if="current status == 'ready-for-dev'">
|
||||
<action>Update the story in the sprint status report to = "in-progress"</action>
|
||||
<output>🚀 Starting work on story {{story_key}}
|
||||
Status updated: ready-for-dev → in-progress
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="current status == 'in-progress'">
|
||||
<output>⏯️ Resuming work on story {{story_key}}
|
||||
Story is already marked in-progress
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="current status is neither ready-for-dev nor in-progress">
|
||||
<output>⚠️ Unexpected story status: {{current_status}}
|
||||
Expected ready-for-dev or in-progress. Continuing anyway...
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Plan and implement task">
|
||||
<action>Review acceptance criteria and dev notes for the selected task</action>
|
||||
<action>Plan implementation steps and edge cases; write down a brief plan in Dev Agent Record → Debug Log</action>
|
||||
<action>Implement the task COMPLETELY including all subtasks, critically following best practices, coding patterns and coding standards in this repo you have learned about from the story and context file or your own critical agent instructions</action>
|
||||
<action>Handle error conditions and edge cases appropriately</action>
|
||||
<action if="new or different than what is documented dependencies are needed">ASK user for approval before adding</action>
|
||||
<action if="3 consecutive implementation failures occur">HALT and request guidance</action>
|
||||
<action if="required configuration is missing">HALT: "Cannot proceed without necessary configuration files"</action>
|
||||
<critical>Do not stop after partial progress; continue iterating tasks until all ACs are satisfied and tested or a HALT condition triggers</critical>
|
||||
<critical>Do NOT propose to pause for review, stand-ups, or validation until Step 6 gates are satisfied</critical>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Author comprehensive tests">
|
||||
<action>Create unit tests for business logic and core functionality introduced/changed by the task</action>
|
||||
<action>Add integration tests for component interactions where desired by test plan or story notes</action>
|
||||
<action>Include end-to-end tests for critical user flows where desired by test plan or story notes</action>
|
||||
<action>Cover edge cases and error handling scenarios noted in the test plan or story notes</action>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Run validations and tests">
|
||||
<action>Determine how to run tests for this repo (infer or use {{run_tests_command}} if provided)</action>
|
||||
<action>Run all existing tests to ensure no regressions</action>
|
||||
<action>Run the new tests to verify implementation correctness</action>
|
||||
<action>Run linting and code quality checks if configured</action>
|
||||
<action>Validate implementation meets ALL story acceptance criteria; if ACs include quantitative thresholds (e.g., test pass rate), ensure they are met before marking complete</action>
|
||||
<action if="regression tests fail">STOP and fix before continuing, consider how current changes made broke regression</action>
|
||||
<action if="new tests fail">STOP and fix before continuing</action>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Mark task complete, track review resolutions, and update story">
|
||||
<critical>If task is a review follow-up, must mark BOTH the task checkbox AND the corresponding action item in the review section</critical>
|
||||
|
||||
<action>Check if completed task has [AI-Review] prefix (indicates review follow-up task)</action>
|
||||
|
||||
<check if="task is review follow-up">
|
||||
<action>Extract review item details (severity, description, related AC/file)</action>
|
||||
<action>Add to resolution tracking list: {{resolved_review_items}}</action>
|
||||
|
||||
<!-- Mark task in Review Follow-ups section -->
|
||||
<action>Mark task checkbox [x] in "Tasks/Subtasks → Review Follow-ups (AI)" section</action>
|
||||
|
||||
<!-- CRITICAL: Also mark corresponding action item in review section -->
|
||||
<action>Find matching action item in "Senior Developer Review (AI) → Action Items" section by matching description</action>
|
||||
<action>Mark that action item checkbox [x] as resolved</action>
|
||||
|
||||
<action>Add to Dev Agent Record → Completion Notes: "✅ Resolved review finding [{{severity}}]: {{description}}"</action>
|
||||
</check>
|
||||
|
||||
<action>ONLY mark the task (and subtasks) checkbox with [x] if ALL tests pass and validation succeeds</action>
|
||||
<action>Update File List section with any new, modified, or deleted files (paths relative to repo root)</action>
|
||||
<action>Add completion notes to Dev Agent Record if significant changes were made (summarize intent, approach, and any follow-ups)</action>
|
||||
|
||||
<check if="review_continuation == true and {{resolved_review_items}} is not empty">
|
||||
<action>Count total resolved review items in this session</action>
|
||||
<action>Add Change Log entry: "Addressed code review findings - {{resolved_count}} items resolved (Date: {{date}})"</action>
|
||||
</check>
|
||||
|
||||
<action>Save the story file</action>
|
||||
<action>Determine if more incomplete tasks remain</action>
|
||||
<action if="more tasks remain"><goto step="2">Next task</goto></action>
|
||||
<action if="no tasks remain"><goto step="6">Completion</goto></action>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Story completion and mark for review" tag="sprint-status">
|
||||
<action>Verify ALL tasks and subtasks are marked [x] (re-scan the story document now)</action>
|
||||
<action>Run the full regression suite (do not skip)</action>
|
||||
<action>Confirm File List includes every changed file</action>
|
||||
<action>Execute story definition-of-done checklist, if the story includes one</action>
|
||||
<action>Update the story Status to: review</action>
|
||||
|
||||
<!-- Mark story ready for review -->
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Find development_status key matching {{story_key}}</action>
|
||||
<action>Verify current status is "in-progress" (expected previous state)</action>
|
||||
<action>Update development_status[{{story_key}}] = "review"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="story key not found in file">
|
||||
<output>⚠️ Story file updated, but sprint-status update failed: {{story_key}} not found
|
||||
|
||||
Story is marked Ready for Review in file, but sprint-status.yaml may be out of sync.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<action if="any task is incomplete">Return to step 1 to complete remaining work (Do NOT finish with partial progress)</action>
|
||||
<action if="regression failures exist">STOP and resolve before completing</action>
|
||||
<action if="File List is incomplete">Update it before completing</action>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Completion communication and user support">
|
||||
<action>Optionally run the workflow validation task against the story using {project-root}/bmad/core/tasks/validate-workflow.xml</action>
|
||||
<action>Prepare a concise summary in Dev Agent Record → Completion Notes</action>
|
||||
|
||||
<action>Communicate to {user_name} that story implementation is complete and ready for review</action>
|
||||
<action>Summarize key accomplishments: story ID, story key, title, key changes made, tests added, files modified</action>
|
||||
<action>Provide the story file path and current status (now "review", was "in-progress")</action>
|
||||
|
||||
<action>Based on {user_skill_level}, ask if user needs any explanations about:
|
||||
- What was implemented and how it works
|
||||
- Why certain technical decisions were made
|
||||
- How to test or verify the changes
|
||||
- Any patterns, libraries, or approaches used
|
||||
- Anything else they'd like clarified
|
||||
</action>
|
||||
|
||||
<check if="user asks for explanations">
|
||||
<action>Provide clear, contextual explanations tailored to {user_skill_level}</action>
|
||||
<action>Use examples and references to specific code when helpful</action>
|
||||
</check>
|
||||
|
||||
<action>Once explanations are complete (or user indicates no questions), suggest logical next steps</action>
|
||||
<action>Common next steps to suggest (but allow user flexibility):
|
||||
- Review the implemented story yourself and test the changes
|
||||
- Verify all acceptance criteria are met
|
||||
- Ensure deployment readiness if applicable
|
||||
- Run `code-review` workflow for peer review
|
||||
- Check sprint-status.yaml to see project progress
|
||||
</action>
|
||||
<action>Remain flexible - allow user to choose their own path or ask for other assistance</action>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
```
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
name: dev-story
|
||||
description: "Execute a story by implementing tasks/subtasks, writing tests, validating, and updating the story file per acceptance criteria"
|
||||
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"
|
||||
user_skill_level: "{config_source}:user_skill_level"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
story_dir: "{config_source}:dev_story_location"
|
||||
run_until_complete: "{config_source}:run_until_complete"
|
||||
run_tests_command: "{config_source}:run_tests_command"
|
||||
date: system-generated
|
||||
|
||||
story_file: "" # Explicit story path; auto-discovered if empty
|
||||
# Context file uses same story_key as story file (e.g., "1-2-user-authentication.context.xml")
|
||||
context_file: "{story_dir}/{{story_key}}.context.xml"
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/dev-story"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# Tech Spec Validation Checklist
|
||||
|
||||
```xml
|
||||
<checklist id="bmad/bmm/workflows/4-implementation/epic-tech-context/checklist">
|
||||
<item>Overview clearly ties to PRD goals</item>
|
||||
<item>Scope explicitly lists in-scope and out-of-scope</item>
|
||||
<item>Design lists all services/modules with responsibilities</item>
|
||||
<item>Data models include entities, fields, and relationships</item>
|
||||
<item>APIs/interfaces are specified with methods and schemas</item>
|
||||
<item>NFRs: performance, security, reliability, observability addressed</item>
|
||||
<item>Dependencies/integrations enumerated with versions where known</item>
|
||||
<item>Acceptance criteria are atomic and testable</item>
|
||||
<item>Traceability maps AC → Spec → Components → Tests</item>
|
||||
<item>Risks/assumptions/questions listed with mitigation/next steps</item>
|
||||
<item>Test strategy covers all ACs and critical paths</item>
|
||||
</checklist>
|
||||
```
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
<!-- BMAD BMM Tech Spec Workflow Instructions (v6) -->
|
||||
|
||||
```xml
|
||||
<critical>The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language}</critical>
|
||||
<critical>This workflow generates a comprehensive Technical Specification from PRD and Architecture, including detailed design, NFRs, acceptance criteria, and traceability mapping.</critical>
|
||||
<critical>If required inputs cannot be auto-discovered HALT with a clear message listing missing documents, allow user to provide them to proceed.</critical>
|
||||
|
||||
## 📚 Document Discovery - Selective Epic Loading
|
||||
|
||||
**Strategy**: This workflow needs only ONE specific epic and its stories, not all epics. This provides huge efficiency gains when epics are sharded.
|
||||
|
||||
**Epic Discovery Process (SELECTIVE OPTIMIZATION):**
|
||||
|
||||
1. **Determine which epic** you need (epic_num from workflow context or user input)
|
||||
2. **Check for sharded version**: Look for `epics/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- **Load ONLY `epic-{epic_num}.md`** (e.g., `epics/epic-3.md` for Epic 3)
|
||||
- DO NOT load all epic files - only the one needed!
|
||||
- This is the key efficiency optimization for large multi-epic projects
|
||||
4. **If whole document found**: Load the complete `epics.md` file and extract the relevant epic
|
||||
|
||||
**Other Documents (prd, gdd, architecture, ux-design) - Full Load:**
|
||||
|
||||
1. **Search for whole document first** - Use fuzzy file matching
|
||||
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- Read ALL section files listed in the index
|
||||
- Treat combined content as single document
|
||||
4. **Brownfield projects**: The `document-project` workflow creates `{output_folder}/docs/index.md`
|
||||
|
||||
**Priority**: If both whole and sharded versions exist, use the whole document.
|
||||
|
||||
**UX-Heavy Projects**: Always check for ux-design documentation as it provides critical context for UI-focused epics and stories.
|
||||
|
||||
<workflow>
|
||||
<step n="1" goal="Collect inputs and discover next epic" tag="sprint-status">
|
||||
<action>Identify PRD and Architecture documents from recommended_inputs. Attempt to auto-discover at default paths.</action>
|
||||
<ask if="inputs are missing">ask the user for file paths. HALT and wait for docs to proceed</ask>
|
||||
|
||||
<!-- Intelligent Epic Discovery -->
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file to discover next epic</critical>
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read ALL development_status entries</action>
|
||||
<action>Find all epics with status "backlog" (not yet contexted)</action>
|
||||
<action>Identify the FIRST backlog epic as the suggested default</action>
|
||||
|
||||
<check if="backlog epics found">
|
||||
<output>📋 **Next Epic Suggested:** Epic {{suggested_epic_id}}: {{suggested_epic_title}}</output>
|
||||
<ask>Use this epic?
|
||||
- [y] Yes, use {{suggested_epic_id}}
|
||||
- [n] No, let me specify a different epic_id
|
||||
</ask>
|
||||
|
||||
<check if="user selects 'n'">
|
||||
<ask>Enter the epic_id you want to context</ask>
|
||||
<action>Store user-provided epic_id as {{epic_id}}</action>
|
||||
</check>
|
||||
|
||||
<check if="user selects 'y'">
|
||||
<action>Use {{suggested_epic_id}} as {{epic_id}}</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="no backlog epics found">
|
||||
<output>✅ All epics are already contexted!
|
||||
|
||||
No epics with status "backlog" found in sprint-status.yaml.
|
||||
</output>
|
||||
<ask>Do you want to re-context an existing epic? Enter epic_id or [q] to quit:</ask>
|
||||
|
||||
<check if="user enters epic_id">
|
||||
<action>Store as {{epic_id}}</action>
|
||||
</check>
|
||||
|
||||
<check if="user enters 'q'">
|
||||
<action>HALT - No work needed</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<action>Extract {{epic_title}} from PRD based on {{epic_id}}.</action>
|
||||
<action>Resolve output file path using workflow variables and initialize by writing the template.</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Validate epic exists in sprint status" tag="sprint-status">
|
||||
<action>Look for epic key "epic-{{epic_id}}" in development_status (already loaded from step 1)</action>
|
||||
<action>Get current status value if epic exists</action>
|
||||
|
||||
<check if="epic not found">
|
||||
<output>⚠️ Epic {{epic_id}} not found in sprint-status.yaml
|
||||
|
||||
This epic hasn't been registered in the sprint plan yet.
|
||||
Run sprint-planning workflow to initialize epic tracking.
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<check if="epic status == 'contexted'">
|
||||
<output>ℹ️ Epic {{epic_id}} already marked as contexted
|
||||
|
||||
Continuing to regenerate tech spec...
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Overview and scope">
|
||||
<action>Read COMPLETE found {recommended_inputs}.</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{overview}} with a concise 1-2 paragraph summary referencing PRD context and goals
|
||||
Replace {{objectives_scope}} with explicit in-scope and out-of-scope bullets
|
||||
Replace {{system_arch_alignment}} with a short alignment summary to the architecture (components referenced, constraints)
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Detailed design">
|
||||
<action>Derive concrete implementation specifics from all {recommended_inputs} (CRITICAL: NO invention). If a epic tech spec precedes this one and exists, maintain consistency where appropriate.</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{services_modules}} with a table or bullets listing services/modules with responsibilities, inputs/outputs, and owners
|
||||
Replace {{data_models}} with normalized data model definitions (entities, fields, types, relationships); include schema snippets where available
|
||||
Replace {{apis_interfaces}} with API endpoint specs or interface signatures (method, path, request/response models, error codes)
|
||||
Replace {{workflows_sequencing}} with sequence notes or diagrams-as-text (steps, actors, data flow)
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Non-functional requirements">
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{nfr_performance}} with measurable targets (latency, throughput); link to any performance requirements in PRD/Architecture
|
||||
Replace {{nfr_security}} with authn/z requirements, data handling, threat notes; cite source sections
|
||||
Replace {{nfr_reliability}} with availability, recovery, and degradation behavior
|
||||
Replace {{nfr_observability}} with logging, metrics, tracing requirements; name required signals
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Dependencies and integrations">
|
||||
<action>Scan repository for dependency manifests (e.g., package.json, pyproject.toml, go.mod, Unity Packages/manifest.json).</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{dependencies_integrations}} with a structured list of dependencies and integration points with version or commit constraints when known
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Acceptance criteria and traceability">
|
||||
<action>Extract acceptance criteria from PRD; normalize into atomic, testable statements.</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{acceptance_criteria}} with a numbered list of testable acceptance criteria
|
||||
Replace {{traceability_mapping}} with a table mapping: AC → Spec Section(s) → Component(s)/API(s) → Test Idea
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Risks and test strategy">
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{risks_assumptions_questions}} with explicit list (each item labeled as Risk/Assumption/Question) with mitigation or next step
|
||||
Replace {{test_strategy}} with a brief plan (test levels, frameworks, coverage of ACs, edge cases)
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Validate and mark epic contexted" tag="sprint-status">
|
||||
<invoke-task>Validate against checklist at {installed_path}/checklist.md using bmad/core/tasks/validate-workflow.xml</invoke-task>
|
||||
|
||||
<!-- Mark epic as contexted -->
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Find development_status key "epic-{{epic_id}}"</action>
|
||||
<action>Verify current status is "backlog" (expected previous state)</action>
|
||||
<action>Update development_status["epic-{{epic_id}}"] = "contexted"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="epic key not found in file">
|
||||
<output>⚠️ Could not update epic status: epic-{{epic_id}} not found</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Tech Spec Generated Successfully, {user_name}!**
|
||||
|
||||
**Epic Details:**
|
||||
- Epic ID: {{epic_id}}
|
||||
- Epic Title: {{epic_title}}
|
||||
- Tech Spec File: {{default_output_file}}
|
||||
- Epic Status: contexted (was backlog)
|
||||
|
||||
**Note:** This is a JIT (Just-In-Time) workflow - run again for other epics as needed.
|
||||
|
||||
**Next Steps:**
|
||||
1. Load SM agent and run `create-story` to begin implementing the first story under this epic.
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
```
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
# Epic Technical Specification: {{epic_title}}
|
||||
|
||||
Date: {{date}}
|
||||
Author: {{user_name}}
|
||||
Epic ID: {{epic_id}}
|
||||
Status: Draft
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
{{overview}}
|
||||
|
||||
## Objectives and Scope
|
||||
|
||||
{{objectives_scope}}
|
||||
|
||||
## System Architecture Alignment
|
||||
|
||||
{{system_arch_alignment}}
|
||||
|
||||
## Detailed Design
|
||||
|
||||
### Services and Modules
|
||||
|
||||
{{services_modules}}
|
||||
|
||||
### Data Models and Contracts
|
||||
|
||||
{{data_models}}
|
||||
|
||||
### APIs and Interfaces
|
||||
|
||||
{{apis_interfaces}}
|
||||
|
||||
### Workflows and Sequencing
|
||||
|
||||
{{workflows_sequencing}}
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
### Performance
|
||||
|
||||
{{nfr_performance}}
|
||||
|
||||
### Security
|
||||
|
||||
{{nfr_security}}
|
||||
|
||||
### Reliability/Availability
|
||||
|
||||
{{nfr_reliability}}
|
||||
|
||||
### Observability
|
||||
|
||||
{{nfr_observability}}
|
||||
|
||||
## Dependencies and Integrations
|
||||
|
||||
{{dependencies_integrations}}
|
||||
|
||||
## Acceptance Criteria (Authoritative)
|
||||
|
||||
{{acceptance_criteria}}
|
||||
|
||||
## Traceability Mapping
|
||||
|
||||
{{traceability_mapping}}
|
||||
|
||||
## Risks, Assumptions, Open Questions
|
||||
|
||||
{{risks_assumptions_questions}}
|
||||
|
||||
## Test Strategy Summary
|
||||
|
||||
{{test_strategy}}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
name: epic-tech-context
|
||||
description: "Generate a comprehensive Technical Specification from PRD and Architecture with acceptance criteria and traceability mapping"
|
||||
author: "BMAD BMM"
|
||||
|
||||
# Critical variables
|
||||
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"
|
||||
date: system-generated
|
||||
|
||||
# Inputs expected (check output_folder or ask user if missing)
|
||||
recommended_inputs:
|
||||
- prd
|
||||
- gdd
|
||||
- architecture
|
||||
- ux_design
|
||||
- epics (only the specific epic needed for this tech spec)
|
||||
- prior epic tech-specs for model, style and consistency reference
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
# Strategy: SELECTIVE LOAD - only load the specific epic needed (epic_num from context)
|
||||
input_file_patterns:
|
||||
prd:
|
||||
whole: "{output_folder}/*prd*.md"
|
||||
sharded: "{output_folder}/*prd*/index.md"
|
||||
|
||||
gdd:
|
||||
whole: "{output_folder}/*gdd*.md"
|
||||
sharded: "{output_folder}/*gdd*/index.md"
|
||||
|
||||
architecture:
|
||||
whole: "{output_folder}/*architecture*.md"
|
||||
sharded: "{output_folder}/*architecture*/index.md"
|
||||
|
||||
ux_design:
|
||||
whole: "{output_folder}/*ux*.md"
|
||||
sharded: "{output_folder}/*ux*/index.md"
|
||||
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded_index: "{output_folder}/*epic*/index.md"
|
||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/epic-tech-context"
|
||||
template: "{installed_path}/template.md"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/tech-spec-epic-{{epic_id}}.md"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,73 @@
|
|||
# Retrospective - Epic Completion Review Workflow
|
||||
name: "retrospective"
|
||||
description: "Run after epic completion to review overall success, extract lessons learned, and explore if new information emerged that might impact the next epic"
|
||||
author: "BMad"
|
||||
|
||||
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"
|
||||
user_skill_level: "{config_source}:user_skill_level"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
date: system-generated
|
||||
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/retrospective"
|
||||
template: false
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
|
||||
mode: interactive
|
||||
trigger: "Run AFTER completing an epic"
|
||||
|
||||
required_inputs:
|
||||
- agent_manifest: "{project-root}/bmad/_cfg/agent-manifest.csv"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
# Strategy: SELECTIVE LOAD - only load the completed epic and relevant retrospectives
|
||||
input_file_patterns:
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded_index: "{output_folder}/*epic*/index.md"
|
||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
||||
|
||||
previous_retrospective:
|
||||
pattern: "{output_folder}/retrospectives/epic-{{prev_epic_num}}-retro-*.md"
|
||||
|
||||
architecture:
|
||||
whole: "{output_folder}/*architecture*.md"
|
||||
sharded: "{output_folder}/*architecture*/index.md"
|
||||
|
||||
prd:
|
||||
whole: "{output_folder}/*prd*.md"
|
||||
sharded: "{output_folder}/*prd*/index.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
# Required files
|
||||
sprint_status_file: "{output_folder}/sprint-status.yaml"
|
||||
story_directory: "{config_source}:dev_story_location"
|
||||
retrospectives_folder: "{output_folder}/retrospectives"
|
||||
|
||||
output_artifacts:
|
||||
- retrospective_summary: "Comprehensive review of what went well and what could improve"
|
||||
- lessons_learned: "Key insights for future epics"
|
||||
- action_items: "Specific improvements with ownership"
|
||||
- next_epic_preparation: "Dependencies, gaps, and preparation tasks for next epic"
|
||||
- critical_path: "Blockers or prerequisites that must be addressed"
|
||||
|
||||
facilitation:
|
||||
facilitator: "Bob (Scrum Master)"
|
||||
tone: "Psychological safety - no blame, focus on systems and processes"
|
||||
format: "Two-part: (1) Review completed epic + (2) Preview next epic preparation"
|
||||
|
||||
validation_required:
|
||||
- testing_complete: "Has full regression testing been completed?"
|
||||
- deployment_status: "Has epic been deployed to production?"
|
||||
- business_validation: "Have stakeholders reviewed and accepted deliverables?"
|
||||
- technical_health: "Is codebase in stable, maintainable state?"
|
||||
- blocker_resolution: "Any unresolved blockers that will impact next epic?"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# Sprint Planning Validation Checklist
|
||||
|
||||
## Core Validation
|
||||
|
||||
### Complete Coverage Check
|
||||
|
||||
- [ ] Every epic found in epic\*.md files appears in sprint-status.yaml
|
||||
- [ ] Every story found in epic\*.md files appears in sprint-status.yaml
|
||||
- [ ] Every epic has a corresponding retrospective entry
|
||||
- [ ] No items in sprint-status.yaml that don't exist in epic files
|
||||
|
||||
### Parsing Verification
|
||||
|
||||
Compare epic files against generated sprint-status.yaml:
|
||||
|
||||
```
|
||||
Epic Files Contains: Sprint Status Contains:
|
||||
✓ Epic 1 ✓ epic-1: [status]
|
||||
✓ Story 1.1: User Auth ✓ 1-1-user-auth: [status]
|
||||
✓ Story 1.2: Account Mgmt ✓ 1-2-account-mgmt: [status]
|
||||
✓ Story 1.3: Plant Naming ✓ 1-3-plant-naming: [status]
|
||||
✓ epic-1-retrospective: [status]
|
||||
✓ Epic 2 ✓ epic-2: [status]
|
||||
✓ Story 2.1: Personality Model ✓ 2-1-personality-model: [status]
|
||||
✓ Story 2.2: Chat Interface ✓ 2-2-chat-interface: [status]
|
||||
✓ epic-2-retrospective: [status]
|
||||
```
|
||||
|
||||
### Final Check
|
||||
|
||||
- [ ] Total count of epics matches
|
||||
- [ ] Total count of stories matches
|
||||
- [ ] All items are in the expected order (epic, stories, retrospective)
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
# Sprint Planning - Sprint Status Generator
|
||||
|
||||
<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/bmm/workflows/4-implementation/sprint-planning/workflow.yaml</critical>
|
||||
|
||||
## 📚 Document Discovery - Full Epic Loading
|
||||
|
||||
**Strategy**: Sprint planning needs ALL epics and stories to build complete status tracking.
|
||||
|
||||
**Epic Discovery Process:**
|
||||
|
||||
1. **Search for whole document first** - Look for `epics.md`, `bmm-epics.md`, or any `*epic*.md` file
|
||||
2. **Check for sharded version** - If whole document not found, look for `epics/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand the document structure
|
||||
- Read ALL epic section files listed in the index (e.g., `epic-1.md`, `epic-2.md`, etc.)
|
||||
- Process all epics and their stories from the combined content
|
||||
- This ensures complete sprint status coverage
|
||||
4. **Priority**: If both whole and sharded versions exist, use the whole document
|
||||
|
||||
**Fuzzy matching**: Be flexible with document names - users may use variations like `epics.md`, `bmm-epics.md`, `user-stories.md`, etc.
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Parse epic files and extract all work items">
|
||||
<action>Communicate in {communication_language} with {user_name}</action>
|
||||
<action>Look for all files matching `{epics_pattern}` in {epics_location}</action>
|
||||
<action>Could be a single `epics.md` file or multiple `epic-1.md`, `epic-2.md` files</action>
|
||||
|
||||
<action>For each epic file found, extract:</action>
|
||||
|
||||
- Epic numbers from headers like `## Epic 1:` or `## Epic 2:`
|
||||
- Story IDs and titles from patterns like `### Story 1.1: User Authentication`
|
||||
- Convert story format from `Epic.Story: Title` to kebab-case key: `epic-story-title`
|
||||
|
||||
**Story ID Conversion Rules:**
|
||||
|
||||
- Original: `### Story 1.1: User Authentication`
|
||||
- Replace period with dash: `1-1`
|
||||
- Convert title to kebab-case: `user-authentication`
|
||||
- Final key: `1-1-user-authentication`
|
||||
|
||||
<action>Build complete inventory of all epics and stories from all epic files</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Build sprint status structure">
|
||||
<action>For each epic found, create entries in this order:</action>
|
||||
|
||||
1. **Epic entry** - Key: `epic-{num}`, Default status: `backlog`
|
||||
2. **Story entries** - Key: `{epic}-{story}-{title}`, Default status: `backlog`
|
||||
3. **Retrospective entry** - Key: `epic-{num}-retrospective`, Default status: `optional`
|
||||
|
||||
**Example structure:**
|
||||
|
||||
```yaml
|
||||
development_status:
|
||||
epic-1: backlog
|
||||
1-1-user-authentication: backlog
|
||||
1-2-account-management: backlog
|
||||
epic-1-retrospective: optional
|
||||
```
|
||||
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Apply intelligent status detection">
|
||||
<action>For each epic, check if tech context file exists:</action>
|
||||
|
||||
- Check: `{output_folder}/epic-{num}-context.md`
|
||||
- If exists → set epic status to `contexted`
|
||||
- Else → keep as `backlog`
|
||||
|
||||
<action>For each story, detect current status by checking files:</action>
|
||||
|
||||
**Story file detection:**
|
||||
|
||||
- Check: `{story_location_absolute}/{story-key}.md` (e.g., `stories/1-1-user-authentication.md`)
|
||||
- If exists → upgrade status to at least `drafted`
|
||||
|
||||
**Story context detection:**
|
||||
|
||||
- Check: `{story_location_absolute}/{story-key}-context.md` (e.g., `stories/1-1-user-authentication-context.md`)
|
||||
- If exists → upgrade status to at least `ready-for-dev`
|
||||
|
||||
**Preservation rule:**
|
||||
|
||||
- If existing `{status_file}` exists and has more advanced status, preserve it
|
||||
- Never downgrade status (e.g., don't change `done` to `drafted`)
|
||||
|
||||
**Status Flow Reference:**
|
||||
|
||||
- Epic: `backlog` → `contexted`
|
||||
- Story: `backlog` → `drafted` → `ready-for-dev` → `in-progress` → `review` → `done`
|
||||
- Retrospective: `optional` ↔ `completed`
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Generate sprint status file">
|
||||
<action>Create or update {status_file} with:</action>
|
||||
|
||||
**File Structure:**
|
||||
|
||||
```yaml
|
||||
# generated: {date}
|
||||
# project: {project_name}
|
||||
# project_key: {project_key}
|
||||
# tracking_system: {tracking_system}
|
||||
# story_location: {story_location}
|
||||
|
||||
# STATUS DEFINITIONS:
|
||||
# ==================
|
||||
# Epic Status:
|
||||
# - backlog: Epic exists in epic file but not contexted
|
||||
# - contexted: Epic tech context created (required before drafting stories)
|
||||
#
|
||||
# Story Status:
|
||||
# - backlog: Story only exists in epic file
|
||||
# - drafted: Story file created in stories folder
|
||||
# - ready-for-dev: Draft approved and story context created
|
||||
# - in-progress: Developer actively working on implementation
|
||||
# - review: Under SM review (via code-review workflow)
|
||||
# - done: Story completed
|
||||
#
|
||||
# Retrospective Status:
|
||||
# - optional: Can be completed but not required
|
||||
# - completed: Retrospective has been done
|
||||
#
|
||||
# WORKFLOW NOTES:
|
||||
# ===============
|
||||
# - Epics should be 'contexted' before stories can be 'drafted'
|
||||
# - Stories can be worked in parallel if team capacity allows
|
||||
# - SM typically drafts next story after previous one is 'done' to incorporate learnings
|
||||
# - Dev moves story to 'review', SM reviews, then Dev moves to 'done'
|
||||
|
||||
generated: { date }
|
||||
project: { project_name }
|
||||
project_key: { project_key }
|
||||
tracking_system: { tracking_system }
|
||||
story_location: { story_location }
|
||||
|
||||
development_status:
|
||||
# All epics, stories, and retrospectives in order
|
||||
```
|
||||
|
||||
<action>Write the complete sprint status YAML to {status_file}</action>
|
||||
<action>CRITICAL: For story_location field, write the variable value EXACTLY as defined in workflow.yaml: "{project-root}/docs/stories"</action>
|
||||
<action>CRITICAL: Do NOT resolve {project-root} to an absolute path - keep it as the literal string "{project-root}/docs/stories"</action>
|
||||
<action>CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing</action>
|
||||
<action>Ensure all items are ordered: epic, its stories, its retrospective, next epic...</action>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Validate and report">
|
||||
<action>Perform validation checks:</action>
|
||||
|
||||
- [ ] Every epic in epic files appears in sprint-status.yaml
|
||||
- [ ] Every story in epic files appears in sprint-status.yaml
|
||||
- [ ] Every epic has a corresponding retrospective entry
|
||||
- [ ] No items in sprint-status.yaml that don't exist in epic files
|
||||
- [ ] All status values are legal (match state machine definitions)
|
||||
- [ ] File is valid YAML syntax
|
||||
|
||||
<action>Count totals:</action>
|
||||
|
||||
- Total epics: {{epic_count}}
|
||||
- Total stories: {{story_count}}
|
||||
- Epics contexted: {{contexted_count}}
|
||||
- Stories in progress: {{in_progress_count}}
|
||||
- Stories done: {{done_count}}
|
||||
|
||||
<action>Display completion summary to {user_name} in {communication_language}:</action>
|
||||
|
||||
**Sprint Status Generated Successfully**
|
||||
|
||||
- **File Location:** {status_file}
|
||||
- **Total Epics:** {{epic_count}}
|
||||
- **Total Stories:** {{story_count}}
|
||||
- **Contexted Epics:** {{contexted_count}}
|
||||
- **Stories In Progress:** {{in_progress_count}}
|
||||
- **Stories Completed:** {{done_count}}
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Review the generated sprint-status.yaml
|
||||
2. Use this file to track development progress
|
||||
3. Agents will update statuses as they work
|
||||
4. Re-run this workflow to refresh auto-detected statuses
|
||||
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
## Additional Documentation
|
||||
|
||||
### Status State Machine
|
||||
|
||||
**Epic Status Flow:**
|
||||
|
||||
```
|
||||
backlog → contexted
|
||||
```
|
||||
|
||||
- **backlog**: Epic exists in epic file but tech context not created
|
||||
- **contexted**: Epic tech context has been generated (prerequisite for story drafting)
|
||||
|
||||
**Story Status Flow:**
|
||||
|
||||
```
|
||||
backlog → drafted → ready-for-dev → in-progress → review → done
|
||||
```
|
||||
|
||||
- **backlog**: Story only exists in epic file
|
||||
- **drafted**: Story file created (e.g., `stories/1-3-plant-naming.md`)
|
||||
- **ready-for-dev**: Draft approved + story context created
|
||||
- **in-progress**: Developer actively working
|
||||
- **review**: Under SM review (via code-review workflow)
|
||||
- **done**: Completed
|
||||
|
||||
**Retrospective Status:**
|
||||
|
||||
```
|
||||
optional ↔ completed
|
||||
```
|
||||
|
||||
- **optional**: Can be done but not required
|
||||
- **completed**: Retrospective has been completed
|
||||
|
||||
### Guidelines
|
||||
|
||||
1. **Epic Context Recommended**: Epics should be `contexted` before stories can be `drafted`
|
||||
2. **Sequential Default**: Stories are typically worked in order, but parallel work is supported
|
||||
3. **Parallel Work Supported**: Multiple stories can be `in-progress` if team capacity allows
|
||||
4. **Review Before Done**: Stories should pass through `review` before `done`
|
||||
5. **Learning Transfer**: SM typically drafts next story after previous one is `done` to incorporate learnings
|
||||
|
||||
### Error Handling
|
||||
|
||||
- If epic file can't be parsed, report specific file and continue with others
|
||||
- If existing status file is malformed, backup and regenerate
|
||||
- Log warnings for duplicate story IDs across epics
|
||||
- Validate status transitions are legal (can't go from `backlog` to `done`)
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
# Sprint Status Template
|
||||
# This is an EXAMPLE showing the expected format
|
||||
# The actual file will be generated with all epics/stories from your epic files
|
||||
|
||||
# generated: {date}
|
||||
# project: {project_name}
|
||||
# project_key: {project_key}
|
||||
# tracking_system: {tracking_system}
|
||||
# story_location: {story_location}
|
||||
|
||||
# STATUS DEFINITIONS:
|
||||
# ==================
|
||||
# Epic Status:
|
||||
# - backlog: Epic exists in epic file but not contexted
|
||||
# - contexted: Next epic tech context created by *epic-tech-context (required)
|
||||
#
|
||||
# Story Status:
|
||||
# - backlog: Story only exists in epic file
|
||||
# - drafted: Story file created in stories folder by *create-story
|
||||
# - ready-for-dev: Draft approved and story context created by *story-ready
|
||||
# - in-progress: Developer actively working on implementation by *dev-story
|
||||
# - review: Implementation complete, ready for review by *code-review
|
||||
# - done: Story completed by *story-done
|
||||
#
|
||||
# Retrospective Status:
|
||||
# - optional: Can be completed but not required
|
||||
# - completed: Retrospective has been done by *retrospective
|
||||
#
|
||||
# WORKFLOW NOTES:
|
||||
# ===============
|
||||
# - Epics should be 'contexted' before stories can be 'drafted'
|
||||
# - SM typically drafts next story ONLY after previous one is 'done' to incorporate learnings
|
||||
# - Dev moves story to 'review', dev reviews, then Dev moves to 'done'
|
||||
|
||||
# EXAMPLE STRUCTURE (your actual epics/stories will replace these):
|
||||
|
||||
generated: 05-06-2-2025 21:30
|
||||
project: My Awesome Project
|
||||
project_key: jira-1234
|
||||
tracking_system: file-system
|
||||
story_location: "{project-root}/docs/stories"
|
||||
|
||||
development_status:
|
||||
epic-1: contexted
|
||||
1-1-user-authentication: done
|
||||
1-2-account-management: drafted
|
||||
1-3-plant-data-model: backlog
|
||||
1-4-add-plant-manual: backlog
|
||||
epic-1-retrospective: optional
|
||||
|
||||
epic-2: backlog
|
||||
2-1-personality-system: backlog
|
||||
2-2-chat-interface: backlog
|
||||
2-3-llm-integration: backlog
|
||||
epic-2-retrospective: optional
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
name: sprint-planning
|
||||
description: "Generate and manage the sprint status tracking file for Phase 4 implementation, extracting all epics and stories from epic files and tracking their status through the development lifecycle"
|
||||
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"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/sprint-planning"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
template: "{installed_path}/sprint-status-template.yaml"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Variables and inputs
|
||||
variables:
|
||||
# Project identification
|
||||
project_name: "{config_source}:project_name"
|
||||
project_key: "{config_source}:project_name" # Future: Jira project key, Linear workspace ID, etc.
|
||||
|
||||
# Tracking system configuration
|
||||
tracking_system: "file-system" # Options: file-system, Future will support other options from config of mcp such as jira, linear, trello
|
||||
story_location: "{project-root}/docs/stories" # Relative path for file-system, Future will support URL for Jira/Linear/Trello
|
||||
story_location_absolute: "{config_source}:dev_story_location" # Absolute path for file operations
|
||||
|
||||
# Source files (file-system only)
|
||||
epics_location: "{output_folder}" # Directory containing epic*.md files
|
||||
epics_pattern: "epic*.md" # Pattern to find epic files
|
||||
|
||||
# Output configuration
|
||||
status_file: "{output_folder}/sprint-status.yaml"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
# Strategy: FULL LOAD - sprint planning needs ALL epics to build complete status
|
||||
input_file_patterns:
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded: "{output_folder}/*epic*/index.md"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{status_file}"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Story Context Assembly Checklist
|
||||
|
||||
```xml
|
||||
<checklist id="bmad/bmm/workflows/4-implementation/story-context/checklist">
|
||||
<item>Story fields (asA/iWant/soThat) captured</item>
|
||||
<item>Acceptance criteria list matches story draft exactly (no invention)</item>
|
||||
<item>Tasks/subtasks captured as task list</item>
|
||||
<item>Relevant docs (5-15) included with path and snippets</item>
|
||||
<item>Relevant code references included with reason and line hints</item>
|
||||
<item>Interfaces/API contracts extracted if applicable</item>
|
||||
<item>Constraints include applicable dev rules and patterns</item>
|
||||
<item>Dependencies detected from manifests and frameworks</item>
|
||||
<item>Testing standards and locations populated</item>
|
||||
<item>XML structure follows story-context template format</item>
|
||||
</checklist>
|
||||
```
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<story-context id="bmad/bmm/workflows/4-implementation/story-context/template" v="1.0">
|
||||
<metadata>
|
||||
<epicId>{{epic_id}}</epicId>
|
||||
<storyId>{{story_id}}</storyId>
|
||||
<title>{{story_title}}</title>
|
||||
<status>{{story_status}}</status>
|
||||
<generatedAt>{{date}}</generatedAt>
|
||||
<generator>BMAD Story Context Workflow</generator>
|
||||
<sourceStoryPath>{{story_path}}</sourceStoryPath>
|
||||
</metadata>
|
||||
|
||||
<story>
|
||||
<asA>{{as_a}}</asA>
|
||||
<iWant>{{i_want}}</iWant>
|
||||
<soThat>{{so_that}}</soThat>
|
||||
<tasks>{{story_tasks}}</tasks>
|
||||
</story>
|
||||
|
||||
<acceptanceCriteria>{{acceptance_criteria}}</acceptanceCriteria>
|
||||
|
||||
<artifacts>
|
||||
<docs>{{docs_artifacts}}</docs>
|
||||
<code>{{code_artifacts}}</code>
|
||||
<dependencies>{{dependencies_artifacts}}</dependencies>
|
||||
</artifacts>
|
||||
|
||||
<constraints>{{constraints}}</constraints>
|
||||
<interfaces>{{interfaces}}</interfaces>
|
||||
<tests>
|
||||
<standards>{{test_standards}}</standards>
|
||||
<locations>{{test_locations}}</locations>
|
||||
<ideas>{{test_ideas}}</ideas>
|
||||
</tests>
|
||||
</story-context>
|
||||
|
|
@ -0,0 +1,234 @@
|
|||
<!-- BMAD BMM Story Context Assembly Instructions (v6) -->
|
||||
|
||||
```xml
|
||||
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language}</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
<critical>This workflow assembles a Story Context file for a single drafted story by extracting acceptance criteria, tasks, relevant docs/code, interfaces, constraints, and testing guidance.</critical>
|
||||
<critical>If story_path is provided, use it. Otherwise, find the first story with status "drafted" in sprint-status.yaml. If none found, HALT.</critical>
|
||||
<critical>Check if context file already exists. If it does, ask user if they want to replace it, verify it, or cancel.</critical>
|
||||
|
||||
<critical>DOCUMENT OUTPUT: Technical context file (.context.xml). Concise, structured, project-relative paths only.</critical>
|
||||
|
||||
## 📚 Document Discovery - Selective Epic Loading
|
||||
|
||||
**Strategy**: This workflow needs only ONE specific epic and its stories, not all epics. This provides huge efficiency gains when epics are sharded.
|
||||
|
||||
**Epic Discovery Process (SELECTIVE OPTIMIZATION):**
|
||||
|
||||
1. **Determine which epic** you need (epic_num from story key - e.g., story "3-2-feature-name" needs Epic 3)
|
||||
2. **Check for sharded version**: Look for `epics/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- **Load ONLY `epic-{epic_num}.md`** (e.g., `epics/epic-3.md` for Epic 3)
|
||||
- DO NOT load all epic files - only the one needed!
|
||||
- This is the key efficiency optimization for large multi-epic projects
|
||||
4. **If whole document found**: Load the complete `epics.md` file and extract the relevant epic
|
||||
|
||||
**Other Documents (prd, architecture, ux-design) - Full Load:**
|
||||
|
||||
1. **Search for whole document first** - Use fuzzy file matching
|
||||
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/index.md`
|
||||
3. **If sharded version found**:
|
||||
- Read `index.md` to understand structure
|
||||
- Read ALL section files listed in the index
|
||||
- Treat combined content as single document
|
||||
4. **Brownfield projects**: The `document-project` workflow creates `{output_folder}/docs/index.md`
|
||||
|
||||
**Priority**: If both whole and sharded versions exist, use the whole document.
|
||||
|
||||
**UX-Heavy Projects**: Always check for ux-design documentation as it provides critical context for UI-focused stories.
|
||||
|
||||
<workflow>
|
||||
<step n="1" goal="Find drafted story and check for existing context" tag="sprint-status">
|
||||
<check if="{{story_path}} is provided">
|
||||
<action>Use {{story_path}} directly</action>
|
||||
<action>Read COMPLETE story file and parse sections</action>
|
||||
<action>Extract story_key from filename or story metadata</action>
|
||||
<action>Verify Status is "drafted" - if not, HALT with message: "Story status must be 'drafted' to generate context"</action>
|
||||
</check>
|
||||
|
||||
<check if="{{story_path}} is NOT provided">
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file from start to end to preserve order</critical>
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||
<action>Parse the development_status section completely</action>
|
||||
|
||||
<action>Find FIRST story (reading in order from top to bottom) where:
|
||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||
- Status value equals "drafted"
|
||||
</action>
|
||||
|
||||
<check if="no story with status 'drafted' found">
|
||||
<output>📋 No drafted stories found in sprint-status.yaml
|
||||
|
||||
All stories are either still in backlog or already marked ready/in-progress/done.
|
||||
|
||||
**Next Steps:**
|
||||
1. Run `create-story` to draft more stories
|
||||
2. Run `sprint-planning` to refresh story tracking
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Use the first drafted story found</action>
|
||||
<action>Find matching story file in {{story_dir}} using story_key pattern</action>
|
||||
<action>Read the COMPLETE story file</action>
|
||||
</check>
|
||||
|
||||
<action>Extract {{epic_id}}, {{story_id}}, {{story_title}}, {{story_status}} from filename/content</action>
|
||||
<action>Parse sections: Story, Acceptance Criteria, Tasks/Subtasks, Dev Notes</action>
|
||||
<action>Extract user story fields (asA, iWant, soThat)</action>
|
||||
<template-output file="{default_output_file}">story_tasks</template-output>
|
||||
<template-output file="{default_output_file}">acceptance_criteria</template-output>
|
||||
|
||||
<!-- Check if context file already exists -->
|
||||
<action>Check if file exists at {default_output_file}</action>
|
||||
|
||||
<check if="context file already exists">
|
||||
<output>⚠️ Context file already exists: {default_output_file}
|
||||
|
||||
**What would you like to do?**
|
||||
1. **Replace** - Generate new context file (overwrites existing)
|
||||
2. **Verify** - Validate existing context file
|
||||
3. **Cancel** - Exit without changes
|
||||
</output>
|
||||
<ask>Choose action (replace/verify/cancel):</ask>
|
||||
|
||||
<check if="user chooses verify">
|
||||
<action>GOTO validation_step</action>
|
||||
</check>
|
||||
|
||||
<check if="user chooses cancel">
|
||||
<action>HALT with message: "Context generation cancelled"</action>
|
||||
</check>
|
||||
|
||||
<check if="user chooses replace">
|
||||
<action>Continue to generate new context file</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<action>Store project root path for relative path conversion: extract from {project-root} variable</action>
|
||||
<action>Define path normalization function: convert any absolute path to project-relative by removing project root prefix</action>
|
||||
<action>Initialize output by writing template to {default_output_file}</action>
|
||||
<template-output file="{default_output_file}">as_a</template-output>
|
||||
<template-output file="{default_output_file}">i_want</template-output>
|
||||
<template-output file="{default_output_file}">so_that</template-output>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Collect relevant documentation">
|
||||
<action>Scan docs and src module docs for items relevant to this story's domain: search keywords from story title, ACs, and tasks.</action>
|
||||
<action>Prefer authoritative sources: PRD, Tech-Spec, Architecture, Front-end Spec, Testing standards, module-specific docs.</action>
|
||||
<action>Note: Tech-Spec is used for Level 0-1 projects (instead of PRD). It contains comprehensive technical context, brownfield analysis, framework details, existing patterns, and implementation guidance.</action>
|
||||
<action>For each discovered document: convert absolute paths to project-relative format by removing {project-root} prefix. Store only relative paths (e.g., "docs/prd.md" not "/Users/.../docs/prd.md").</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Add artifacts.docs entries with {path, title, section, snippet}:
|
||||
- path: PROJECT-RELATIVE path only (strip {project-root} prefix)
|
||||
- title: Document title
|
||||
- section: Relevant section name
|
||||
- snippet: Brief excerpt (2-3 sentences max, NO invention)
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Analyze existing code, interfaces, and constraints">
|
||||
<action>Search source tree for modules, files, and symbols matching story intent and AC keywords (controllers, services, components, tests).</action>
|
||||
<action>Identify existing interfaces/APIs the story should reuse rather than recreate.</action>
|
||||
<action>Extract development constraints from Dev Notes and architecture (patterns, layers, testing requirements).</action>
|
||||
<action>For all discovered code artifacts: convert absolute paths to project-relative format (strip {project-root} prefix).</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Add artifacts.code entries with {path, kind, symbol, lines, reason}:
|
||||
- path: PROJECT-RELATIVE path only (e.g., "src/services/api.js" not full path)
|
||||
- kind: file type (controller, service, component, test, etc.)
|
||||
- symbol: function/class/interface name
|
||||
- lines: line range if specific (e.g., "45-67")
|
||||
- reason: brief explanation of relevance to this story
|
||||
|
||||
Populate interfaces with API/interface signatures:
|
||||
- name: Interface or API name
|
||||
- kind: REST endpoint, GraphQL, function signature, class interface
|
||||
- signature: Full signature or endpoint definition
|
||||
- path: PROJECT-RELATIVE path to definition
|
||||
|
||||
Populate constraints with development rules:
|
||||
- Extract from Dev Notes and architecture
|
||||
- Include: required patterns, layer restrictions, testing requirements, coding standards
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Gather dependencies and frameworks">
|
||||
<action>Detect dependency manifests and frameworks in the repo:
|
||||
- Node: package.json (dependencies/devDependencies)
|
||||
- Python: pyproject.toml/requirements.txt
|
||||
- Go: go.mod
|
||||
- Unity: Packages/manifest.json, Assets/, ProjectSettings/
|
||||
- Other: list notable frameworks/configs found</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Populate artifacts.dependencies with keys for detected ecosystems and their packages with version ranges where present
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Testing standards and ideas">
|
||||
<action>From Dev Notes, architecture docs, testing docs, and existing tests, extract testing standards (frameworks, patterns, locations).</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Populate tests.standards with a concise paragraph
|
||||
Populate tests.locations with directories or glob patterns where tests live
|
||||
Populate tests.ideas with initial test ideas mapped to acceptance criteria IDs
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Validate and save">
|
||||
<anchor id="validation_step" />
|
||||
<action>Validate output context file structure and content</action>
|
||||
<invoke-task>Validate against checklist at {installed_path}/checklist.md using bmad/core/tasks/validate-workflow.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Update story file and mark ready for dev" tag="sprint-status">
|
||||
<action>Open {{story_path}}</action>
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
<action>Update story file: Change Status to "ready-for-dev"</action>
|
||||
<action>Under 'Dev Agent Record' → 'Context Reference' (create if missing), add or update a list item for {default_output_file}.</action>
|
||||
<action>Save the story file.</action>
|
||||
|
||||
<!-- Update sprint status to mark ready-for-dev -->
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Find development_status key matching {{story_key}}</action>
|
||||
<action>Verify current status is "drafted" (expected previous state)</action>
|
||||
<action>Update development_status[{{story_key}}] = "ready-for-dev"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="story key not found in file">
|
||||
<output>⚠️ Story file updated, but could not update sprint-status: {{story_key}} not found
|
||||
|
||||
You may need to run sprint-planning to refresh tracking.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<output>✅ Story context generated successfully, {user_name}!
|
||||
|
||||
**Story Details:**
|
||||
|
||||
- Story: {{epic_id}}.{{story_id}} - {{story_title}}
|
||||
- Story Key: {{story_key}}
|
||||
- Context File: {default_output_file}
|
||||
- Status: drafted → ready-for-dev
|
||||
|
||||
**Context Includes:**
|
||||
|
||||
- Documentation artifacts and references
|
||||
- Existing code and interfaces
|
||||
- Dependencies and frameworks
|
||||
- Testing standards and ideas
|
||||
- Development constraints
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Review the context file: {default_output_file}
|
||||
2. Run `dev-story` to implement the story
|
||||
3. Generate context for more drafted stories if needed
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
```
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# Story Context Creation Workflow
|
||||
name: story-context
|
||||
description: "Assemble a dynamic Story Context XML by pulling latest documentation and existing code/library artifacts relevant to a drafted story"
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables
|
||||
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"
|
||||
story_path: "{config_source}:dev_story_location"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/story-context"
|
||||
template: "{installed_path}/context-template.xml"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Variables and inputs
|
||||
variables:
|
||||
story_path: "" # Optional: Explicit story path. If not provided, finds first story with status "drafted"
|
||||
story_dir: "{config_source}:dev_story_location"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
# Strategy: SELECTIVE LOAD - only load the specific epic needed for this story
|
||||
input_file_patterns:
|
||||
prd:
|
||||
whole: "{output_folder}/*prd*.md"
|
||||
sharded: "{output_folder}/*prd*/index.md"
|
||||
|
||||
tech_spec:
|
||||
whole: "{output_folder}/tech-spec.md"
|
||||
|
||||
architecture:
|
||||
whole: "{output_folder}/*architecture*.md"
|
||||
sharded: "{output_folder}/*architecture*/index.md"
|
||||
|
||||
ux_design:
|
||||
whole: "{output_folder}/*ux*.md"
|
||||
sharded: "{output_folder}/*ux*/index.md"
|
||||
|
||||
epics:
|
||||
whole: "{output_folder}/*epic*.md"
|
||||
sharded_index: "{output_folder}/*epic*/index.md"
|
||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
# Output configuration
|
||||
# Uses story_key from sprint-status.yaml (e.g., "1-2-user-authentication")
|
||||
default_output_file: "{story_dir}/{{story_key}}.context.xml"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
# Story Approved Workflow Instructions (DEV Agent)
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language}</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<critical>This workflow is run by DEV agent AFTER user confirms a story is approved (Definition of Done is complete)</critical>
|
||||
<critical>Workflow: Update story file status to Done</critical>
|
||||
|
||||
<step n="1" goal="Find reviewed story to mark done" tag="sprint-status">
|
||||
|
||||
<check if="{story_path} is provided">
|
||||
<action>Use {story_path} directly</action>
|
||||
<action>Read COMPLETE story file and parse sections</action>
|
||||
<action>Extract story_key from filename or story metadata</action>
|
||||
<action>Verify Status is "review" - if not, HALT with message: "Story status must be 'review' to mark as done"</action>
|
||||
</check>
|
||||
|
||||
<check if="{story_path} is NOT provided">
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file from start to end to preserve order</critical>
|
||||
<action>Load the FULL file: {output_folder}/sprint-status.yaml</action>
|
||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||
<action>Parse the development_status section completely</action>
|
||||
|
||||
<action>Find FIRST story (reading in order from top to bottom) where: - Key matches pattern: number-number-name (e.g., "1-2-user-auth") - NOT an epic key (epic-X) or retrospective (epic-X-retrospective) - Status value equals "review"
|
||||
</action>
|
||||
|
||||
<check if="no story with status 'review' found">
|
||||
<output>📋 No stories with status "review" found
|
||||
|
||||
All stories are either still in development or already done.
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Run `dev-story` to implement stories
|
||||
2. Run `code-review` if stories need review first
|
||||
3. Check sprint-status.yaml for current story states
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Use the first reviewed story found</action>
|
||||
<action>Find matching story file in {story_dir} using story_key pattern</action>
|
||||
<action>Read the COMPLETE story file</action>
|
||||
</check>
|
||||
|
||||
<action>Extract story_id and story_title from the story file</action>
|
||||
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
<action>Update story file: Change Status to "done"</action>
|
||||
|
||||
<action>Add completion notes to Dev Agent Record section:</action>
|
||||
<action>Find "## Dev Agent Record" section and add:
|
||||
|
||||
```
|
||||
### Completion Notes
|
||||
**Completed:** {date}
|
||||
**Definition of Done:** All acceptance criteria met, code reviewed, tests passing
|
||||
```
|
||||
|
||||
</action>
|
||||
|
||||
<action>Save the story file</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Update sprint status to done" tag="sprint-status">
|
||||
<action>Load the FULL file: {output_folder}/sprint-status.yaml</action>
|
||||
<action>Find development_status key matching {story_key}</action>
|
||||
<action>Verify current status is "review" (expected previous state)</action>
|
||||
<action>Update development_status[{story_key}] = "done"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="story key not found in file">
|
||||
<output>⚠️ Story file updated, but could not update sprint-status: {story_key} not found
|
||||
|
||||
Story is marked Done in file, but sprint-status.yaml may be out of sync.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Confirm completion to user">
|
||||
|
||||
<output>**Story Approved and Marked Done, {user_name}!**
|
||||
|
||||
✅ Story file updated → Status: done
|
||||
✅ Sprint status updated: review → done
|
||||
|
||||
**Completed Story:**
|
||||
|
||||
- **ID:** {story_id}
|
||||
- **Key:** {story_key}
|
||||
- **Title:** {story_title}
|
||||
- **Completed:** {date}
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Continue with next story in your backlog
|
||||
- Run `create-story` for next backlog story
|
||||
- Or run `dev-story` if ready stories exist
|
||||
2. Check epic completion status
|
||||
- Run `retrospective` workflow to check if epic is complete
|
||||
- Epic retrospective will verify all stories are done
|
||||
</output>
|
||||
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
```
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Story Done Workflow (DEV Agent)
|
||||
name: story-done
|
||||
description: "Marks a story as done (DoD complete) and moves it from its current status → DONE in the status file. Advances the story queue. Simple status-update workflow with no searching required."
|
||||
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"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/story-done"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
|
||||
# Variables and inputs
|
||||
variables:
|
||||
story_path: "" # Explicit path to story file
|
||||
story_dir: "{config_source}:dev_story_location" # Directory where stories are stored
|
||||
|
||||
# Output configuration - no output file, just status updates
|
||||
default_output_file: ""
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
# Story Ready Workflow Instructions (SM Agent)
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
||||
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
|
||||
<critical>Generate all documents in {document_output_language}</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<critical>This workflow is run by SM agent AFTER user reviews a drafted story and confirms it's ready for development</critical>
|
||||
<critical>Simple workflow: Update story file status to Ready</critical>
|
||||
|
||||
<step n="1" goal="Find drafted story to mark ready" tag="sprint-status">
|
||||
|
||||
<action>If {{story_path}} is provided → use it directly; extract story_key from filename or metadata; GOTO mark_ready</action>
|
||||
|
||||
<critical>MUST read COMPLETE sprint-status.yaml file from start to end to preserve order</critical>
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||
<action>Parse the development_status section completely</action>
|
||||
|
||||
<action>Find ALL stories (reading in order from top to bottom) where:
|
||||
|
||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||
- Status value equals "drafted"
|
||||
</action>
|
||||
|
||||
<action>Collect up to 10 drafted story keys in order (limit for display purposes)</action>
|
||||
<action>Count total drafted stories found</action>
|
||||
|
||||
<check if="no drafted stories found">
|
||||
<output>📋 No drafted stories found in sprint-status.yaml
|
||||
|
||||
All stories are either still in backlog or already marked ready/in-progress/done.
|
||||
|
||||
**Options:**
|
||||
|
||||
1. Run `create-story` to draft more stories
|
||||
2. Run `sprint-planning` to refresh story tracking
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Display available drafted stories:
|
||||
|
||||
**Drafted Stories Available ({{drafted_count}} found):**
|
||||
|
||||
{{list_of_drafted_story_keys}}
|
||||
|
||||
</action>
|
||||
|
||||
<ask if="{{non_interactive}} == false">Select the drafted story to mark as Ready (enter story key or number):</ask>
|
||||
<action if="{{non_interactive}} == true">Auto-select first story from the list</action>
|
||||
|
||||
<action>Resolve selected story_key from user input or auto-selection</action>
|
||||
<action>Find matching story file in {{story_dir}} using story_key pattern</action>
|
||||
|
||||
<anchor id="mark_ready" />
|
||||
|
||||
<action>Read the story file from resolved path</action>
|
||||
<action>Extract story_id and story_title from the file</action>
|
||||
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
<action>Update story file: Change Status to "ready-for-dev"</action>
|
||||
<action>Save the story file</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Update sprint status to ready-for-dev" tag="sprint-status">
|
||||
<action>Load the FULL file: {{output_folder}}/sprint-status.yaml</action>
|
||||
<action>Find development_status key matching {{story_key}}</action>
|
||||
<action>Verify current status is "drafted" (expected previous state)</action>
|
||||
<action>Update development_status[{{story_key}}] = "ready-for-dev"</action>
|
||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||
|
||||
<check if="story key not found in file">
|
||||
<output>⚠️ Story file updated, but could not update sprint-status: {{story_key}} not found
|
||||
|
||||
You may need to run sprint-planning to refresh tracking.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Confirm completion to user">
|
||||
|
||||
<output>**Story Marked Ready for Development, {user_name}!**
|
||||
|
||||
✅ Story file updated: `{{story_file}}` → Status: ready-for-dev
|
||||
✅ Sprint status updated: drafted → ready-for-dev
|
||||
|
||||
**Story Details:**
|
||||
|
||||
- **ID:** {{story_id}}
|
||||
- **Key:** {{story_key}}
|
||||
- **Title:** {{story_title}}
|
||||
- **File:** `{{story_file}}`
|
||||
- **Status:** ready-for-dev
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. **Recommended:** Run `story-context` workflow to generate implementation context
|
||||
- This creates a comprehensive context XML for the DEV agent
|
||||
- Includes relevant architecture, dependencies, and existing code
|
||||
|
||||
2. **Alternative:** Skip context generation and go directly to `dev-story` workflow
|
||||
- Faster, but DEV agent will have less context
|
||||
- Only recommended for simple, well-understood stories
|
||||
|
||||
**To proceed:**
|
||||
|
||||
- For context generation: Stay with SM agent and run `story-context` workflow
|
||||
- For direct implementation: Load DEV agent and run `dev-story` workflow
|
||||
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Story Ready Workflow (SM Agent)
|
||||
name: story-ready
|
||||
description: "Marks a drafted story as ready for development and moves it from TODO → IN PROGRESS in the status file. Simple status-update workflow with no searching required."
|
||||
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"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/story-ready"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
|
||||
# Variables and inputs
|
||||
variables:
|
||||
story_path: "" # Explicit path to story file
|
||||
story_dir: "{config_source}:dev_story_location" # Directory where stories are stored
|
||||
|
||||
# Output configuration - no output file, just status updates
|
||||
default_output_file: ""
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle: false
|
||||
|
|
@ -1,32 +1,33 @@
|
|||
workflow:
|
||||
id: domain-research
|
||||
name: "Domain Research"
|
||||
module: bmm
|
||||
version: "6.0.0-alpha"
|
||||
# Domain Research Workflow Configuration
|
||||
name: domain-research
|
||||
description: "Collaborative exploration of domain-specific requirements, regulations, and patterns for complex projects"
|
||||
author: "BMad"
|
||||
|
||||
environment:
|
||||
# Inherit from parent workflow or set defaults
|
||||
user_name: "partner"
|
||||
user_skill_level: "intermediate"
|
||||
communication_language: "English"
|
||||
document_output_language: "English"
|
||||
date: "{system.date}"
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/bmad/bmm/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}:user_skill_level"
|
||||
date: system-generated
|
||||
|
||||
required_files:
|
||||
- instructions.md
|
||||
- template.md
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/1-analysis/domain-research"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
template: "{installed_path}/template.md"
|
||||
|
||||
optional_files:
|
||||
- domain-knowledge-base.md
|
||||
# Optional knowledge base (if exists)
|
||||
domain_knowledge_base: "{installed_path}/domain-knowledge-base.md"
|
||||
|
||||
outputs:
|
||||
- domain-brief.md
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/domain-brief.md"
|
||||
|
||||
metadata:
|
||||
# Workflow metadata
|
||||
version: "6.0.0-alpha"
|
||||
category: "analysis"
|
||||
complexity: "medium"
|
||||
estimated_time: "30-45 minutes"
|
||||
execution_time: "30-45 minutes"
|
||||
prerequisites:
|
||||
- "Basic project understanding"
|
||||
when_to_use:
|
||||
|
|
@ -34,3 +35,35 @@ workflow:
|
|||
- "Novel technical domains requiring deep understanding"
|
||||
- "Before PRD when domain expertise needed"
|
||||
- "When compliance and regulations matter"
|
||||
|
||||
standalone: true
|
||||
|
||||
# Web bundle configuration for standalone deployment
|
||||
web_bundle:
|
||||
name: "domain-research"
|
||||
description: "Collaborative exploration of domain-specific requirements, regulations, and patterns for complex projects"
|
||||
author: "BMad"
|
||||
|
||||
# Core workflow files (bmad/-relative paths)
|
||||
instructions: "bmad/bmm/workflows/1-analysis/domain-research/instructions.md"
|
||||
template: "bmad/bmm/workflows/1-analysis/domain-research/template.md"
|
||||
|
||||
# Default configuration values (can be overridden during bundle setup)
|
||||
defaults:
|
||||
user_name: "User"
|
||||
communication_language: "English"
|
||||
document_output_language: "English"
|
||||
user_skill_level: "intermediate"
|
||||
output_folder: "./output"
|
||||
|
||||
# Input/output configuration for web deployment
|
||||
default_output_file: "{output_folder}/domain-brief.md"
|
||||
|
||||
# Complete file list - ALL files this workflow depends on
|
||||
web_bundle_files:
|
||||
# Core workflow files
|
||||
- "bmad/bmm/workflows/1-analysis/domain-research/instructions.md"
|
||||
- "bmad/bmm/workflows/1-analysis/domain-research/template.md"
|
||||
|
||||
# Task dependencies (referenced in instructions.md)
|
||||
- "bmad/core/tasks/workflow.xml"
|
||||
|
|
|
|||
|
|
@ -52,6 +52,10 @@ web_bundle:
|
|||
validation: "bmad/bmm/workflows/1-analysis/product-brief/checklist.md"
|
||||
template: "bmad/bmm/workflows/1-analysis/product-brief/template.md"
|
||||
web_bundle_files:
|
||||
# Core workflow files
|
||||
- "bmad/bmm/workflows/1-analysis/product-brief/template.md"
|
||||
- "bmad/bmm/workflows/1-analysis/product-brief/instructions.md"
|
||||
- "bmad/bmm/workflows/1-analysis/product-brief/checklist.md"
|
||||
|
||||
# Task dependencies (referenced in instructions.md)
|
||||
- "bmad/core/tasks/workflow.xml"
|
||||
|
|
|
|||
|
|
@ -663,7 +663,7 @@ Would you like me to strengthen any areas with additional research?"
|
|||
{{#if standalone_mode != true}}
|
||||
|
||||
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
|
||||
- **Optional:** Review findings with stakeholders, or run additional analysis workflows (product-brief, game-brief, etc.)
|
||||
- **Optional:** Review findings with stakeholders, or run additional analysis workflows (product-brief for software, or install BMGD module for game-brief)
|
||||
|
||||
Check status anytime with: `workflow-status`
|
||||
{{else}}
|
||||
|
|
|
|||
|
|
@ -51,14 +51,43 @@ instructions: "{installed_path}/instructions.md"
|
|||
validation: "{installed_path}/checklist.md"
|
||||
template: "{installed_path}/ux-design-template.md"
|
||||
|
||||
# Knowledge bases for intelligent UX decisions
|
||||
ux_pattern_catalog: "{installed_path}/ux-pattern-catalog.yaml"
|
||||
color_psychology: "{installed_path}/color-psychology.yaml"
|
||||
layout_patterns: "{installed_path}/layout-patterns.yaml"
|
||||
|
||||
# Output configuration - Progressive saves throughout workflow
|
||||
default_output_file: "{output_folder}/ux-design-specification.md"
|
||||
color_themes_html: "{output_folder}/ux-color-themes.html"
|
||||
design_directions_html: "{output_folder}/ux-design-directions.html"
|
||||
|
||||
standalone: true
|
||||
|
||||
# Web bundle configuration for standalone deployment
|
||||
web_bundle:
|
||||
name: "create-ux-design"
|
||||
description: "Collaborative UX design facilitation workflow that creates exceptional user experiences through visual exploration and informed decision-making. Unlike template-driven approaches, this workflow facilitates discovery, generates visual options, and collaboratively designs the UX with the user at every step."
|
||||
author: "BMad"
|
||||
|
||||
# Core workflow files (bmad/-relative paths)
|
||||
instructions: "bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md"
|
||||
validation: "bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md"
|
||||
template: "bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md"
|
||||
|
||||
# Default configuration values (can be overridden during bundle setup)
|
||||
defaults:
|
||||
user_name: "User"
|
||||
communication_language: "English"
|
||||
document_output_language: "English"
|
||||
user_skill_level: "intermediate"
|
||||
output_folder: "./output"
|
||||
|
||||
# Input/output configuration for web deployment
|
||||
default_output_file: "{output_folder}/ux-design-specification.md"
|
||||
color_themes_html: "{output_folder}/ux-color-themes.html"
|
||||
design_directions_html: "{output_folder}/ux-design-directions.html"
|
||||
|
||||
# Complete file list - ALL files this workflow depends on
|
||||
web_bundle_files:
|
||||
# Core workflow files
|
||||
- "bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md"
|
||||
|
||||
# Task dependencies (referenced in instructions.md)
|
||||
- "bmad/core/tasks/workflow.xml"
|
||||
|
|
|
|||
|
|
@ -1,81 +0,0 @@
|
|||
# Game Design Document (GDD) Workflow
|
||||
name: gdd
|
||||
description: "Game Design Document workflow for all game project levels - from small prototypes to full AAA games. Generates comprehensive GDD with game mechanics, systems, progression, and implementation guidance."
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/bmad/bmm/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}:user_skill_level"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/2-plan-workflows/gdd"
|
||||
instructions: "{installed_path}/instructions-gdd.md"
|
||||
template: "{installed_path}/gdd-template.md"
|
||||
game_types_csv: "{installed_path}/game-types.csv"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/GDD.md"
|
||||
|
||||
# Game type references (loaded based on game type selection)
|
||||
game_type_guides: "{installed_path}/game-types/"
|
||||
|
||||
# Recommended input documents
|
||||
recommended_inputs:
|
||||
- game_brief: "{output_folder}/game-brief.md"
|
||||
- narrative_design: "{output_folder}/narrative-design.md"
|
||||
- market_research: "{output_folder}/market-research.md"
|
||||
|
||||
# Smart input file references - handles both whole docs and sharded docs
|
||||
# Priority: Whole document first, then sharded version
|
||||
input_file_patterns:
|
||||
game_brief:
|
||||
whole: "{output_folder}/*game-brief*.md"
|
||||
sharded: "{output_folder}/*game-brief*/index.md"
|
||||
|
||||
research:
|
||||
whole: "{output_folder}/*research*.md"
|
||||
sharded: "{output_folder}/*research*/index.md"
|
||||
|
||||
document_project:
|
||||
sharded: "{output_folder}/docs/index.md"
|
||||
|
||||
standalone: true
|
||||
|
||||
web_bundle:
|
||||
name: "gdd"
|
||||
description: "Game Design Document workflow for all game project levels - from small prototypes to full AAA games. Generates comprehensive GDD with game mechanics, systems, progression, and implementation guidance."
|
||||
author: "BMad"
|
||||
instructions: "bmad/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md"
|
||||
web_bundle_files:
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/gdd-template.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types.csv"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/action-platformer.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/adventure.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/card-game.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/fighting.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/horror.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/idle-incremental.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/metroidvania.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/moba.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/party-game.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/puzzle.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/racing.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/rhythm.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/roguelike.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/rpg.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/sandbox.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/shooter.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/simulation.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/sports.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/strategy.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/survival.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/text-based.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/tower-defense.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/turn-based-tactics.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/gdd/game-types/visual-novel.md"
|
||||
|
|
@ -62,7 +62,7 @@ Project type signals: API, mobile, web, CLI, SDK, SaaS
|
|||
Domain complexity signals: medical, finance, government, education, aerospace
|
||||
|
||||
SPECIAL ROUTING:
|
||||
If game detected → Suggest game-brief and GDD workflows
|
||||
If game detected → Inform user that game development requires the BMGD module (BMad Game Development)
|
||||
If complex domain detected → Offer domain research options:
|
||||
A) Run domain-research workflow (thorough)
|
||||
B) Quick web search (basic)
|
||||
|
|
|
|||
|
|
@ -52,13 +52,20 @@ web_bundle:
|
|||
instructions: "bmad/bmm/workflows/2-plan-workflows/prd/instructions.md"
|
||||
validation: "bmad/bmm/workflows/2-plan-workflows/prd/checklist.md"
|
||||
web_bundle_files:
|
||||
# Core workflow files
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/instructions.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/checklist.md"
|
||||
|
||||
# Child workflow and its files
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md"
|
||||
|
||||
# Task dependencies (referenced in instructions.md)
|
||||
- "bmad/core/tasks/workflow.xml"
|
||||
- "bmad/core/tasks/adv-elicit.xml"
|
||||
child_workflows:
|
||||
- create-epics-and-stories: "bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml"
|
||||
|
|
|
|||
|
|
@ -65,9 +65,14 @@ web_bundle:
|
|||
author: "BMad"
|
||||
instructions: "bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md"
|
||||
web_bundle_files:
|
||||
# Core workflow files
|
||||
- "bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md"
|
||||
- "bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md"
|
||||
|
||||
# Task dependencies (referenced in instructions.md)
|
||||
- "bmad/core/tasks/workflow.xml"
|
||||
- "bmad/core/tasks/adv-elicit.xml"
|
||||
|
|
|
|||
|
|
@ -65,3 +65,49 @@ features:
|
|||
- "Implementation patterns for agent consistency"
|
||||
|
||||
standalone: true
|
||||
|
||||
# Web bundle configuration for standalone deployment
|
||||
web_bundle:
|
||||
name: "architecture"
|
||||
description: "Collaborative architectural decision facilitation for AI-agent consistency. Replaces template-driven architecture with intelligent, adaptive conversation that produces a decision-focused architecture document optimized for preventing agent conflicts."
|
||||
author: "BMad"
|
||||
|
||||
# Core workflow files (bmad/-relative paths)
|
||||
instructions: "bmad/bmm/workflows/3-solutioning/architecture/instructions.md"
|
||||
validation: "bmad/bmm/workflows/3-solutioning/architecture/checklist.md"
|
||||
template: "bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md"
|
||||
|
||||
# Knowledge base files for decision making
|
||||
decision_catalog: "bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml"
|
||||
architecture_patterns: "bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml"
|
||||
pattern_categories: "bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv"
|
||||
|
||||
# Task dependencies
|
||||
adv_elicit_task: "bmad/core/tasks/adv-elicit.xml"
|
||||
|
||||
# Default configuration values (can be overridden during bundle setup)
|
||||
defaults:
|
||||
user_name: "User"
|
||||
communication_language: "English"
|
||||
document_output_language: "English"
|
||||
user_skill_level: "intermediate"
|
||||
output_folder: "./output"
|
||||
|
||||
# Input/output configuration for web deployment
|
||||
default_output_file: "{output_folder}/architecture.md"
|
||||
|
||||
# Complete file list - ALL files this workflow depends on
|
||||
web_bundle_files:
|
||||
# Core workflow files
|
||||
- "bmad/bmm/workflows/3-solutioning/architecture/instructions.md"
|
||||
- "bmad/bmm/workflows/3-solutioning/architecture/checklist.md"
|
||||
- "bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md"
|
||||
|
||||
# Knowledge base data files
|
||||
- "bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml"
|
||||
- "bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml"
|
||||
- "bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv"
|
||||
|
||||
# Task dependencies (referenced in instructions.md)
|
||||
- "bmad/core/tasks/workflow.xml"
|
||||
- "bmad/core/tasks/adv-elicit.xml"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue