# BMAD Workflow Improvements - Lessons from Batch Execution **Date:** 2026-01-08 **Context:** Batch-super-dev tried to regenerate 14 skeleton stories but failed **Root Cause:** Agents cannot invoke workflows/skills in batch mode --- ## Issue Summary **What Happened:** 1. Created 21 skeleton sub-story files (just headers + widget lists) 2. Launched 14 agents via batch-super-dev to process them 3. Agents correctly identified stories were incomplete (no tasks section) 4. Agents correctly halted per super-dev-pipeline Step 1.4.5 5. BUT: Batch-super-dev Step 2.5 says to "Invoke workflow: /bmad..." which agents can't do 6. Result: 13/14 agents halted correctly, 1 somehow succeeded **The Problem:** - Workflows correctly validate and halt - BUT batch-super-dev suggests agents can regenerate stories - Agents CANNOT execute `/` commands or invoke workflows autonomously - This creates false expectations --- ## Proposed Fixes ### Fix 1: Update batch-super-dev Step 2.5 (Story Validation) **Current Code (lines 82-99):** ```xml Create story file with gap analysis? (yes/no): Creating story {{story_key}} with codebase gap analysis... Invoke workflow: /bmad:bmm:workflows:create-story-with-gap-analysis Parameters: story_key={{story_key}} ``` **Problem:** - "Invoke workflow: /bmad..." doesn't work for agents - Agents can't run slash commands - This will always fail in batch mode **Recommended Fix:** ```xml Create story file with gap analysis? (yes/no): ⚠️ CANNOT CREATE STORIES IN BATCH MODE Agents cannot invoke workflows autonomously. **Required Action:** 1. Exit batch-super-dev 2. Run manually: /create-story-with-gap-analysis 3. Specify story key: {{story_key}} 4. Re-run batch-super-dev after story created Skipping story {{story_key}} from batch. Mark story for removal from selection Add to skipped_stories with reason: "Story creation requires manual workflow" Creating story {{story_key}} with codebase gap analysis... ⚠️ IMPORTANT: Story creation requires /create-story-with-gap-analysis workflow This workflow cannot be invoked from within another workflow. **Please run:** ``` /create-story-with-gap-analysis ``` Then return to this workflow. HALT - Cannot auto-invoke create-story workflow ``` **Why This Works:** - ✅ Explicitly states agents can't create stories in batch - ✅ Tells user exactly what to do - ✅ Prevents false expectations - ✅ Provides clear halt message --- ### Fix 2: Add Agent Limitations Section to batch-super-dev **Add new section after line 5:** ```xml Agents Cannot Invoke Workflows Task agents running in batch mode cannot execute slash commands (/) or invoke other BMAD workflows. If a story requires creation or regeneration, the batch must halt and user must handle manually. Stories without proper BMAD format (12 sections, tasks) will be skipped in batch execution. User must run /create-story-with-gap-analysis first. Agents Cannot Prompt User Interactively Batch agents run autonomously. They cannot ask user questions mid-execution. All decisions must be pre-configured or stories will be skipped. Optional steps are auto-skipped. Ambiguous requirements cause halt. Skeleton Stories Will Be Skipped If a story file has <12 BMAD sections or 0 tasks, super-dev-pipeline will correctly halt with "Nothing to implement" message. This is NOT a bug - it's correct behavior. User must regenerate story first. Batch execution requires ALL stories to be properly formatted BEFORE running batch-super-dev. Do not attempt batch regeneration. ... ``` **Why This Helps:** - ✅ Sets clear expectations upfront - ✅ Explains why stories get skipped - ✅ Prevents users from making same mistake I did - ✅ Documents known limitations explicitly --- ### Fix 3: Enhance super-dev-pipeline Step 1.4.5 (Pre-Flight Bailout) **Current Code (lines 94-105):** ``` If total_task_count == 0: Display: ⚠️ EARLY BAILOUT: No Tasks Found Story file exists but has no tasks in Tasks/Subtasks section. - Story may be incomplete or malformed - Run create-story or validate-create-story first HALT - Nothing to implement ``` **Recommended Enhancement:** ``` If total_task_count == 0: Display: ⚠️ EARLY BAILOUT: No Tasks Found Story file exists but has no tasks in Tasks/Subtasks section. **Common Causes:** 1. Story file is a skeleton/template (not generated by /create-story) 2. Story file is missing BMAD sections 3. Story file was manually created without proper format **This is NOT a pipeline bug** - this is correct validation behavior. **Required Action:** {if batch mode} - Story will be SKIPPED from batch execution - User must regenerate: /create-story-with-gap-analysis - Then re-run batch for this story {else} - Run: /create-story-with-gap-analysis - Specify story key: {story_key} - Then re-run super-dev-pipeline {endif} **IMPORTANT FOR AGENTS:** Do NOT attempt to regenerate the story yourself. Agents cannot invoke the /create-story-with-gap-analysis workflow. Document this issue and halt gracefully. HALT - Nothing to implement ``` **Why This Helps:** - ✅ Explains this is CORRECT behavior, not a bug - ✅ Explicitly tells agents NOT to try regenerating - ✅ Provides clear user action steps - ✅ Different guidance for batch vs interactive mode - ✅ Sets correct expectations --- ### Fix 4: Add Pre-Batch Validation Recommendations **Add new document:** `_bmad/bmm/workflows/4-implementation/batch-super-dev/BATCH-BEST-PRACTICES.md` ```markdown # Batch Super-Dev Best Practices ## Pre-Batch Checklist **BEFORE running /batch-super-dev, verify:** ### ✅ All Story Files Exist ```bash # Check all ready-for-dev stories have files for story in $(grep "ready-for-dev" docs/sprint-artifacts/sprint-status.yaml | cut -d: -f1); do if [ ! -f "docs/sprint-artifacts/story-$story.md" ]; then echo "❌ Missing: $story" fi done ``` ### ✅ All Stories Have Proper BMAD Format Run validation script: ```bash ./scripts/validate-bmad-format.sh docs/sprint-artifacts/story-*.md ``` **Required:** All stories must show "✅ All 12 sections present" ### ✅ All Stories Have Tasks ```bash # Check all stories have at least 1 task for file in docs/sprint-artifacts/story-*.md; do task_count=$(grep -c "^- \[ \]" "$file" 2>/dev/null || echo "0") if [ "$task_count" -eq 0 ]; then echo "❌ No tasks: $(basename $file)" fi done ``` **Required:** All stories must have unchecked tasks (something to implement) --- ## Common Mistakes ### ❌ Mistake 1: Batch Regeneration **Don't:** ```bash # Create 20 skeleton story files # Run batch-super-dev expecting agents to regenerate them ``` **Why:** Agents cannot invoke /create-story-with-gap-analysis workflow **Do Instead:** ```bash # Regenerate stories one at a time for story in story-20-13a-{1..5}; do /create-story-with-gap-analysis # Interactive, per story done # THEN run batch-super-dev /batch-super-dev ``` ### ❌ Mistake 2: Mixed Story Quality **Don't:** - Mix properly generated stories with skeleton templates - Assume agents will "fix" incomplete stories - Launch batch without validating story format **Do:** - Validate ALL stories before batch - Regenerate any incomplete ones - Ensure consistent quality ### ❌ Mistake 3: Assuming Agents Can Run / Commands **Don't:** - Tell agents to "Run /create-story" - Expect agents to invoke other workflows - Assume agents can execute user CLI commands **Do:** - Pre-generate all stories before batch - Use batch ONLY for implementation, not planning - Keep story creation separate from story execution --- ## Success Patterns ### ✅ Pattern 1: Manual Create → Batch Execute ```bash # Step 1: Create all stories manually (1-2 days) /create-story-with-gap-analysis # For each of 20 stories # Step 2: Validate all stories ./scripts/validate-all-stories.sh # Step 3: Batch execute (parallel, fast) /batch-super-dev # Select all 20 stories, run 4 agents ``` ### ✅ Pattern 2: Incremental Batch Execution ```bash # Execute stories in small batches as you create them /create-story-with-gap-analysis # Create 5 stories /batch-super-dev # Execute those 5 (filter by epic) /create-story-with-gap-analysis # Create 5 more /batch-super-dev # Execute those 5 ``` ### ✅ Pattern 3: Validation Before Batch ```bash # Add to your workflow validate_stories() { for story in $@; do if ! ./scripts/validate-bmad-format.sh "$story"; then echo "❌ Story $story is not ready for batch" echo "Run: /create-story-with-gap-analysis" exit 1 fi done echo "✅ All stories validated, ready for batch" } validate_stories docs/sprint-artifacts/story-20-13*.md /batch-super-dev ``` --- ## When to Use Batch vs Individual ### Use Batch When: - ✅ All stories properly formatted (12 sections, tasks present) - ✅ Stories are independent (no complex dependencies) - ✅ You want parallel execution (2-4 stories at once) - ✅ Stories are similar complexity (all ~1 day effort) ### Use Individual (/dev-story) When: - ✅ Story needs interactive decisions - ✅ Story is complex (>3 days effort) - ✅ Story has complex dependencies - ✅ You want close monitoring/control ### DON'T Use Batch When: - ❌ Stories are skeleton templates (not generated) - ❌ Stories missing BMAD sections - ❌ Mixed quality (some good, some incomplete) - ❌ Need to create/regenerate stories ``` --- ## Key Takeaway **Batch-super-dev is for EXECUTION, not CREATION.** Story creation is an interactive, context-heavy process that requires: - User input on requirements - Codebase scanning - Gap analysis decisions - Template generation This cannot be reliably automated in batch mode. Always create stories first, then batch execute them. ``` --- **Location:** `_bmad/bmm/workflows/4-implementation/batch-super-dev/BATCH-BEST-PRACTICES.md`