diff --git a/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md b/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md
index 07aec498a..46998b6b2 100644
--- a/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md
+++ b/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md
@@ -350,6 +350,7 @@ Amelia (Developer): "I found our retrospectives from Epic {{prev_epic_num}}. Let
**Action Item Follow-Through:**
- For each action item from Epic {{prev_epic_num}} retro, check if it was completed
+ - Cross-check the action_items section in {sprint_status_file} (if present) for Epic {{prev_epic_num}} entries and their current status
- Look for evidence in current epic's story records
- Mark each action item: ✅ Completed, ⏳ In Progress, ❌ Not Addressed
@@ -1403,6 +1404,19 @@ Amelia (Developer): "See you all when prep work is done. Meeting adjourned!"
Find development_status key "epic-{{epic_number}}-retrospective"
Verify current status (typically "optional" or "pending")
Update development_status["epic-{{epic_number}}-retrospective"] = "done"
+Append each Epic {{epic_number}} action item to the action_items section, creating the section after development_status if missing. One entry per item:
+
+```yaml
+action_items:
+ - epic: {{epic_number}}
+ action: "{{action_description}}"
+ owner: "{{owner}}"
+ status: open
+```
+
+Quote action and owner values so punctuation (e.g., "#") cannot break YAML parsing
+
+Update Epic {{prev_epic_num}} action_items entries based on Step 4 follow-through: ✅ Completed → done, ⏳ In Progress → in-progress, ❌ Not Addressed → keep existing status (do not modify)
Update last_updated field to current date
Save file, preserving ALL comments and structure including STATUS DEFINITIONS
@@ -1412,6 +1426,7 @@ Amelia (Developer): "See you all when prep work is done. Meeting adjourned!"
Retrospective key: epic-{{epic_number}}-retrospective
Status: {{previous_status}} → done
+Action items recorded: {{action_count}}
diff --git a/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md b/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md
index dd7bfa55b..c56f9091b 100644
--- a/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md
+++ b/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md
@@ -151,6 +151,7 @@ development_status:
- If existing `{status_file}` exists and has more advanced status, preserve it
- Never downgrade status (e.g., don't change `done` to `ready-for-dev`)
+- If existing `{status_file}` has an `action_items` section, carry it over unchanged
**Status Flow Reference:**
@@ -194,12 +195,18 @@ development_status:
# - optional: Can be completed but not required
# - done: Retrospective has been completed
#
+# Action Item Status:
+# - open: Committed during a retrospective, not yet addressed
+# - in-progress: Actively being worked on
+# - done: Completed
+#
# WORKFLOW NOTES:
# ===============
# - Epic transitions to 'in-progress' automatically when first story is created
# - Stories can be worked in parallel if team capacity allows
# - Developer typically creates next story after previous one is 'done' to incorporate learnings
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
+# - Retrospective appends its action items to action_items; sprint-status surfaces open ones
generated: { date }
last_updated: { date }
@@ -215,6 +222,7 @@ development_status:
Write the complete sprint status YAML to {status_file}
CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing
Ensure all items are ordered: epic, its stories, its retrospective, next epic...
+If the existing file had an action_items section, write it back unchanged after development_status
@@ -223,7 +231,8 @@ development_status:
- [ ] Every epic in epic files appears in {status_file}
- [ ] Every story in epic files appears in {status_file}
- [ ] Every epic has a corresponding retrospective entry
-- [ ] No items in {status_file} that don't exist in epic files
+- [ ] No development_status items in {status_file} that don't exist in epic files
+- [ ] action_items section (if it existed) carried over unchanged
- [ ] All status values are legal (match state machine definitions)
- [ ] File is valid YAML syntax
@@ -291,6 +300,16 @@ optional ↔ done
- **optional**: Ready to be conducted but not required
- **done**: Finished
+**Action Item Status:**
+
+```
+open → in-progress → done
+```
+
+- **open**: Committed during a retrospective, not yet addressed
+- **in-progress**: Actively being worked on
+- **done**: Completed
+
### Guidelines
1. **Epic Activation**: Mark epic as `in-progress` when starting work on its first story
diff --git a/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md b/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md
index 7c20b1f37..2ec5045bc 100644
--- a/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md
+++ b/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md
@@ -7,7 +7,8 @@
- [ ] Every epic found in epic\*.md files appears in sprint-status.yaml
- [ ] Every story found in epic\*.md files appears in sprint-status.yaml
- [ ] Every epic has a corresponding retrospective entry
-- [ ] No items in sprint-status.yaml that don't exist in epic files
+- [ ] No development_status items in sprint-status.yaml that don't exist in epic files
+- [ ] action_items section (if it existed) carried over unchanged
### Parsing Verification
diff --git a/src/bmm-skills/4-implementation/bmad-sprint-planning/sprint-status-template.yaml b/src/bmm-skills/4-implementation/bmad-sprint-planning/sprint-status-template.yaml
index d454f930c..8b91ff748 100644
--- a/src/bmm-skills/4-implementation/bmad-sprint-planning/sprint-status-template.yaml
+++ b/src/bmm-skills/4-implementation/bmad-sprint-planning/sprint-status-template.yaml
@@ -26,11 +26,17 @@
# - optional: Can be completed but not required
# - done: Retrospective has been completed
#
+# Action Item Status:
+# - open: Committed during a retrospective, not yet addressed
+# - in-progress: Actively being worked on
+# - done: Completed
+#
# WORKFLOW NOTES:
# ===============
# - Mark epic as 'in-progress' when starting work on its first story
# - Developer typically creates next story ONLY after previous one is 'done' to incorporate learnings
# - Dev moves story to 'review', then Dev runs code-review (fresh context, ideally different LLM)
+# - Retrospective appends its action items to action_items; sprint-status surfaces open ones
# EXAMPLE STRUCTURE (your actual epics/stories will replace these):
@@ -54,3 +60,10 @@ development_status:
2-2-chat-interface: backlog
2-3-llm-integration: backlog
epic-2-retrospective: optional
+
+# Action items committed during retrospectives (section created by the retrospective workflow)
+action_items:
+ - epic: 1
+ action: "Add error-handling review to the code review checklist"
+ owner: "Charlie"
+ status: open
diff --git a/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md b/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md
index cad4f0df0..0e060a684 100644
--- a/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md
+++ b/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md
@@ -112,12 +112,14 @@ Run `/bmad:bmm:workflows:sprint-planning` to generate it, then rerun sprint-stat
Map legacy epic status "contexted" → "in-progress"
Count epic statuses: backlog, in-progress, done
Count retrospective statuses: optional, done
+ Parse action_items list if present. Set open_action_items = entries with status "open" or "in-progress"
Validate all statuses against known values:
- Valid story statuses: backlog, ready-for-dev, in-progress, review, done, drafted (legacy)
- Valid epic statuses: backlog, in-progress, done, contexted (legacy)
- Valid retrospective statuses: optional, done
+- Valid action item statuses: open, in-progress, done
How should these be corrected?
{{#each invalid_entries}}
@@ -181,6 +184,14 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
**Next Recommendation:** /bmad:bmm:workflows:{{next_workflow_id}} ({{next_story_id}})
+{{#if open_action_items}}
+**Open Action Items:**
+{{#each open_action_items}}
+
+- {{action}} — {{status}} (epic {{epic}}, owner: {{owner}})
+ {{/each}}
+ {{/if}}
+
{{#if risks}}
**Risks:**
{{#each risks}}
@@ -243,6 +254,7 @@ If the command targets a story, set `story_key={{next_story_id}}` when prompted.
epic_backlog = {{epic_backlog}}
epic_in_progress = {{epic_in_progress}}
epic_done = {{epic_done}}
+ open_action_items = {{open_action_items}}
risks = {{risks}}
Return to caller
@@ -283,6 +295,7 @@ If the command targets a story, set `story_key={{next_story_id}}` when prompted.
- Stories: backlog, ready-for-dev, in-progress, review, done (legacy: drafted)
- Epics: backlog, in-progress, done (legacy: contexted)
- Retrospectives: optional, done
+- Action items (if present): open, in-progress, done
is_valid = false
error = "Invalid status values: {{invalid_entries}}"