The install directory is now configurable, with a few minute issues

This commit is contained in:
Brian Madison
2025-11-08 13:58:43 -06:00
parent a4bbfc4b6e
commit 1728acfb0f
224 changed files with 1303 additions and 1036 deletions

View File

@@ -159,7 +159,7 @@ The brainstorming phase invokes the CIS brainstorming workflow to:
### Generated Workflow Folder
Creates a complete workflow folder at:
`{project-root}/bmad/{{target_module}}/workflows/{{workflow_name}}/`
`{project-root}/{bmad_folder}/{{target_module}}/workflows/{{workflow_name}}/`
### Files Created
@@ -267,9 +267,9 @@ To modify this workflow:
For issues or questions:
- Review `/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md`
- Check existing workflows in `/bmad/bmm/workflows/` for examples
- Validate against `/bmad/bmb/workflows/create-workflow/checklist.md`
- Review `/{bmad_folder}/bmb/workflows/create-workflow/workflow-creation-guide.md`
- Check existing workflows in `/{bmad_folder}/bmm/workflows/` for examples
- Validate against `/{bmad_folder}/bmb/workflows/create-workflow/checklist.md`
- Consult BMAD Method v6 documentation
---

View File

@@ -61,7 +61,7 @@
- [ ] web_bundle section present if needed
- [ ] Name, description, author copied from main config
- [ ] All file paths converted to bmad/-relative format
- [ ] All file paths converted to {bmad_folder}/-relative format
- [ ] NO {config_source} variables in web bundle
- [ ] NO {project-root} prefixes in paths
- [ ] Instructions path listed correctly

View File

@@ -1,7 +1,7 @@
# Build Workflow - Workflow Builder Instructions
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: {project-root}/bmad/bmb/workflows/create-workflow/workflow.yaml</critical>
<critical>The workflow execution engine is governed by: {project-root}/{bmad_folder}/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: {project-root}/{bmad_folder}/bmb/workflows/create-workflow/workflow.yaml</critical>
<critical>You MUST fully understand the workflow creation guide at: {workflow_creation_guide}</critical>
<critical>Study the guide thoroughly to follow ALL conventions for optimal human-AI collaboration</critical>
<critical>Communicate in {communication_language} throughout the workflow creation process</critical>
@@ -13,7 +13,7 @@
<action if="user_response == 'y' or user_response == 'yes'">
Invoke brainstorming workflow to explore ideas and design concepts:
- Workflow: {project-root}/bmad/core/workflows/brainstorming/workflow.yaml
- Workflow: {project-root}/{bmad_folder}/core/workflows/brainstorming/workflow.yaml
- Context data: {installed_path}/brainstorm-context.md
- Purpose: Generate creative workflow ideas, explore different approaches, and clarify requirements
@@ -255,7 +255,7 @@ Include:
```yaml
# Critical variables from config
config_source: '{project-root}/bmad/{{target_module}}/config.yaml'
config_source: '{project-root}/{bmad_folder}/{{target_module}}/config.yaml'
output_folder: '{config_source}:output_folder'
user_name: '{config_source}:user_name'
communication_language: '{config_source}:communication_language'
@@ -277,13 +277,13 @@ name: 'workflow-name'
description: 'Clear purpose statement'
# Paths
installed_path: '{project-root}/bmad/module/workflows/name'
installed_path: '{project-root}/{bmad_folder}/module/workflows/name'
template: '{installed_path}/template.md'
instructions: '{installed_path}/instructions.md'
validation: '{installed_path}/checklist.md'
# Critical variables from config
config_source: '{project-root}/bmad/module/config.yaml'
config_source: '{project-root}/{bmad_folder}/module/config.yaml'
output_folder: '{config_source}:output_folder'
user_name: '{config_source}:user_name'
communication_language: '{config_source}:communication_language'
@@ -314,7 +314,7 @@ Load and use the template at: {template_instructions}
Generate the instructions.md file following the workflow creation guide:
1. ALWAYS include critical headers:
- Workflow engine reference: {project-root}/bmad/core/tasks/workflow.xml
- Workflow engine reference: {project-root}/{bmad_folder}/core/tasks/workflow.xml
- workflow.yaml reference: must be loaded and processed
2. Structure with <workflow> tags containing all steps
@@ -328,7 +328,7 @@ Generate the instructions.md file following the workflow creation guide:
4. Use proper XML tags from guide:
- Execution: <action>, <check>, <ask>, <goto>, <invoke-workflow>
- Output: <template-output>, <invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>, <critical>, <example>
- Output: <template-output>, <invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>, <critical>, <example>
- Flow: <loop>, <break>, <continue>
5. Best practices from guide:
@@ -616,15 +616,15 @@ If yes:
- Web bundles are self-contained and cannot use config_source variables
- All files must be explicitly listed in web_bundle_files
- File paths use bmad/ root (not {project-root})
- File paths use {bmad_folder}/ root (not {project-root})
<action>Configure web_bundle section in workflow.yaml:</action>
1. Copy core workflow metadata (name, description, author)
2. Convert all file paths to bmad/-relative paths:
2. Convert all file paths to {bmad_folder}/-relative paths:
- Remove {project-root}/ prefix
- Remove {config_source} references (use hardcoded values)
- Example: "{project-root}/bmad/bmm/workflows/x" → "bmad/bmm/workflows/x"
- Example: "{project-root}/{bmad_folder}/bmm/workflows/x" → "{bmad_folder}/bmm/workflows/x"
3. List ALL referenced files by scanning:
@@ -642,8 +642,8 @@ If yes:
**Critical: Workflow Dependencies**
- If instructions call another workflow, that workflow's yaml MUST be in web_bundle_files
- Example: `<invoke-workflow>{project-root}/bmad/core/workflows/x/workflow.yaml</invoke-workflow>`
→ Add "bmad/core/workflows/x/workflow.yaml" to web_bundle_files
- Example: `<invoke-workflow>{project-root}/{bmad_folder}/core/workflows/x/workflow.yaml</invoke-workflow>`
→ Add "{bmad_folder}/core/workflows/x/workflow.yaml" to web_bundle_files
4. Create web_bundle_files array with complete list
@@ -654,24 +654,24 @@ web_bundle:
name: '{workflow_name}'
description: '{workflow_description}'
author: '{author}'
instructions: 'bmad/{module}/workflows/{workflow}/instructions.md'
validation: 'bmad/{module}/workflows/{workflow}/checklist.md'
template: 'bmad/{module}/workflows/{workflow}/template.md'
instructions: '{bmad_folder}/{module}/workflows/{workflow}/instructions.md'
validation: '{bmad_folder}/{module}/workflows/{workflow}/checklist.md'
template: '{bmad_folder}/{module}/workflows/{workflow}/template.md'
# Any data files (no config_source)
data_file: 'bmad/{module}/workflows/{workflow}/data.csv'
data_file: '{bmad_folder}/{module}/workflows/{workflow}/data.csv'
web_bundle_files:
- 'bmad/{module}/workflows/{workflow}/instructions.md'
- 'bmad/{module}/workflows/{workflow}/checklist.md'
- 'bmad/{module}/workflows/{workflow}/template.md'
- 'bmad/{module}/workflows/{workflow}/data.csv'
- '{bmad_folder}/{module}/workflows/{workflow}/instructions.md'
- '{bmad_folder}/{module}/workflows/{workflow}/checklist.md'
- '{bmad_folder}/{module}/workflows/{workflow}/template.md'
- '{bmad_folder}/{module}/workflows/{workflow}/data.csv'
# Add every single file referenced anywhere
# CRITICAL: If this workflow invokes other workflows, use existing_workflows
# This signals the bundler to recursively include those workflows' web_bundles
existing_workflows:
- workflow_variable_name: 'bmad/path/to/workflow.yaml'
- workflow_variable_name: '{bmad_folder}/path/to/workflow.yaml'
```
**Example with existing_workflows:**
@@ -681,14 +681,14 @@ web_bundle:
name: 'brainstorm-game'
description: 'Game brainstorming with CIS workflow'
author: 'BMad'
instructions: 'bmad/bmm/workflows/brainstorm-game/instructions.md'
instructions: '{bmad_folder}/bmm/workflows/brainstorm-game/instructions.md'
template: false
web_bundle_files:
- 'bmad/bmm/workflows/brainstorm-game/instructions.md'
- 'bmad/mmm/workflows/brainstorm-game/game-context.md'
- 'bmad/core/workflows/brainstorming/workflow.yaml'
- '{bmad_folder}/bmm/workflows/brainstorm-game/instructions.md'
- '{bmad_folder}/mmm/workflows/brainstorm-game/game-context.md'
- '{bmad_folder}/core/workflows/brainstorming/workflow.yaml'
existing_workflows:
- core_brainstorming: 'bmad/core/workflows/brainstorming/workflow.yaml'
- core_brainstorming: '{bmad_folder}/core/workflows/brainstorming/workflow.yaml'
```
**What existing_workflows does:**
@@ -696,13 +696,13 @@ web_bundle:
- Tells the bundler this workflow invokes another workflow
- Bundler recursively includes the invoked workflow's entire web_bundle
- Essential for meta-workflows that orchestrate other workflows
- Maps workflow variable names to their bmad/-relative paths
- Maps workflow variable names to their {bmad_folder}/-relative paths
<action>Validate web bundle completeness:</action>
- Ensure no {config_source} variables remain
- Verify all file paths are listed
- Check that paths are bmad/-relative
- Check that paths are {bmad_folder}/-relative
- If workflow uses <invoke-workflow>, add to existing_workflows
<template-output>web_bundle_config</template-output>

View File

@@ -25,7 +25,7 @@ Create a folder with these files:
# workflow.yaml (REQUIRED)
name: 'my-workflow'
description: 'What this workflow does'
installed_path: '{project-root}/bmad/module/workflows/my-workflow'
installed_path: '{project-root}/{bmad_folder}/module/workflows/my-workflow'
template: '{installed_path}/template.md'
instructions: '{installed_path}/instructions.md'
default_output_file: '{output_folder}/output.md'
@@ -44,7 +44,7 @@ standalone: true
```markdown
# instructions.md
<critical>The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml</critical>
<critical>The workflow execution engine is governed by: {project_root}/{bmad_folder}/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: workflow.yaml</critical>
<workflow>
@@ -61,13 +61,13 @@ That's it! To execute, tell the BMAD agent: `workflow path/to/my-workflow/`
### Tasks vs Workflows
| Aspect | Task | Workflow |
| -------------- | ------------------ | ----------------------- |
| **Purpose** | Single operation | Multi-step process |
| **Format** | XML | Folder with YAML config |
| **Location** | `/src/core/tasks/` | `/bmad/*/workflows/` |
| **User Input** | Minimal | Extensive |
| **Output** | Variable | Usually documents |
| Aspect | Task | Workflow |
| -------------- | ------------------ | ----------------------------- |
| **Purpose** | Single operation | Multi-step process |
| **Format** | XML | Folder with YAML config |
| **Location** | `/src/core/tasks/` | `/{bmad_folder}/*/workflows/` |
| **User Input** | Minimal | Extensive |
| **Output** | Variable | Usually documents |
### Workflow Types
@@ -104,7 +104,7 @@ name: 'workflow-name'
description: 'Clear purpose statement'
# Paths
installed_path: '{project-root}/bmad/module/workflows/name'
installed_path: '{project-root}/{bmad_folder}/module/workflows/name'
template: '{installed_path}/template.md' # or false
instructions: '{installed_path}/instructions.md' # or false
validation: '{installed_path}/checklist.md' # optional
@@ -641,7 +641,7 @@ the technology stack recommendations. Please choose: web, mobile, or desktop.</a
```markdown
# instructions.md
<critical>The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml</critical>
<critical>The workflow execution engine is governed by: {project_root}/{bmad_folder}/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: workflow.yaml</critical>
<workflow>
@@ -855,7 +855,7 @@ _Generated on {{date}}_
**Output:**
- `<template-output>` - Save checkpoint
- `<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>` - Trigger AI enhancement
- `<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>` - Trigger AI enhancement
- `<critical>` - Important info
- `<example>` - Show example
@@ -904,7 +904,7 @@ _Generated on {{date}}_
<step n="2" goal="Define requirements">
Create functional and non-functional requirements.
<template-output>requirements</template-output>
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
<invoke-task halt="true">{project-root}/{bmad_folder}/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="3" goal="Validate">
@@ -1194,7 +1194,7 @@ Web bundles allow workflows to be deployed as self-contained packages for web en
1. **Self-Contained**: No external dependencies
2. **No Config Variables**: Cannot use `{config_source}` references
3. **Complete File List**: Every referenced file must be listed
4. **Relative Paths**: Use `bmad/` root paths (no `{project-root}`)
4. **Relative Paths**: Use `{bmad_folder}/` root paths (no `{project-root}`)
### Creating a Web Bundle
@@ -1206,20 +1206,20 @@ web_bundle:
description: 'Workflow description'
author: 'Your Name'
# Core files (bmad/-relative paths)
instructions: 'bmad/module/workflows/workflow/instructions.md'
validation: 'bmad/module/workflows/workflow/checklist.md'
template: 'bmad/module/workflows/workflow/template.md'
# Core files ({bmad_folder}/-relative paths)
instructions: '{bmad_folder}/module/workflows/workflow/instructions.md'
validation: '{bmad_folder}/module/workflows/workflow/checklist.md'
template: '{bmad_folder}/module/workflows/workflow/template.md'
# Data files (no config_source allowed)
data_file: 'bmad/module/workflows/workflow/data.csv'
data_file: '{bmad_folder}/module/workflows/workflow/data.csv'
# Complete file list - CRITICAL!
web_bundle_files:
- 'bmad/module/workflows/workflow/instructions.md'
- 'bmad/module/workflows/workflow/checklist.md'
- 'bmad/module/workflows/workflow/template.md'
- 'bmad/module/workflows/workflow/data.csv'
- '{bmad_folder}/module/workflows/workflow/instructions.md'
- '{bmad_folder}/module/workflows/workflow/checklist.md'
- '{bmad_folder}/module/workflows/workflow/template.md'
- '{bmad_folder}/module/workflows/workflow/data.csv'
# Include ALL referenced files
```
@@ -1227,7 +1227,7 @@ web_bundle:
1. **Remove Config Dependencies**:
- Replace `{config_source}:variable` with hardcoded values
- Convert `{project-root}/bmad/` to `bmad/`
- Convert `{project-root}/{bmad_folder}/` to `{bmad_folder}/`
2. **Inventory All Files**:
- Scan instructions.md for file references
@@ -1236,7 +1236,7 @@ web_bundle:
3. **Test Completeness**:
- Ensure no missing file references
- Verify all paths are relative to bmad/
- Verify all paths are relative to {bmad_folder}/
### Example: Complete Web Bundle
@@ -1246,37 +1246,37 @@ web_bundle:
description: 'Requirements analysis workflow'
author: 'BMad Team'
instructions: 'bmad/bmm/workflows/analyze-requirements/instructions.md'
validation: 'bmad/bmm/workflows/analyze-requirements/checklist.md'
template: 'bmad/bmm/workflows/analyze-requirements/template.md'
instructions: '{bmad_folder}/bmm/workflows/analyze-requirements/instructions.md'
validation: '{bmad_folder}/bmm/workflows/analyze-requirements/checklist.md'
template: '{bmad_folder}/bmm/workflows/analyze-requirements/template.md'
# Data files
techniques_data: 'bmad/bmm/workflows/analyze-requirements/techniques.csv'
patterns_data: 'bmad/bmm/workflows/analyze-requirements/patterns.json'
techniques_data: '{bmad_folder}/bmm/workflows/analyze-requirements/techniques.csv'
patterns_data: '{bmad_folder}/bmm/workflows/analyze-requirements/patterns.json'
# Sub-workflow reference
validation_workflow: 'bmad/bmm/workflows/validate-requirements/workflow.yaml'
validation_workflow: '{bmad_folder}/bmm/workflows/validate-requirements/workflow.yaml'
standalone: true
web_bundle_files:
# Core workflow files
- 'bmad/bmm/workflows/analyze-requirements/instructions.md'
- 'bmad/bmm/workflows/analyze-requirements/checklist.md'
- 'bmad/bmm/workflows/analyze-requirements/template.md'
- '{bmad_folder}/bmm/workflows/analyze-requirements/instructions.md'
- '{bmad_folder}/bmm/workflows/analyze-requirements/checklist.md'
- '{bmad_folder}/bmm/workflows/analyze-requirements/template.md'
# Data files
- 'bmad/bmm/workflows/analyze-requirements/techniques.csv'
- 'bmad/bmm/workflows/analyze-requirements/patterns.json'
- '{bmad_folder}/bmm/workflows/analyze-requirements/techniques.csv'
- '{bmad_folder}/bmm/workflows/analyze-requirements/patterns.json'
# Sub-workflow and its files
- 'bmad/bmm/workflows/validate-requirements/workflow.yaml'
- 'bmad/bmm/workflows/validate-requirements/instructions.md'
- 'bmad/bmm/workflows/validate-requirements/checklist.md'
- '{bmad_folder}/bmm/workflows/validate-requirements/workflow.yaml'
- '{bmad_folder}/bmm/workflows/validate-requirements/instructions.md'
- '{bmad_folder}/bmm/workflows/validate-requirements/checklist.md'
# Shared templates referenced in instructions
- 'bmad/bmm/templates/requirement-item.md'
- 'bmad/bmm/templates/validation-criteria.md'
- '{bmad_folder}/bmm/templates/requirement-item.md'
- '{bmad_folder}/bmm/templates/validation-criteria.md'
```
## Troubleshooting
@@ -1305,4 +1305,4 @@ web_bundle:
_For implementation details, see:_
- `/src/core/tasks/workflow.xml` - Execution engine
- `/bmad/bmm/workflows/` - Production examples
- `/{bmad_folder}/bmm/workflows/` - Production examples

View File

@@ -1,7 +1,7 @@
# PRD Workflow Instructions
<critical>The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: {project-related}/bmad/{module-code}/workflows/{workflow}/workflow.yaml</critical>
<critical>The workflow execution engine is governed by: {project-root}/{bmad_folder}/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: {project-related}/{bmad_folder}/{module-code}/workflows/{workflow}/workflow.yaml</critical>
<critical>Communicate in {communication_language} throughout the workflow process</critical>
<workflow>

View File

@@ -20,7 +20,7 @@ recommended_inputs: # optional, can be omitted
- example_input: "{project-root}/{path/to/file.md}"
# Module path and component files
installed_path: "{project-root}/bmad/{module-code}/workflows/{workflow-code}"
installed_path: "{project-root}/{bmad_folder}/{module-code}/workflows/{workflow-code}"
template: "{installed_path}/template.md" # optional, can be omitted
instructions: "{installed_path}/instructions.md" # optional, can be omitted
validation: "{installed_path}/checklist.md" # optional, can be omitted
@@ -43,23 +43,23 @@ web_bundle: #optional, can be omitted
description: "{WORKFLOW_DESCRIPTION}"
author: "BMad"
# Core workflow files (paths relative to bmad/ root)
instructions: "bmad/{module-code}/workflows/{workflow-code}/instructions.md"
validation: "bmad/{module-code}/workflows/{workflow-code}/checklist.md"
template: "bmad/{module-code}/workflows/{workflow-code}/template.md" # if document workflow
# Core workflow files (paths relative to {bmad_folder}/ root)
instructions: "{bmad_folder}/{module-code}/workflows/{workflow-code}/instructions.md"
validation: "{bmad_folder}/{module-code}/workflows/{workflow-code}/checklist.md"
template: "{bmad_folder}/{module-code}/workflows/{workflow-code}/template.md" # if document workflow
# Reference any data files or additional workflows (no config_source allowed)
# brain_techniques: "bmad/{module-code}/workflows/{workflow-code}/data-file.csv"
# sub_workflow: "bmad/{module-code}/workflows/other-workflow/workflow.yaml"
# brain_techniques: "{bmad_folder}/{module-code}/workflows/{workflow-code}/data-file.csv"
# sub_workflow: "{bmad_folder}/{module-code}/workflows/other-workflow/workflow.yaml"
# CRITICAL: List ALL files used by this workflow
# This includes instructions, validation, templates, data files,
# and any files referenced within those files
web_bundle_files:
- "bmad/{module-code}/workflows/{workflow-code}/instructions.md"
- "bmad/{module-code}/workflows/{workflow-code}/checklist.md"
- "bmad/{module-code}/workflows/{workflow-code}/template.md"
- "{bmad_folder}/{module-code}/workflows/{workflow-code}/instructions.md"
- "{bmad_folder}/{module-code}/workflows/{workflow-code}/checklist.md"
- "{bmad_folder}/{module-code}/workflows/{workflow-code}/template.md"
# Add ALL referenced files here - examine instructions.md and template.md
# for any file paths and include them all
# - "bmad/{module-code}/workflows/{workflow-code}/data/example.csv"
# - "bmad/{module-code}/templates/shared-template.md"
# - "{bmad_folder}/{module-code}/workflows/{workflow-code}/data/example.csv"
# - "{bmad_folder}/{module-code}/templates/shared-template.md"

View File

@@ -4,7 +4,7 @@ description: "Interactive workflow builder that guides creation of new BMAD work
author: "BMad Builder"
# Critical variables
config_source: "{project-root}/bmad/bmb/config.yaml"
config_source: "{project-root}/{bmad_folder}/bmb/config.yaml"
custom_workflow_location: "{config_source}:custom_workflow_location"
user_name: "{config_source}:user_name"
communication_language: "{config_source}:communication_language"
@@ -17,11 +17,11 @@ template_checklist: "{workflow_template_path}/checklist.md"
# Optional input docs
recommended_inputs:
- existing_workflows: "{project-root}/bmad/*/workflows/"
- bmm_workflows: "{project-root}/bmad/bmm/workflows/"
- existing_workflows: "{project-root}/{bmad_folder}/*/workflows/"
- bmm_workflows: "{project-root}/{bmad_folder}/bmm/workflows/"
# Module path and component files
installed_path: "{project-root}/bmad/bmb/workflows/create-workflow"
installed_path: "{project-root}/{bmad_folder}/bmb/workflows/create-workflow"
template: false # This is an action workflow - no template needed
instructions: "{installed_path}/instructions.md"
validation: "{installed_path}/checklist.md"
@@ -33,7 +33,7 @@ workflow_template_path: "{installed_path}/workflow-template"
# Output configuration - Creates the new workflow folder with all files
# If workflow belongs to a module: Save to module's workflows folder
# If standalone workflow: Save to custom_workflow_location/{{workflow_name}}
module_output_folder: "{project-root}/bmad/{{target_module}}/workflows/{{workflow_name}}"
module_output_folder: "{project-root}/{bmad_folder}/{{target_module}}/workflows/{{workflow_name}}"
standalone_output_folder: "{custom_workflow_location}/{{workflow_name}}"
standalone: true