refactor: convert create-story workflow.yaml to workflow.md (step 7)
Merge workflow.yaml config and instructions.xml execution logic into a single self-contained workflow.md. Drop engine scaffolding directives, preserve all behavioral constraints. Update checklist.md references. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
5c9227340e
commit
34ab0b3e5c
|
|
@ -36,20 +36,20 @@ This is a COMPETITION to create the **ULTIMATE story context** that makes LLM de
|
||||||
- The `{project-root}/_bmad/core/tasks/workflow.xml` framework will automatically:
|
- The `{project-root}/_bmad/core/tasks/workflow.xml` framework will automatically:
|
||||||
- Load this checklist file
|
- Load this checklist file
|
||||||
- Load the newly created story file (`{story_file_path}`)
|
- Load the newly created story file (`{story_file_path}`)
|
||||||
- Load workflow variables from `{installed_path}/workflow.yaml`
|
- Load workflow variables from `{installed_path}/workflow.md`
|
||||||
- Execute the validation process
|
- Execute the validation process
|
||||||
|
|
||||||
### **When Running in Fresh Context:**
|
### **When Running in Fresh Context:**
|
||||||
|
|
||||||
- User should provide the story file path being reviewed
|
- User should provide the story file path being reviewed
|
||||||
- Load the story file directly
|
- Load the story file directly
|
||||||
- Load the corresponding workflow.yaml for variable context
|
- Load the corresponding workflow.md for variable context
|
||||||
- Proceed with systematic analysis
|
- Proceed with systematic analysis
|
||||||
|
|
||||||
### **Required Inputs:**
|
### **Required Inputs:**
|
||||||
|
|
||||||
- **Story file**: The story file to review and improve
|
- **Story file**: The story file to review and improve
|
||||||
- **Workflow variables**: From workflow.yaml (implementation_artifacts, epics_file, etc.)
|
- **Workflow variables**: From workflow.md (implementation_artifacts, epics_file, etc.)
|
||||||
- **Source documents**: Epics, architecture, etc. (discovered or provided)
|
- **Source documents**: Epics, architecture, etc. (discovered or provided)
|
||||||
- **Validation framework**: `validate-workflow.xml` (handles checklist execution)
|
- **Validation framework**: `validate-workflow.xml` (handles checklist execution)
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@ You will systematically re-do the entire story creation process, but with a crit
|
||||||
|
|
||||||
### **Step 1: Load and Understand the Target**
|
### **Step 1: Load and Understand the Target**
|
||||||
|
|
||||||
1. **Load the workflow configuration**: `{installed_path}/workflow.yaml` for variable inclusion
|
1. **Load the workflow configuration**: `{installed_path}/workflow.md` for variable inclusion
|
||||||
2. **Load the story file**: `{story_file_path}` (provided by user or discovered)
|
2. **Load the story file**: `{story_file_path}` (provided by user or discovered)
|
||||||
3. **Load validation framework**: `{project-root}/_bmad/core/tasks/workflow.xml`
|
3. **Load validation framework**: `{project-root}/_bmad/core/tasks/workflow.xml`
|
||||||
4. **Extract metadata**: epic_num, story_num, story_key, story_title from story file
|
4. **Extract metadata**: epic_num, story_num, story_key, story_title from story file
|
||||||
|
|
|
||||||
|
|
@ -1,347 +0,0 @@
|
||||||
<workflow>
|
|
||||||
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
|
|
||||||
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
|
||||||
<critical>Communicate all responses in {communication_language} and generate all documents in {document_output_language}</critical>
|
|
||||||
|
|
||||||
<critical>🔥 CRITICAL MISSION: You are creating the ULTIMATE story context engine that prevents LLM developer mistakes, omissions or
|
|
||||||
disasters! 🔥</critical>
|
|
||||||
<critical>Your purpose is NOT to copy from epics - it's to create a comprehensive, optimized story file that gives the DEV agent
|
|
||||||
EVERYTHING needed for flawless implementation</critical>
|
|
||||||
<critical>COMMON LLM MISTAKES TO PREVENT: reinventing wheels, wrong libraries, wrong file locations, breaking regressions, ignoring UX,
|
|
||||||
vague implementations, lying about completion, not learning from past work</critical>
|
|
||||||
<critical>🚨 EXHAUSTIVE ANALYSIS REQUIRED: You must thoroughly analyze ALL artifacts to extract critical context - do NOT be lazy or skim!
|
|
||||||
This is the most important function in the entire development process!</critical>
|
|
||||||
<critical>🔬 UTILIZE SUBPROCESSES AND SUBAGENTS: Use research subagents, subprocesses or parallel processing if available to thoroughly
|
|
||||||
analyze different artifacts simultaneously and thoroughly</critical>
|
|
||||||
<critical>❓ SAVE QUESTIONS: If you think of questions or clarifications during analysis, save them for the end after the complete story is
|
|
||||||
written</critical>
|
|
||||||
<critical>🎯 ZERO USER INTERVENTION: Process should be fully automated except for initial epic/story selection or missing documents</critical>
|
|
||||||
|
|
||||||
<step n="1" goal="Determine target story">
|
|
||||||
<check if="{{story_path}} is provided by user or user provided the epic and story number such as 2-4 or 1.6 or epic 1 story 5">
|
|
||||||
<action>Parse user-provided story path: extract epic_num, story_num, story_title from format like "1-2-user-auth"</action>
|
|
||||||
<action>Set {{epic_num}}, {{story_num}}, {{story_key}} from user input</action>
|
|
||||||
<action>GOTO step 2a</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<action>Check if {{sprint_status}} file exists for auto discover</action>
|
|
||||||
<check if="sprint status file does NOT exist">
|
|
||||||
<output>🚫 No sprint status file found and no story specified</output>
|
|
||||||
<output>
|
|
||||||
**Required Options:**
|
|
||||||
1. Run `sprint-planning` to initialize sprint tracking (recommended)
|
|
||||||
2. Provide specific epic-story number to create (e.g., "1-2-user-auth")
|
|
||||||
3. Provide path to story documents if sprint status doesn't exist yet
|
|
||||||
</output>
|
|
||||||
<ask>Choose option [1], provide epic-story number, path to story docs, or [q] to quit:</ask>
|
|
||||||
|
|
||||||
<check if="user chooses 'q'">
|
|
||||||
<action>HALT - No work needed</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user chooses '1'">
|
|
||||||
<output>Run sprint-planning workflow first to create sprint-status.yaml</output>
|
|
||||||
<action>HALT - User needs to run sprint-planning</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user provides epic-story number">
|
|
||||||
<action>Parse user input: extract epic_num, story_num, story_title</action>
|
|
||||||
<action>Set {{epic_num}}, {{story_num}}, {{story_key}} from user input</action>
|
|
||||||
<action>GOTO step 2a</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user provides story docs path">
|
|
||||||
<action>Use user-provided path for story documents</action>
|
|
||||||
<action>GOTO step 2a</action>
|
|
||||||
</check>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<!-- Auto-discover from sprint status only if no user input -->
|
|
||||||
<check if="no user input provided">
|
|
||||||
<critical>MUST read COMPLETE {sprint_status} file from start to end to preserve order</critical>
|
|
||||||
<action>Load the FULL file: {{sprint_status}}</action>
|
|
||||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
|
||||||
<action>Parse the development_status section completely</action>
|
|
||||||
|
|
||||||
<action>Find the FIRST story (by reading in order from top to bottom) where:
|
|
||||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
|
||||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
|
||||||
- Status value equals "backlog"
|
|
||||||
</action>
|
|
||||||
|
|
||||||
<check if="no backlog story found">
|
|
||||||
<output>📋 No backlog stories found in sprint-status.yaml
|
|
||||||
|
|
||||||
All stories are either already created, in progress, or done.
|
|
||||||
|
|
||||||
**Options:**
|
|
||||||
1. Run sprint-planning to refresh story tracking
|
|
||||||
2. Load PM agent and run correct-course to add more stories
|
|
||||||
3. Check if current sprint is complete and run retrospective
|
|
||||||
</output>
|
|
||||||
<action>HALT</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<action>Extract from found story key (e.g., "1-2-user-authentication"):
|
|
||||||
- epic_num: first number before dash (e.g., "1")
|
|
||||||
- story_num: second number after first dash (e.g., "2")
|
|
||||||
- story_title: remainder after second dash (e.g., "user-authentication")
|
|
||||||
</action>
|
|
||||||
<action>Set {{story_id}} = "{{epic_num}}.{{story_num}}"</action>
|
|
||||||
<action>Store story_key for later use (e.g., "1-2-user-authentication")</action>
|
|
||||||
|
|
||||||
<!-- Mark epic as in-progress if this is first story -->
|
|
||||||
<action>Check if this is the first story in epic {{epic_num}} by looking for {{epic_num}}-1-* pattern</action>
|
|
||||||
<check if="this is first story in epic {{epic_num}}">
|
|
||||||
<action>Load {{sprint_status}} and check epic-{{epic_num}} status</action>
|
|
||||||
<action>If epic status is "backlog" → update to "in-progress"</action>
|
|
||||||
<action>If epic status is "contexted" (legacy status) → update to "in-progress" (backward compatibility)</action>
|
|
||||||
<action>If epic status is "in-progress" → no change needed</action>
|
|
||||||
<check if="epic status is 'done'">
|
|
||||||
<output>🚫 ERROR: Cannot create story in completed epic</output>
|
|
||||||
<output>Epic {{epic_num}} is marked as 'done'. All stories are complete.</output>
|
|
||||||
<output>If you need to add more work, either:</output>
|
|
||||||
<output>1. Manually change epic status back to 'in-progress' in sprint-status.yaml</output>
|
|
||||||
<output>2. Create a new epic for additional work</output>
|
|
||||||
<action>HALT - Cannot proceed</action>
|
|
||||||
</check>
|
|
||||||
<check if="epic status is not one of: backlog, contexted, in-progress, done">
|
|
||||||
<output>🚫 ERROR: Invalid epic status '{{epic_status}}'</output>
|
|
||||||
<output>Epic {{epic_num}} has invalid status. Expected: backlog, in-progress, or done</output>
|
|
||||||
<output>Please fix sprint-status.yaml manually or run sprint-planning to regenerate</output>
|
|
||||||
<action>HALT - Cannot proceed</action>
|
|
||||||
</check>
|
|
||||||
<output>📊 Epic {{epic_num}} status updated to in-progress</output>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<action>GOTO step 2a</action>
|
|
||||||
</check>
|
|
||||||
<action>Load the FULL file: {{sprint_status}}</action>
|
|
||||||
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
|
||||||
<action>Parse the development_status section completely</action>
|
|
||||||
|
|
||||||
<action>Find the FIRST story (by reading in order from top to bottom) where:
|
|
||||||
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
|
||||||
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
|
||||||
- Status value equals "backlog"
|
|
||||||
</action>
|
|
||||||
|
|
||||||
<check if="no backlog story found">
|
|
||||||
<output>📋 No backlog stories found in sprint-status.yaml
|
|
||||||
|
|
||||||
All stories are either already created, in progress, or done.
|
|
||||||
|
|
||||||
**Options:**
|
|
||||||
1. Run sprint-planning to refresh story tracking
|
|
||||||
2. Load PM agent and run correct-course to add more stories
|
|
||||||
3. Check if current sprint is complete and run retrospective
|
|
||||||
</output>
|
|
||||||
<action>HALT</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<action>Extract from found story key (e.g., "1-2-user-authentication"):
|
|
||||||
- epic_num: first number before dash (e.g., "1")
|
|
||||||
- story_num: second number after first dash (e.g., "2")
|
|
||||||
- story_title: remainder after second dash (e.g., "user-authentication")
|
|
||||||
</action>
|
|
||||||
<action>Set {{story_id}} = "{{epic_num}}.{{story_num}}"</action>
|
|
||||||
<action>Store story_key for later use (e.g., "1-2-user-authentication")</action>
|
|
||||||
|
|
||||||
<!-- Mark epic as in-progress if this is first story -->
|
|
||||||
<action>Check if this is the first story in epic {{epic_num}} by looking for {{epic_num}}-1-* pattern</action>
|
|
||||||
<check if="this is first story in epic {{epic_num}}">
|
|
||||||
<action>Load {{sprint_status}} and check epic-{{epic_num}} status</action>
|
|
||||||
<action>If epic status is "backlog" → update to "in-progress"</action>
|
|
||||||
<action>If epic status is "contexted" (legacy status) → update to "in-progress" (backward compatibility)</action>
|
|
||||||
<action>If epic status is "in-progress" → no change needed</action>
|
|
||||||
<check if="epic status is 'done'">
|
|
||||||
<output>🚫 ERROR: Cannot create story in completed epic</output>
|
|
||||||
<output>Epic {{epic_num}} is marked as 'done'. All stories are complete.</output>
|
|
||||||
<output>If you need to add more work, either:</output>
|
|
||||||
<output>1. Manually change epic status back to 'in-progress' in sprint-status.yaml</output>
|
|
||||||
<output>2. Create a new epic for additional work</output>
|
|
||||||
<action>HALT - Cannot proceed</action>
|
|
||||||
</check>
|
|
||||||
<check if="epic status is not one of: backlog, contexted, in-progress, done">
|
|
||||||
<output>🚫 ERROR: Invalid epic status '{{epic_status}}'</output>
|
|
||||||
<output>Epic {{epic_num}} has invalid status. Expected: backlog, in-progress, or done</output>
|
|
||||||
<output>Please fix sprint-status.yaml manually or run sprint-planning to regenerate</output>
|
|
||||||
<action>HALT - Cannot proceed</action>
|
|
||||||
</check>
|
|
||||||
<output>📊 Epic {{epic_num}} status updated to in-progress</output>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<action>GOTO step 2a</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="2" goal="Load and analyze core artifacts">
|
|
||||||
<critical>🔬 EXHAUSTIVE ARTIFACT ANALYSIS - This is where you prevent future developer fuckups!</critical>
|
|
||||||
|
|
||||||
<!-- Load all available content through discovery protocol -->
|
|
||||||
<invoke-protocol
|
|
||||||
name="discover_inputs" />
|
|
||||||
<note>Available content: {epics_content}, {prd_content}, {architecture_content}, {ux_content},
|
|
||||||
{project_context}</note>
|
|
||||||
|
|
||||||
<!-- Analyze epics file for story foundation -->
|
|
||||||
<action>From {epics_content}, extract Epic {{epic_num}} complete context:</action> **EPIC ANALYSIS:** - Epic
|
|
||||||
objectives and business value - ALL stories in this epic for cross-story context - Our specific story's requirements, user story
|
|
||||||
statement, acceptance criteria - Technical requirements and constraints - Dependencies on other stories/epics - Source hints pointing to
|
|
||||||
original documents <!-- Extract specific story requirements -->
|
|
||||||
<action>Extract our story ({{epic_num}}-{{story_num}}) details:</action> **STORY FOUNDATION:** - User story statement
|
|
||||||
(As a, I want, so that) - Detailed acceptance criteria (already BDD formatted) - Technical requirements specific to this story -
|
|
||||||
Business context and value - Success criteria <!-- Previous story analysis for context continuity -->
|
|
||||||
<check if="story_num > 1">
|
|
||||||
<action>Find {{previous_story_num}}: scan {implementation_artifacts} for the story file in epic {{epic_num}} with the highest story number less than {{story_num}}</action>
|
|
||||||
<action>Load previous story file: {implementation_artifacts}/{{epic_num}}-{{previous_story_num}}-*.md</action> **PREVIOUS STORY INTELLIGENCE:** -
|
|
||||||
Dev notes and learnings from previous story - Review feedback and corrections needed - Files that were created/modified and their
|
|
||||||
patterns - Testing approaches that worked/didn't work - Problems encountered and solutions found - Code patterns established <action>Extract
|
|
||||||
all learnings that could impact current story implementation</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<!-- Git intelligence for previous work patterns -->
|
|
||||||
<check
|
|
||||||
if="previous story exists AND git repository detected">
|
|
||||||
<action>Get last 5 commit titles to understand recent work patterns</action>
|
|
||||||
<action>Analyze 1-5 most recent commits for relevance to current story:
|
|
||||||
- Files created/modified
|
|
||||||
- Code patterns and conventions used
|
|
||||||
- Library dependencies added/changed
|
|
||||||
- Architecture decisions implemented
|
|
||||||
- Testing approaches used
|
|
||||||
</action>
|
|
||||||
<action>Extract actionable insights for current story implementation</action>
|
|
||||||
</check>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="3" goal="Architecture analysis for developer guardrails">
|
|
||||||
<critical>🏗️ ARCHITECTURE INTELLIGENCE - Extract everything the developer MUST follow!</critical> **ARCHITECTURE DOCUMENT ANALYSIS:** <action>Systematically
|
|
||||||
analyze architecture content for story-relevant requirements:</action>
|
|
||||||
|
|
||||||
<!-- Load architecture - single file or sharded -->
|
|
||||||
<check if="architecture file is single file">
|
|
||||||
<action>Load complete {architecture_content}</action>
|
|
||||||
</check>
|
|
||||||
<check if="architecture is sharded to folder">
|
|
||||||
<action>Load architecture index and scan all architecture files</action>
|
|
||||||
</check> **CRITICAL ARCHITECTURE EXTRACTION:** <action>For
|
|
||||||
each architecture section, determine if relevant to this story:</action> - **Technical Stack:** Languages, frameworks, libraries with
|
|
||||||
versions - **Code Structure:** Folder organization, naming conventions, file patterns - **API Patterns:** Service structure, endpoint
|
|
||||||
patterns, data contracts - **Database Schemas:** Tables, relationships, constraints relevant to story - **Security Requirements:**
|
|
||||||
Authentication patterns, authorization rules - **Performance Requirements:** Caching strategies, optimization patterns - **Testing
|
|
||||||
Standards:** Testing frameworks, coverage expectations, test patterns - **Deployment Patterns:** Environment configurations, build
|
|
||||||
processes - **Integration Patterns:** External service integrations, data flows <action>Extract any story-specific requirements that the
|
|
||||||
developer MUST follow</action>
|
|
||||||
<action>Identify any architectural decisions that override previous patterns</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="4" goal="Web research for latest technical specifics">
|
|
||||||
<critical>🌐 ENSURE LATEST TECH KNOWLEDGE - Prevent outdated implementations!</critical> **WEB INTELLIGENCE:** <action>Identify specific
|
|
||||||
technical areas that require latest version knowledge:</action>
|
|
||||||
|
|
||||||
<!-- Check for libraries/frameworks mentioned in architecture -->
|
|
||||||
<action>From architecture analysis, identify specific libraries, APIs, or
|
|
||||||
frameworks</action>
|
|
||||||
<action>For each critical technology, research latest stable version and key changes:
|
|
||||||
- Latest API documentation and breaking changes
|
|
||||||
- Security vulnerabilities or updates
|
|
||||||
- Performance improvements or deprecations
|
|
||||||
- Best practices for current version
|
|
||||||
</action>
|
|
||||||
**EXTERNAL CONTEXT INCLUSION:** <action>Include in story any critical latest information the developer needs:
|
|
||||||
- Specific library versions and why chosen
|
|
||||||
- API endpoints with parameters and authentication
|
|
||||||
- Recent security patches or considerations
|
|
||||||
- Performance optimization techniques
|
|
||||||
- Migration considerations if upgrading
|
|
||||||
</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="5" goal="Create comprehensive story file">
|
|
||||||
<critical>📝 CREATE ULTIMATE STORY FILE - The developer's master implementation guide!</critical>
|
|
||||||
|
|
||||||
<action>Initialize from template.md:
|
|
||||||
{default_output_file}</action>
|
|
||||||
<template-output file="{default_output_file}">story_header</template-output>
|
|
||||||
|
|
||||||
<!-- Story foundation from epics analysis -->
|
|
||||||
<template-output
|
|
||||||
file="{default_output_file}">story_requirements</template-output>
|
|
||||||
|
|
||||||
<!-- Developer context section - MOST IMPORTANT PART -->
|
|
||||||
<template-output file="{default_output_file}">
|
|
||||||
developer_context_section</template-output> **DEV AGENT GUARDRAILS:** <template-output file="{default_output_file}">
|
|
||||||
technical_requirements</template-output>
|
|
||||||
<template-output file="{default_output_file}">architecture_compliance</template-output>
|
|
||||||
<template-output
|
|
||||||
file="{default_output_file}">library_framework_requirements</template-output>
|
|
||||||
<template-output file="{default_output_file}">
|
|
||||||
file_structure_requirements</template-output>
|
|
||||||
<template-output file="{default_output_file}">testing_requirements</template-output>
|
|
||||||
|
|
||||||
<!-- Previous story intelligence -->
|
|
||||||
<check
|
|
||||||
if="previous story learnings available">
|
|
||||||
<template-output file="{default_output_file}">previous_story_intelligence</template-output>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<!-- Git intelligence -->
|
|
||||||
<check
|
|
||||||
if="git analysis completed">
|
|
||||||
<template-output file="{default_output_file}">git_intelligence_summary</template-output>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<!-- Latest technical specifics -->
|
|
||||||
<check if="web research completed">
|
|
||||||
<template-output file="{default_output_file}">latest_tech_information</template-output>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<!-- Project context reference -->
|
|
||||||
<template-output
|
|
||||||
file="{default_output_file}">project_context_reference</template-output>
|
|
||||||
|
|
||||||
<!-- Final status update -->
|
|
||||||
<template-output file="{default_output_file}">
|
|
||||||
story_completion_status</template-output>
|
|
||||||
|
|
||||||
<!-- CRITICAL: Set status to ready-for-dev -->
|
|
||||||
<action>Set story Status to: "ready-for-dev"</action>
|
|
||||||
<action>Add completion note: "Ultimate
|
|
||||||
context engine analysis completed - comprehensive developer guide created"</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="6" goal="Update sprint status and finalize">
|
|
||||||
<action>Validate the newly created story file {story_file} against {installed_path}/checklist.md and apply any required fixes before finalizing</action>
|
|
||||||
<action>Save story document unconditionally</action>
|
|
||||||
|
|
||||||
<!-- Update sprint status -->
|
|
||||||
<check if="sprint status file exists">
|
|
||||||
<action>Update {{sprint_status}}</action>
|
|
||||||
<action>Load the FULL file and read all development_status entries</action>
|
|
||||||
<action>Find development_status key matching {{story_key}}</action>
|
|
||||||
<action>Verify current status is "backlog" (expected previous state)</action>
|
|
||||||
<action>Update development_status[{{story_key}}] = "ready-for-dev"</action>
|
|
||||||
<action>Update last_updated field to current date</action>
|
|
||||||
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<action>Report completion</action>
|
|
||||||
<output>**🎯 ULTIMATE BMad Method STORY CONTEXT CREATED, {user_name}!**
|
|
||||||
|
|
||||||
**Story Details:**
|
|
||||||
- Story ID: {{story_id}}
|
|
||||||
- Story Key: {{story_key}}
|
|
||||||
- File: {{story_file}}
|
|
||||||
- Status: ready-for-dev
|
|
||||||
|
|
||||||
**Next Steps:**
|
|
||||||
1. Review the comprehensive story in {{story_file}}
|
|
||||||
2. Run dev agents `dev-story` for optimized implementation
|
|
||||||
3. Run `code-review` when complete (auto-marks done)
|
|
||||||
4. Optional: If Test Architect module installed, run `/bmad:tea:automate` after `dev-story` to generate guardrail tests
|
|
||||||
|
|
||||||
**The developer now has everything needed for flawless implementation!**
|
|
||||||
</output>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
</workflow>
|
|
||||||
|
|
@ -0,0 +1,389 @@
|
||||||
|
---
|
||||||
|
name: create-story
|
||||||
|
description: 'Creates a dedicated story file with all the context the agent will need to implement it later. Use when the user says "create the next story" or "create story [story identifier]"'
|
||||||
|
---
|
||||||
|
|
||||||
|
# Create Story Workflow
|
||||||
|
|
||||||
|
**Goal:** Create a comprehensive story file that gives the dev agent everything needed for flawless implementation.
|
||||||
|
|
||||||
|
**Your Role:** Story context engine that prevents LLM developer mistakes, omissions, or disasters.
|
||||||
|
- Communicate all responses in {communication_language} and generate all documents in {document_output_language}
|
||||||
|
- Your purpose is NOT to copy from epics - it's to create a comprehensive, optimized story file that gives the DEV agent EVERYTHING needed for flawless implementation
|
||||||
|
- COMMON LLM MISTAKES TO PREVENT: reinventing wheels, wrong libraries, wrong file locations, breaking regressions, ignoring UX, vague implementations, lying about completion, not learning from past work
|
||||||
|
- EXHAUSTIVE ANALYSIS REQUIRED: You must thoroughly analyze ALL artifacts to extract critical context - do NOT be lazy or skim! This is the most important function in the entire development process!
|
||||||
|
- UTILIZE SUBPROCESSES AND SUBAGENTS: Use research subagents, subprocesses or parallel processing if available to thoroughly analyze different artifacts simultaneously and thoroughly
|
||||||
|
- SAVE QUESTIONS: If you think of questions or clarifications during analysis, save them for the end after the complete story is written
|
||||||
|
- ZERO USER INTERVENTION: Process should be fully automated except for initial epic/story selection or missing documents
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## INITIALIZATION
|
||||||
|
|
||||||
|
### Configuration Loading
|
||||||
|
|
||||||
|
Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
|
|
||||||
|
- `project_name`, `user_name`
|
||||||
|
- `communication_language`, `document_output_language`
|
||||||
|
- `user_skill_level`
|
||||||
|
- `planning_artifacts`, `implementation_artifacts`
|
||||||
|
- `date` as system-generated current datetime
|
||||||
|
|
||||||
|
### Paths
|
||||||
|
|
||||||
|
- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/create-story`
|
||||||
|
- `template` = `{installed_path}/template.md`
|
||||||
|
- `validation` = `{installed_path}/checklist.md`
|
||||||
|
- `sprint_status` = `{implementation_artifacts}/sprint-status.yaml`
|
||||||
|
- `epics_file` = `{planning_artifacts}/epics.md`
|
||||||
|
- `prd_file` = `{planning_artifacts}/prd.md`
|
||||||
|
- `architecture_file` = `{planning_artifacts}/architecture.md`
|
||||||
|
- `ux_file` = `{planning_artifacts}/*ux*.md`
|
||||||
|
- `story_title` = "" (will be elicited if not derivable)
|
||||||
|
- `project_context` = `**/project-context.md` (load if exists)
|
||||||
|
- `default_output_file` = `{implementation_artifacts}/{{story_key}}.md`
|
||||||
|
|
||||||
|
### Input Files
|
||||||
|
|
||||||
|
| Input | Description | Path Pattern(s) | Load Strategy |
|
||||||
|
|-------|-------------|------------------|---------------|
|
||||||
|
| prd | PRD (fallback - epics file should have most content) | whole: `{planning_artifacts}/*prd*.md`, sharded: `{planning_artifacts}/*prd*/*.md` | SELECTIVE_LOAD |
|
||||||
|
| architecture | Architecture (fallback - epics file should have relevant sections) | whole: `{planning_artifacts}/*architecture*.md`, sharded: `{planning_artifacts}/*architecture*/*.md` | SELECTIVE_LOAD |
|
||||||
|
| ux | UX design (fallback - epics file should have relevant sections) | whole: `{planning_artifacts}/*ux*.md`, sharded: `{planning_artifacts}/*ux*/*.md` | SELECTIVE_LOAD |
|
||||||
|
| epics | Enhanced epics+stories file with BDD and source hints | whole: `{planning_artifacts}/*epic*.md`, sharded: `{planning_artifacts}/*epic*/*.md` | SELECTIVE_LOAD |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
|
<workflow>
|
||||||
|
|
||||||
|
<step n="1" goal="Determine target story">
|
||||||
|
<check if="{{story_path}} is provided by user or user provided the epic and story number such as 2-4 or 1.6 or epic 1 story 5">
|
||||||
|
<action>Parse user-provided story path: extract epic_num, story_num, story_title from format like "1-2-user-auth"</action>
|
||||||
|
<action>Set {{epic_num}}, {{story_num}}, {{story_key}} from user input</action>
|
||||||
|
<action>GOTO step 2a</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<action>Check if {{sprint_status}} file exists for auto discover</action>
|
||||||
|
<check if="sprint status file does NOT exist">
|
||||||
|
<output>🚫 No sprint status file found and no story specified</output>
|
||||||
|
<output>
|
||||||
|
**Required Options:**
|
||||||
|
1. Run `sprint-planning` to initialize sprint tracking (recommended)
|
||||||
|
2. Provide specific epic-story number to create (e.g., "1-2-user-auth")
|
||||||
|
3. Provide path to story documents if sprint status doesn't exist yet
|
||||||
|
</output>
|
||||||
|
<ask>Choose option [1], provide epic-story number, path to story docs, or [q] to quit:</ask>
|
||||||
|
|
||||||
|
<check if="user chooses 'q'">
|
||||||
|
<action>HALT - No work needed</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<check if="user chooses '1'">
|
||||||
|
<output>Run sprint-planning workflow first to create sprint-status.yaml</output>
|
||||||
|
<action>HALT - User needs to run sprint-planning</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<check if="user provides epic-story number">
|
||||||
|
<action>Parse user input: extract epic_num, story_num, story_title</action>
|
||||||
|
<action>Set {{epic_num}}, {{story_num}}, {{story_key}} from user input</action>
|
||||||
|
<action>GOTO step 2a</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<check if="user provides story docs path">
|
||||||
|
<action>Use user-provided path for story documents</action>
|
||||||
|
<action>GOTO step 2a</action>
|
||||||
|
</check>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<!-- Auto-discover from sprint status only if no user input -->
|
||||||
|
<check if="no user input provided">
|
||||||
|
<critical>MUST read COMPLETE {sprint_status} file from start to end to preserve order</critical>
|
||||||
|
<action>Load the FULL file: {{sprint_status}}</action>
|
||||||
|
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||||
|
<action>Parse the development_status section completely</action>
|
||||||
|
|
||||||
|
<action>Find the FIRST story (by reading in order from top to bottom) where:
|
||||||
|
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||||
|
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||||
|
- Status value equals "backlog"
|
||||||
|
</action>
|
||||||
|
|
||||||
|
<check if="no backlog story found">
|
||||||
|
<output>📋 No backlog stories found in sprint-status.yaml
|
||||||
|
|
||||||
|
All stories are either already created, in progress, or done.
|
||||||
|
|
||||||
|
**Options:**
|
||||||
|
1. Run sprint-planning to refresh story tracking
|
||||||
|
2. Load PM agent and run correct-course to add more stories
|
||||||
|
3. Check if current sprint is complete and run retrospective
|
||||||
|
</output>
|
||||||
|
<action>HALT</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<action>Extract from found story key (e.g., "1-2-user-authentication"):
|
||||||
|
- epic_num: first number before dash (e.g., "1")
|
||||||
|
- story_num: second number after first dash (e.g., "2")
|
||||||
|
- story_title: remainder after second dash (e.g., "user-authentication")
|
||||||
|
</action>
|
||||||
|
<action>Set {{story_id}} = "{{epic_num}}.{{story_num}}"</action>
|
||||||
|
<action>Store story_key for later use (e.g., "1-2-user-authentication")</action>
|
||||||
|
|
||||||
|
<!-- Mark epic as in-progress if this is first story -->
|
||||||
|
<action>Check if this is the first story in epic {{epic_num}} by looking for {{epic_num}}-1-* pattern</action>
|
||||||
|
<check if="this is first story in epic {{epic_num}}">
|
||||||
|
<action>Load {{sprint_status}} and check epic-{{epic_num}} status</action>
|
||||||
|
<action>If epic status is "backlog" → update to "in-progress"</action>
|
||||||
|
<action>If epic status is "contexted" (legacy status) → update to "in-progress" (backward compatibility)</action>
|
||||||
|
<action>If epic status is "in-progress" → no change needed</action>
|
||||||
|
<check if="epic status is 'done'">
|
||||||
|
<output>🚫 ERROR: Cannot create story in completed epic</output>
|
||||||
|
<output>Epic {{epic_num}} is marked as 'done'. All stories are complete.</output>
|
||||||
|
<output>If you need to add more work, either:</output>
|
||||||
|
<output>1. Manually change epic status back to 'in-progress' in sprint-status.yaml</output>
|
||||||
|
<output>2. Create a new epic for additional work</output>
|
||||||
|
<action>HALT - Cannot proceed</action>
|
||||||
|
</check>
|
||||||
|
<check if="epic status is not one of: backlog, contexted, in-progress, done">
|
||||||
|
<output>🚫 ERROR: Invalid epic status '{{epic_status}}'</output>
|
||||||
|
<output>Epic {{epic_num}} has invalid status. Expected: backlog, in-progress, or done</output>
|
||||||
|
<output>Please fix sprint-status.yaml manually or run sprint-planning to regenerate</output>
|
||||||
|
<action>HALT - Cannot proceed</action>
|
||||||
|
</check>
|
||||||
|
<output>📊 Epic {{epic_num}} status updated to in-progress</output>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<action>GOTO step 2a</action>
|
||||||
|
</check>
|
||||||
|
<action>Load the FULL file: {{sprint_status}}</action>
|
||||||
|
<action>Read ALL lines from beginning to end - do not skip any content</action>
|
||||||
|
<action>Parse the development_status section completely</action>
|
||||||
|
|
||||||
|
<action>Find the FIRST story (by reading in order from top to bottom) where:
|
||||||
|
- Key matches pattern: number-number-name (e.g., "1-2-user-auth")
|
||||||
|
- NOT an epic key (epic-X) or retrospective (epic-X-retrospective)
|
||||||
|
- Status value equals "backlog"
|
||||||
|
</action>
|
||||||
|
|
||||||
|
<check if="no backlog story found">
|
||||||
|
<output>No backlog stories found in sprint-status.yaml
|
||||||
|
|
||||||
|
All stories are either already created, in progress, or done.
|
||||||
|
|
||||||
|
**Options:**
|
||||||
|
1. Run sprint-planning to refresh story tracking
|
||||||
|
2. Load PM agent and run correct-course to add more stories
|
||||||
|
3. Check if current sprint is complete and run retrospective
|
||||||
|
</output>
|
||||||
|
<action>HALT</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<action>Extract from found story key (e.g., "1-2-user-authentication"):
|
||||||
|
- epic_num: first number before dash (e.g., "1")
|
||||||
|
- story_num: second number after first dash (e.g., "2")
|
||||||
|
- story_title: remainder after second dash (e.g., "user-authentication")
|
||||||
|
</action>
|
||||||
|
<action>Set {{story_id}} = "{{epic_num}}.{{story_num}}"</action>
|
||||||
|
<action>Store story_key for later use (e.g., "1-2-user-authentication")</action>
|
||||||
|
|
||||||
|
<!-- Mark epic as in-progress if this is first story -->
|
||||||
|
<action>Check if this is the first story in epic {{epic_num}} by looking for {{epic_num}}-1-* pattern</action>
|
||||||
|
<check if="this is first story in epic {{epic_num}}">
|
||||||
|
<action>Load {{sprint_status}} and check epic-{{epic_num}} status</action>
|
||||||
|
<action>If epic status is "backlog" → update to "in-progress"</action>
|
||||||
|
<action>If epic status is "contexted" (legacy status) → update to "in-progress" (backward compatibility)</action>
|
||||||
|
<action>If epic status is "in-progress" → no change needed</action>
|
||||||
|
<check if="epic status is 'done'">
|
||||||
|
<output>ERROR: Cannot create story in completed epic</output>
|
||||||
|
<output>Epic {{epic_num}} is marked as 'done'. All stories are complete.</output>
|
||||||
|
<output>If you need to add more work, either:</output>
|
||||||
|
<output>1. Manually change epic status back to 'in-progress' in sprint-status.yaml</output>
|
||||||
|
<output>2. Create a new epic for additional work</output>
|
||||||
|
<action>HALT - Cannot proceed</action>
|
||||||
|
</check>
|
||||||
|
<check if="epic status is not one of: backlog, contexted, in-progress, done">
|
||||||
|
<output>ERROR: Invalid epic status '{{epic_status}}'</output>
|
||||||
|
<output>Epic {{epic_num}} has invalid status. Expected: backlog, in-progress, or done</output>
|
||||||
|
<output>Please fix sprint-status.yaml manually or run sprint-planning to regenerate</output>
|
||||||
|
<action>HALT - Cannot proceed</action>
|
||||||
|
</check>
|
||||||
|
<output>Epic {{epic_num}} status updated to in-progress</output>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<action>GOTO step 2a</action>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step n="2" goal="Load and analyze core artifacts">
|
||||||
|
<critical>🔬 EXHAUSTIVE ARTIFACT ANALYSIS - This is where you prevent future developer fuckups!</critical>
|
||||||
|
|
||||||
|
<!-- Load all available content through discovery protocol -->
|
||||||
|
<invoke-protocol
|
||||||
|
name="discover_inputs" />
|
||||||
|
<note>Available content: {epics_content}, {prd_content}, {architecture_content}, {ux_content},
|
||||||
|
{project_context}</note>
|
||||||
|
|
||||||
|
<!-- Analyze epics file for story foundation -->
|
||||||
|
<action>From {epics_content}, extract Epic {{epic_num}} complete context:</action> **EPIC ANALYSIS:** - Epic
|
||||||
|
objectives and business value - ALL stories in this epic for cross-story context - Our specific story's requirements, user story
|
||||||
|
statement, acceptance criteria - Technical requirements and constraints - Dependencies on other stories/epics - Source hints pointing to
|
||||||
|
original documents <!-- Extract specific story requirements -->
|
||||||
|
<action>Extract our story ({{epic_num}}-{{story_num}}) details:</action> **STORY FOUNDATION:** - User story statement
|
||||||
|
(As a, I want, so that) - Detailed acceptance criteria (already BDD formatted) - Technical requirements specific to this story -
|
||||||
|
Business context and value - Success criteria <!-- Previous story analysis for context continuity -->
|
||||||
|
<check if="story_num > 1">
|
||||||
|
<action>Find {{previous_story_num}}: scan {implementation_artifacts} for the story file in epic {{epic_num}} with the highest story number less than {{story_num}}</action>
|
||||||
|
<action>Load previous story file: {implementation_artifacts}/{{epic_num}}-{{previous_story_num}}-*.md</action> **PREVIOUS STORY INTELLIGENCE:** -
|
||||||
|
Dev notes and learnings from previous story - Review feedback and corrections needed - Files that were created/modified and their
|
||||||
|
patterns - Testing approaches that worked/didn't work - Problems encountered and solutions found - Code patterns established <action>Extract
|
||||||
|
all learnings that could impact current story implementation</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<!-- Git intelligence for previous work patterns -->
|
||||||
|
<check
|
||||||
|
if="previous story exists AND git repository detected">
|
||||||
|
<action>Get last 5 commit titles to understand recent work patterns</action>
|
||||||
|
<action>Analyze 1-5 most recent commits for relevance to current story:
|
||||||
|
- Files created/modified
|
||||||
|
- Code patterns and conventions used
|
||||||
|
- Library dependencies added/changed
|
||||||
|
- Architecture decisions implemented
|
||||||
|
- Testing approaches used
|
||||||
|
</action>
|
||||||
|
<action>Extract actionable insights for current story implementation</action>
|
||||||
|
</check>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step n="3" goal="Architecture analysis for developer guardrails">
|
||||||
|
<critical>🏗️ ARCHITECTURE INTELLIGENCE - Extract everything the developer MUST follow!</critical> **ARCHITECTURE DOCUMENT ANALYSIS:** <action>Systematically
|
||||||
|
analyze architecture content for story-relevant requirements:</action>
|
||||||
|
|
||||||
|
<!-- Load architecture - single file or sharded -->
|
||||||
|
<check if="architecture file is single file">
|
||||||
|
<action>Load complete {architecture_content}</action>
|
||||||
|
</check>
|
||||||
|
<check if="architecture is sharded to folder">
|
||||||
|
<action>Load architecture index and scan all architecture files</action>
|
||||||
|
</check> **CRITICAL ARCHITECTURE EXTRACTION:** <action>For
|
||||||
|
each architecture section, determine if relevant to this story:</action> - **Technical Stack:** Languages, frameworks, libraries with
|
||||||
|
versions - **Code Structure:** Folder organization, naming conventions, file patterns - **API Patterns:** Service structure, endpoint
|
||||||
|
patterns, data contracts - **Database Schemas:** Tables, relationships, constraints relevant to story - **Security Requirements:**
|
||||||
|
Authentication patterns, authorization rules - **Performance Requirements:** Caching strategies, optimization patterns - **Testing
|
||||||
|
Standards:** Testing frameworks, coverage expectations, test patterns - **Deployment Patterns:** Environment configurations, build
|
||||||
|
processes - **Integration Patterns:** External service integrations, data flows <action>Extract any story-specific requirements that the
|
||||||
|
developer MUST follow</action>
|
||||||
|
<action>Identify any architectural decisions that override previous patterns</action>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step n="4" goal="Web research for latest technical specifics">
|
||||||
|
<critical>🌐 ENSURE LATEST TECH KNOWLEDGE - Prevent outdated implementations!</critical> **WEB INTELLIGENCE:** <action>Identify specific
|
||||||
|
technical areas that require latest version knowledge:</action>
|
||||||
|
|
||||||
|
<!-- Check for libraries/frameworks mentioned in architecture -->
|
||||||
|
<action>From architecture analysis, identify specific libraries, APIs, or
|
||||||
|
frameworks</action>
|
||||||
|
<action>For each critical technology, research latest stable version and key changes:
|
||||||
|
- Latest API documentation and breaking changes
|
||||||
|
- Security vulnerabilities or updates
|
||||||
|
- Performance improvements or deprecations
|
||||||
|
- Best practices for current version
|
||||||
|
</action>
|
||||||
|
**EXTERNAL CONTEXT INCLUSION:** <action>Include in story any critical latest information the developer needs:
|
||||||
|
- Specific library versions and why chosen
|
||||||
|
- API endpoints with parameters and authentication
|
||||||
|
- Recent security patches or considerations
|
||||||
|
- Performance optimization techniques
|
||||||
|
- Migration considerations if upgrading
|
||||||
|
</action>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step n="5" goal="Create comprehensive story file">
|
||||||
|
<critical>📝 CREATE ULTIMATE STORY FILE - The developer's master implementation guide!</critical>
|
||||||
|
|
||||||
|
<action>Initialize from template.md:
|
||||||
|
{default_output_file}</action>
|
||||||
|
<template-output file="{default_output_file}">story_header</template-output>
|
||||||
|
|
||||||
|
<!-- Story foundation from epics analysis -->
|
||||||
|
<template-output
|
||||||
|
file="{default_output_file}">story_requirements</template-output>
|
||||||
|
|
||||||
|
<!-- Developer context section - MOST IMPORTANT PART -->
|
||||||
|
<template-output file="{default_output_file}">
|
||||||
|
developer_context_section</template-output> **DEV AGENT GUARDRAILS:** <template-output file="{default_output_file}">
|
||||||
|
technical_requirements</template-output>
|
||||||
|
<template-output file="{default_output_file}">architecture_compliance</template-output>
|
||||||
|
<template-output
|
||||||
|
file="{default_output_file}">library_framework_requirements</template-output>
|
||||||
|
<template-output file="{default_output_file}">
|
||||||
|
file_structure_requirements</template-output>
|
||||||
|
<template-output file="{default_output_file}">testing_requirements</template-output>
|
||||||
|
|
||||||
|
<!-- Previous story intelligence -->
|
||||||
|
<check
|
||||||
|
if="previous story learnings available">
|
||||||
|
<template-output file="{default_output_file}">previous_story_intelligence</template-output>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<!-- Git intelligence -->
|
||||||
|
<check
|
||||||
|
if="git analysis completed">
|
||||||
|
<template-output file="{default_output_file}">git_intelligence_summary</template-output>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<!-- Latest technical specifics -->
|
||||||
|
<check if="web research completed">
|
||||||
|
<template-output file="{default_output_file}">latest_tech_information</template-output>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<!-- Project context reference -->
|
||||||
|
<template-output
|
||||||
|
file="{default_output_file}">project_context_reference</template-output>
|
||||||
|
|
||||||
|
<!-- Final status update -->
|
||||||
|
<template-output file="{default_output_file}">
|
||||||
|
story_completion_status</template-output>
|
||||||
|
|
||||||
|
<!-- CRITICAL: Set status to ready-for-dev -->
|
||||||
|
<action>Set story Status to: "ready-for-dev"</action>
|
||||||
|
<action>Add completion note: "Ultimate
|
||||||
|
context engine analysis completed - comprehensive developer guide created"</action>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step n="6" goal="Update sprint status and finalize">
|
||||||
|
<action>Validate the newly created story file {story_file} against {installed_path}/checklist.md and apply any required fixes before finalizing</action>
|
||||||
|
<action>Save story document unconditionally</action>
|
||||||
|
|
||||||
|
<!-- Update sprint status -->
|
||||||
|
<check if="sprint status file exists">
|
||||||
|
<action>Update {{sprint_status}}</action>
|
||||||
|
<action>Load the FULL file and read all development_status entries</action>
|
||||||
|
<action>Find development_status key matching {{story_key}}</action>
|
||||||
|
<action>Verify current status is "backlog" (expected previous state)</action>
|
||||||
|
<action>Update development_status[{{story_key}}] = "ready-for-dev"</action>
|
||||||
|
<action>Update last_updated field to current date</action>
|
||||||
|
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
|
||||||
|
</check>
|
||||||
|
|
||||||
|
<action>Report completion</action>
|
||||||
|
<output>**🎯 ULTIMATE BMad Method STORY CONTEXT CREATED, {user_name}!**
|
||||||
|
|
||||||
|
**Story Details:**
|
||||||
|
- Story ID: {{story_id}}
|
||||||
|
- Story Key: {{story_key}}
|
||||||
|
- File: {{story_file}}
|
||||||
|
- Status: ready-for-dev
|
||||||
|
|
||||||
|
**Next Steps:**
|
||||||
|
1. Review the comprehensive story in {{story_file}}
|
||||||
|
2. Run dev agents `dev-story` for optimized implementation
|
||||||
|
3. Run `code-review` when complete (auto-marks done)
|
||||||
|
4. Optional: If Test Architect module installed, run `/bmad:tea:automate` after `dev-story` to generate guardrail tests
|
||||||
|
|
||||||
|
**The developer now has everything needed for flawless implementation!**
|
||||||
|
</output>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
</workflow>
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
name: create-story
|
|
||||||
description: 'Creates a dedicated story file with all the context the agent will need to implement it later. Use when the user says "create the next story" or "create story [story identifier]"'
|
|
||||||
|
|
||||||
# Critical variables from config
|
|
||||||
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
||||||
user_name: "{config_source}:user_name"
|
|
||||||
communication_language: "{config_source}:communication_language"
|
|
||||||
document_output_language: "{config_source}:document_output_language"
|
|
||||||
user_skill_level: "{config_source}:user_skill_level"
|
|
||||||
date: system-generated
|
|
||||||
planning_artifacts: "{config_source}:planning_artifacts"
|
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
|
||||||
|
|
||||||
# Workflow components
|
|
||||||
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/create-story"
|
|
||||||
template: "{installed_path}/template.md"
|
|
||||||
instructions: "{installed_path}/instructions.xml"
|
|
||||||
validation: "{installed_path}/checklist.md"
|
|
||||||
|
|
||||||
# Variables and inputs
|
|
||||||
sprint_status: "{implementation_artifacts}/sprint-status.yaml" # Primary source for story tracking
|
|
||||||
epics_file: "{planning_artifacts}/epics.md" # Enhanced epics+stories with BDD and source hints
|
|
||||||
prd_file: "{planning_artifacts}/prd.md" # Fallback for requirements (if not in epics file)
|
|
||||||
architecture_file: "{planning_artifacts}/architecture.md" # Fallback for constraints (if not in epics file)
|
|
||||||
ux_file: "{planning_artifacts}/*ux*.md" # Fallback for UX requirements (if not in epics file)
|
|
||||||
story_title: "" # Will be elicited if not derivable
|
|
||||||
project_context: "**/project-context.md"
|
|
||||||
default_output_file: "{implementation_artifacts}/{{story_key}}.md"
|
|
||||||
|
|
||||||
# Smart input file references - Simplified for enhanced approach
|
|
||||||
# The epics+stories file should contain everything needed with source hints
|
|
||||||
input_file_patterns:
|
|
||||||
prd:
|
|
||||||
description: "PRD (fallback - epics file should have most content)"
|
|
||||||
whole: "{planning_artifacts}/*prd*.md"
|
|
||||||
sharded: "{planning_artifacts}/*prd*/*.md"
|
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
|
||||||
architecture:
|
|
||||||
description: "Architecture (fallback - epics file should have relevant sections)"
|
|
||||||
whole: "{planning_artifacts}/*architecture*.md"
|
|
||||||
sharded: "{planning_artifacts}/*architecture*/*.md"
|
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
|
||||||
ux:
|
|
||||||
description: "UX design (fallback - epics file should have relevant sections)"
|
|
||||||
whole: "{planning_artifacts}/*ux*.md"
|
|
||||||
sharded: "{planning_artifacts}/*ux*/*.md"
|
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load if needed
|
|
||||||
epics:
|
|
||||||
description: "Enhanced epics+stories file with BDD and source hints"
|
|
||||||
whole: "{planning_artifacts}/*epic*.md"
|
|
||||||
sharded: "{planning_artifacts}/*epic*/*.md"
|
|
||||||
load_strategy: "SELECTIVE_LOAD" # Only load needed epic
|
|
||||||
Loading…
Reference in New Issue