feat(workflows): Implement intelligent file discovery protocol and Phase 4 BMGD workflows

## Core Workflow Engine Enhancements

### discover_inputs Protocol (MAJOR)
- Added reusable `discover_inputs` protocol to workflow.xml for intelligent file loading
- Supports three loading strategies:
  - FULL_LOAD: Load all shards for PRD, Architecture, UX (changed pattern from /index.md to /*/*.md)
  - SELECTIVE_LOAD: Load specific shard via template variable (e.g., epic-{{epic_num}}.md)
  - INDEX_GUIDED: Load index, analyze TOC, intelligently load relevant docs (with "DO NOT BE LAZY" mandate)
- Auto-discovers whole vs sharded documents with proper fallback
- Provides transparent reporting of loaded content with file counts
- Invoked via <invoke-protocol name="discover_inputs" /> tag in workflow instructions

### Advanced Elicitation Improvements
- Renamed adv-elicit.xml to advanced-elicitation.xml for clarity
- Updated all references across agents and commands

### Shard Document Tool Enhancement
- Added Step 6: Handle Original Document with three options:
  - [d] Delete - Remove original (recommended, prevents confusion)
  - [m] Move to archive - Backup original to archive folder
  - [k] Keep - Warning about defeating sharding purpose
- Prevents issue where both whole and sharded versions exist, confusing discover_inputs protocol

## BMM Module - Input File Pattern Standardization

### Phase 1 - Analysis (1 workflow)
- product-brief: Added load_strategy (FULL_LOAD for research/brainstorming, INDEX_GUIDED for document_project)
- Updated instructions.md to use invoke-protocol, replaced manual fuzzy matching

### Phase 2 - Planning (4 workflows)
- prd: Added load_strategy, updated instructions to reference {product_brief_content}, {research_content}
- create-ux-design: Added load_strategy, removed fuzzy matching from instructions
- tech-spec: Added load_strategy for brownfield context discovery
- All epics patterns updated to support SELECTIVE_LOAD for specific epic shards

### Phase 3 - Solutioning (2 workflows)
- architecture: Added load_strategy, updated instructions to use pre-loaded {prd_content}, {epics_content}, {ux_design_content}
- solutioning-gate-check: Added load_strategy, replaced manual discovery with protocol invocation

### Phase 4 - Implementation (8 workflows)
- code-review: Added load_strategy, fixed sharded patterns to /*/*.md, added step 1.5 for protocol
- correct-course: Added complete input_file_patterns section (was missing), added step 0.5
- create-story: Added load_strategy, updated to SELECTIVE_LOAD for epics, added step 1.5
- dev-story: Added complete input_file_patterns section (was missing), added step 0.5
- epic-tech-context: Added load_strategy, updated PRD extraction to use {prd_content}, added step 1.5
- retrospective: Added load_strategy for architecture/prd (FULL_LOAD), epics (SELECTIVE_LOAD), added step 0.5
- sprint-planning: Fixed sharded pattern to load ALL epics (/*/*.md), added step 0.5
- story-context: Added load_strategy, updated doc collection to reference pre-loaded content, added step 1.5

### Sprint Artifacts Path Corrections
- story-done: Added missing sprint_artifacts variable, fixed sprint_status path from {context_dir} to {sprint_artifacts}
- story-ready: Added missing sprint_artifacts variable
- story-context: Fixed undefined {context_dir} -> {sprint_artifacts}
- correct-course: Added sprint_artifacts and sprint_status variables

## BMGD Module - Phase 4 Production Workflows (NEW)

Added complete Phase 4 implementation workflows for game development:
- code-review: Senior developer review for completed game features
- correct-course: Sprint change management for game projects
- create-story: Story generation for game mechanics/features
- dev-story: Feature implementation workflow
- epic-tech-context: Technical spec generation per game epic
- retrospective: Epic completion review and lessons learned
- sprint-planning: Game development sprint status tracking
- story-context: Dynamic context assembly for game stories
- story-done: Story completion workflow
- story-ready: Story readiness workflow

All BMGD workflows follow BMM patterns with game-specific adaptations.

## Agent Updates

### BMM Agents
- Updated all 7 BMM agents (analyst, architect, dev, pm, sm, tea, tech-writer, ux-designer)
- Standardized web bundle configurations

### BMGD Agents
- Updated 4 game development agents (game-architect, game-designer, game-dev, game-scrum-master)
- Aligned with BMM agent structure

### CIS Agents
- Updated 5 creative intelligence agents for consistency

## Documentation & Configuration

- Updated CHANGELOG.md with Phase 4 workflow additions
- Updated files-manifest.csv and task-manifest.csv
- Updated .claude commands for all agents
- Fixed formatting issues from previous commits

## Breaking Changes

NONE - All changes are backward compatible. Workflows without input_file_patterns continue to work.
Workflows with input_file_patterns now benefit from intelligent auto-loading.

## Migration Notes

Existing workflows can gradually adopt discover_inputs protocol by:
1. Adding load_strategy to existing input_file_patterns in workflow.yaml
2. Adding <invoke-protocol name="discover_inputs" /> step in instructions.md
3. Replacing manual file loading with references to {pattern_name_content} variables
This commit is contained in:
Brian Madison
2025-11-12 19:18:38 -06:00
parent 8f7d259c81
commit 48cf5c8056
126 changed files with 5891 additions and 366 deletions

View File

@@ -43,6 +43,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -37,6 +37,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -56,6 +56,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -67,6 +67,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -60,6 +60,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -68,6 +68,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -33,6 +33,6 @@ agent:
workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml"
description: Consult with other expert agents from the party
- trigger: adv-elicit
exec: "{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml"
- trigger: advanced-elicitation
exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
description: Advanced elicitation techniques to challenge the LLM to get better results

View File

@@ -12,19 +12,13 @@
This workflow may reference: market research, brainstorming documents, user specified other inputs, or brownfield project documentation.
**Discovery Process** (execute for each referenced document):
**All input files are discovered and loaded automatically via the `discover_inputs` protocol in Step 0.5**
1. **Search for whole document first** - Use fuzzy file matching to find the complete document
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/index.md`
3. **If sharded version found**:
- Read `index.md` to understand the document structure
- Read ALL section files listed in the index
- Treat the combined content as if it were a single document
4. **Brownfield projects**: The `document-project` workflow always creates `{output_folder}/docs/index.md`
After discovery completes, the following content variables will be available:
**Priority**: If both whole and sharded versions exist, use the whole document.
**Fuzzy matching**: Be flexible with document names - users may use variations in naming conventions.
- `{research_content}` - Market research or domain research documents
- `{brainstorming_content}` - Brainstorming session outputs
- `{document_project_content}` - Brownfield project documentation (intelligently loaded via INDEX_GUIDED strategy)
<workflow>
@@ -68,6 +62,10 @@ Product Brief is most valuable for Level 2+ projects, but can help clarify visio
</check>
</step>
<step n="0.5" goal="Discover and load input documents">
<invoke-protocol name="discover_inputs" />
</step>
<step n="1" goal="Begin the journey and understand context">
<action>Welcome {user_name} warmly in {communication_language}

View File

@@ -21,17 +21,21 @@ recommended_inputs:
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: How to load sharded documents (FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED)
input_file_patterns:
research:
whole: "{output_folder}/*research*.md"
sharded: "{output_folder}/*research*/index.md"
load_strategy: "FULL_LOAD"
brainstorming:
whole: "{output_folder}/*brainstorm*.md"
sharded: "{output_folder}/*brainstorm*/index.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
# Module path and component files
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/1-analysis/product-brief"

View File

@@ -211,8 +211,6 @@ Examples:
<template-output>special_requirements</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="6" goal="Define Validation and Follow-up Strategy">

View File

@@ -114,8 +114,6 @@ Work with the user to establish:
<action if="user_has_questions">Explore surprising data points together</action>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>sources_market_size</template-output>
</step>
@@ -239,7 +237,6 @@ For each major segment, research and define:
- Purchasing frequency
- Budget allocation
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>segment*profile*{{segment_number}}</template-output>
</step>
@@ -313,8 +310,7 @@ Use {{current_year}} in all searches.
<action if="user has follow-up questions">Dig deeper based on their interests</action>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>competitor*analysis*{{competitor_name}}</template-output>
<template-output>competitor-analysis-{{competitor_name}}</template-output>
</step>
<step n="6c" title="Competitive Positioning Map">
@@ -437,7 +433,6 @@ For each opportunity:
- Risk assessment
- Success criteria
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>market_opportunities</template-output>
</step>

View File

@@ -143,8 +143,6 @@ Each of these is popular for different reasons. Let me know if you want me to ex
</check>
</action>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>technology_options</template-output>
</step>
@@ -221,7 +219,6 @@ Each of these is popular for different reasons. Let me know if you want me to ex
- Training costs
- Total cost of ownership estimate
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>tech*profile*{{option_number}}</template-output>
</step>
@@ -392,8 +389,6 @@ Research and document:
- Contingency options if primary choice doesn't work
- Exit strategy considerations
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>recommendations</template-output>
</step>

View File

@@ -51,10 +51,15 @@
</check>
</step>
<step n="0.5" goal="Discover and load input documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {product_brief_content}, {epics_content}, {brainstorming_content}, {document_project_content}</note>
</step>
<step n="1a" goal="Confirm project understanding or gather basic context">
<critical>A UX designer must understand the WHY before designing the HOW</critical>
<action>Attempt to load context documents using fuzzy matching: - PRD: {prd_file} - Product Brief: {brief_file} - Brainstorming: {brainstorm_file}
<action>Review loaded context from Step 0.5: {prd_content}, {product_brief_content}, {epics_content}, {brainstorming_content}
</action>
<check if="documents_found">

View File

@@ -25,25 +25,31 @@ brainstorm_file: "{output_folder}/brainstorming.md or brainstorm.md or ideation.
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: How to load sharded documents (FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED)
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
load_strategy: "FULL_LOAD"
product_brief:
whole: "{output_folder}/*brief*.md"
sharded: "{output_folder}/*brief*/index.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded: "{output_folder}/*epic*/index.md"
load_strategy: "FULL_LOAD"
brainstorming:
whole: "{output_folder}/*brainstorm*.md"
sharded: "{output_folder}/*brainstorm*/index.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
# Module path and component files
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/create-ux-design"

View File

@@ -17,7 +17,7 @@
### Core Sections Present
- [ ] Executive Summary with vision alignment
- [ ] Product magic essence clearly articulated
- [ ] Product differentiator clearly articulated
- [ ] Project classification (type, domain, complexity)
- [ ] Success criteria defined
- [ ] Product scope (MVP, Growth, Vision) clearly delineated
@@ -38,7 +38,7 @@
- [ ] No unfilled template variables ({{variable}})
- [ ] All variables properly populated with meaningful content
- [ ] Product magic woven throughout (not just stated once)
- [ ] Product differentiator reflected throughout (not just stated once)
- [ ] Language is clear, specific, and measurable
- [ ] Project type correctly identified and sections match
- [ ] Domain complexity appropriately addressed
@@ -210,7 +210,7 @@
### Alignment Checks
- [ ] Success metrics in PRD align with story outcomes
- [ ] Product magic articulated in PRD reflected in epic goals
- [ ] Product differentiator articulated in PRD reflected in epic goals
- [ ] Technical preferences in PRD align with story implementation hints
- [ ] Scope boundaries consistent across all documents

View File

@@ -11,10 +11,24 @@
This document provides the complete epic and story breakdown for {{project_name}}, decomposing the requirements from the [PRD](./PRD.md) into implementable stories.
**Living Document Notice:** This is the initial version. It will be updated after UX Design and Architecture workflows add interaction and technical details to stories.
{{epics_summary}}
---
## Functional Requirements Inventory
{{fr_inventory}}
---
## FR Coverage Map
{{fr_coverage_map}}
---
<!-- Repeat for each epic (N = 1, 2, 3...) -->
## Epic {{N}}: {{epic_title_N}}
@@ -49,4 +63,18 @@ So that {{value_benefit}}.
---
## FR Coverage Matrix
{{fr_coverage_matrix}}
---
## Summary
{{epic_breakdown_summary}}
---
_For implementation: Use the `create-story` workflow to generate individual story implementation plans from this epic breakdown._
_This document will be updated after UX Design and Architecture workflows to incorporate interaction details and technical decisions._

View File

@@ -4,6 +4,11 @@
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
<critical>This workflow transforms requirements into BITE-SIZED STORIES for development agents</critical>
<critical>EVERY story must be completable by a single dev agent in one focused session</critical>
<critical>BMAD METHOD WORKFLOW POSITION: This is the FIRST PASS at epic breakdown</critical>
<critical>After this workflow: UX Design will add interaction details → UPDATE epics.md</critical>
<critical>After UX: Architecture will add technical decisions → UPDATE epics.md AGAIN</critical>
<critical>Phase 4 Implementation pulls context from: PRD + epics.md + UX + Architecture</critical>
<critical>This is a LIVING DOCUMENT that evolves through the BMad Method workflow chain</critical>
<critical>Communicate all responses in {communication_language} and adapt to {user_skill_level}</critical>
<critical>Generate all documents in {document_output_language}</critical>
<critical>LIVING DOCUMENT: Write to epics.md continuously as you work - never wait until the end</critical>
@@ -20,21 +25,49 @@ Load required documents (fuzzy match, handle both whole and sharded):
- domain-brief.md (if exists)
- product-brief.md (if exists)
**CRITICAL - PRD FRs Are Now Flat and Strategic:**
The PRD contains FLAT, capability-level functional requirements (FR1, FR2, FR3...).
These are STRATEGIC (WHAT capabilities exist), NOT tactical (HOW they're implemented).
Example PRD FRs:
- FR1: Users can create accounts with email or social authentication
- FR2: Users can log in securely and maintain sessions
- FR6: Users can create, edit, and delete content items
**Your job in THIS workflow:**
1. Map each FR to one or more epics
2. Break each FR into stories with DETAILED acceptance criteria
3. Add ALL the implementation details that were intentionally left out of PRD
Extract from PRD:
- All functional requirements
- ALL functional requirements (flat numbered list)
- Non-functional requirements
- Domain considerations and compliance needs
- Project type and complexity
- MVP vs growth vs vision scope boundaries
Understand the context:
- What makes this product special (the magic)
- Product differentiator (what makes it special)
- Technical constraints
- User types and their goals
- Success criteria</action>
</step>
- Success criteria
**Create FR Inventory:**
List all FRs to ensure coverage:
- FR1: [description]
- FR2: [description]
- ...
- FRN: [description]
This inventory will be used to validate complete coverage in Step 4.
</action>
<template-output>fr_inventory</template-output>
</step>
<step n="2" goal="Propose epic structure from natural groupings">
<action>Analyze requirements and identify natural epic boundaries
@@ -76,18 +109,56 @@ Present proposed epic structure showing:
- Epic titles with clear value statements
- High-level scope of each epic
- **FR COVERAGE MAP: Which FRs does each epic address?**
- Example: "Epic 1 (Foundation): Covers infrastructure needs for all FRs"
- Example: "Epic 2 (User Management): FR1, FR2, FR3, FR4, FR5"
- Example: "Epic 3 (Content System): FR6, FR7, FR8, FR9"
- Suggested sequencing
- Why this grouping makes sense</action>
- Why this grouping makes sense
**Validate FR Coverage:**
Check that EVERY FR from Step 1 inventory is mapped to at least one epic.
If any FRs are unmapped, add them now or explain why they're deferred.
</action>
<template-output>epics_summary</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<template-output>fr_coverage_map</template-output>
</step>
<step n="3" goal="Decompose each epic into bite-sized stories" repeat="for-each-epic">
<step n="3" goal="Decompose each epic into bite-sized stories with DETAILED AC" repeat="for-each-epic">
<action>Break down Epic {{N}} into small, implementable stories
INTENT: Create stories sized for single dev agent completion
**CRITICAL - ALTITUDE SHIFT FROM PRD:**
PRD FRs are STRATEGIC (WHAT capabilities):
- ✅ "Users can create accounts"
Epic Stories are TACTICAL (HOW it's implemented):
- Email field with RFC 5322 validation
- Password requirements: 8+ chars, 1 uppercase, 1 number, 1 special
- Password strength meter with visual feedback
- Email verification within 15 minutes
- reCAPTCHA v3 integration
- Account creation completes in < 2 seconds
- Mobile responsive with 44x44px touch targets
- WCAG 2.1 AA compliant
**THIS IS WHERE YOU ADD ALL THE DETAILS LEFT OUT OF PRD:**
- UI specifics (exact field counts, validation rules, layout details)
- Performance targets (< 2s, 60fps, etc.)
- Technical implementation hints (libraries, patterns, APIs)
- Edge cases (what happens when...)
- Validation rules (regex patterns, constraints)
- Error handling (specific error messages, retry logic)
- Accessibility requirements (ARIA labels, keyboard nav, screen readers)
- Platform specifics (mobile responsive, browser support)
For each epic, generate:
- Epic title as `epic_title_{{N}}`
@@ -138,32 +209,84 @@ For each story in epic {{N}}, output variables following this pattern:
<action>For each story M in epic {{N}}, generate story content</action>
<template-output>story-title-{{N}}-{{M}}</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="4" goal="Review and finalize epic breakdown">
<step n="4" goal="Review initial epic breakdown and prepare for updates">
<action>Review the complete epic breakdown for quality and completeness
Validate:
**Validate FR Coverage:**
Create FR Coverage Matrix showing each FR mapped to epic(s) and story(ies):
- FR1: [description] → Epic X, Story X.Y
- FR2: [description] → Epic X, Story X.Z
- FR3: [description] → Epic Y, Story Y.A
- ...
- FRN: [description] → Epic Z, Story Z.B
Confirm: EVERY FR from Step 1 inventory is covered by at least one story.
If any FRs are missing, add stories now.
**Validate Story Quality:**
- All functional requirements from PRD are covered by stories
- Epic 1 establishes proper foundation
- All stories are vertically sliced
- No forward dependencies exist
- Epic 1 establishes proper foundation (if greenfield)
- All stories are vertically sliced (deliver complete functionality, not just one layer)
- No forward dependencies exist (only backward references)
- Story sizing is appropriate for single-session completion
- BDD acceptance criteria are clear and testable
- Details added (what was missing from PRD FRs: UI specifics, performance targets, etc.)
- Domain/compliance requirements are properly distributed
- Sequencing enables incremental value delivery
**BMad Method Next Steps:**
This epic breakdown is the INITIAL VERSION. It will be updated as you progress:
1. **After UX Design Workflow:**
- UX Designer will design interactions for capabilities
- UPDATE story acceptance criteria with UX specs (mockup references, flow details)
- Add interaction patterns, visual design decisions, responsive breakpoints
2. **After Architecture Workflow:**
- Architect will define technical implementation approach
- UPDATE story technical notes with architecture decisions
- Add references to data models, API contracts, tech stack choices, deployment patterns
3. **During Phase 4 Implementation:**
- Each story pulls context from: PRD (why) + epics.md (what/how) + UX (interactions) + Architecture (technical)
- Stories may be further refined as implementation uncovers edge cases
- This document remains the single source of truth for story details
Confirm with {user_name}:
- Epic structure makes sense
- Story breakdown is actionable
- Dependencies are clear
- BDD format provides clarity
- Ready for architecture and implementation phases</action>
- All FRs covered by stories (validated via coverage matrix)
- Story breakdown is actionable with detailed acceptance criteria
- Ready for UX Design workflow (next BMad Method step)
</action>
<template-output>epic_breakdown_summary</template-output>
<template-output>fr_coverage_matrix</template-output>
<output>**✅ Epic Breakdown Complete (Initial Version)**
**Created:** epics.md with epic and story breakdown
**FR Coverage:** All functional requirements from PRD mapped to stories (see coverage matrix in document)
**Next Steps in BMad Method:**
1. **UX Design** (if UI exists) - Run: `workflow ux-design`
→ Will add interaction details to stories in epics.md
2. **Architecture** - Run: `workflow create-architecture`
→ Will add technical details to stories in epics.md
3. **Phase 4 Implementation** - Stories ready for context assembly
**Important:** This is a living document that will be updated as you progress through the workflow chain. The epics.md file will evolve with UX and Architecture inputs before implementation begins.
</output>
</step>
</workflow>

View File

@@ -1,6 +1,6 @@
# Epic and Story Decomposition Workflow
name: create-epics-and-stories
description: "Transform PRD requirements into bite-sized stories organized in epics for 200k context dev agents"
description: "Transform PRD requirements into bite-sized stories organized into deliverable functional epics. This workflow takes a Product Requirements Document (PRD) and breaks it down into epics and user stories that can be easily assigned to development teams. It ensures that all functional requirements are captured in a structured format, making it easier for teams to understand and implement the necessary features."
author: "BMad"
# Critical variables from config
@@ -25,11 +25,9 @@ input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
product_brief:
whole: "{output_folder}/*product*brief*.md"
sharded: "{output_folder}/*product*brief*/index.md"
domain_brief:
whole: "{output_folder}/*domain*brief*.md"
sharded: "{output_folder}/*domain*brief*/index.md"

View File

@@ -6,7 +6,7 @@
<critical>Communicate all responses in {communication_language} and adapt deeply to {user_skill_level}</critical>
<critical>Generate all documents in {document_output_language}</critical>
<critical>LIVING DOCUMENT: Write to PRD.md continuously as you discover - never wait until the end</critical>
<critical>GUIDING PRINCIPLE: Find and weave the product's magic throughout - what makes it special should inspire every section</critical>
<critical>GUIDING PRINCIPLE: Identify what makes this product special and ensure it's reflected throughout the PRD</critical>
<critical>Input documents specified in workflow.yaml input_file_patterns - workflow engine handles fuzzy matching, whole vs sharded document discovery automatically</critical>
<workflow>
@@ -44,10 +44,15 @@ PRD is for BMad Method and Enterprise Method tracks that need comprehensive requ
</check>
</step>
<step n="0.5" goal="Discover and load input documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {product_brief_content}, {research_content}, {document_project_content}</note>
</step>
<step n="1" goal="Discovery - Project, Domain, and Vision">
<action>Welcome {user_name} and begin comprehensive discovery, and then start to GATHER ALL CONTEXT:
1. Check workflow-status.yaml for project_context (if exists)
2. Look for existing documents (Product Brief, Domain Brief, research)
2. Review loaded content: {product_brief_content}, {research_content}, {document_project_content} (auto-loaded in Step 0.5)
3. Detect project type AND domain complexity
Load references:
@@ -69,9 +74,9 @@ B) Quick web search (basic)
C) User provides context
D) Continue with general knowledge
CAPTURE THE MAGIC EARLY with a few questions such as for example: "What excites you most about this product?", "What would make users love this?", "What's the moment that will make people go 'wow'?"
IDENTIFY WHAT MAKES IT SPECIAL early with questions such as: "What excites you most about this product?", "What would make users love this?", "What's the unique value or compelling moment?"
This excitement becomes the thread woven throughout the PRD.</action>
This becomes a thread that connects throughout the PRD.</action>
<template-output>vision_alignment</template-output>
<template-output>project_classification</template-output>
@@ -81,7 +86,7 @@ This excitement becomes the thread woven throughout the PRD.</action>
<check if="complex domain">
<template-output>domain_context_summary</template-output>
</check>
<template-output>product_magic_essence</template-output>
<template-output>product_differentiator</template-output>
<template-output>product_brief_path</template-output>
<template-output>domain_brief_path</template-output>
<template-output>research_documents</template-output>
@@ -107,15 +112,14 @@ Make it specific:
- NOT: "99.9% uptime"
- BUT: "Zero data loss during critical operations"
Weave in the magic:
Connect to what makes the product special:
- "Success means users experience [that special moment] and [desired outcome]"</action>
- "Success means users experience [key value moment] and achieve [desired outcome]"</action>
<template-output>success_criteria</template-output>
<check if="business focus">
<template-output>business_metrics</template-output>
</check>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="3" goal="Scope Definition">
@@ -140,7 +144,6 @@ For complex domains:
<template-output>mvp_scope</template-output>
<template-output>growth_features</template-output>
<template-output>vision_features</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="4" goal="Domain-Specific Exploration" optional="true">
@@ -219,8 +222,8 @@ FOR SAAS B2B:
[Continue for other types...]
Always relate back to the product magic:
"How does [requirement] enhance [the special thing]?"</action>
Always connect requirements to product value:
"How does [requirement] support the product's core value proposition?"</action>
<template-output>project_type_requirements</template-output>
@@ -253,8 +256,8 @@ Light touch on UX - not full design:
"How should this feel to use?"
"What's the vibe - professional, playful, minimal?"
Connect to the magic:
"The UI should reinforce [the special moment] through [design approach]"</action>
Connect UX to product vision:
"The UI should reinforce [core value proposition] through [design approach]"</action>
<check if="has UI">
<template-output>ux_principles</template-output>
@@ -263,33 +266,148 @@ Connect to the magic:
</step>
<step n="8" goal="Functional Requirements Synthesis">
<action>Transform everything discovered into clear functional requirements
<critical>This section is THE CAPABILITY CONTRACT for all downstream work</critical>
<critical>UX designers will ONLY design what's listed here</critical>
<critical>Architects will ONLY support what's listed here</critical>
<critical>Epic breakdown will ONLY implement what's listed here</critical>
<critical>If a capability is missing from FRs, it will NOT exist in the final product</critical>
Pull together:
<action>Before writing FRs, understand their PURPOSE and USAGE:
- Core features from scope
- Domain-mandated features
- Project-type specific needs
- Innovation requirements
**Purpose:**
FRs define WHAT capabilities the product must have. They are the complete inventory
of user-facing and system capabilities that deliver the product vision.
Organize by capability, not technology:
**How They Will Be Used:**
- User Management (not "auth system")
- Content Discovery (not "search algorithm")
- Team Collaboration (not "websockets")
1. UX Designer reads FRs → designs interactions for each capability
2. Architect reads FRs → designs systems to support each capability
3. PM reads FRs → creates epics and stories to implement each capability
4. Dev Agent reads assembled context → implements stories based on FRs
Each requirement should:
**Critical Property - COMPLETENESS:**
Every capability discussed in vision, scope, domain requirements, and project-specific
sections MUST be represented as an FR. Missing FRs = missing capabilities.
- Be specific and measurable
- Connect to user value
- Include acceptance criteria
- Note domain constraints
**Critical Property - ALTITUDE:**
FRs state WHAT capability exists and WHO it serves, NOT HOW it's implemented or
specific UI/UX details. Those come later from UX and Architecture.
</action>
The magic thread:
Highlight which requirements deliver the special experience</action>
<action>Transform everything discovered into comprehensive functional requirements:
**Coverage - Pull from EVERYWHERE:**
- Core features from MVP scope → FRs
- Growth features → FRs (marked as post-MVP if needed)
- Domain-mandated features → FRs
- Project-type specific needs → FRs
- Innovation requirements → FRs
- Anti-patterns (explicitly NOT doing) → Note in FR section if needed
**Organization - Group by CAPABILITY AREA:**
Don't organize by technology or layer. Group by what users/system can DO:
- ✅ "User Management" (not "Authentication System")
- ✅ "Content Discovery" (not "Search Algorithm")
- ✅ "Team Collaboration" (not "WebSocket Infrastructure")
**Format - Flat, Numbered List:**
Each FR is one clear capability statement:
- FR#: [Actor] can [capability] [context/constraint if needed]
- Number sequentially (FR1, FR2, FR3...)
- Aim for 20-50 FRs for typical projects (fewer for simple, more for complex)
**Altitude Check:**
Each FR should answer "WHAT capability exists?" NOT "HOW is it implemented?"
- ✅ "Users can customize appearance settings"
- ❌ "Users can toggle light/dark theme with 3 font size options stored in LocalStorage"
The second example belongs in Epic Breakdown, not PRD.
</action>
<example>
**Well-written FRs at the correct altitude:**
**User Account & Access:**
- FR1: Users can create accounts with email or social authentication
- FR2: Users can log in securely and maintain sessions across devices
- FR3: Users can reset passwords via email verification
- FR4: Users can update profile information and preferences
- FR5: Administrators can manage user roles and permissions
**Content Management:**
- FR6: Users can create, edit, and delete content items
- FR7: Users can organize content with tags and categories
- FR8: Users can search content by keyword, tag, or date range
- FR9: Users can export content in multiple formats
**Data Ownership (local-first products):**
- FR10: All user data stored locally on user's device
- FR11: Users can export complete data at any time
- FR12: Users can import previously exported data
- FR13: System monitors storage usage and warns before limits
**Collaboration:**
- FR14: Users can share content with specific users or teams
- FR15: Users can comment on shared content
- FR16: Users can track content change history
- FR17: Users receive notifications for relevant updates
**Notice:**
✅ Each FR is a testable capability
✅ Each FR is implementation-agnostic (could be built many ways)
✅ Each FR specifies WHO and WHAT, not HOW
✅ No UI details, no performance numbers, no technology choices
✅ Comprehensive coverage of capability areas
</example>
<action>Generate the complete FR list by systematically extracting capabilities:
1. MVP scope → extract all capabilities → write as FRs
2. Growth features → extract capabilities → write as FRs (note if post-MVP)
3. Domain requirements → extract mandatory capabilities → write as FRs
4. Project-type specifics → extract type-specific capabilities → write as FRs
5. Innovation patterns → extract novel capabilities → write as FRs
Organize FRs by logical capability groups (5-8 groups typically).
Number sequentially across all groups (FR1, FR2... FR47).
</action>
<action>SELF-VALIDATION - Before finalizing, ask yourself:
**Completeness Check:**
1. "Did I cover EVERY capability mentioned in the MVP scope section?"
2. "Did I include domain-specific requirements as FRs?"
3. "Did I cover the project-type specific needs (API/Mobile/SaaS/etc)?"
4. "Could a UX designer read ONLY the FRs and know what to design?"
5. "Could an Architect read ONLY the FRs and know what to support?"
6. "Are there any user actions or system behaviors we discussed that have no FR?"
**Altitude Check:**
1. "Am I stating capabilities (WHAT) or implementation (HOW)?"
2. "Am I listing acceptance criteria or UI specifics?" (Remove if yes)
3. "Could this FR be implemented 5 different ways?" (Good - means it's not prescriptive)
**Quality Check:**
1. "Is each FR clear enough that someone could test whether it exists?"
2. "Is each FR independent (not dependent on reading other FRs to understand)?"
3. "Did I avoid vague terms like 'good', 'fast', 'easy'?" (Use NFRs for quality attributes)
COMPLETENESS GATE: Review your FR list against the entire PRD written so far.
Did you miss anything? Add it now before proceeding.
</action>
<template-output>functional_requirements_complete</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="9" goal="Non-Functional Requirements Discovery">
@@ -341,7 +459,6 @@ Skip categories that don't apply!</action>
Does this capture your product vision?"</action>
<template-output>prd_summary</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
<action>After PRD review and refinement complete:
@@ -374,7 +491,7 @@ Generate epic_details for the epics breakdown document</action>
</step>
<step n="11" goal="Complete PRD and suggest next steps">
<template-output>product_magic_summary</template-output>
<template-output>product_value_summary</template-output>
<check if="standalone_mode != true">
<action>Load the FULL file: {status_file}</action>
@@ -401,7 +518,7 @@ Your product requirements are documented and ready for implementation.
3. **Architecture** (Recommended)
Run: `workflow create-architecture` for technical architecture decisions
The magic of your product - {product_magic_summary} - is woven throughout the PRD and will guide all subsequent work.
What makes your product special - {product_value_summary} - is captured throughout the PRD and will guide all subsequent work.
</output>
</step>

View File

@@ -12,7 +12,7 @@
### What Makes This Special
{{product_magic_essence}}
{{product_differentiator}}
---
@@ -232,6 +232,6 @@ Requirements must be decomposed into epics and bite-sized stories (200k context
---
_This PRD captures the essence of {{project_name}} - {{product_magic_summary}}_
_This PRD captures the essence of {{project_name}} - {{product_value_summary}}_
_Created through collaborative discovery between {{user_name}} and AI facilitator._

View File

@@ -31,17 +31,21 @@ recommended_inputs:
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: How to load sharded documents (FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED)
input_file_patterns:
product_brief:
whole: "{output_folder}/*brief*.md"
sharded: "{output_folder}/*brief*/index.md"
load_strategy: "FULL_LOAD"
research:
whole: "{output_folder}/*research*.md"
sharded: "{output_folder}/*research*/index.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
standalone: true
@@ -66,7 +70,7 @@ web_bundle:
# Task dependencies (referenced in instructions.md)
- "{bmad_folder}/core/tasks/workflow.xml"
- "{bmad_folder}/core/tasks/adv-elicit.xml"
- "{bmad_folder}/core/tasks/adv-elicit-methods.csv"
- "{bmad_folder}/core/tasks/advanced-elicitation.xml"
- "{bmad_folder}/core/tasks/advanced-elicitation-methods.csv"
child_workflows:
- create-epics-and-stories: "{bmad_folder}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml"

View File

@@ -100,14 +100,19 @@ Let's build your tech-spec!</output>
</check>
</step>
<step n="0.5" goal="Discover and load input documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {product_brief_content}, {research_content}, {document_project_content}</note>
</step>
<step n="1" goal="Comprehensive context discovery - gather everything available">
<action>Welcome {user_name} warmly and explain what we're about to do:
"I'm going to gather all available context about your project before we dive into the technical spec. This includes:
"I'm going to gather all available context about your project before we dive into the technical spec. The following content has been auto-loaded:
- Any existing documentation (product briefs, research)
- Brownfield codebase analysis (if applicable)
- Product briefs and research: {product_brief_content}, {research_content}
- Brownfield codebase documentation: {document_project_content} (loaded via INDEX_GUIDED strategy)
- Your project's tech stack and dependencies
- Existing code patterns and structure
@@ -119,13 +124,13 @@ This ensures the tech-spec is grounded in reality and gives developers everythin
Search for and load (using dual-strategy: whole first, then sharded):
1. **Product Brief:**
- Search pattern: {output-folder}/_brief_.md
- Sharded: {output-folder}/_brief_/index.md
- Search pattern: {output*folder}/\_brief*.md
- Sharded: {output*folder}/\_brief*/index.md
- If found: Load completely and extract key context
2. **Research Documents:**
- Search pattern: {output-folder}/_research_.md
- Sharded: {output-folder}/_research_/index.md
- Search pattern: {output*folder}/\_research*.md
- Sharded: {output*folder}/\_research*/index.md
- If found: Load completely and extract insights
3. **Document-Project Output (CRITICAL for brownfield):**
@@ -801,8 +806,6 @@ What to watch after deployment:
<template-output file="tech-spec.md">rollback_plan</template-output>
<template-output file="tech-spec.md">monitoring_approach</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="4" goal="Auto-validate cohesion, completeness, and quality">

View File

@@ -38,15 +38,19 @@ sprint_artifacts: "{output_folder}/sprint_artifacts"
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: How to load sharded documents (FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED)
input_file_patterns:
product_brief:
whole: "{output_folder}/*brief*.md"
sharded: "{output_folder}/*brief*/index.md"
load_strategy: "FULL_LOAD"
research:
whole: "{output_folder}/*research*.md"
sharded: "{output_folder}/*research*/index.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
standalone: true

View File

@@ -75,19 +75,23 @@ Please talk to the PM Agent to run the Create PRD workflow first to define your
</step>
<step n="1" goal="Load and understand project context">
<action>Load the PRD using fuzzy matching: {prd_file}, if the PRD is multiple files in a folder, load the index file and all files associated with the PRD</action>
<action>Load epics file using fuzzy matching: {epics_file}</action>
<step n="0.5" goal="Discover and load input documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {epics_content}, {ux_design_content}, {document_project_content}</note>
</step>
<action>Check for UX specification using fuzzy matching:
<action>Attempt to locate: {ux_spec_file}</action>
<check if="ux_spec_found">
<action>Load UX spec and extract architectural implications: - Component complexity (simple forms vs rich interactions) - Animation/transition requirements - Real-time update needs (live data, collaborative features) - Platform-specific UI requirements - Accessibility standards (WCAG compliance level) - Responsive design breakpoints - Offline capability requirements - Performance expectations (load times, interaction responsiveness)
<step n="1" goal="Load and understand project context">
<action>Review loaded PRD: {prd_content} (auto-loaded in Step 0.5 - handles both whole and sharded documents)</action>
<action>Review loaded epics: {epics_content}</action>
<action>Check for UX specification:
<check if="{ux_design_content} is not empty">
<action>Extract architectural implications from {ux_design_content}: - Component complexity (simple forms vs rich interactions) - Animation/transition requirements - Real-time update needs (live data, collaborative features) - Platform-specific UI requirements - Accessibility standards (WCAG compliance level) - Responsive design breakpoints - Offline capability requirements - Performance expectations (load times, interaction responsiveness)
</action>
</check>
</action>
<action>Extract and understand from PRD: - Functional Requirements (what it must do) - Non-Functional Requirements (performance, security, compliance, etc.) - Epic structure and user stories - Acceptance criteria - Any technical constraints mentioned
<action>Extract and understand from {prd_content}: - Functional Requirements (what it must do) - Non-Functional Requirements (performance, security, compliance, etc.) - Epic structure and user stories - Acceptance criteria - Any technical constraints mentioned
</action>
<action>Count and assess project scale: - Number of epics: {{epic_count}} - Number of stories: {{story_count}} - Complexity indicators (real-time, multi-tenant, regulated, etc.) - UX complexity level (if UX spec exists) - Novel features
@@ -355,7 +359,6 @@ Provided by Starter: {{yes_if_from_starter}}
</action>
<template-output>decision_record</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="5" goal="Address cross-cutting concerns">
@@ -385,7 +388,6 @@ Provided by Starter: {{yes_if_from_starter}}
</action>
<template-output>project_structure</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="7" goal="Design novel architectural patterns" optional="true">
@@ -459,7 +461,6 @@ Provided by Starter: {{yes_if_from_starter}}
</check>
<template-output>novel_pattern_designs</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="8" goal="Define implementation patterns to prevent agent conflicts">
@@ -552,7 +553,6 @@ Enforcement: "All agents MUST follow this pattern"
</action>
<template-output>implementation_patterns</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="9" goal="Validate architectural coherence">
@@ -606,7 +606,6 @@ Enforcement: "All agents MUST follow this pattern"
</action>
<template-output>architecture_document</template-output>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="11" goal="Validate document completeness">

View File

@@ -14,18 +14,23 @@ date: system-generated
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: How to load sharded documents (FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED)
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded: "{output_folder}/*epic*/index.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/index.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/index.md"
load_strategy: "INDEX_GUIDED"
# Module path and component files
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/architecture"
@@ -60,7 +65,7 @@ web_bundle:
pattern_categories: "{bmad_folder}/bmm/workflows/3-solutioning/architecture/pattern-categories.csv"
# Task dependencies
adv_elicit_task: "{bmad_folder}/core/tasks/adv-elicit.xml"
adv_elicit_task: "{bmad_folder}/core/tasks/advanced-elicitation.xml"
# Default configuration values (can be overridden during bundle setup)
defaults:
@@ -87,5 +92,5 @@ web_bundle:
# Task dependencies (referenced in instructions.md)
- "{bmad_folder}/core/tasks/workflow.xml"
- "{bmad_folder}/core/tasks/adv-elicit.xml"
- "{bmad_folder}/core/tasks/adv-elicit-methods.csv"
- "{bmad_folder}/core/tasks/advanced-elicitation.xml"
- "{bmad_folder}/core/tasks/advanced-elicitation-methods.csv"

View File

@@ -55,31 +55,36 @@
<template-output>project_context</template-output>
</step>
<step n="1" goal="Discover and inventory project artifacts">
<action>Search the {output_folder} for relevant planning and solutioning documents</action>
<step n="0.5" goal="Discover and load input documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {epics_content}, {architecture_content}, {ux_design_content}, {tech_spec_content}, {document_project_content}</note>
</step>
<action>Locate:
<step n="1" goal="Inventory loaded project artifacts">
<action>Review the content loaded by Step 0.5 and create an inventory</action>
- Product Requirements Document (PRD)
- Architecture
- Epic and story breakdowns
- UX Design artifacts if the active path includes UX workflow
- Any supplementary planning documents
<action>Inventory of available documents:
- PRD: {prd_content} (loaded if available)
- Architecture: {architecture_content} (loaded if available)
- Epics: {epics_content} (loaded if available)
- UX Design: {ux_design_content} (loaded if available)
- Tech Spec: {tech_spec_content} (loaded if available, Quick Flow track)
- Brownfield docs: {document_project_content} (loaded via INDEX_GUIDED if available)
</action>
<action>Create an inventory of found documents with:
<action>For each loaded document, extract:
- Document type and purpose
- File path and last modified date
- Brief description of what each contains
- Any missing expected documents flagged as potential issues
- Brief description of what it contains
- Flag any expected documents that are missing as potential issues
</action>
<template-output>document_inventory</template-output>
</step>
<step n="2" goal="Deep analysis of core planning documents">
<action>Load and thoroughly analyze each discovered document to extract:
<action>Thoroughly analyze each loaded document to extract:
- Core requirements and success criteria
- Architectural decisions and constraints
- Technical implementation approaches

View File

@@ -35,24 +35,31 @@ recommended_inputs:
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: How to load sharded documents (FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED)
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded: "{output_folder}/*epic*/index.md"
load_strategy: "FULL_LOAD"
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/index.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/index.md"
load_strategy: "FULL_LOAD"
tech_spec:
whole: "{output_folder}/*tech-spec*.md"
sharded: "{output_folder}/*tech-spec*/index.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
standalone: true

View File

@@ -19,34 +19,6 @@
<workflow>
<step n="1" goal="Find story ready for review" tag="sprint-status">
Document Discovery - Selective Epic Loading
**Strategy**: This workflow needs only ONE specific epic and its stories for review context, not all epics. This provides huge efficiency gains when epics are sharded.
**Epic Discovery Process (SELECTIVE OPTIMIZATION):**
1. **Determine which epic** you need (epic_num from story being reviewed - e.g., story "3-2-feature-name" needs Epic 3)
2. **Check for sharded version**: Look for `epics/index.md`
3. **If sharded version found**:
- Read `index.md` to understand structure
- **Load ONLY `epic-{epic_num}.md`** (e.g., `epics/epic-3.md` for Epic 3)
- DO NOT load all epic files - only the one needed!
- This is the key efficiency optimization for large multi-epic projects
4. **If whole document found**: Load the complete `epics.md` file and extract the relevant epic
**Other Documents (architecture, ux-design) - Full Load:**
1. **Search for whole document first** - Use fuzzy file matching
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/index.md`
3. **If sharded version found**:
- Read `index.md` to understand structure
- Read ALL section files listed in the index
- Treat combined content as single document
4. **Brownfield projects**: The `document-project` workflow creates `{output_folder}/docs/index.md`
**Priority**: If both whole and sharded versions exist, use the whole document.
**UX-Heavy Projects**: Always check for ux-design documentation as it provides critical context for reviewing UI-focused stories.
<check if="{{story_path}} is provided">
<action>Use {{story_path}} directly</action>
<action>Read COMPLETE story file and parse sections</action>
@@ -117,6 +89,11 @@
<action if="story cannot be read">HALT with message: "Unable to read story file"</action>
</step>
<step n="1.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {architecture_content}, {ux_design_content}, {epics_content} (loads only epic for this story if sharded), {document_project_content}</note>
</step>
<step n="2" goal="Resolve story context file and specification inputs">
<action>Locate story context file: Under Dev Agent Record → Context Reference, read referenced path(s). If missing, search {{output_folder}} for files matching pattern "story-{{epic_num}}.{{story_num}}*.context.xml" and use the most recent.</action>
<action if="no story context file found">Continue but record a WARNING in review notes: "No story context file found"</action>
@@ -125,6 +102,7 @@
<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 testing, coding standards, security, and architectural patterns.</action>
<note>Architecture and brownfield docs were pre-loaded in Step 1.5 as {architecture_content} and {document_project_content}</note>
</step>
<step n="3" goal="Detect tech stack and establish best-practice reference set">

View File

@@ -38,16 +38,20 @@ variables:
input_file_patterns:
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/index.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/index.md"
sharded: "{output_folder}/*ux*/*.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded_index: "{output_folder}/*epic*/index.md"
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
load_strategy: "SELECTIVE_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
standalone: true
web_bundle: false

View File

@@ -27,6 +27,11 @@
<action if="core documents are unavailable">HALT: "Need access to project documents (PRD, Epics, Architecture, UI/UX) to assess change impact. Please ensure these documents are accessible."</action>
</step>
<step n="0.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {epics_content}, {architecture_content}, {ux_design_content}, {tech_spec_content}, {document_project_content}</note>
</step>
<step n="2" goal="Execute Change Analysis Checklist">
<action>Load and execute the systematic analysis from: {checklist}</action>
<action>Work through each checklist section interactively with the user</action>

View File

@@ -10,6 +10,35 @@ communication_language: "{config_source}:communication_language"
user_skill_level: "{config_source}:user_skill_level"
document_output_language: "{config_source}:document_output_language"
date: system-generated
sprint_artifacts: "{config_source}:sprint_artifacts"
sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: Load project context for impact analysis
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/*.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded: "{output_folder}/*epic*/*.md"
load_strategy: "FULL_LOAD"
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/*.md"
load_strategy: "FULL_LOAD"
tech_spec:
whole: "{output_folder}/tech-spec*.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/correct-course"
template: false

View File

@@ -13,11 +13,15 @@
<action>Resolve variables from config_source: story_dir (sprint_artifacts), output_folder, user_name, communication_language. If story_dir missing → ASK user to provide a stories directory and update variable.</action>
<action>Create {{story_dir}} if it does not exist</action>
<action>Resolve installed component paths from workflow.yaml: template, instructions, validation</action>
<action>Resolve recommended inputs if present: epics_file, prd_file, architecture_file</action>
<action>Load architecture/standards docs: For each file name in {{arch_docs_file_names}} within {{arch_docs_search_dirs}}, read if exists. Collect testing, coding standards, security, and architectural patterns.</action>
</step>
<step n="2" goal="Discover and load source documents">
<step n="1.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {tech_spec_content}, {architecture_content}, {ux_design_content}, {epics_content}, {document_project_content}</note>
</step>
<step n="2" goal="Discover previous story context">
<critical>PREVIOUS STORY CONTINUITY: Essential for maintaining context and learning from prior development</critical>
<action>Find the previous completed story to extract dev agent learnings and review findings:

View File

@@ -8,7 +8,8 @@ output_folder: "{config_source}:output_folder"
user_name: "{config_source}:user_name"
communication_language: "{config_source}:communication_language"
date: system-generated
story_dir: "{config_source}:sprint_artifacts"
sprint_artifacts: "{config_source}:sprint_artifacts"
story_dir: "{sprint_artifacts}"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/create-story"
@@ -18,7 +19,7 @@ validation: "{installed_path}/checklist.md"
# Variables and inputs
variables:
sprint_status: "{config_source}:sprint_artifacts/sprint-status.yaml || {output_folder}/sprint-status.yaml" # Primary source for story tracking
sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml" # Primary source for story tracking
epics_file: "{output_folder}/epics.md" # Preferred source for epic/story breakdown
prd_file: "{output_folder}/PRD.md" # Fallback for requirements
architecture_file: "{output_folder}/architecture.md" # Optional architecture context
@@ -40,21 +41,27 @@ default_output_file: "{story_dir}/{{story_key}}.md"
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
sharded: "{output_folder}/*prd*/*.md"
load_strategy: "FULL_LOAD"
tech_spec:
whole: "{output_folder}/tech-spec.md"
load_strategy: "FULL_LOAD"
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/index.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/index.md"
sharded: "{output_folder}/*ux*/*.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded_index: "{output_folder}/*epic*/index.md"
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
load_strategy: "SELECTIVE_LOAD"
document_project:
sharded: "{output_folder}/index.md"
load_strategy: "INDEX_GUIDED"
standalone: true

View File

@@ -39,7 +39,7 @@
1. Run `story-context` to generate context file and mark drafted stories as ready
2. Run `story-ready` to quickly mark drafted stories as ready without generating context
3. Run `create-story` if no incomplete stories are drafted yet
4. Check {output-folder}/sprint-status.yaml to see current sprint status
4. Check {output_folder}/sprint-status.yaml to see current sprint status
</output>
<action>HALT</action>
</check>
@@ -72,6 +72,11 @@ Proceeding with story file only. For better context, consider running `story-con
<action if="incomplete task or subtask requirements ambiguous">ASK user to clarify or HALT</action>
</step>
<step n="0.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {architecture_content}, {tech_spec_content}, {ux_design_content}, {epics_content} (selective load), {document_project_content}</note>
</step>
<step n="1.5" goal="Detect review continuation and extract review context">
<critical>Determine if this is a fresh start or continuation after code review</critical>

View File

@@ -15,6 +15,33 @@ date: system-generated
story_file: "" # Explicit story path; auto-discovered if empty
# Context file uses same story_key as story file (e.g., "1-2-user-authentication.context.xml")
context_file: "{story_dir}/{{story_key}}.context.xml"
sprint_artifacts: "{config_source}:sprint_artifacts"
sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: Load necessary context for story implementation
input_file_patterns:
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
tech_spec:
whole: "{output_folder}/tech-spec*.md"
sharded: "{sprint_artifacts}/tech-spec-epic-*.md"
load_strategy: "SELECTIVE_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/*.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded_index: "{output_folder}/*epic*/index.md"
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
load_strategy: "SELECTIVE_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/dev-story"

View File

@@ -9,34 +9,6 @@
<workflow>
<step n="1" goal="Collect inputs and discover next epic" tag="sprint-status">
Document Discovery - Selective Epic Loading
**Strategy**: This workflow needs only ONE specific epic and its stories, not all epics. This provides huge efficiency gains when epics are sharded.
**Epic Discovery Process (SELECTIVE OPTIMIZATION):**
1. **Determine which epic** you need (epic_num from {sprint_status} or user input)
2. **Check for sharded version**: Look for `epics/index.md`
3. **If sharded version found**:
- Read `index.md` to understand structure
- **Load ONLY `epic-{epic_num}.md`** (e.g., `epics/epic-3.md` for Epic 3)
- DO NOT load all epic files - only the one needed!
- This is the key efficiency optimization for large multi-epic projects
4. **If whole document found**: Load the complete `epics.md` file and extract the relevant epic
**Other Documents (prd, gdd, architecture, ux-design) - Full Load:**
1. **Search for whole document first** - Use fuzzy file matching
2. **Check for sharded version** - If whole document not found, look for `{doc-name}/*.*`
3. **If sharded version found**:
- Read `index.md` to understand structure
- Read ALL section files listed in the index
- Treat combined content as single document
4. **Brownfield projects**: The `document-project` workflow creates `{output_folder}/docs/index.md`
**Priority**: If both whole and sharded versions exist, use the whole document.
**UX-Heavy Projects**: Always check for ux-design documentation as it provides critical context for UI-focused epics and stories.
<action>Identify PRD and Architecture documents from recommended_inputs. Attempt to auto-discover at default paths.</action>
<ask if="inputs are missing">ask the user for file paths. HALT and wait for docs to proceed</ask>
@@ -79,10 +51,15 @@ No epics with status "backlog" found in sprint-status.yaml.
</check>
</check>
<action>Extract {{epic_title}} from PRD based on {{epic_id}}.</action>
<action>Resolve output file path using workflow variables and initialize by writing the template.</action>
</step>
<step n="1.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {gdd_content}, {architecture_content}, {ux_design_content}, {epics_content} (will load only epic-{{epic_id}}.md if sharded), {document_project_content}</note>
<action>Extract {{epic_title}} from {prd_content} or {epics_content} based on {{epic_id}}.</action>
</step>
<step n="2" goal="Validate epic exists in sprint status" tag="sprint-status">
<action>Look for epic key "epic-{{epic_id}}" in development_status (already loaded from step 1)</action>
<action>Get current status value if epic exists</action>

View File

@@ -17,22 +17,28 @@ sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
sharded: "{output_folder}/*prd*/*.md"
load_strategy: "FULL_LOAD"
gdd:
whole: "{output_folder}/*gdd*.md"
sharded: "{output_folder}/*gdd*/index.md"
sharded: "{output_folder}/*gdd*/*.md"
load_strategy: "FULL_LOAD"
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/index.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/index.md"
sharded: "{output_folder}/*ux*/*.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded_index: "{output_folder}/*epic*/index.md"
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
load_strategy: "SELECTIVE_LOAD"
document_project:
sharded: "{output_folder}/index.md"
load_strategy: "INDEX_GUIDED"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/epic-tech-context"

View File

@@ -6,7 +6,7 @@
<critical>Generate all documents in {document_output_language}</critical>
<critical>
DOCUMENT OUTPUT: Retrospective analysis. Concise insights, lessons learned, action items. User skill level ({user_skill_level}) affects conversation style ONLY, not retrospective content.
DOCUMENT OUTPUT: Retrospective analysis. Concise insights, lessons learned, action items. User skill level ({user_skill_level}) affects conversation style ONLY, not retrospective content.
FACILITATION NOTES:
@@ -26,29 +26,6 @@ PARTY MODE PROTOCOL:
- Show disagreements, diverse perspectives, authentic team dynamics
</critical>
## 📚 Document Discovery - Selective Epic Loading
**Strategy**: This workflow needs the completed epic, previous retrospective, and potentially architecture/PRD for context.
**Epic Discovery (SELECTIVE LOAD):**
1. Determine completed epic number (from {sprint_status_file} or user)
2. If sharded: Load ONLY `epic-{epic_num}.md`
3. If whole: Load complete epics file and extract relevant epic
**Retrospective History:**
1. Load previous epic's retrospective to check if lessons were applied
2. Pattern: `retrospectives/epic-{prev_num}-retro-*.md`
**Supporting Documents (Full Load if needed):**
1. Architecture: Check for whole document first, then sharded index + all sections
2. PRD: Same pattern as architecture
3. These provide additional context for understanding epic execution
**Priority**: Whole document first, then sharded version.
<workflow>
<step n="1" goal="Epic Discovery - Find Completed Epic with Priority Logic">
@@ -179,6 +156,11 @@ Bob (Scrum Master): "Perfect. Epic {{epic_number}} is complete and ready for ret
</step>
<step n="0.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {epics_content} (selective load for this epic), {architecture_content}, {prd_content}, {document_project_content}</note>
</step>
<step n="2" goal="Deep Story Analysis - Extract Lessons from Implementation">
<output>
@@ -382,7 +364,7 @@ Alice (Product Owner): "Good thinking - helps us connect what we learned to what
<action>Attempt to load next epic using selective loading strategy:</action>
**Try sharded first (more specific):**
<action>Check if file exists: {output-folder}/epic\*/epic-{{next_epic_num}}.md</action>
<action>Check if file exists: {output_folder}/epic\*/epic-{{next_epic_num}}.md</action>
<check if="sharded epic file found">
<action>Load {output_folder}/*epic*/epic-{{next_epic_num}}.md</action>
@@ -391,7 +373,7 @@ Alice (Product Owner): "Good thinking - helps us connect what we learned to what
**Fallback to whole document:**
<check if="sharded epic not found">
<action>Check if file exists: {output-folder}/epic\*.md</action>
<action>Check if file exists: {output_folder}/epic\*.md</action>
<check if="whole epic file found">
<action>Load entire epics document</action>

View File

@@ -27,16 +27,21 @@ input_file_patterns:
whole: "{output_folder}/*epic*.md"
sharded_index: "{output_folder}/*epic*/index.md"
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
load_strategy: "SELECTIVE_LOAD"
previous_retrospective:
pattern: "{sprint_artifacts}/**/epic-{{prev_epic_num}}-retro-*.md"
load_strategy: "SELECTIVE_LOAD"
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/*.md"
load_strategy: "FULL_LOAD"
document_project:
sharded: "{output_folder}/*.md"
load_strategy: "INDEX_GUIDED"
# Required files
sprint_status_file: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"

View File

@@ -43,6 +43,11 @@
<action>Build complete inventory of all epics and stories from all epic files</action>
</step>
<step n="0.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {epics_content} (all epics loaded - uses FULL_LOAD strategy)</note>
</step>
<step n="2" goal="Build sprint status structure">
<action>For each epic found, create entries in this order:</action>

View File

@@ -39,7 +39,8 @@ variables:
input_file_patterns:
epics:
whole: "{output_folder}/*epic*.md"
sharded: "{output_folder}/*epic*/index.md"
sharded: "{output_folder}/*epic*/*.md"
load_strategy: "FULL_LOAD"
# Output configuration
default_output_file: "{status_file}"

View File

@@ -88,10 +88,15 @@
<template-output file="{default_output_file}">so_that</template-output>
</step>
<step n="1.5" goal="Discover and load project documents">
<invoke-protocol name="discover_inputs" />
<note>After discovery, these content variables are available: {prd_content}, {tech_spec_content}, {architecture_content}, {ux_design_content}, {epics_content} (loads only epic for this story if sharded), {document_project_content}</note>
</step>
<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, Tech-Spec, Architecture, Front-end Spec, Testing standards, module-specific docs.</action>
<action>Note: Tech-Spec is used for Level 0-1 projects (instead of PRD). It contains comprehensive technical context, brownfield analysis, framework details, existing patterns, and implementation guidance.</action>
<action>Review loaded content from Step 1.5 for items relevant to this story's domain (use keywords from story title, ACs, and tasks).</action>
<action>Extract relevant sections from: {prd_content}, {tech_spec_content}, {architecture_content}, {ux_design_content}, {document_project_content}</action>
<action>Note: Tech-Spec ({tech_spec_content}) is used for Level 0-1 projects (instead of PRD). It contains comprehensive technical context, brownfield analysis, framework details, existing patterns, and implementation guidance.</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>
<template-output file="{default_output_file}">
Add artifacts.docs entries with {path, title, section, snippet}:

View File

@@ -12,7 +12,7 @@ document_output_language: "{config_source}:document_output_language"
story_path: "{config_source}:sprint_artifacts/stories"
date: system-generated
sprint_artifacts: "{config_source}:sprint_artifacts"
sprint_status: "{context_dir}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/story-context"
@@ -26,21 +26,27 @@ validation: "{installed_path}/checklist.md"
input_file_patterns:
prd:
whole: "{output_folder}/*prd*.md"
sharded: "{output_folder}/*prd*/index.md"
sharded: "{output_folder}/*prd*/*.md"
load_strategy: "FULL_LOAD"
tech_spec:
whole: "{output_folder}/tech-spec.md"
load_strategy: "FULL_LOAD"
architecture:
whole: "{output_folder}/*architecture*.md"
sharded: "{output_folder}/*architecture*/index.md"
sharded: "{output_folder}/*architecture*/*.md"
load_strategy: "FULL_LOAD"
ux_design:
whole: "{output_folder}/*ux*.md"
sharded: "{output_folder}/*ux*/index.md"
sharded: "{output_folder}/*ux*/*.md"
load_strategy: "FULL_LOAD"
epics:
whole: "{output_folder}/*epic*.md"
sharded_index: "{output_folder}/*epic*/index.md"
sharded_single: "{output_folder}/*epic*/epic-{{epic_num}}.md"
load_strategy: "SELECTIVE_LOAD"
document_project:
sharded: "{output_folder}/docs/index.md"
load_strategy: "INDEX_GUIDED"
# Output configuration
# Uses story_key from sprint-status.yaml (e.g., "1-2-user-authentication")

View File

@@ -9,7 +9,8 @@ output_folder: "{config_source}:output_folder"
user_name: "{config_source}:user_name"
communication_language: "{config_source}:communication_language"
date: system-generated
sprint_status: "{context_dir}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
sprint_artifacts: "{config_source}:sprint_artifacts"
sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/story-done"
@@ -17,7 +18,7 @@ instructions: "{installed_path}/instructions.md"
# Variables and inputs
variables:
story_dir: "{config_source}:sprint_artifacts/stories" # Directory where stories are stored
story_dir: "{config_source}:sprint_artifacts" # Directory where stories are stored
# Output configuration - no output file, just status updates
default_output_file: ""

View File

@@ -9,7 +9,8 @@ output_folder: "{config_source}:output_folder"
user_name: "{config_source}:user_name"
communication_language: "{config_source}:communication_language"
date: system-generated
sprint_status: "{output_folder}/sprint-status.yaml || {sprint_artifacts}/sprint-status.yaml"
sprint_artifacts: "{config_source}:sprint_artifacts"
sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/story-ready"

View File

@@ -181,7 +181,7 @@
### Missing Information (to note for user)
- ***
-
## Deep-Dive Mode Validation (if deep-dive was performed)

View File

@@ -325,7 +325,7 @@ findings.batches_completed: [
</check>
<action>Build API contracts catalog</action>
<action>IMMEDIATELY write to: {output-folder}/api-contracts-{part_id}.md</action>
<action>IMMEDIATELY write to: {output_folder}/api-contracts-{part_id}.md</action>
<action>Validate document has all required sections</action>
<action>Update state file with output generated</action>
<action>PURGE detailed API data, keep only: "{{api_count}} endpoints documented"</action>
@@ -346,7 +346,7 @@ findings.batches_completed: [
</check>
<action>Build database schema documentation</action>
<action>IMMEDIATELY write to: {output-folder}/data-models-{part_id}.md</action>
<action>IMMEDIATELY write to: {output_folder}/data-models-{part_id}.md</action>
<action>Validate document completeness</action>
<action>Update state file with output generated</action>
<action>PURGE detailed schema data, keep only: "{{table_count}} tables documented"</action>

View File

@@ -14,19 +14,19 @@
**Check for BMM planning artifacts:**
- PRD files: {output-folder}/_prd_.md or {output-folder}/_prd_/index.md
- Tech-spec files: {output-folder}/_tech-spec_.md or {output-folder}/_spec_.md
- Epic files: {output-folder}/_epic_.md or {output-folder}/_epic_/index.md
- Architecture: {output-folder}/_architecture_.md or {output-folder}/_arch_.md
- UX Design: {output-folder}/_ux_.md or {output-folder}/_design_.md
- Product Brief: {output-folder}/\*brief\*.md
- Research docs: {output-folder}/\*research\*.md
- Brainstorm docs: {output-folder}/\*brainstorm\*.md
- PRD files: {output*folder}/\_prd*.md or {output*folder}/\_prd*/index.md
- Tech-spec files: {output*folder}/\_tech-spec*.md or {output*folder}/\_spec*.md
- Epic files: {output*folder}/\_epic*.md or {output*folder}/\_epic*/index.md
- Architecture: {output*folder}/\_architecture*.md or {output*folder}/\_arch*.md
- UX Design: {output*folder}/\_ux*.md or {output*folder}/\_design*.md
- Product Brief: {output_folder}/\*brief\*.md
- Research docs: {output_folder}/\*research\*.md
- Brainstorm docs: {output_folder}/\*brainstorm\*.md
**Check for implementation artifacts:**
- The following could be in or nested under {output_folder} OR {sprint_artifacts} - CHECK BOTH LOCATIONS
- Story files: {output-folder}/stories/*.md or \*\*/stories/*story\*.md
- Story files: {output_folder}/stories/*.md or \*\*/stories/*story\*.md
- Sprint status: {output_folder}/sprint-status.yaml or {sprint_artifacts}/sprint-status.yaml
- Existing workflow status: {default_output_file} or {sprint_artifacts}/bmm-workflow-status.yaml
@@ -660,13 +660,13 @@ For each phase in path file:
- Brainstorm: {output_folder}/brainstorm\*.md
- Research: {output_folder}/research\*.md
- Product Brief: {output-folder}/\*brief\*.md
- PRD: {output-folder}/_prd_.md or {output-folder}/_prd_/index.md
- Tech-spec: {output-folder}/_tech-spec_.md or {output-folder}/_spec_.md
- Epics: {output-folder}/_epic_.md or {output-folder}/_epic_/index.md
- UX Design: {output-folder}/_ux_.md or {output-folder}/_design_.md
- Architecture: {output-folder}/_architecture_.md or {output-folder}/_arch_.md
- Sprint Planning: {output-folder}/\*sprint\*.yaml
- Product Brief: {output_folder}/\*brief\*.md
- PRD: {output*folder}/\_prd*.md or {output*folder}/\_prd*/index.md
- Tech-spec: {output*folder}/\_tech-spec*.md or {output*folder}/\_spec*.md
- Epics: {output*folder}/\_epic*.md or {output*folder}/\_epic*/index.md
- UX Design: {output*folder}/\_ux*.md or {output*folder}/\_design*.md
- Architecture: {output*folder}/\_architecture*.md or {output*folder}/\_arch*.md
- Sprint Planning: {output_folder}/\*sprint\*.yaml
**CRITICAL:** If file exists, replace workflow status with ONLY the file path, preserving agent comment.
Example: `prd: docs/prd.md # agent: pm` (NOT "completed - docs/prd.md")