mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-29 16:14:59 +00:00
sprint status helpers, remove workflow integration from phase 4 items in prep of using sprint-planning status
This commit is contained in:
@@ -9,15 +9,6 @@
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="0" goal="Check project status" optional="true">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: init-check</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<output>Running correct-course workflow for sprint change management.
|
||||
{{#if status_exists}}Status tracking enabled.{{else}}Note: No status file - running standalone.{{/if}}</output>
|
||||
</step>
|
||||
|
||||
<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>
|
||||
|
||||
@@ -7,8 +7,6 @@ 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
|
||||
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/correct-course"
|
||||
|
||||
@@ -28,29 +28,6 @@
|
||||
<action>READ COMPLETE FILES for all items found in the prioritized set. Store content and paths for citation.</action>
|
||||
</step>
|
||||
|
||||
<step n="2.5" goal="Get story to draft from status file">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: data</param>
|
||||
<param>data_request: next_story</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="status_exists == true AND todo_story_id != ''">
|
||||
<action>Use extracted story information:</action>
|
||||
- {{todo_story_id}}: The story ID to draft
|
||||
- {{todo_story_title}}: The story title
|
||||
- {{todo_story_file}}: The exact story file path to create
|
||||
|
||||
<critical>This is the PRIMARY source - DO NOT search or guess</critical>
|
||||
|
||||
<action>Set {{story_path}} = {story_dir}/{{todo_story_file}}</action>
|
||||
<action>Skip legacy discovery in Step 3</action>
|
||||
</check>
|
||||
|
||||
<check if="status_exists == false OR todo_story_id == ''">
|
||||
<action>Fall back to legacy story discovery in Step 3</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Determine target story (do not prompt in #yolo)">
|
||||
<action>List existing story markdown files in {{story_dir}} matching pattern: "story-<epic>.<story>.md"</action>
|
||||
<check>If none found → Set {{epic_num}}=1 and {{story_num}}=1</check>
|
||||
@@ -99,56 +76,18 @@
|
||||
<action>Save document unconditionally (non-interactive default). In interactive mode, allow user confirmation.</action>
|
||||
<check>If {{auto_run_context}} == true → <invoke-workflow path="{project-root}/bmad/bmm/workflows/4-implementation/story-context/workflow.yaml">Pass {{story_path}} = {default_output_file}</invoke-workflow></check>
|
||||
<action>Report created/updated story path</action>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Update status file on completion">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename)</action>
|
||||
|
||||
<check if="status file exists">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: set_current_workflow</param>
|
||||
<param>workflow_name: create-story</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="success == true">
|
||||
<output>✅ Status updated: Story {{story_id}} drafted</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Story Created Successfully, {user_name}!**
|
||||
<output>**✅ Story Created Successfully, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{story_id}}
|
||||
- File: {{story_file}}
|
||||
- Status: Draft (needs review)
|
||||
|
||||
**Status file updated:**
|
||||
- Current step: create-story (Story {{story_id}}) ✓
|
||||
- Progress: {{new_progress_percentage}}%
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the drafted story in {{story_file}}
|
||||
2. When satisfied, run `story-ready` to approve for development
|
||||
3. Or edit the story file and re-run `create-story` to update
|
||||
|
||||
Check status anytime with: `workflow-status`
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>**✅ Story Created Successfully, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{story_id}}
|
||||
- File: {{story_file}}
|
||||
- Status: Draft
|
||||
|
||||
Note: Running in standalone mode (no status file).
|
||||
|
||||
To track progress across workflows, run `workflow-status` first.
|
||||
</output>
|
||||
</check>
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
@@ -7,8 +7,6 @@ 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
|
||||
|
||||
@@ -15,30 +15,11 @@
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Load story from status file IN PROGRESS section">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: data</param>
|
||||
<param>data_request: next_story</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="status_exists == true AND in_progress_story != ''">
|
||||
<action>Use IN PROGRESS story from status:</action>
|
||||
- {{in_progress_story}}: Current story ID
|
||||
- Story file path derived from ID format
|
||||
|
||||
<critical>DO NOT SEARCH - status file provides exact story</critical>
|
||||
|
||||
<action>Determine story file path from in_progress_story ID</action>
|
||||
<action>Set {{story_path}} = {story_dir}/{{derived_story_file}}</action>
|
||||
</check>
|
||||
|
||||
<check if="status_exists == false OR in_progress_story == ''">
|
||||
<action>Fall back to legacy auto-discovery:</action>
|
||||
<action>If {{story_path}} explicitly provided → use it</action>
|
||||
<action>Otherwise list story-*.md files from {{story_dir}}, sort by modified time</action>
|
||||
<ask optional="true" if="{{non_interactive}} == false">Select story or enter path</ask>
|
||||
<action if="{{non_interactive}} == true">Auto-select most recent</action>
|
||||
</check>
|
||||
<step n="1" goal="Locate and load story">
|
||||
<action>If {{story_path}} explicitly provided → use it</action>
|
||||
<action>Otherwise list story-*.md files from {{story_dir}}, sort by modified time</action>
|
||||
<ask optional="true" if="{{non_interactive}} == false">Select story or enter path</ask>
|
||||
<action if="{{non_interactive}} == true">Auto-select most recent</action>
|
||||
|
||||
<action>Read COMPLETE story file from {{story_path}}</action>
|
||||
<action>Parse sections: Story, Acceptance Criteria, Tasks/Subtasks, Dev Notes, Dev Agent Record, File List, Change Log, Status</action>
|
||||
@@ -104,24 +85,7 @@
|
||||
<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 that the story is Ready for Review</action>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Update status file on completion">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename)</action>
|
||||
|
||||
<check if="status file exists">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: set_current_workflow</param>
|
||||
<param>workflow_name: dev-story</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="success == true">
|
||||
<output>✅ Status updated: Story {{current_story_id}} ready for review</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Story Implementation Complete, {user_name}!**
|
||||
<output>**✅ Story Implementation Complete, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{current_story_id}}
|
||||
@@ -129,33 +93,11 @@
|
||||
- File: {{story_path}}
|
||||
- Status: Ready for Review
|
||||
|
||||
**Status file updated:**
|
||||
- Current step: dev-story (Story {{current_story_id}}) ✓
|
||||
- Progress: {{new_progress_percentage}}%
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the implemented story and test the changes
|
||||
2. Verify all acceptance criteria are met
|
||||
3. When satisfied, run `story-done` to mark story complete and advance the queue
|
||||
|
||||
Or check status anytime with: `workflow-status`
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>**✅ Story Implementation Complete, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{current_story_id}}
|
||||
- Title: {{current_story_title}}
|
||||
- File: {{story_path}}
|
||||
- Status: Ready for Review
|
||||
|
||||
Note: Running in standalone mode (no status file).
|
||||
|
||||
To track progress across workflows, run `workflow-status` first.
|
||||
</output>
|
||||
</check>
|
||||
3. When satisfied, mark story complete and continue with next story
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
@@ -7,8 +7,6 @@ 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
|
||||
|
||||
@@ -5,73 +5,18 @@
|
||||
<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>Default execution mode: #yolo (non-interactive). If required inputs cannot be auto-discovered and {{non_interactive}} == true, HALT with a clear message listing missing documents; do not prompt.</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>
|
||||
|
||||
<workflow>
|
||||
<step n="1" goal="Check and load workflow status file">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename: bmm-workflow-status.md)</action>
|
||||
|
||||
<check if="exists">
|
||||
<action>Load the status file</action>
|
||||
<action>Extract key information:</action>
|
||||
- current_step: What workflow was last run
|
||||
- next_step: What workflow should run next
|
||||
- planned_workflow: The complete workflow journey table
|
||||
- progress_percentage: Current progress
|
||||
- project_level: Project complexity level (0-4)
|
||||
|
||||
<action>Set status_file_found = true</action>
|
||||
<action>Store status_file_path for later updates</action>
|
||||
|
||||
<check if="project_level < 3">
|
||||
<ask>**⚠️ Project Level Notice**
|
||||
|
||||
Status file shows project_level = {{project_level}}.
|
||||
|
||||
Tech-spec workflow is typically only needed for Level 3-4 projects.
|
||||
For Level 0-2, architecture usually generates tech specs automatically.
|
||||
|
||||
Options:
|
||||
1. Continue anyway (manual tech spec generation)
|
||||
2. Exit (check if architecture already generated tech specs)
|
||||
3. Run workflow-status to verify project configuration
|
||||
|
||||
What would you like to do?</ask>
|
||||
<action>If user chooses exit → HALT with message: "Check docs/ folder for existing tech-spec files"</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="not exists">
|
||||
<ask>**No workflow status file found.**
|
||||
|
||||
The status file tracks progress across all workflows and stores project configuration.
|
||||
|
||||
Note: This workflow is typically invoked automatically by architecture, or manually for JIT epic tech specs.
|
||||
|
||||
Options:
|
||||
1. Run workflow-status first to create the status file (recommended)
|
||||
2. Continue in standalone mode (no progress tracking)
|
||||
3. Exit
|
||||
|
||||
What would you like to do?</ask>
|
||||
<action>If user chooses option 1 → HALT with message: "Please run workflow-status first, then return to tech-spec"</action>
|
||||
<action>If user chooses option 2 → Set standalone_mode = true and continue</action>
|
||||
<action>If user chooses option 3 → HALT</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Collect inputs and initialize">
|
||||
<step n="1" goal="Collect inputs and initialize">
|
||||
<action>Identify PRD and Architecture documents from recommended_inputs. Attempt to auto-discover at default paths.</action>
|
||||
<ask optional="true" if="{{non_interactive}} == false">If inputs are missing, ask the user for file paths.</ask>
|
||||
<ask if="inputs are missing">ask the user for file paths. HALT and wait for docs to proceed with the rest of step 2</ask>
|
||||
|
||||
<check if="inputs are missing and {{non_interactive}} == true">HALT with a clear message listing missing documents and do not proceed until user provides sufficient documents to proceed.</check>
|
||||
|
||||
<action>Extract {{epic_title}} and {{epic_id}} from PRD (or ASK if not present).</action>
|
||||
<action>Extract {{epic_title}} and {{epic_id}} from PRD.</action>
|
||||
<action>Resolve output file path using workflow variables and initialize by writing the template.</action>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Overview and scope">
|
||||
<step n="2" goal="Overview and scope">
|
||||
<action>Read COMPLETE PRD and Architecture files.</action>
|
||||
<template-output file="{default_output_file}">
|
||||
Replace {{overview}} with a concise 1-2 paragraph summary referencing PRD context and goals
|
||||
@@ -80,8 +25,8 @@ What would you like to do?</ask>
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Detailed design">
|
||||
<action>Derive concrete implementation specifics from Architecture and PRD (NO invention).</action>
|
||||
<step n="3" goal="Detailed design">
|
||||
<action>Derive concrete implementation specifics from Architecture and PRD (CRITICAL: NO invention).</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
|
||||
@@ -90,7 +35,7 @@ What would you like to do?</ask>
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Non-functional requirements">
|
||||
<step n="4" 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
|
||||
@@ -99,14 +44,14 @@ What would you like to do?</ask>
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Dependencies and integrations">
|
||||
<step n="5" 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">
|
||||
<step n="6" 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
|
||||
@@ -114,69 +59,28 @@ What would you like to do?</ask>
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Risks and test strategy">
|
||||
<step n="7" 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">
|
||||
<step n="8" goal="Validate and complete">
|
||||
<invoke-task>Validate against checklist at {installed_path}/checklist.md using bmad/core/tasks/validate-workflow.xml</invoke-task>
|
||||
</step>
|
||||
|
||||
<step n="10" goal="Update status file on completion">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename)</action>
|
||||
|
||||
<check if="status file exists">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: complete_workflow</param>
|
||||
<param>workflow_name: tech-spec</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="success == true">
|
||||
<output>✅ Status updated for Epic {{epic_id}} tech-spec</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Tech Spec Generated Successfully, {user_name}!**
|
||||
<output>**✅ Tech Spec Generated Successfully, {user_name}!**
|
||||
|
||||
**Epic Details:**
|
||||
- Epic ID: {{epic_id}}
|
||||
- Epic Title: {{epic_title}}
|
||||
- Tech Spec File: {{default_output_file}}
|
||||
|
||||
**Status file updated:**
|
||||
- Current step: tech-spec (Epic {{epic_id}}) ✓
|
||||
- Progress: {{new_progress_percentage}}%
|
||||
|
||||
**Note:** This is a JIT (Just-In-Time) workflow.
|
||||
- Run again for other epics that need detailed tech specs
|
||||
- Or proceed to Phase 4 (Implementation) if all tech specs are complete
|
||||
**Note:** This is a JIT (Just-In-Time) workflow - run again for other epics as needed.
|
||||
|
||||
**Next Steps:**
|
||||
1. If more epics need tech specs: Run tech-spec again with different epic_id
|
||||
2. If all tech specs complete: Proceed to Phase 4 implementation
|
||||
3. Check status anytime with: `workflow-status`
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>**✅ Tech Spec Generated Successfully, {user_name}!**
|
||||
|
||||
**Epic Details:**
|
||||
- Epic ID: {{epic_id}}
|
||||
- Epic Title: {{epic_title}}
|
||||
- Tech Spec File: {{default_output_file}}
|
||||
|
||||
Note: Running in standalone mode (no status file).
|
||||
|
||||
To track progress across workflows, run `workflow-status` first.
|
||||
|
||||
**Note:** This is a JIT workflow - run again for other epics as needed.
|
||||
</output>
|
||||
</check>
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
@@ -7,8 +7,6 @@ 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
|
||||
|
||||
# Inputs expected ( check output_folder or ask user if missing)
|
||||
@@ -26,17 +24,6 @@ instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{project-root}/docs/tech-spec-epic-{{epic_id}}.md"
|
||||
default_output_file: "{output_folder}/tech-spec-epic-{{epic_id}}.md"
|
||||
|
||||
# Variables
|
||||
variables:
|
||||
non_interactive: true
|
||||
|
||||
web_bundle:
|
||||
name: "tech-spec"
|
||||
description: "Generate a comprehensive Technical Specification from PRD and Architecture with acceptance criteria and traceability mapping"
|
||||
author: "BMAD BMM"
|
||||
web_bundle_files:
|
||||
- "bmad/bmm/workflows/4-implementation/epic-tech-context/template.md"
|
||||
- "bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md"
|
||||
- "bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md"
|
||||
web_bundle: false
|
||||
|
||||
@@ -20,22 +20,7 @@ FACILITATION NOTES:
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Check workflow status">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: init-check</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="status_exists == false">
|
||||
<output>⚠️ {{suggestion}}
|
||||
|
||||
Running in standalone mode - no progress tracking.</output>
|
||||
<action>Set standalone_mode = true</action>
|
||||
</check>
|
||||
|
||||
<action>Store {{status_file_path}} for later updates (if exists)</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Epic Context Discovery">
|
||||
<step n="1" goal="Epic Context Discovery">
|
||||
<action>Help the user identify which epic was just completed through natural conversation</action>
|
||||
<action>Attempt to auto-detect by checking {output_folder}/stories/ for the highest numbered completed story and extracting the epic number</action>
|
||||
<action>If auto-detection succeeds, confirm with user: "It looks like Epic {{epic_number}} was just completed - is that correct?"</action>
|
||||
@@ -378,65 +363,23 @@ See you at sprint planning once prep work is done!"
|
||||
<action>Save retrospective summary to: {output_folder}/retrospectives/epic-{{completed_number}}-retro-{{date}}.md</action>
|
||||
<action>Confirm all action items have been captured</action>
|
||||
<action>Remind user to schedule prep sprint if needed</action>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Update status file on completion">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename)</action>
|
||||
|
||||
<check if="status file exists">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: complete_workflow</param>
|
||||
<param>workflow_name: retrospective</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="success == true">
|
||||
<output>✅ Status updated: Retrospective complete for Epic {{completed_number}}</output>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<output>**✅ Retrospective Complete**
|
||||
<output>**✅ Retrospective Complete, {user_name}!**
|
||||
|
||||
**Epic Review:**
|
||||
|
||||
- Epic {{completed_number}}: {{epic_title}} reviewed
|
||||
- Retrospective saved: {output_folder}/retrospectives/epic-{{completed_number}}-retro-{{date}}.md
|
||||
- Action Items: {{action_count}}
|
||||
- Preparation Tasks: {{prep_task_count}}
|
||||
- Critical Path Items: {{critical_count}}
|
||||
|
||||
**Status file updated:**
|
||||
|
||||
- Current step: retrospective (Epic {{completed_number}}) ✓
|
||||
- Progress: {{new_progress_percentage}}%
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Review retrospective summary: {output_folder}/retrospectives/epic-{{completed_number}}-retro-{{date}}.md
|
||||
2. Execute preparation sprint (Est: {{prep_days}} days)
|
||||
3. Complete critical path items before Epic {{next_number}}
|
||||
4. Begin Epic {{next_number}} planning when preparation complete
|
||||
|
||||
Check status anytime with: `workflow-status`
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>**✅ Retrospective Complete, {user_name}!**
|
||||
|
||||
**Epic Review:**
|
||||
|
||||
- Epic {{completed_number}}: {{epic_title}} reviewed
|
||||
- Retrospective saved: {output_folder}/retrospectives/epic-{{completed_number}}-retro-{{date}}.md
|
||||
|
||||
Note: Running in standalone mode (no status file).
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Execute preparation sprint
|
||||
2. Begin Epic {{next_number}} planning
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
@@ -7,8 +7,6 @@ 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
|
||||
|
||||
installed_path: "{project-root}/bmad/bmm/workflows/4-implementation/retrospective"
|
||||
|
||||
@@ -14,22 +14,7 @@
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Check workflow status">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: init-check</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="status_exists == false">
|
||||
<output>⚠️ {{suggestion}}
|
||||
|
||||
Running in standalone mode - no progress tracking.</output>
|
||||
<action>Set standalone_mode = true</action>
|
||||
</check>
|
||||
|
||||
<action>Store {{status_file_path}} for later updates (if exists)</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Locate story and verify review status">
|
||||
<step n="1" goal="Locate story and verify review status">
|
||||
<action>If {{story_path}} was provided → use it. Else auto-discover from {{story_dir}} by listing files matching pattern: "story-*.md" (recursive), sort by last modified (newest first), present top {{story_selection_limit}}.</action>
|
||||
<ask optional="true" if="{{non_interactive}} == false">Select a story (1-{{story_selection_limit}}) or enter a path:</ask>
|
||||
<action>Resolve {{story_path}} and read the COMPLETE file.</action>
|
||||
@@ -115,131 +100,18 @@ Running in standalone mode - no progress tracking.</output>
|
||||
<step n="9" 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>
|
||||
</step> <step n="1" goal="Locate story and verify review status">
|
||||
<action>If {{story_path}} was provided → use it. Else auto-discover from {{story_dir}} by listing files matching pattern: "story-*.md" (recursive), sort by last modified (newest first), present top {{story_selection_limit}}.</action>
|
||||
<ask optional="true" if="{{non_interactive}} == false">Select a story (1-{{story_selection_limit}}) or enter a path:</ask>
|
||||
<action>Resolve {{story_path}} and read the COMPLETE file.</action>
|
||||
<action>Extract {{epic_num}} and {{story_num}} from filename (e.g., story-2.3.*.md) and story metadata if available.</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="Status is not one of {{allow_status_values}}">HALT with message: "Story status must be 'Ready for Review' to proceed" (accept 'Review' as equivalent).</action>
|
||||
<action if="story cannot be read">HALT.</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Resolve context and specification inputs">
|
||||
<action>Locate Story Context: Under Dev Agent Record → Context Reference, read referenced path(s). If missing and {{auto_discover_context}}: search {{output_folder}} for files named "story-context-{{epic_num}}.{{story_num}}*.xml"; pick the most recent.</action>
|
||||
<action if="no context found">Continue but record a WARNING in review notes: "No Story Context found".</action>
|
||||
<action>Locate Epic Tech Spec: If {{auto_discover_tech_spec}}, search {{tech_spec_search_dir}} with glob {{tech_spec_glob_template}} (resolve {{epic_num}}); else use provided input.</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 any 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>If {{enable_mcp_doc_search}} and MCP servers are available → Use them to search for up-to-date best practices, security advisories, and framework-specific guidance relevant to the detected stack and the story's domain.</action>
|
||||
<action>If MCP is unavailable or insufficient and {{enable_web_fallback}} → Perform targeted web searches and fetch authoritative references (framework docs, OWASP, language style guides). Prefer official documentation and widely-recognized standards.</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="Assess implementation against acceptance criteria and specs">
|
||||
<action>From the story, read Acceptance Criteria and Tasks/Subtasks with their completion state.</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>
|
||||
<action>Cross-check epic tech-spec requirements and architecture constraints against the implementation intent in files.</action>
|
||||
<action>For each acceptance criterion, verify there is evidence of implementation and corresponding tests (unit/integration/E2E as applicable). Note any gaps explicitly.</action>
|
||||
<action if="critical architecture constraints are violated (e.g., layering, dependency rules)">flag as High severity finding.</action>
|
||||
</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, unvalidated redirects, CORS misconfig, 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 notes">
|
||||
<action>Determine outcome: Approve, Changes Requested, or Blocked.</action>
|
||||
<action>Prepare a structured review report with sections: Summary, Outcome, Key Findings (by severity), Acceptance Criteria Coverage, Test Coverage and Gaps, Architectural Alignment, Security Notes, Best-Practices and References, Action Items.</action>
|
||||
<action>For Action Items, use imperative phrasing and map each to related ACs or files. Include suggested owners if clear.</action>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Append review to story and update metadata">
|
||||
<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)
|
||||
- Summary
|
||||
- Key Findings
|
||||
- Acceptance Criteria Coverage
|
||||
- Test Coverage and Gaps
|
||||
- Architectural Alignment
|
||||
- Security Notes
|
||||
- Best-Practices and References (with links)
|
||||
- Action Items
|
||||
</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>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Follow-up options" optional="true">
|
||||
<action>If action items are straightforward and within safety bounds, ASK whether to create corresponding unchecked items under "Tasks / Subtasks" so the `dev-story` workflow can implement them next. If approved, append them under an Action Items subsection.</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>
|
||||
</step>
|
||||
|
||||
<step n="9" 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>
|
||||
</step>
|
||||
|
||||
<step n="10" goal="Update status file on completion">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename)</action>
|
||||
|
||||
<check if="status file exists">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: set_current_workflow</param>
|
||||
<param>workflow_name: review-story</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="success == true">
|
||||
<output>✅ Status updated: Story {{epic_num}}.{{story_num}} reviewed</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Story Review Complete, {user_name}!**
|
||||
<output>**✅ Story Review Complete, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story: {{epic_num}}.{{story_num}}
|
||||
- Review Outcome: {{outcome}}
|
||||
- Action Items: {{action_item_count}}
|
||||
|
||||
**Status file updated:**
|
||||
- Current step: review-story (Story {{epic_num}}.{{story_num}}) ✓
|
||||
- Progress: {{new_progress_percentage}}%
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the Senior Developer Review notes appended to story
|
||||
2. Address any action items or changes requested
|
||||
3. When ready, run `story-done` to mark story complete
|
||||
|
||||
Check status anytime with: `workflow-status`
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>**✅ Story Review Complete, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story: {{epic_num}}.{{story_num}}
|
||||
- Review Outcome: {{outcome}}
|
||||
|
||||
Note: Running in standalone mode (no status file).
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the Senior Developer Review notes
|
||||
2. Address any action items
|
||||
</output>
|
||||
</check>
|
||||
3. When ready, continue with implementation or mark story complete
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
@@ -8,8 +8,6 @@ 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
|
||||
|
||||
@@ -7,7 +7,6 @@ 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"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
|
||||
@@ -11,25 +11,7 @@
|
||||
<critical>DOCUMENT OUTPUT: Technical XML context file. Concise, structured, project-relative paths only. User skill level ({user_skill_level}) affects conversation style ONLY, not context content.</critical>
|
||||
|
||||
<workflow>
|
||||
<step n="1" goal="Validate workflow sequence">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: validate</param>
|
||||
<param>calling_workflow: story-context</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="warning != ''">
|
||||
<output>{{warning}}</output>
|
||||
<ask>Continue with story-context anyway? (y/n)</ask>
|
||||
<check if="n">
|
||||
<output>{{suggestion}}</output>
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<action>Store {{status_file_path}} for later updates</action>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Locate story and initialize output">
|
||||
<step n="1" goal="Locate story and initialize output">
|
||||
<action>If {{story_path}} provided and valid → use it; else auto-discover from {{story_dir}}.</action>
|
||||
<action>Auto-discovery: read {{story_dir}} (dev_story_location). If invalid/missing or contains no .md files, ASK for a story file path or directory to scan.</action>
|
||||
<action>If a directory is provided, list markdown files named "story-*.md" recursively; sort by last modified time; display top {{story_selection_limit}} with index, filename, path, modified time.</action>
|
||||
@@ -45,7 +27,7 @@
|
||||
<template-output file="{default_output_file}">so_that</template-output>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Collect relevant documentation">
|
||||
<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, Architecture, Front-end Spec, Testing standards, module-specific docs.</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>
|
||||
@@ -58,7 +40,7 @@
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Analyze existing code, interfaces, and constraints">
|
||||
<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>
|
||||
@@ -83,7 +65,7 @@
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Gather dependencies and frameworks">
|
||||
<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
|
||||
@@ -95,7 +77,7 @@
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Testing standards and ideas">
|
||||
<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
|
||||
@@ -104,68 +86,27 @@
|
||||
</template-output>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Validate and save">
|
||||
<step n="6" goal="Validate and save">
|
||||
<action>Validate output XML 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="8" goal="Update story status and context reference">
|
||||
<step n="7" goal="Update story status and context reference">
|
||||
<action>Open {{story_path}}; if Status == 'Draft' then set to 'ContextReadyDraft'; otherwise leave unchanged.</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>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Update status file on completion">
|
||||
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
|
||||
<action>Find the most recent file (by date in filename)</action>
|
||||
|
||||
<check if="status file exists">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: set_current_workflow</param>
|
||||
<param>workflow_name: story-context</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="success == true">
|
||||
<output>✅ Status updated: Context generated for Story {{story_id}}</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Story Context Generated Successfully, {user_name}!**
|
||||
<output>**✅ Story Context Generated Successfully, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{story_id}}
|
||||
- Title: {{story_title}}
|
||||
- Context File: {{default_output_file}}
|
||||
|
||||
**Status file updated:**
|
||||
- Current step: story-context (Story {{story_id}}) ✓
|
||||
- Progress: {{new_progress_percentage}}%
|
||||
|
||||
**Next Steps:**
|
||||
1. Load DEV agent (bmad/bmm/agents/dev.md)
|
||||
2. Run `dev-story` workflow to implement the story
|
||||
3. The context file will provide comprehensive implementation guidance
|
||||
|
||||
Check status anytime with: `workflow-status`
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="status file not found">
|
||||
<output>**✅ Story Context Generated Successfully, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{story_id}}
|
||||
- Title: {{story_title}}
|
||||
- Context File: {{default_output_file}}
|
||||
|
||||
Note: Running in standalone mode (no status file).
|
||||
|
||||
To track progress across workflows, run `workflow-status` first.
|
||||
|
||||
**Next Steps:**
|
||||
1. Load DEV agent and run `dev-story` to implement
|
||||
</output>
|
||||
</check>
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
@@ -8,8 +8,6 @@ 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
|
||||
@@ -21,7 +19,6 @@ validation: "{installed_path}/checklist.md"
|
||||
# Variables and inputs
|
||||
variables:
|
||||
story_path: "" # Explicit story path; auto-discovered if empty
|
||||
auto_update_status: false
|
||||
story_dir: "{config_source}:dev_story_location"
|
||||
story_selection_limit: 10
|
||||
tech_spec_search_dir: "{project-root}/docs"
|
||||
|
||||
@@ -8,44 +8,22 @@
|
||||
<workflow>
|
||||
|
||||
<critical>This workflow is run by DEV agent AFTER user confirms a story is approved (Definition of Done is complete)</critical>
|
||||
<critical>NO SEARCHING - DEV agent reads status file IN PROGRESS section to know which story was being worked on</critical>
|
||||
<critical>Workflow: Update story file status, move story IN PROGRESS → DONE, move TODO → IN PROGRESS, move BACKLOG → TODO</critical>
|
||||
<critical>Workflow: Update story file status to Done</critical>
|
||||
|
||||
<step n="1" goal="Get story queue from status file">
|
||||
<step n="1" goal="Locate story and update to Done status">
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: data</param>
|
||||
<param>data_request: all</param>
|
||||
</invoke-workflow>
|
||||
<action>If {{story_path}} explicitly provided → use it</action>
|
||||
<action>Otherwise list story-\*.md files from {{story_dir}}, sort by modified time</action>
|
||||
<ask>Select the story to mark as Done, or enter path:</ask>
|
||||
|
||||
<check if="status_exists == false OR in_progress_story == ''">
|
||||
<output>❌ No status file or no IN PROGRESS story found.
|
||||
|
||||
This workflow requires an active status file with an IN PROGRESS story.
|
||||
|
||||
Run `workflow-status` to check your project state.</output>
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
|
||||
<action>Use extracted story queue:</action>
|
||||
|
||||
- {{in_progress_story}}: Current story to mark done
|
||||
- {{todo_story_id}}: Next story (move to IN PROGRESS)
|
||||
- {{stories_sequence}}: All stories
|
||||
- {{stories_done}}: Completed stories
|
||||
- {{status_file_path}}: Status file to update
|
||||
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Update the current story file status to Done">
|
||||
|
||||
<action>Read the story file: {story_dir}/{current_story_file}</action>
|
||||
<action>Read the story file: {{story_path}}</action>
|
||||
<action>Extract story ID and title from the file</action>
|
||||
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
|
||||
<action>Update story file:</action>
|
||||
|
||||
- Change: `Status: Ready` or `Status: In Review`
|
||||
- Change: `Status: Ready for Review` or `Status: In Review` or similar
|
||||
- To: `Status: Done`
|
||||
|
||||
<action>Add completion notes if Dev Agent Record section exists:</action>
|
||||
@@ -55,105 +33,31 @@ Find "## Dev Agent Record" section and add:
|
||||
```
|
||||
### Completion Notes
|
||||
**Completed:** {{date}}
|
||||
**Definition of Done:** All acceptance criteria met, code reviewed, tests passing, deployed
|
||||
**Definition of Done:** All acceptance criteria met, code reviewed, tests passing
|
||||
```
|
||||
|
||||
<action>Save the story file</action>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Update status file - advance story queue">
|
||||
<step n="2" goal="Confirm completion to user">
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: complete_story</param>
|
||||
</invoke-workflow>
|
||||
<output>**Story Approved and Marked Done, {user_name}!**
|
||||
|
||||
<check if="success == false">
|
||||
<output>⚠️ Failed to update status: {{error}}</output>
|
||||
<output>Story file was updated, but status file update failed.</output>
|
||||
</check>
|
||||
|
||||
<check if="success == true">
|
||||
<output>Status updated: Story {{completed_story}} marked done.</output>
|
||||
<check if="all_complete == true">
|
||||
<output>🎉 All stories complete! Phase 4 done!</output>
|
||||
</check>
|
||||
<check if="all_complete == false">
|
||||
<output>{{stories_remaining}} stories remaining.</output>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Confirm completion to user">
|
||||
|
||||
<action>Display summary</action>
|
||||
|
||||
**Story Approved and Marked Done, {user_name}!**
|
||||
|
||||
✅ Story file updated: `{{current_story_file}}` → Status: Done
|
||||
✅ Status file updated: Story moved IN PROGRESS → DONE
|
||||
{{#if todo_story}}✅ Next story moved: TODO → IN PROGRESS ({{todo_story_id}}: {{todo_story_title}}){{/if}}
|
||||
{{#if next_backlog_story}}✅ Next story moved: BACKLOG → TODO ({{next_backlog_story_id}}: {{next_backlog_story_title}}){{/if}}
|
||||
✅ Story file updated: `{{story_file}}` → Status: Done
|
||||
|
||||
**Completed Story:**
|
||||
|
||||
- **ID:** {{current_story_id}}
|
||||
- **Title:** {{current_story_title}}
|
||||
- **File:** `{{current_story_file}}`
|
||||
- **Points:** {{current_story_points}}
|
||||
- **ID:** {{story_id}}
|
||||
- **Title:** {{story_title}}
|
||||
- **File:** `{{story_file}}`
|
||||
- **Completed:** {{date}}
|
||||
|
||||
**Progress Summary:**
|
||||
|
||||
- **Stories Completed:** {{done_count}} / {{total_stories}}
|
||||
- **Points Completed:** {{done_points}} / {{total_points}}
|
||||
- **Progress:** {{progress_percentage}}%
|
||||
|
||||
{{#if all_stories_complete}}
|
||||
**🎉 ALL STORIES COMPLETE!**
|
||||
|
||||
Congratulations! You have completed all stories for this project.
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Run `retrospective` workflow with SM agent to review the project
|
||||
2. Close out the project
|
||||
3. Celebrate! 🎊
|
||||
{{/if}}
|
||||
|
||||
{{#if todo_story}}
|
||||
**Next Story (IN PROGRESS):**
|
||||
|
||||
- **ID:** {{todo_story_id}}
|
||||
- **Title:** {{todo_story_title}}
|
||||
- **File:** `{{todo_story_file}}`
|
||||
- **Status:** {{todo_story_status}}
|
||||
|
||||
**Next Steps:**
|
||||
{{#if todo_story_status == 'Draft'}}
|
||||
|
||||
1. Review the drafted story {{todo_story_file}}
|
||||
2. Load SM agent and run `story-ready` workflow to approve it
|
||||
3. Then return to DEV agent to implement
|
||||
{{else}}
|
||||
4. Stay with DEV agent and run `dev-story` workflow
|
||||
5. Implement story {{todo_story_id}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if backlog_not_empty AND todo_empty}}
|
||||
**Next Story (TODO):**
|
||||
|
||||
- **ID:** {{next_backlog_story_id}}
|
||||
- **Title:** {{next_backlog_story_title}}
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Load SM agent
|
||||
2. Run `create-story` workflow to draft story {{next_backlog_story_id}}
|
||||
{{/if}}
|
||||
1. Continue with next story in your backlog
|
||||
2. Or run `retrospective` workflow if all stories are complete
|
||||
</output>
|
||||
|
||||
</step>
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ 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
|
||||
@@ -18,9 +16,8 @@ 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
|
||||
status_file: "{output_folder}/bmm-workflow-status.md" # Status file to update
|
||||
auto_update_status: true # Always update status file
|
||||
|
||||
# Output configuration - no output file, just status updates
|
||||
default_output_file: ""
|
||||
|
||||
@@ -8,86 +8,39 @@
|
||||
<workflow>
|
||||
|
||||
<critical>This workflow is run by SM agent AFTER user reviews a drafted story and confirms it's ready for development</critical>
|
||||
<critical>NO SEARCHING - SM agent reads status file TODO section to know which story was drafted</critical>
|
||||
<critical>Simple workflow: Update story file status, move story TODO → IN PROGRESS, move next story BACKLOG → TODO</critical>
|
||||
<critical>Simple workflow: Update story file status to Ready</critical>
|
||||
|
||||
<step n="1" goal="Get TODO story from status file">
|
||||
<step n="1" goal="Locate story and update status">
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: data</param>
|
||||
<param>data_request: next_story</param>
|
||||
</invoke-workflow>
|
||||
<action>If {{story_path}} explicitly provided → use it</action>
|
||||
<action>Otherwise list story-\*.md files from {{story_dir}}, sort by modified time</action>
|
||||
<ask>Select the drafted story to mark as Ready, or enter path:</ask>
|
||||
|
||||
<check if="status_exists == false OR todo_story_id == ''">
|
||||
<output>❌ No status file or no TODO story found.
|
||||
|
||||
This workflow requires an active status file with a TODO story.
|
||||
|
||||
Run `workflow-status` to check your project state.</output>
|
||||
<action>Exit workflow</action>
|
||||
</check>
|
||||
|
||||
<action>Use extracted story information:</action>
|
||||
|
||||
- {{todo_story_id}}: Story to mark ready
|
||||
- {{todo_story_title}}: Story title
|
||||
- {{todo_story_file}}: Story file path
|
||||
- {{status_file_path}}: Status file to update
|
||||
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Update the story file status">
|
||||
|
||||
<action>Read the story file: {story_dir}/{todo_story_file}</action>
|
||||
<action>Read the story file: {{story_path}}</action>
|
||||
<action>Extract story ID and title from the file</action>
|
||||
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
|
||||
<action>Update story file:</action>
|
||||
|
||||
- Change: `Status: Draft`
|
||||
- Change: `Status: Draft` or similar
|
||||
- To: `Status: Ready`
|
||||
|
||||
<action>Save the story file</action>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Update status file - move story TODO → IN PROGRESS">
|
||||
<step n="2" goal="Confirm completion to user">
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
|
||||
<param>mode: update</param>
|
||||
<param>action: start_story</param>
|
||||
</invoke-workflow>
|
||||
<output>**Story Marked Ready for Development, {user_name}!**
|
||||
|
||||
<check if="success == false">
|
||||
<output>⚠️ Failed to update status: {{error}}</output>
|
||||
<output>Story file was updated, but status file update failed.</output>
|
||||
</check>
|
||||
✅ Story file updated: `{{story_file}}` → Status: Ready
|
||||
|
||||
<check if="success == true">
|
||||
<output>Status updated: Story {{in_progress_story}} ready for development.</output>
|
||||
<check if="next_todo != ''">
|
||||
<output>Next TODO: {{next_todo}}</output>
|
||||
</check>
|
||||
</check>
|
||||
**Story Details:**
|
||||
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Confirm completion to user">
|
||||
|
||||
<action>Display summary</action>
|
||||
|
||||
**Story Marked Ready for Development, {user_name}!**
|
||||
|
||||
✅ Story file updated: `{{todo_story_file}}` → Status: Ready
|
||||
✅ Status file updated: Story moved TODO → IN PROGRESS
|
||||
{{#if next_story}}✅ Next story moved: BACKLOG → TODO ({{next_story_id}}: {{next_story_title}}){{/if}}
|
||||
{{#if no_more_stories}}✅ All stories have been drafted - backlog is empty{{/if}}
|
||||
|
||||
**Current Story (IN PROGRESS):**
|
||||
|
||||
- **ID:** {{todo_story_id}}
|
||||
- **Title:** {{todo_story_title}}
|
||||
- **File:** `{{todo_story_file}}`
|
||||
- **ID:** {{story_id}}
|
||||
- **Title:** {{story_title}}
|
||||
- **File:** `{{story_file}}`
|
||||
- **Status:** Ready for development
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
@@ -8,8 +8,6 @@ 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
|
||||
@@ -18,9 +16,8 @@ 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
|
||||
status_file: "{output_folder}/bmm-workflow-status.md" # Status file to update
|
||||
auto_update_status: true # Always update status file
|
||||
|
||||
# Output configuration - no output file, just status updates
|
||||
default_output_file: ""
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,93 @@
|
||||
# generated: 2025-10-21
|
||||
# project: todo1
|
||||
# project_key: todo1
|
||||
# tracking_system: file-system
|
||||
# story_location: {project-root}/docs/stories
|
||||
|
||||
# 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 review-story 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: 2025-10-21
|
||||
project: todo1
|
||||
project_key: todo1
|
||||
tracking_system: file-system
|
||||
story_location: "{project-root}/docs/stories"
|
||||
|
||||
development_status:
|
||||
epic-1: backlog
|
||||
1-1-project-foundation-development-environment: backlog
|
||||
1-2-app-shell-navigation-framework: backlog
|
||||
1-3-user-authentication-account-management: backlog
|
||||
1-4-plant-data-model-species-database: backlog
|
||||
1-5-add-plant-manual-species-selection: backlog
|
||||
1-6-plant-photo-identification-integration: backlog
|
||||
1-7-plant-naming-profile-creation: backlog
|
||||
1-8-plant-collection-home-screen: backlog
|
||||
1-9-plant-detail-view: backlog
|
||||
1-10-cloud-photo-storage-display: backlog
|
||||
epic-1-retrospective: optional
|
||||
|
||||
epic-2: backlog
|
||||
2-1-personality-system-data-model: backlog
|
||||
2-2-personality-prototype-testing: backlog
|
||||
2-3-llm-integration-api-setup: backlog
|
||||
2-4-chat-interface-ui: backlog
|
||||
2-5-conversational-ai-system: backlog
|
||||
2-6-graceful-degradation-library: backlog
|
||||
2-7-response-caching-cost-optimization: backlog
|
||||
2-8-personality-driven-care-reminders: backlog
|
||||
2-9-push-notification-system: backlog
|
||||
2-10-reminder-intelligence-adaptation: backlog
|
||||
2-11-mood-system-visual-indicators: backlog
|
||||
2-12-mood-calculation-logic-time-based: backlog
|
||||
2-13-personality-introduction-onboarding: backlog
|
||||
2-14-personality-tone-testing-calibration: backlog
|
||||
2-15-emergency-tone-adjustment-system: backlog
|
||||
2-16-api-reliability-monitoring-alerts: backlog
|
||||
epic-2-retrospective: optional
|
||||
|
||||
epic-3: backlog
|
||||
3-1-care-schedule-data-model: backlog
|
||||
3-2-auto-generated-care-schedules: backlog
|
||||
3-3-manual-care-logging: backlog
|
||||
3-4-care-history-view: backlog
|
||||
3-5-customizable-care-schedules: backlog
|
||||
3-6-photo-timeline-tracking: backlog
|
||||
3-7-health-status-visualization: backlog
|
||||
3-8-enhanced-mood-calculation-care-data: backlog
|
||||
epic-3-retrospective: optional
|
||||
|
||||
epic-4: backlog
|
||||
4-1-shareable-content-card-design-system: backlog
|
||||
4-2-share-plant-profile: backlog
|
||||
4-3-share-conversation-snippets: backlog
|
||||
4-4-share-growth-progress: backlog
|
||||
4-5-share-care-achievements: backlog
|
||||
4-6-freemium-tier-definition-enforcement: backlog
|
||||
4-7-premium-upgrade-flow-paywall: backlog
|
||||
4-8-payment-processing-subscription-management: backlog
|
||||
4-9-premium-analytics-dashboard: backlog
|
||||
4-10-trial-conversion-optimization: backlog
|
||||
epic-4-retrospective: optional
|
||||
@@ -0,0 +1,65 @@
|
||||
# BMM Workflow Status
|
||||
|
||||
## Project Configuration
|
||||
|
||||
PROJECT_NAME: todo1
|
||||
PROJECT_TYPE: software
|
||||
PROJECT_LEVEL: 3
|
||||
FIELD_TYPE: greenfield
|
||||
START_DATE: 2025-10-18
|
||||
WORKFLOW_PATH: greenfield-level-3.yaml
|
||||
|
||||
## Current State
|
||||
|
||||
CURRENT_PHASE: 4-implementation
|
||||
CURRENT_WORKFLOW: tech-spec
|
||||
CURRENT_AGENT: architect
|
||||
PHASE_1_COMPLETE: true
|
||||
PHASE_2_COMPLETE: true
|
||||
PHASE_3_COMPLETE: true
|
||||
PHASE_4_COMPLETE: false
|
||||
|
||||
## Next Action
|
||||
|
||||
NEXT_ACTION: Create technical specification for Epic 1 (Foundation & Core Plant Management)
|
||||
NEXT_COMMAND: /bmad:bmm:agents:architect then run \*tech-spec for Epic 1
|
||||
NEXT_AGENT: architect
|
||||
|
||||
## Story Backlog
|
||||
|
||||
**Epic 1:** 10 stories - Foundation & Core Plant Management
|
||||
**Epic 2:** 16 stories - AI Personality System & Engagement Loop
|
||||
**Epic 3:** 8 stories - Care Scheduling, Photos & Growth Tracking
|
||||
**Epic 4:** 10 stories - Social Sharing & Premium Monetization
|
||||
|
||||
**Total: 44 stories** (see epics.md for detailed breakdown)
|
||||
|
||||
## Workflow Progress
|
||||
|
||||
**Phase 1 - Analysis:**
|
||||
|
||||
- ✅ Brainstorm Project (2025-10-18)
|
||||
- ⬜ Research (optional - skipped)
|
||||
- ✅ Product Brief (2025-10-18)
|
||||
|
||||
**Phase 2 - Planning:**
|
||||
|
||||
- ✅ PRD (2025-10-19) - 44 stories across 4 epics defined
|
||||
- ✅ UX Spec (2025-10-19) - Comprehensive design system, user flows, components
|
||||
|
||||
**Phase 3 - Architecture (Required for Level 3):**
|
||||
|
||||
- ✅ Architecture (2025-10-19)
|
||||
- ✅ Assess Project Ready (2025-10-19)
|
||||
|
||||
**Phase 4 - Implementation:**
|
||||
|
||||
- 🎯 Tech Spec for Epic 1 (next up)
|
||||
- Per Epic: Tech Spec (JIT) → Stories
|
||||
- Per Story: Create → Context → Validate → Ready → Develop → Review → Approved
|
||||
- Epic Retrospectives after each epic
|
||||
|
||||
---
|
||||
|
||||
_Last Updated: 2025-10-19 (Phase 3 Complete - Starting Implementation Phase)_
|
||||
_Status Version: 6.0_
|
||||
Reference in New Issue
Block a user