use sprint plan for al workflow level 4 implementations
This commit is contained in:
parent
abaa24513a
commit
ddaefa3284
|
|
@ -28,17 +28,43 @@
|
|||
<action>READ COMPLETE FILES for all items found in the prioritized set. Store content and paths for citation.</action>
|
||||
</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>
|
||||
<check>If files found → Parse epic_num and story_num; pick the highest pair</check>
|
||||
<action>Open the latest story (if exists) and read Status</action>
|
||||
<check>If Status != Done/Approved and {{non_interactive}} == true → TARGET the latest story for update (do not create a new one)</check>
|
||||
<check>If Status == Done/Approved → Candidate next story is {{epic_num}}.{{story_num+1}}</check>
|
||||
<action>If creating a new story candidate: VERIFY planning in {{epics_file}}. Confirm that epic {{epic_num}} explicitly enumerates a next story matching {{story_num+1}} (or an equivalent next planned story entry). If epics.md is missing or does not enumerate another story for this epic, HALT with message:</action>
|
||||
<action>"No planned next story found in epics.md for epic {{epic_num}}. Please load either PM (Product Manager) agent at {project-root}/bmad/bmm/agents/pm.md or SM (Scrum Master) agent at {project-root}/bmad/bmm/agents/sm.md and run `*correct-course` to add/modify epic stories, then rerun create-story."</action>
|
||||
<check>If verification passes → Set {{story_num}} = {{story_num}} + 1</check>
|
||||
<ask optional="true" if="{{non_interactive}} == false">If starting a new epic and {{non_interactive}} == false, ASK for {{epic_num}} and reset {{story_num}} to 1. In {{non_interactive}} == true, do NOT auto-advance epic; stay within current epic and continue incrementing story_num.</ask>
|
||||
<step n="3" goal="Determine target story from sprint status">
|
||||
<action>Query sprint-status for next backlog story:</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: get_next_story</param>
|
||||
<param>filter_status: backlog</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_found}} == false">
|
||||
<output>📋 No backlog stories found in sprint-status.yaml
|
||||
|
||||
All stories are either already drafted or completed.
|
||||
|
||||
**Options:**
|
||||
1. Run sprint-planning to refresh story tracking
|
||||
2. Load PM agent and run correct-course to add more stories
|
||||
3. Check if current sprint is complete
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Parse {{result_story_key}} to extract epic_num, story_num, and story_title
|
||||
Example: "1-2-user-authentication" → epic_num=1, story_num=2, title="user-authentication"
|
||||
</action>
|
||||
<action>Set {{story_id}} = "{{epic_num}}.{{story_num}}"</action>
|
||||
|
||||
<action>Verify story is enumerated in {{epics_file}}. If not found, HALT with message:</action>
|
||||
<action>"Story {{result_story_key}} not found in epics.md. Please load PM agent and run correct-course to sync epics, then rerun create-story."</action>
|
||||
|
||||
<action>Check if story file already exists at expected path in {{story_dir}}</action>
|
||||
<check if="story file exists">
|
||||
<output>ℹ️ Story file already exists: {{story_file_path}}
|
||||
|
||||
Will update existing story file rather than creating new one.
|
||||
</output>
|
||||
<action>Set update_mode = true</action>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Extract requirements and derive story statement">
|
||||
|
|
@ -74,14 +100,31 @@
|
|||
<step n="8" goal="Validate, save, and optionally generate context">
|
||||
<invoke-task>Validate against checklist at {installed_path}/checklist.md using bmad/core/tasks/validate-workflow.xml</invoke-task>
|
||||
<action>Save document unconditionally (non-interactive default). In interactive mode, allow user confirmation.</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_story_status</param>
|
||||
<param>story_key: {{result_story_key}}</param>
|
||||
<param>new_status: drafted</param>
|
||||
<param>validate: true</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Could not update story status: {{result_error}}
|
||||
|
||||
Story file was created successfully, but sprint-status.yaml was not updated.
|
||||
You may need to run sprint-planning to refresh tracking.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<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>
|
||||
<output>**✅ Story Created Successfully, {user_name}!**
|
||||
|
||||
**Story Details:**
|
||||
- Story ID: {{story_id}}
|
||||
- Story Key: {{result_story_key}}
|
||||
- File: {{story_file}}
|
||||
- Status: Draft (needs review)
|
||||
- Status: {{result_new_status}} (was {{result_old_status}})
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the drafted story in {{story_file}}
|
||||
|
|
|
|||
|
|
@ -15,13 +15,38 @@
|
|||
|
||||
<workflow>
|
||||
|
||||
<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>
|
||||
<step n="1" goal="Locate and load story from sprint status">
|
||||
<check if="{{story_path}} is provided">
|
||||
<action>Use {{story_path}} directly</action>
|
||||
<action>Read COMPLETE story file</action>
|
||||
<action>Extract story_key from filename or metadata</action>
|
||||
<goto>task_check</goto>
|
||||
</check>
|
||||
|
||||
<action>Query sprint-status for ready stories:</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: get_next_story</param>
|
||||
<param>filter_status: ready-for-dev</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_found}} == false">
|
||||
<output>📋 No ready-for-dev stories found in sprint-status.yaml
|
||||
|
||||
**Options:**
|
||||
1. Run `story-ready` to mark drafted stories as ready
|
||||
2. Run `create-story` if no stories are drafted yet
|
||||
3. Check sprint-status.yaml to see current story states
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Use {{result_story_key}} to find story file in {{story_dir}}</action>
|
||||
<action>Read COMPLETE story file from discovered path</action>
|
||||
<action>Store {{result_story_key}} for later status updates</action>
|
||||
|
||||
<anchor id="task_check" />
|
||||
|
||||
<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>
|
||||
<action>Identify first incomplete task (unchecked [ ]) in Tasks/Subtasks</action>
|
||||
|
||||
|
|
@ -30,6 +55,34 @@
|
|||
<check>If task requirements ambiguous → ASK user to clarify or HALT</check>
|
||||
</step>
|
||||
|
||||
<step n="1.5" goal="Mark story in-progress in sprint status">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: get_story_status</param>
|
||||
<param>story_key: {{result_story_key}}</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_status}} == 'ready-for-dev'">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_story_status</param>
|
||||
<param>story_key: {{result_story_key}}</param>
|
||||
<param>new_status: in-progress</param>
|
||||
<param>validate: true</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == true">
|
||||
<output>🚀 Starting work on story {{result_story_key}}
|
||||
Status updated: {{result_old_status}} → {{result_new_status}}
|
||||
</output>
|
||||
</check>
|
||||
</check>
|
||||
|
||||
<check if="{{result_status}} == 'in-progress'">
|
||||
<output>⏯️ Resuming work on story {{result_story_key}}
|
||||
Story is already marked in-progress
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Plan and implement task">
|
||||
<action>Review acceptance criteria and dev notes for the selected task</action>
|
||||
<action>Plan implementation steps and edge cases; write down a brief plan in Dev Agent Record → Debug Log</action>
|
||||
|
|
@ -76,6 +129,21 @@
|
|||
<action>Confirm File List includes every changed file</action>
|
||||
<action>Execute story definition-of-done checklist, if the story includes one</action>
|
||||
<action>Update the story Status to: Ready for Review</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_story_status</param>
|
||||
<param>story_key: {{result_story_key}}</param>
|
||||
<param>new_status: review</param>
|
||||
<param>validate: true</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Story file updated, but sprint-status update failed: {{result_error}}
|
||||
|
||||
Story is marked Ready for Review in file, but sprint-status.yaml may be out of sync.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check>If any task is incomplete → Return to step 1 to complete remaining work (Do NOT finish with partial progress)</check>
|
||||
<check>If regression failures exist → STOP and resolve before completing</check>
|
||||
<check>If File List is incomplete → Update it before completing</check>
|
||||
|
|
@ -89,14 +157,16 @@
|
|||
|
||||
**Story Details:**
|
||||
- Story ID: {{current_story_id}}
|
||||
- Story Key: {{result_story_key}}
|
||||
- Title: {{current_story_title}}
|
||||
- File: {{story_path}}
|
||||
- Status: Ready for Review
|
||||
- Status: {{result_new_status}} (was {{result_old_status}})
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the implemented story and test the changes
|
||||
2. Verify all acceptance criteria are met
|
||||
3. When satisfied, mark story complete and continue with next story
|
||||
3. Run `review-story` workflow for senior developer review
|
||||
4. When review passes, run `story-done` to mark complete
|
||||
</output>
|
||||
</step>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,29 @@
|
|||
<action>Resolve output file path using workflow variables and initialize by writing the template.</action>
|
||||
</step>
|
||||
|
||||
<step n="1.5" goal="Validate epic in sprint status">
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: get_epic_status</param>
|
||||
<param>epic_id: {{epic_id}}</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_found}} == false">
|
||||
<output>⚠️ Epic {{epic_id}} not found in sprint-status.yaml
|
||||
|
||||
This epic hasn't been registered in the sprint plan yet.
|
||||
Run sprint-planning workflow to initialize epic tracking.
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<check if="{{result_status}} == 'contexted'">
|
||||
<output>ℹ️ Epic {{epic_id}} already marked as contexted
|
||||
|
||||
Continuing to regenerate tech spec...
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Overview and scope">
|
||||
<action>Read COMPLETE PRD and Architecture files.</action>
|
||||
<template-output file="{default_output_file}">
|
||||
|
|
@ -68,18 +91,31 @@
|
|||
|
||||
<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>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_epic_status</param>
|
||||
<param>epic_id: {{epic_id}}</param>
|
||||
<param>new_status: contexted</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Could not update epic status: {{result_error}}</output>
|
||||
</check>
|
||||
|
||||
<output>**✅ Tech Spec Generated Successfully, {user_name}!**
|
||||
|
||||
**Epic Details:**
|
||||
- Epic ID: {{epic_id}}
|
||||
- Epic Title: {{epic_title}}
|
||||
- Tech Spec File: {{default_output_file}}
|
||||
- Epic Status: {{result_new_status}} (was {{result_old_status}})
|
||||
|
||||
**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
|
||||
- Load SM agent and run `create-story` to begin implementing stories
|
||||
</output>
|
||||
</step>
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,48 @@ FACILITATION NOTES:
|
|||
<action>If auto-detection succeeds, confirm with user: "It looks like Epic {{epic_number}} was just completed - is that correct?"</action>
|
||||
<action>If auto-detection fails or user indicates different epic, ask them to share which epic they just completed</action>
|
||||
|
||||
<action>Verify epic completion status in sprint-status:</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: check_epic_complete</param>
|
||||
<param>epic_id: {{epic_number}}</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_complete}} == false">
|
||||
<output>⚠️ Epic {{epic_number}} is not yet complete for retrospective
|
||||
|
||||
**Epic Status:**
|
||||
|
||||
- Total Stories: {{result_total_stories}}
|
||||
- Completed (Done): {{result_done_stories}}
|
||||
- Pending: {{result_total_stories - result_done_stories}}
|
||||
|
||||
**Pending Stories:**
|
||||
{{result_pending_stories}}
|
||||
|
||||
**Options:**
|
||||
|
||||
1. Complete remaining stories before running retrospective
|
||||
2. Continue with partial retrospective (not recommended)
|
||||
3. Run sprint-planning to refresh story tracking
|
||||
</output>
|
||||
|
||||
<ask if="{{non_interactive}} == false">Epic is incomplete. Continue anyway? (yes/no)</ask>
|
||||
|
||||
<check if="user says no">
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action if="user says yes">Set {{partial_retrospective}} = true</action>
|
||||
</check>
|
||||
|
||||
<check if="{{result_complete}} == true">
|
||||
<output>✅ Epic {{epic_number}} is complete - all {{result_done_stories}} stories done!
|
||||
|
||||
Ready to proceed with retrospective.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<action>Load the completed epic from: {output_folder}/prd/epic-{{epic_number}}.md</action>
|
||||
<action>Extract epic details:
|
||||
|
||||
|
|
@ -361,6 +403,27 @@ 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>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: complete_retrospective</param>
|
||||
<param>epic_id: {{completed_number}}</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == true">
|
||||
<output>✅ Retrospective marked as completed in sprint-status.yaml
|
||||
|
||||
Retrospective key: {{result_retro_key}}
|
||||
Status: {{result_old_status}} → {{result_new_status}}
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Could not update retrospective status: {{result_error}}
|
||||
|
||||
Retrospective document was saved, but sprint-status.yaml may need manual update.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
<action>Confirm all action items have been captured</action>
|
||||
<action>Remind user to schedule prep sprint if needed</action>
|
||||
<output>**✅ Retrospective Complete, {user_name}!**
|
||||
|
|
@ -368,6 +431,7 @@ See you at sprint planning once prep work is done!"
|
|||
**Epic Review:**
|
||||
|
||||
- Epic {{completed_number}}: {{epic_title}} reviewed
|
||||
- Retrospective Status: {{result_new_status}}
|
||||
- Retrospective saved: {output_folder}/retrospectives/epic-{{completed_number}}-retro-{{date}}.md
|
||||
- Action Items: {{action_count}}
|
||||
- Preparation Tasks: {{prep_task_count}}
|
||||
|
|
@ -379,8 +443,10 @@ See you at sprint planning once prep work is done!"
|
|||
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
|
||||
</output>
|
||||
</step>
|
||||
- Load PM agent and run `epic-tech-context` for next epic
|
||||
- Or continue with existing contexted epics
|
||||
</output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,11 +15,49 @@
|
|||
<workflow>
|
||||
|
||||
<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>
|
||||
<check if="{{story_path}} is provided">
|
||||
<action>Use {{story_path}} directly</action>
|
||||
<action>Read COMPLETE file and parse sections</action>
|
||||
<action>Extract story_key from filename or story metadata</action>
|
||||
<goto>verify_status</goto>
|
||||
</check>
|
||||
|
||||
<action>Query sprint-status for review stories:</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: list_stories</param>
|
||||
<param>filter_status: review</param>
|
||||
<param>limit: 10</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_count}} == 0">
|
||||
<output>📋 No stories in review status found
|
||||
|
||||
**Options:**
|
||||
1. Run `dev-story` to implement and mark stories ready for review
|
||||
2. Check sprint-status.yaml for current story states
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Display available review stories:
|
||||
|
||||
**Stories Ready for Review ({{result_count}} found):**
|
||||
|
||||
{{result_story_list}}
|
||||
|
||||
</action>
|
||||
|
||||
<ask if="{{non_interactive}} == false">Select story to review (enter story key or number):</ask>
|
||||
<action if="{{non_interactive}} == true">Auto-select first story from result_stories</action>
|
||||
|
||||
<action>Resolve selected story_key and find file path in {{story_dir}}</action>
|
||||
<action>Resolve {{story_path}} and read the COMPLETE file</action>
|
||||
|
||||
<anchor id="verify_status" />
|
||||
|
||||
<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>
|
||||
|
|
@ -80,6 +118,32 @@
|
|||
<action>Save the story file.</action>
|
||||
</step>
|
||||
|
||||
<step n="7.5" goal="Update sprint-status based on review outcome">
|
||||
<action>Determine target status based on review outcome:
|
||||
- If {{outcome}} == "Approve" → target_status = "done"
|
||||
- If {{outcome}} == "Changes Requested" → target_status = "in-progress"
|
||||
- If {{outcome}} == "Blocked" → target_status = "review" (stay in review)
|
||||
</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_story_status</param>
|
||||
<param>story_key: {{story_key}}</param>
|
||||
<param>new_status: {{target_status}}</param>
|
||||
<param>validate: true</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == true">
|
||||
<output>✅ Sprint status updated: {{result_old_status}} → {{result_new_status}}</output>
|
||||
</check>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Could not update sprint-status: {{result_error}}
|
||||
|
||||
Review was saved to story file, but sprint-status.yaml may be out of sync.
|
||||
</output>
|
||||
</check>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Persist action items to tasks/backlog/epic">
|
||||
<action>Normalize Action Items into a structured list: description, severity (High/Med/Low), type (Bug/TechDebt/Enhancement), suggested owner (if known), related AC/file references.</action>
|
||||
<action if="{{persist_action_items}} == true and 'story_tasks' in {{persist_targets}}">
|
||||
|
|
@ -104,13 +168,16 @@
|
|||
|
||||
**Story Details:**
|
||||
- Story: {{epic_num}}.{{story_num}}
|
||||
- Story Key: {{story_key}}
|
||||
- Review Outcome: {{outcome}}
|
||||
- Sprint Status: {{result_new_status}}
|
||||
- Action Items: {{action_item_count}}
|
||||
|
||||
**Next Steps:**
|
||||
1. Review the Senior Developer Review notes appended to story
|
||||
2. Address any action items or changes requested
|
||||
3. When ready, continue with implementation or mark story complete
|
||||
2. If approved: Story is marked done, continue with next story
|
||||
3. If changes requested: Address action items and re-run `dev-story`
|
||||
4. If blocked: Resolve blockers before proceeding
|
||||
</output>
|
||||
</step>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,25 +10,55 @@
|
|||
<critical>This workflow is run by DEV agent AFTER user confirms a story is approved (Definition of Done is complete)</critical>
|
||||
<critical>Workflow: Update story file status to Done</critical>
|
||||
|
||||
<step n="1" goal="Locate story and update to Done status">
|
||||
<step n="1" goal="Find reviewed story and mark done">
|
||||
|
||||
<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>
|
||||
<action>If {{story_path}} is provided → use it directly; extract story_key from filename or metadata; GOTO mark_done</action>
|
||||
|
||||
<action>Read the story file: {{story_path}}</action>
|
||||
<action>Extract story ID and title from the file</action>
|
||||
<action>Otherwise query sprint-status for reviewed stories:</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: list_stories</param>
|
||||
<param>filter_status: review</param>
|
||||
<param>limit: 10</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_count}} == 0">
|
||||
<output>📋 No stories in review status found
|
||||
|
||||
All stories are either still in development or already done.
|
||||
|
||||
**Options:**
|
||||
|
||||
1. Run `dev-story` to implement stories
|
||||
2. Run `review-story` if stories need review first
|
||||
3. Check sprint-status.yaml for current story states
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Display available reviewed stories:
|
||||
|
||||
**Stories Ready to Mark Done ({{result_count}} found):**
|
||||
|
||||
{{result_story_list}}
|
||||
|
||||
</action>
|
||||
|
||||
<ask>Select the story to mark as Done (enter story key or number):</ask>
|
||||
|
||||
<action>Resolve selected story_key from user input</action>
|
||||
<action>Find matching story file in {{story_dir}} using story_key pattern</action>
|
||||
|
||||
<anchor id="mark_done" />
|
||||
|
||||
<action>Read the story file from resolved path</action>
|
||||
<action>Extract story_id and story_title from the file</action>
|
||||
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
<action>Update story file: Change Status to "Done"</action>
|
||||
|
||||
<action>Update story file:</action>
|
||||
|
||||
- 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>
|
||||
|
||||
Find "## Dev Agent Record" section and add:
|
||||
<action>Add completion notes to Dev Agent Record section:</action>
|
||||
<action>Find "## Dev Agent Record" section and add:
|
||||
|
||||
```
|
||||
### Completion Notes
|
||||
|
|
@ -36,8 +66,24 @@ Find "## Dev Agent Record" section and add:
|
|||
**Definition of Done:** All acceptance criteria met, code reviewed, tests passing
|
||||
```
|
||||
|
||||
</action>
|
||||
|
||||
<action>Save the story file</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_story_status</param>
|
||||
<param>story_key: {{story_key}}</param>
|
||||
<param>new_status: done</param>
|
||||
<param>validate: true</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Story file updated, but could not update sprint-status: {{result_error}}
|
||||
|
||||
Story is marked Done in file, but sprint-status.yaml may be out of sync.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Confirm completion to user">
|
||||
|
|
@ -45,10 +91,12 @@ Find "## Dev Agent Record" section and add:
|
|||
<output>**Story Approved and Marked Done, {user_name}!**
|
||||
|
||||
✅ Story file updated: `{{story_file}}` → Status: Done
|
||||
✅ Sprint status updated: {{result_old_status}} → {{result_new_status}}
|
||||
|
||||
**Completed Story:**
|
||||
|
||||
- **ID:** {{story_id}}
|
||||
- **Key:** {{story_key}}
|
||||
- **Title:** {{story_title}}
|
||||
- **File:** `{{story_file}}`
|
||||
- **Completed:** {{date}}
|
||||
|
|
@ -56,8 +104,12 @@ Find "## Dev Agent Record" section and add:
|
|||
**Next Steps:**
|
||||
|
||||
1. Continue with next story in your backlog
|
||||
2. Or run `retrospective` workflow if all stories are complete
|
||||
</output>
|
||||
- Run `create-story` for next backlog story
|
||||
- Or run `dev-story` if ready stories exist
|
||||
2. Check epic completion status
|
||||
- Run `retrospective` workflow to check if epic is complete
|
||||
- Epic retrospective will verify all stories are done
|
||||
</output>
|
||||
|
||||
</step>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,24 +10,68 @@
|
|||
<critical>This workflow is run by SM agent AFTER user reviews a drafted story and confirms it's ready for development</critical>
|
||||
<critical>Simple workflow: Update story file status to Ready</critical>
|
||||
|
||||
<step n="1" goal="Locate story and update status">
|
||||
<step n="1" goal="Find drafted story and mark as ready">
|
||||
|
||||
<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>
|
||||
<action>If {{story_path}} is provided → use it directly; extract story_key from filename or metadata; GOTO mark_ready</action>
|
||||
|
||||
<action>Read the story file: {{story_path}}</action>
|
||||
<action>Extract story ID and title from the file</action>
|
||||
<action>Otherwise query sprint-status for drafted stories:</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: list_stories</param>
|
||||
<param>filter_status: drafted</param>
|
||||
<param>limit: 10</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_count}} == 0">
|
||||
<output>📋 No drafted stories found in sprint-status.yaml
|
||||
|
||||
All stories are either still in backlog or already marked ready/in-progress/done.
|
||||
|
||||
**Options:**
|
||||
|
||||
1. Run `create-story` to draft more stories
|
||||
2. Run `sprint-planning` to refresh story tracking
|
||||
</output>
|
||||
<action>HALT</action>
|
||||
</check>
|
||||
|
||||
<action>Display available drafted stories:
|
||||
|
||||
**Drafted Stories Available ({{result_count}} found):**
|
||||
|
||||
{{result_story_list}}
|
||||
|
||||
</action>
|
||||
|
||||
<ask if="{{non_interactive}} == false">Select the drafted story to mark as Ready (enter story key or number):</ask>
|
||||
<action if="{{non_interactive}} == true">Auto-select first story from result_stories</action>
|
||||
|
||||
<action>Resolve selected story_key from user input or auto-selection</action>
|
||||
<action>Find matching story file in {{story_dir}} using story_key pattern</action>
|
||||
|
||||
<anchor id="mark_ready" />
|
||||
|
||||
<action>Read the story file from resolved path</action>
|
||||
<action>Extract story_id and story_title from the file</action>
|
||||
|
||||
<action>Find the "Status:" line (usually at the top)</action>
|
||||
|
||||
<action>Update story file:</action>
|
||||
|
||||
- Change: `Status: Draft` or similar
|
||||
- To: `Status: Ready`
|
||||
|
||||
<action>Update story file: Change Status to "Ready"</action>
|
||||
<action>Save the story file</action>
|
||||
|
||||
<invoke-workflow path="{project-root}/bmad/bmm/workflows/helpers/sprint-status">
|
||||
<param>action: update_story_status</param>
|
||||
<param>story_key: {{story_key}}</param>
|
||||
<param>new_status: ready-for-dev</param>
|
||||
<param>validate: true</param>
|
||||
</invoke-workflow>
|
||||
|
||||
<check if="{{result_success}} == false">
|
||||
<output>⚠️ Story file updated, but could not update sprint-status: {{result_error}}
|
||||
|
||||
You may need to run sprint-planning to refresh tracking.
|
||||
</output>
|
||||
</check>
|
||||
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Confirm completion to user">
|
||||
|
|
@ -35,10 +79,12 @@
|
|||
<output>**Story Marked Ready for Development, {user_name}!**
|
||||
|
||||
✅ Story file updated: `{{story_file}}` → Status: Ready
|
||||
✅ Sprint status updated: {{result_old_status}} → {{result_new_status}}
|
||||
|
||||
**Story Details:**
|
||||
|
||||
- **ID:** {{story_id}}
|
||||
- **Key:** {{story_key}}
|
||||
- **Title:** {{story_title}}
|
||||
- **File:** `{{story_file}}`
|
||||
- **Status:** Ready for development
|
||||
|
|
|
|||
Loading…
Reference in New Issue