# Workflow Management

This utility enables the BMAD orchestrator to manage and execute team workflows.

## Important: Dynamic Workflow Loading

The BMAD orchestrator MUST read the available workflows from the current team configuration's `workflows` field. Do not use hardcoded workflow lists. Each team bundle defines its own set of supported workflows based on the agents it includes.

**Critical Distinction**:

- When asked "what workflows are available?", show ONLY the workflows defined in the current team bundle's configuration
- Use `/agent-list` to show agents in the current bundle
- Use `/workflows` to show workflows in the current bundle, NOT any creation tasks

### Workflow Descriptions

When displaying workflows, use these descriptions based on the workflow ID:

- **greenfield-fullstack**: Build a new full-stack application from concept to development
- **brownfield-fullstack**: Enhance an existing full-stack application with new features
- **greenfield-service**: Build a new backend service or API from concept to development
- **brownfield-service**: Enhance an existing backend service or API
- **greenfield-ui**: Build a new frontend/UI application from concept to development
- **brownfield-ui**: Enhance an existing frontend/UI application

## Workflow Commands

### /workflows

Lists all available workflows for the current team. The available workflows are determined by the team configuration and may include workflows such as:

- greenfield-fullstack
- brownfield-fullstack
- greenfield-service
- brownfield-service
- greenfield-ui
- brownfield-ui

The actual list depends on which team bundle is loaded. When responding to this command, display the workflows that are configured in the current team's `workflows` field.

Example response format:

```text
Available workflows for [Team Name]:
1. [workflow-id] - [Brief description based on workflow type]
2. [workflow-id] - [Brief description based on workflow type]
[... etc. ...]

Use /workflow-start {number or id} to begin a workflow.
```

### /workflow-start {workflow-id}

Starts a specific workflow and transitions to the first agent.

Example: `/workflow-start greenfield-fullstack`

### /workflow-status

Shows current workflow progress, completed artifacts, and next steps.

Example response:

```text
Current Workflow: Greenfield Full-Stack Development
Stage: Product Planning (2 of 6)
Completed:
  ✓ Discovery & Requirements
    - project-brief (completed by Mary)

In Progress:
  ⚡ Product Planning
    - Create PRD (John) - awaiting input

Next: Technical Architecture
```

### /workflow-resume

Resumes a workflow from where it left off, useful when starting a new chat.

User can provide completed artifacts:

```text
User: /workflow-resume greenfield-fullstack
      I have completed: project-brief, PRD
BMad: I see you've completed Discovery and part of Product Planning.
      Based on the greenfield-fullstack workflow, the next step is:
      - UX Strategy with Sally (ux-expert)

      Would you like me to load Sally to continue?
```

### /workflow-next

Shows the next recommended agent and action in the current workflow.

## Workflow Execution Flow

### 1. Starting a Workflow

When a workflow is started:

1. Load the workflow definition
2. Identify the first stage and step
3. Transition to the required agent
4. Provide context about expected inputs/outputs
5. Guide artifact creation

### 2. Stage Transitions

After each artifact is completed:

1. Mark the step as complete
2. Check transition conditions
3. If stage is complete, move to next stage
4. Load the appropriate agent
5. Pass relevant artifacts as context

### 3. Artifact Tracking

Track all created artifacts:

```yaml
workflow_state:
  current_workflow: greenfield-fullstack
  current_stage: planning
  current_step: 2
  artifacts:
    project-brief:
      status: completed
      created_by: analyst
      timestamp: 2024-01-15T10:30:00.000Z
    prd:
      status: in-progress
      created_by: pm
      started: 2024-01-15T11:00:00.000Z
```

### 4. Workflow Interruption Handling

When user returns after interruption:

1. Ask if continuing previous workflow
2. Request any completed artifacts
3. Analyze provided artifacts
4. Determine workflow position
5. Suggest next appropriate step

Example:

```text
User: I'm working on a new app. Here's my PRD and architecture doc.
BMad: I see you have a PRD and architecture document. Based on these artifacts,
      it looks like you're following the greenfield-fullstack workflow and have completed
      stages 1-3. The next recommended step would be:

      Stage 4: Validation & Refinement
      - Load Sarah (Product Owner) to validate all artifacts

      Would you like to continue with this workflow?
```

## Workflow Context Passing

When transitioning between agents, pass:

1. Previous artifacts created
2. Current workflow stage
3. Expected outputs
4. Any decisions or constraints identified

Example transition:

```text
BMad: Great! John has completed the PRD. According to the greenfield-fullstack workflow,
      the next step is UX Strategy with Sally.

      /ux-expert

Sally: I see we're in the Product Planning stage of the greenfield-fullstack workflow.
       I have access to:
       - Project Brief from Mary
       - PRD from John

       Let's create the UX strategy and UI specifications. First, let me review
       the PRD to understand the features we're designing for...
```

## Multi-Path Workflows

Some workflows may have multiple paths:

```yaml
conditional_paths:
  - condition: project_type == 'mobile'
    next_stage: mobile-specific-design
  - condition: project_type == 'web'
    next_stage: web-architecture
  - default: fullstack-architecture
```

Handle these by asking clarifying questions when needed.

## Workflow Best Practices

1. **Always show progress** - Users should know where they are
2. **Explain transitions** - Why moving to next agent
3. **Preserve context** - Pass relevant information forward
4. **Allow flexibility** - Users can skip or modify steps
5. **Track everything** - Maintain complete workflow state

## Integration with Agents

Each agent should be workflow-aware:

- Know which workflow is active
- Understand their role in the workflow
- Access previous artifacts
- Know expected outputs
- Guide toward workflow goals

This creates a seamless experience where the entire team works together toward the workflow's objectives.
