workflow status, init and phase 4 items aligned with planning_artifacts and implementation_artifacts for discovery and output

This commit is contained in:
Brian Madison
2025-12-27 10:59:44 +08:00
parent aba9d11c88
commit 949cf64d3b
7 changed files with 47 additions and 47 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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}"

View File

@@ -15,8 +15,8 @@
- 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:
@@ -25,7 +25,7 @@
- ACTIVE: Has stories or sprint status - ACTIVE: Has stories or sprint status
- LEGACY: Has code but no BMM artifacts - LEGACY: Has code but no BMM artifacts
- UNCLEAR: Mixed state needs clarification - UNCLEAR: Mixed state needs clarification
</action> </action>
<ask>What's your project called? {{#if project_name}}(Config shows: {{project_name}}){{/if}}</ask> <ask>What's your project called? {{#if project_name}}(Config shows: {{project_name}}){{/if}}</ask>
<action>Store project_name</action> <action>Store project_name</action>
@@ -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}}

View File

@@ -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

View File

@@ -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>