Brian Madison 7eb52520fa Major Enhancements:
- Installation path is now fully configurable, allowing users to specify custom installation directories during setup
  - Default installation location changed to .bmad (hidden directory) for cleaner project root organization

    Web Bundle Improvements:

    - All web bundles (single agent and team) now include party mode support for multi-agent collaboration!
    - Advanced elicitation capabilities integrated into standalone agents
    - All bundles enhanced with party mode agent manifests
    - Added default-party.csv files to bmm, bmgd, and cis module teams
    - The default party file is what will be used with single agent bundles. teams can customize for different party configurations before web bundling through a setting in the team yaml file
    - New web bundle outputs for all agents (analyst, architect, dev, pm, sm, tea, tech-writer, ux-designer, game-*, creative-squad)

    Phase 4 Workflow Updates (In Progress):

    - Initiated shift to separate phase 4 implementation artifacts from documentation
        - Phase 4 implementation artifacts (stories, code review, sprint plan, context files) will move to dedicated location outside docs folder
        - Installer questions and configuration added for artifact path selection
        - Updated workflow.yaml files for code-review, sprint-planning, story-context, epic-tech-context, and retrospective workflows to support this, but still might require some udpates

    Additional Changes:

    - New agent and action command header models for standardization
    - Enhanced web-bundle-activation-steps fragment
    - Updated web-bundler.js to support new structure
    - VS Code settings updated for new .bmad directory
    - Party mode instructions and workflow enhanced for better orchestration

   IDE Installer Updates:

    - Show version number of installer in cli
    - improved Installer UX
    - Gemini TOML Improved to have clear loading instructions with @ commands
    - All tools agent launcher mds improved to use a central file template critical indication isntead of hardcoding in 2 different locations.
2025-11-09 17:39:05 -06:00

15 KiB

Workflow Status Check - Multi-Mode Service

The workflow execution engine is governed by: {project-root}/.bmad/core/tasks/workflow.xml You MUST have already loaded and processed: {project-root}/.bmad/bmm/workflows/workflow-status/workflow.yaml This workflow operates in multiple modes: interactive (default), validate, data, init-check, update Other workflows can call this as a service to avoid duplicating status logic

Check for {{mode}} parameter passed by calling workflow Default mode = "interactive" if not specified Continue to Step 1 for normal status check flow Jump to Step 10 for workflow validation service Jump to Step 20 for data extraction service Jump to Step 30 for simple init check Jump to Step 40 for status update service Search {output_folder}/ for file: bmm-workflow-status.yaml No workflow status found. To get started:

Load analyst agent and run: workflow-init

This will guide you through project setup and create your workflow path. Exit workflow

Continue to step 2 Read bmm-workflow-status.yaml Parse YAML file and extract metadata from comments and fields:

Parse these fields from YAML comments and metadata:

  • project (from YAML field)
  • project_type (from YAML field)
  • project_level (from YAML field)
  • field_type (from YAML field)
  • workflow_path (from YAML field)

Parse workflow_status section:

  • Extract all workflow entries with their statuses
  • Identify completed workflows (status = file path)
  • Identify pending workflows (status = required/optional/recommended/conditional)
  • Identify skipped workflows (status = skipped)

Determine current state:

  • Find first workflow with status != file path and != skipped
  • This is the NEXT workflow to work on
  • Look up agent and command from workflow path file
Load workflow path file based on workflow_path field Identify current phase from next workflow to be done Build list of completed, pending, and optional workflows For each workflow, look up its agent from the path file ## 📊 Current Status

Project: {{project}} (Level {{project_level}} {{project_type}})

Path: {{workflow_path}}

Progress:

{{#each phases}} {{phase_name}}: {{#each workflows_in_phase}}

  • {{workflow_name}} ({{agent}}): {{status_display}} {{/each}} {{/each}}

🎯 Next Steps

Next Workflow: {{next_workflow_name}}

Agent: {{next_agent}}

Command: /bmad:bmm:workflows:{{next_workflow_id}}

{{#if optional_workflows_available}} Optional Workflows Available: {{#each optional_workflows}}

  • {{workflow_name}} ({{agent}}) - {{status}} {{/each}} {{/if}}
What would you like to do?
  1. Start next workflow - {{next_workflow_name}} ({{next_agent}}) {{#if optional_workflows_available}}
  2. Run optional workflow - Choose from available options {{/if}}
  3. View full status YAML - See complete status file
  4. Update workflow status - Mark a workflow as completed or skipped
  5. Exit - Return to agent

Your choice:

Handle user selection based on available options

Ready to run {{next_workflow_name}}!

Command: /bmad:bmm:workflows:{{next_workflow_id}}

Agent: Load {{next_agent}} agent first

{{#if next_agent !== current_agent}} Tip: Start a new chat and load the {{next_agent}} agent before running this workflow. {{/if}}

Which optional workflow? {{#each optional_workflows numbered}} {{number}}. {{workflow_name}} ({{agent}}) {{/each}}

Your choice: Display selected workflow command and agent

Display complete bmm-workflow-status.yaml file contents What would you like to update?
  1. Mark a workflow as completed (provide file path)
  2. Mark a workflow as skipped

Your choice:

Which workflow? (Enter workflow ID like 'prd' or 'create-architecture') File path created? (e.g., docs/prd.md) ONLY write the file path as the status value - no other text, notes, or metadata Update workflow_status in YAML file: {{workflow_id}}: {{file_path}} Save updated YAML file preserving ALL structure and comments Updated {{workflow_id}} to completed: {{file_path}} Which workflow to skip? (Enter workflow ID) Update workflow_status in YAML file: {{workflow_id}}: skipped Save updated YAML file Marked {{workflow_id}} as skipped Read {output_folder}/bmm-workflow-status.yaml if exists status_exists = false should_proceed = true warning = "No status file found. Running without progress tracking." suggestion = "Consider running workflow-init first for progress tracking" Return to calling workflow Parse YAML file to extract project metadata and workflow_status Load workflow path file from workflow_path field Find first non-completed workflow in workflow_status (next workflow) Check if {{calling_workflow}} matches next workflow or is in the workflow list

status_exists = true project_level = {{project_level}} project_type = {{project_type}} field_type = {{field_type}} next_workflow = {{next_workflow_id}}

should_proceed = true warning = "" suggestion = "Proceeding with planned next step" Check the status of calling_workflow in YAML
<check if="status is file path">
  <template-output>should_proceed = true</template-output>
  <template-output>warning = "⚠️ Workflow already completed: {{calling_workflow}}"</template-output>
  <template-output>suggestion = "This workflow was already completed. Re-running will overwrite: {{status}}"</template-output>
</check>

<check if="status is optional/recommended">
  <template-output>should_proceed = true</template-output>
  <template-output>warning = "Running optional workflow {{calling_workflow}}"</template-output>
  <template-output>suggestion = "This is optional. Expected next: {{next_workflow}}"</template-output>
</check>

<check if="status is required but not next">
  <template-output>should_proceed = true</template-output>
  <template-output>warning = "⚠️ Out of sequence: Expected {{next_workflow}}, running {{calling_workflow}}"</template-output>
  <template-output>suggestion = "Consider running {{next_workflow}} instead, or continue if intentional"</template-output>
</check>
should_proceed = true warning = "⚠️ Unknown workflow: {{calling_workflow}} not in workflow path" suggestion = "This workflow is not part of the defined path for this project"

status_file_path = {{path to bmm-workflow-status.yaml}}

Return control to calling workflow with all template outputs

Read {output_folder}/bmm-workflow-status.yaml if exists status_exists = false error = "No status file to extract data from" Return to calling workflow Parse YAML file completely status_exists = true project_name = {{project}} project_type = {{project_type}} project_level = {{project_level}} field_type = {{field_type}} workflow_path = {{workflow_path}} Parse workflow_status section and return all workflow: status pairs workflow_status = {{workflow_status_object}} Calculate completion stats: total_workflows = {{count all workflows}} completed_workflows = {{count file path statuses}} pending_workflows = {{count required/optional/etc}} skipped_workflows = {{count skipped}} Return all parsed fields as template outputs project = {{project}} project_type = {{project_type}} project_level = {{project_level}} field_type = {{field_type}} workflow_path = {{workflow_path}} workflow_status = {{workflow_status_object}} generated = {{generated}}

status_file_path = {{path to bmm-workflow-status.yaml}}

Return control to calling workflow with requested data

Check if {output_folder}/bmm-workflow-status.yaml exists status_exists = true suggestion = "Status file found. Ready to proceed." status_exists = false suggestion = "No status file. Run workflow-init to create one (optional for progress tracking)"

Return immediately to calling workflow

Read {output_folder}/bmm-workflow-status.yaml success = false error = "No status file found. Cannot update." Return to calling workflow Parse YAML file completely Load workflow path file from workflow_path field Check {{action}} parameter to determine update type Get {{workflow_id}} parameter (required) Get {{output_file}} parameter (required - path to created file)
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: {{output_file}}

<action>Find {{workflow_id}} in loaded path YAML</action>
<action>Determine next workflow from path sequence</action>
<action>Find first workflow in workflow_status with status != file path and != skipped</action>

<action>Save updated YAML file preserving ALL structure and comments</action>

<template-output>success = true</template-output>
<template-output>next_workflow = {{determined next workflow}}</template-output>
<template-output>next_agent = {{determined next agent from path file}}</template-output>
<template-output>completed_workflow = {{workflow_id}}</template-output>
<template-output>output_file = {{output_file}}</template-output>
Get {{workflow_id}} parameter (required)
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: skipped

<action>Save updated YAML file</action>

<template-output>success = true</template-output>
<template-output>skipped_workflow = {{workflow_id}}</template-output>
success = false error = "Unknown action: {{action}}. Valid actions: complete_workflow, skip_workflow"

Return control to calling workflow with template outputs