mirror of
https://github.com/bmad-code-org/BMAD-METHOD.git
synced 2026-01-30 04:32:02 +00:00
workflow status, init and phase 4 items aligned with planning_artifacts and implementation_artifacts for discovery and output
This commit is contained in:
@@ -10,9 +10,10 @@ communication_language: "{config_source}:communication_language"
|
|||||||
user_skill_level: "{config_source}:user_skill_level"
|
user_skill_level: "{config_source}:user_skill_level"
|
||||||
document_output_language: "{config_source}:document_output_language"
|
document_output_language: "{config_source}:document_output_language"
|
||||||
date: system-generated
|
date: system-generated
|
||||||
|
planning_artifacts: "{config_source}:planning_artifacts"
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
implementation_artifacts: "{config_source}:implementation_artifacts"
|
||||||
output_folder: "{implementation_artifacts}"
|
output_folder: "{implementation_artifacts}"
|
||||||
sprint_status: "{implementation_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
|
sprint_status: "{implementation_artifacts}/sprint-status.yaml"
|
||||||
|
|
||||||
# Workflow components
|
# Workflow components
|
||||||
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review"
|
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review"
|
||||||
@@ -31,24 +32,20 @@ variables:
|
|||||||
input_file_patterns:
|
input_file_patterns:
|
||||||
architecture:
|
architecture:
|
||||||
description: "System architecture for review context"
|
description: "System architecture for review context"
|
||||||
whole: "{output_folder}/*architecture*.md"
|
whole: "{planning_artifacts}/*architecture*.md"
|
||||||
sharded: "{output_folder}/*architecture*/*.md"
|
sharded: "{planning_artifacts}/*architecture*/*.md"
|
||||||
load_strategy: "FULL_LOAD"
|
load_strategy: "FULL_LOAD"
|
||||||
ux_design:
|
ux_design:
|
||||||
description: "UX design specification (if UI review)"
|
description: "UX design specification (if UI review)"
|
||||||
whole: "{output_folder}/*ux*.md"
|
whole: "{planning_artifacts}/*ux*.md"
|
||||||
sharded: "{output_folder}/*ux*/*.md"
|
sharded: "{planning_artifacts}/*ux*/*.md"
|
||||||
load_strategy: "FULL_LOAD"
|
load_strategy: "FULL_LOAD"
|
||||||
epics:
|
epics:
|
||||||
description: "Epic containing story being reviewed"
|
description: "Epic containing story being reviewed"
|
||||||
whole: "{output_folder}/*epic*.md"
|
whole: "{planning_artifacts}/*epic*.md"
|
||||||
sharded_index: "{output_folder}/*epic*/index.md"
|
sharded_index: "{planning_artifacts}/*epic*/index.md"
|
||||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
sharded_single: "{planning_artifacts}/*epic*/epic-{{epic_num}}.md"
|
||||||
load_strategy: "SELECTIVE_LOAD"
|
load_strategy: "SELECTIVE_LOAD"
|
||||||
document_project:
|
|
||||||
description: "Brownfield project documentation (optional)"
|
|
||||||
sharded: "{output_folder}/index.md"
|
|
||||||
load_strategy: "INDEX_GUIDED"
|
|
||||||
|
|
||||||
standalone: true
|
standalone: true
|
||||||
web_bundle: false
|
web_bundle: false
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|||||||
user_name: "{config_source}:user_name"
|
user_name: "{config_source}:user_name"
|
||||||
communication_language: "{config_source}:communication_language"
|
communication_language: "{config_source}:communication_language"
|
||||||
date: system-generated
|
date: system-generated
|
||||||
|
planning_artifacts: "{config_source}:planning_artifacts"
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
implementation_artifacts: "{config_source}:implementation_artifacts"
|
||||||
output_folder: "{implementation_artifacts}"
|
output_folder: "{implementation_artifacts}"
|
||||||
story_dir: "{implementation_artifacts}"
|
story_dir: "{implementation_artifacts}"
|
||||||
@@ -20,10 +21,10 @@ validation: "{installed_path}/checklist.md"
|
|||||||
# Variables and inputs
|
# Variables and inputs
|
||||||
variables:
|
variables:
|
||||||
sprint_status: "{implementation_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml" # Primary source for story tracking
|
sprint_status: "{implementation_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml" # Primary source for story tracking
|
||||||
epics_file: "{output_folder}/epics.md" # Enhanced epics+stories with BDD and source hints
|
epics_file: "{planning_artifacts}/epics.md" # Enhanced epics+stories with BDD and source hints
|
||||||
prd_file: "{output_folder}/PRD.md" # Fallback for requirements (if not in epics file)
|
prd_file: "{planning_artifacts}/prd.md" # Fallback for requirements (if not in epics file)
|
||||||
architecture_file: "{planning_artifacts}/architecture.md" # Fallback for constraints (if not in epics file)
|
architecture_file: "{planning_artifacts}/architecture.md" # Fallback for constraints (if not in epics file)
|
||||||
ux_file: "{output_folder}/ux.md" # Fallback for UX requirements (if not in epics file)
|
ux_file: "{planning_artifacts}/*ux*.md" # Fallback for UX requirements (if not in epics file)
|
||||||
story_title: "" # Will be elicited if not derivable
|
story_title: "" # Will be elicited if not derivable
|
||||||
|
|
||||||
# Project context
|
# Project context
|
||||||
@@ -36,23 +37,23 @@ default_output_file: "{story_dir}/{{story_key}}.md"
|
|||||||
input_file_patterns:
|
input_file_patterns:
|
||||||
prd:
|
prd:
|
||||||
description: "PRD (fallback - epics file should have most content)"
|
description: "PRD (fallback - epics file should have most content)"
|
||||||
whole: "{output_folder}/*prd*.md"
|
whole: "{planning_artifacts}/*prd*.md"
|
||||||
sharded: "{output_folder}/*prd*/*.md"
|
sharded: "{planning_artifacts}/*prd*/*.md"
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
||||||
architecture:
|
architecture:
|
||||||
description: "Architecture (fallback - epics file should have relevant sections)"
|
description: "Architecture (fallback - epics file should have relevant sections)"
|
||||||
whole: "{output_folder}/*architecture*.md"
|
whole: "{planning_artifacts}/*architecture*.md"
|
||||||
sharded: "{output_folder}/*architecture*/*.md"
|
sharded: "{planning_artifacts}/*architecture*/*.md"
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
||||||
ux:
|
ux:
|
||||||
description: "UX design (fallback - epics file should have relevant sections)"
|
description: "UX design (fallback - epics file should have relevant sections)"
|
||||||
whole: "{output_folder}/*ux*.md"
|
whole: "{planning_artifacts}/*ux*.md"
|
||||||
sharded: "{output_folder}/*ux*/*.md"
|
sharded: "{planning_artifacts}/*ux*/*.md"
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
||||||
epics:
|
epics:
|
||||||
description: "Enhanced epics+stories file with BDD and source hints"
|
description: "Enhanced epics+stories file with BDD and source hints"
|
||||||
whole: "{output_folder}/*epic*.md"
|
whole: "{planning_artifacts}/*epic*.md"
|
||||||
sharded: "{output_folder}/*epic*/*.md"
|
sharded: "{planning_artifacts}/*epic*/*.md"
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load needed epic
|
load_strategy: "SELECTIVE_LOAD" # Only load needed epic
|
||||||
|
|
||||||
standalone: true
|
standalone: true
|
||||||
|
|||||||
@@ -365,16 +365,16 @@ Alice (Product Owner): "Good thinking - helps us connect what we learned to what
|
|||||||
<action>Attempt to load next epic using selective loading strategy:</action>
|
<action>Attempt to load next epic using selective loading strategy:</action>
|
||||||
|
|
||||||
**Try sharded first (more specific):**
|
**Try sharded first (more specific):**
|
||||||
<action>Check if file exists: {output_folder}/epic\*/epic-{{next_epic_num}}.md</action>
|
<action>Check if file exists: {planning_artifacts}/epic\*/epic-{{next_epic_num}}.md</action>
|
||||||
|
|
||||||
<check if="sharded epic file found">
|
<check if="sharded epic file found">
|
||||||
<action>Load {output_folder}/*epic*/epic-{{next_epic_num}}.md</action>
|
<action>Load {planning_artifacts}/*epic*/epic-{{next_epic_num}}.md</action>
|
||||||
<action>Set {{next_epic_source}} = "sharded"</action>
|
<action>Set {{next_epic_source}} = "sharded"</action>
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
**Fallback to whole document:**
|
**Fallback to whole document:**
|
||||||
<check if="sharded epic not found">
|
<check if="sharded epic not found">
|
||||||
<action>Check if file exists: {output_folder}/epic\*.md</action>
|
<action>Check if file exists: {planning_artifacts}/epic\*.md</action>
|
||||||
|
|
||||||
<check if="whole epic file found">
|
<check if="whole epic file found">
|
||||||
<action>Load entire epics document</action>
|
<action>Load entire epics document</action>
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ description: "Run after epic completion to review overall success, extract lesso
|
|||||||
author: "BMad"
|
author: "BMad"
|
||||||
|
|
||||||
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
||||||
output_folder: "{config_source}:output_folder"
|
output_folder: "{config_source}:implementation_artifacts}"
|
||||||
user_name: "{config_source}:user_name"
|
user_name: "{config_source}:user_name"
|
||||||
communication_language: "{config_source}:communication_language"
|
communication_language: "{config_source}:communication_language"
|
||||||
user_skill_level: "{config_source}:user_skill_level"
|
user_skill_level: "{config_source}:user_skill_level"
|
||||||
document_output_language: "{config_source}:document_output_language"
|
document_output_language: "{config_source}:document_output_language"
|
||||||
date: system-generated
|
date: system-generated
|
||||||
|
planning_artifacts: "{config_source}:planning_artifacts"
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
implementation_artifacts: "{config_source}:implementation_artifacts"
|
||||||
|
|
||||||
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective"
|
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective"
|
||||||
@@ -25,9 +26,9 @@ required_inputs:
|
|||||||
input_file_patterns:
|
input_file_patterns:
|
||||||
epics:
|
epics:
|
||||||
description: "The completed epic for retrospective"
|
description: "The completed epic for retrospective"
|
||||||
whole: "{output_folder}/*epic*.md"
|
whole: "{planning_artifacts}/*epic*.md"
|
||||||
sharded_index: "{output_folder}/*epic*/index.md"
|
sharded_index: "{planning_artifacts}/*epic*/index.md"
|
||||||
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
|
sharded_single: "{planning_artifacts}/*epic*/epic-{{epic_num}}.md"
|
||||||
load_strategy: "SELECTIVE_LOAD"
|
load_strategy: "SELECTIVE_LOAD"
|
||||||
previous_retrospective:
|
previous_retrospective:
|
||||||
description: "Previous epic's retrospective (optional)"
|
description: "Previous epic's retrospective (optional)"
|
||||||
@@ -35,21 +36,21 @@ input_file_patterns:
|
|||||||
load_strategy: "SELECTIVE_LOAD"
|
load_strategy: "SELECTIVE_LOAD"
|
||||||
architecture:
|
architecture:
|
||||||
description: "System architecture for context"
|
description: "System architecture for context"
|
||||||
whole: "{output_folder}/*architecture*.md"
|
whole: "{planning_artifacts}/*architecture*.md"
|
||||||
sharded: "{output_folder}/*architecture*/*.md"
|
sharded: "{planning_artifacts}/*architecture*/*.md"
|
||||||
load_strategy: "FULL_LOAD"
|
load_strategy: "FULL_LOAD"
|
||||||
prd:
|
prd:
|
||||||
description: "Product requirements for context"
|
description: "Product requirements for context"
|
||||||
whole: "{output_folder}/*prd*.md"
|
whole: "{planning_artifacts}/*prd*.md"
|
||||||
sharded: "{output_folder}/*prd*/*.md"
|
sharded: "{planning_artifacts}/*prd*/*.md"
|
||||||
load_strategy: "FULL_LOAD"
|
load_strategy: "FULL_LOAD"
|
||||||
document_project:
|
document_project:
|
||||||
description: "Brownfield project documentation (optional)"
|
description: "Brownfield project documentation (optional)"
|
||||||
sharded: "{output_folder}/*.md"
|
sharded: "{planning_artifacts}/*.md"
|
||||||
load_strategy: "INDEX_GUIDED"
|
load_strategy: "INDEX_GUIDED"
|
||||||
|
|
||||||
# Required files
|
# Required files
|
||||||
sprint_status_file: "{implementation_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
|
sprint_status_file: "{implementation_artifacts}/sprint-status.yaml"
|
||||||
story_directory: "{implementation_artifacts}"
|
story_directory: "{implementation_artifacts}"
|
||||||
retrospectives_folder: "{implementation_artifacts}"
|
retrospectives_folder: "{implementation_artifacts}"
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
- BMM artifacts: PRD, epics, architecture, UX, brief, research, brainstorm
|
- BMM artifacts: PRD, epics, architecture, UX, brief, research, brainstorm
|
||||||
- Implementation: stories, sprint-status, workflow-status
|
- Implementation: stories, sprint-status, workflow-status
|
||||||
- Codebase: source directories, package files, git repo
|
- Codebase: source directories, package files, git repo
|
||||||
- Check both {output_folder} and {implementation_artifacts} locations
|
- Check both {planning_artifacts} and {implementation_artifacts} locations
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
<action>Categorize into one of these states:
|
<action>Categorize into one of these states:
|
||||||
@@ -68,7 +68,7 @@ Choice [1-4]</ask>
|
|||||||
|
|
||||||
<check if="choice == 2">
|
<check if="choice == 2">
|
||||||
<ask>Archive existing work? (y/n)</ask>
|
<ask>Archive existing work? (y/n)</ask>
|
||||||
<action if="y">Move artifacts to {output_folder}/archive/</action>
|
<action if="y">Move artifacts to {planning_artifacts}/archive/</action>
|
||||||
<output>Ready for fresh start!</output>
|
<output>Ready for fresh start!</output>
|
||||||
<action>Continue to step 3</action>
|
<action>Continue to step 3</action>
|
||||||
</check>
|
</check>
|
||||||
@@ -323,10 +323,10 @@ Choice:</ask>
|
|||||||
|
|
||||||
<check if="y">
|
<check if="y">
|
||||||
<action>Generate YAML from template with all variables</action>
|
<action>Generate YAML from template with all variables</action>
|
||||||
<action>Save to {output_folder}/bmm-workflow-status.yaml</action>
|
<action>Save to {planning_artifacts}/bmm-workflow-status.yaml</action>
|
||||||
<action>Identify next workflow and agent</action>
|
<action>Identify next workflow and agent</action>
|
||||||
|
|
||||||
<output>✅ **Created:** {output_folder}/bmm-workflow-status.yaml
|
<output>✅ **Created:** {planning_artifacts}/bmm-workflow-status.yaml
|
||||||
|
|
||||||
**Next:** {{next_workflow_name}}
|
**Next:** {{next_workflow_name}}
|
||||||
**Agent:** {{next_agent}}
|
**Agent:** {{next_agent}}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ author: "BMad"
|
|||||||
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
||||||
output_folder: "{config_source}:output_folder"
|
output_folder: "{config_source}:output_folder"
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
implementation_artifacts: "{config_source}:implementation_artifacts"
|
||||||
|
planning_artifacts: "{config_source}:planning_artifacts"
|
||||||
user_name: "{config_source}:user_name"
|
user_name: "{config_source}:user_name"
|
||||||
project_name: "{config_source}:project_name"
|
project_name: "{config_source}:project_name"
|
||||||
communication_language: "{config_source}:communication_language"
|
communication_language: "{config_source}:communication_language"
|
||||||
@@ -23,7 +24,7 @@ template: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow-status-te
|
|||||||
path_files: "{project-root}/_bmad/bmm/workflows/workflow-status/paths/"
|
path_files: "{project-root}/_bmad/bmm/workflows/workflow-status/paths/"
|
||||||
|
|
||||||
# Output configuration
|
# Output configuration
|
||||||
default_output_file: "{output_folder}/bmm-workflow-status.yaml"
|
default_output_file: "{planning_artifacts}/bmm-workflow-status.yaml"
|
||||||
|
|
||||||
standalone: true
|
standalone: true
|
||||||
web_bundle: false
|
web_bundle: false
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step n="1" goal="Check for status file">
|
<step n="1" goal="Check for status file">
|
||||||
<action>Search {output_folder}/ for file: bmm-workflow-status.yaml</action>
|
<action>Search {planning_artifacts}/ for file: bmm-workflow-status.yaml</action>
|
||||||
|
|
||||||
<check if="no status file found">
|
<check if="no status file found">
|
||||||
<output>No workflow status found.</output>
|
<output>No workflow status found.</output>
|
||||||
@@ -343,11 +343,11 @@ Your choice:</ask>
|
|||||||
<!-- ============================================= -->
|
<!-- ============================================= -->
|
||||||
<check if="action == complete_workflow">
|
<check if="action == complete_workflow">
|
||||||
<action>Get {{workflow_id}} parameter (required)</action>
|
<action>Get {{workflow_id}} parameter (required)</action>
|
||||||
<action>Get {{output_file}} parameter (required - path to created file)</action>
|
<action>Get {{default_output_file}} parameter (required - path to created file)</action>
|
||||||
|
|
||||||
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
|
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
|
||||||
<action>Update workflow status in YAML:</action>
|
<action>Update workflow status in YAML:</action>
|
||||||
- In workflow_status section, update: {{workflow_id}}: {{output_file}}
|
- In workflow_status section, update: {{workflow_id}}: {{default_output_file}}
|
||||||
|
|
||||||
<action>Find {{workflow_id}} in loaded path YAML</action>
|
<action>Find {{workflow_id}} in loaded path YAML</action>
|
||||||
<action>Determine next workflow from path sequence</action>
|
<action>Determine next workflow from path sequence</action>
|
||||||
@@ -359,7 +359,7 @@ Your choice:</ask>
|
|||||||
<template-output>next_workflow = {{determined next workflow}}</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>next_agent = {{determined next agent from path file}}</template-output>
|
||||||
<template-output>completed_workflow = {{workflow_id}}</template-output>
|
<template-output>completed_workflow = {{workflow_id}}</template-output>
|
||||||
<template-output>output_file = {{output_file}}</template-output>
|
<template-output>default_output_file = {{default_output_file}}</template-output>
|
||||||
|
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user