# Create Story - Workflow Instructions (Spec-compliant, non-interactive by default)
````xml
The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml
You MUST have already loaded and processed: {installed_path}/workflow.yaml
Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}
Generate all documents in {document_output_language}
This workflow creates or updates the next user story from epics/PRD and architecture context, saving to the configured stories directory and optionally invoking Story Context.
Default execution mode: #yolo (minimal prompts). Only elicit if absolutely required and {{non_interactive}} == false.
DOCUMENT OUTPUT: Concise, technical, actionable story specifications. Use tables/lists for acceptance criteria and tasks. User skill level ({user_skill_level}) affects conversation style ONLY, not document content.
Resolve variables from config_source: story_dir (dev_story_location), output_folder, user_name, communication_language. If story_dir missing and {{non_interactive}} == false → ASK user to provide a stories directory and update variable. If {{non_interactive}} == true and missing, HALT with a clear message.
Create {{story_dir}} if it does not exist
Resolve installed component paths from workflow.yaml: template, instructions, validation
Resolve recommended inputs if present: epics_file, prd_file, solution-architecture_file
If {{tech_spec_file}} empty: derive from {{tech_spec_glob_template}} with {{epic_num}} and search {{tech_spec_search_dir}} recursively. If multiple, pick most recent by modified time.
Build a prioritized document set for this epic:
1) tech_spec_file (epic-scoped)
2) epics_file (acceptance criteria and breakdown)
3) prd_file (business requirements and constraints)
4) solution-architecture_file (architecture constraints)
5) Architecture docs under docs/ and output_folder/: tech-stack.md, unified-project-structure.md, coding-standards.md, testing-strategy.md, backend-architecture.md, frontend-architecture.md, data-models.md, database-schema.md, rest-api-spec.md, external-apis.md (include if present)
READ COMPLETE FILES for all items found in the prioritized set. Store content and paths for citation.
mode: data
data_request: next_story
Use extracted story information:
- {{todo_story_id}}: The story ID to draft
- {{todo_story_title}}: The story title
- {{todo_story_file}}: The exact story file path to create
This is the PRIMARY source - DO NOT search or guess
Set {{story_path}} = {story_dir}/{{todo_story_file}}
Skip legacy discovery in Step 3
Fall back to legacy story discovery in Step 3
List existing story markdown files in {{story_dir}} matching pattern: "story-..md"
If none found → Set {{epic_num}}=1 and {{story_num}}=1
If files found → Parse epic_num and story_num; pick the highest pair
Open the latest story (if exists) and read Status
If Status != Done/Approved and {{non_interactive}} == true → TARGET the latest story for update (do not create a new one)
If Status == Done/Approved → Candidate next story is {{epic_num}}.{{story_num+1}}
If creating a new story candidate: VERIFY planning in {{epics_file}}. Confirm that epic {{epic_num}} explicitly enumerates a next story matching {{story_num+1}} (or an equivalent next planned story entry). If epics.md is missing or does not enumerate another story for this epic, HALT with message:
"No planned next story found in epics.md for epic {{epic_num}}. Please load either PM (Product Manager) agent at {project-root}/bmad/bmm/agents/pm.md or SM (Scrum Master) agent at {project-root}/bmad/bmm/agents/sm.md and run `*correct-course` to add/modify epic stories, then rerun create-story."
If verification passes → Set {{story_num}} = {{story_num}} + 1
If starting a new epic and {{non_interactive}} == false, ASK for {{epic_num}} and reset {{story_num}} to 1. In {{non_interactive}} == true, do NOT auto-advance epic; stay within current epic and continue incrementing story_num.
From tech_spec_file (preferred) or epics_file: extract epic {{epic_num}} title/summary, acceptance criteria for the next story, and any component references. If not present, fall back to PRD sections mapping to this epic/story.
From solution-architecture and architecture docs: extract constraints, patterns, component boundaries, and testing guidance relevant to the extracted ACs. ONLY capture information that directly informs implementation of this story.
Derive a clear user story statement (role, action, benefit) grounded strictly in the above sources. If ambiguous and {{non_interactive}} == false → ASK user to clarify. If {{non_interactive}} == true → generate the best grounded statement WITHOUT inventing domain facts.
requirements_context_summary
If a previous story exists, scan its "Dev Agent Record" for completion notes and known deviations; summarize any carry-overs relevant to this story.
If unified-project-structure.md present: align expected file paths, module names, and component locations; note any potential conflicts.
structure_alignment_summary
Assemble acceptance criteria list from tech_spec or epics. If gaps exist, derive minimal, testable criteria from PRD verbatim phrasing (NO invention).
Create tasks/subtasks directly mapped to ACs. Include explicit testing subtasks per testing-strategy and existing tests framework. Cite architecture/source documents for any technical mandates.
acceptance_criteria
tasks_subtasks
Resolve output path: {default_output_file} using current {{epic_num}} and {{story_num}}. If targeting an existing story for update, use its path.
Initialize from template.md if creating a new file; otherwise load existing file for edit.
Compute a concise story_title from epic/story context; if missing, synthesize from PRD feature name and epic number.
story_header
story_body
dev_notes_with_citations
change_log
Validate against checklist at {installed_path}/checklist.md using bmad/core/tasks/validate-workflow.xml
Save document unconditionally (non-interactive default). In interactive mode, allow user confirmation.
If {{auto_run_context}} == true → Pass {{story_path}} = {default_output_file}
Report created/updated story path
Search {output_folder}/ for files matching pattern: bmm-workflow-status.md
Find the most recent file (by date in filename)
Load the status file
current_step
Set to: "create-story (Story {{story_id}})"
current_workflow
Set to: "create-story (Story {{story_id}}) - Complete"
progress_percentage
Calculate per-story weight: remaining_40_percent / total_stories / 5
Increment by: {{per_story_weight}} * 2 (create-story weight is ~2% per story)
decisions_log
Add entry:
```
- **{{date}}**: Completed create-story for Story {{story_id}} ({{story_title}}). Story file: {{story_file}}. Status: Draft (needs review via story-ready). Next: Review and approve story.
```
````