# Workflow Init - Project Setup Instructions
The workflow execution engine is governed by: {project-root}/.bmad/core/tasks/workflow.xml
You MUST have already loaded and processed: workflow-init/workflow.yaml
Communicate in {communication_language} with {user_name}
This workflow handles BOTH new projects AND legacy projects being migrated to BMad Method
Perform comprehensive scan for ALL existing work (not just quick scan):
**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
**Check for implementation artifacts:**
- The following could be in or nested under {output_folder} OR {ephemeral_location} - CHECK BOTH LOCATIONS
- Story files: {output*folder}/stories/*.md or {ephemeral*location}/stories/*.md
- Sprint status: {output_folder}/sprint-status.yaml or {ephemeral_location}/sprint-status.yaml
- Existing workflow status: {output_folder}/bmm-workflow-status.yaml or {ephemeral_location}/bmm-workflow-status.yaml
**Check for codebase:**
- Source code directories: src/, lib/, app/, components/, etc.
- Package files: package.json, requirements.txt, Cargo.toml, go.mod, pom.xml, etc.
- Git repository: .git/
- Framework indicators: next.config.js, vite.config.js, etc.
Analyze findings and categorize project state:
- **STATE 1:** Clean slate (no artifacts, no code or scaffold only)
- **STATE 2:** Planning in progress (has PRD or tech-spec, no stories/implementation yet)
- **STATE 3:** Implementation in progress (has stories or sprint status)
- **STATE 4:** Legacy codebase (has code but no BMM artifacts)
- **STATE 5:** Partial/unclear (some artifacts, state unclear)
What's your project called? {{#if project_name}}(Config shows: {{project_name}}){{/if}}
Store project_name
project_name
Set new_project = true
Continue to Step 3 (ask about their work)
What's your situation with these documents?
a) **Continue this work** - These docs describe what I'm building now
b) **Override/replace** - These are old, I'm starting something NEW
c) **Already done** - This work is complete, I'm starting a NEW project
d) **Not sure** - Let me explain my situation
Your choice [a/b/c/d]:
Set continuing_existing_planning = true
Store found artifacts for auto-completion in workflow status
Continue to Step 5 (detect track from artifacts)
Should I archive these old documents before we start fresh?
I can move them to {output_folder}/archive/ so they're not in the way.
Archive old docs? (y/n)
Create archive folder if needed
Move all found planning artifacts to {output_folder}/archive/
Set new_project = true
Continue to Step 3 (ask about their work)
Should I archive the completed work before starting your new project? (y/n)
Archive old planning docs
Set new_project = true
Continue to Step 3 (ask about their work)
Tell me what you're trying to accomplish:
Analyze response and guide to appropriate choice (a, b, or c)
Loop back to present choices again with guidance
What's happening here?
a) **Continue implementation** - I'm still working on these stories
b) **Completed** - This work is done, starting something NEW
c) **Abandoned** - Stopping this, starting over
d) **Not sure** - Let me explain
Your choice [a/b/c/d]:
Check if bmm-workflow-status.yaml exists
Exit workflow gracefully (workflow already initialized)
Set migrating_legacy_project = true
Store found artifacts for workflow status generation
Continue to Step 5 (detect track from artifacts)
Archive the old work before starting fresh? (y/n)
Create archive folder
Move stories, sprint status, and planning docs to archive
Set new_project = true
Continue to Step 3 (ask about their work)
Tell me more about your situation:
Analyze and guide to appropriate choice
Set field_type = "brownfield"
Set new_project = true
Note: Will need document-project before planning
Continue to Step 3 (ask about their work)
What are you trying to do?
a) Continue working on an existing project
b) Start something completely NEW
c) Fix/enhance the existing code
d) Let me explain my situation
Your choice:
Analyze response carefully
Guide to appropriate state (Continue existing = Step 5, New = Step 3)
Tell me about what you're working on. What's the goal?
Store user_description
Analyze description for field type:
- Brownfield indicators: "existing", "current", "add to", "modify", "enhance", "refactor"
- Greenfield indicators: "new", "build", "create", "from scratch", "start"
- Codebase presence overrides: If found codebase = brownfield unless user says "scaffold"
I see you have existing code here. Are you:
1. **Adding to or modifying** the existing codebase (brownfield)
2. **Starting fresh** - the existing code is just a scaffold/template (greenfield)
3. **Something else** - let me clarify
Your choice [1/2/3]:
Set field_type = "brownfield"
Set field_type = "greenfield"
Please explain your situation:
Analyze explanation and set field_type accordingly
Set field_type based on codebase presence (codebase = brownfield, none = greenfield)
Detect project_type (game vs software):
- Game keywords: "game", "player", "level", "gameplay", "rpg", "fps", "puzzle game"
- Default to "software" if not clearly a game
Your choice [a/b]:
Exit workflow with success status
Set project_type = "software" (override game detection)
user_description
field_type
project_type
Would you like to:
- 🧠 **Brainstorm** your project? (Creative exploration and idea generation)
- 🔍 **Research** your domain? (Technical research, competitive analysis, deep-dives)
These are completely OPTIONAL but can help clarify your vision before planning.
Your choice:
a) Yes, brainstorm first
b) Yes, research first
c) Yes, both
d) No, I'm ready to plan
Your choice [a/b/c/d]:
Set brainstorm_requested = true
Set research_requested = false
Set brainstorm_requested = false
Set research_requested = true
Set brainstorm_requested = true
Set research_requested = true
Set brainstorm_requested = false
Set research_requested = false
brainstorm_requested
research_requested
Detect track from existing artifacts:
**Track Detection Logic:**
- Has PRD + Architecture → BMad Method
- Has PRD only → BMad Method (architecture was optional/skipped)
- Has tech-spec only → BMad Quick Flow
- Has Security/DevOps docs → BMad Enterprise Method
Which track should I use instead?
1. BMad Quick Flow
2. BMad Method
3. BMad Enterprise Method
Your choice:
Update selected_track based on choice
Store selected_track
selected_track
Continue to Step 6 (product brief question if applicable)
Generate recommendation based on user_description and field_type:
**Recommendation Logic:**
- Complexity keywords (dashboard, platform, system, integration, multiple features) → Recommend BMad Method
- Simple keywords (fix, bug, add button, simple) → Mention Quick Flow as option
- Enterprise keywords (multi-tenant, compliance, security, audit) → Recommend Enterprise
- Brownfield + complex → Strongly recommend Method (explain architecture benefit)
- Greenfield + complex → Recommend Method
Which approach fits your situation?
1. **BMad Quick Flow** - Fast, minimal planning (I accept rework risk)
2. **BMad Method** - Full planning for better AI results (RECOMMENDED)
3. **BMad Enterprise Method** - Extended planning for enterprise needs
4. **I'm not sure** - Help me decide
Your choice [1/2/3/4]:
Tell me more about your concerns or uncertainties:
Provide tailored guidance based on their specific concerns
Present choices again with more specific recommendation
Map choice to track name:
- 1 → "quick-flow"
- 2 → "method"
- 3 → "enterprise"
Store selected_track
selected_track
Skip this step - product brief not applicable for brownfield or quick flow
Set product_brief_requested = false
Continue to Step 7 (generate workflow path)
a) Yes, include Product Brief
b) No, skip to PRD
Your choice [a/b]:
Set product_brief_requested = true
Set product_brief_requested = false
product_brief_requested
Determine path file based on selected track and field type:
**Path File Mapping:**
- quick-flow + greenfield → "quick-flow-greenfield.yaml"
- quick-flow + brownfield → "quick-flow-brownfield.yaml"
- method + greenfield → "method-greenfield.yaml"
- method + brownfield → "method-brownfield.yaml"
- enterprise + greenfield → "enterprise-greenfield.yaml"
- enterprise + brownfield → "enterprise-brownfield.yaml"
- game → "game-design.yaml"
Load {path_files}/{determined_path_file}
Parse workflow path file to extract phases and workflows
Build workflow_items list:
For each phase in path file:
1. Check if phase should be included based on:
- User choices (brainstorm_requested, research_requested, product_brief_requested)
- Phase conditions (prerequisite phases, optional phases)
2. Add comment header: ` # Phase {n}: {Phase Name}`
3. For each workflow in phase:
- Check if workflow should be included based on user choices
- Add entry: ` {workflow-id}: {default_status} # agent: {agent}`
- Default status from path file (required/optional/recommended/conditional)
- Agent from path file (pm/architect/ux-designer/sm/analyst/etc.)
4. Add blank line between phases
Scan for existing completed workflows and update workflow_items:
**Scan locations:**
- 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
**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")
workflow_path_file
workflow_items
Set generated date to current date
generated
Ready to create your workflow tracking file? (y/n)
Prepare all template variables for workflow-status-template.yaml:
- generated: {current_date}
- project_name: {project_name}
- project_type: {project_type}
- selected_track: {selected_track}
- field_type: {field_type}
- workflow_path_file: {workflow_path_file}
- workflow_items: {workflow_items from step 7}
Generate YAML from workflow-status-template.yaml with all variables
Save status file to {output_folder}/bmm-workflow-status.yaml
Identify the first non-completed workflow in workflow_items
Look up that workflow's agent and command from the loaded path file