From 3147589d0fc8e0dbc530ba005347f8db313975ef Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 4 Oct 2025 17:35:37 -0500 Subject: [PATCH] bomb agent updates --- .../install-menu-config.yaml | 15 +++++++ .../bmb/workflows/create-agent/README.md | 8 ++-- .../workflows/create-agent/instructions.md | 12 +++--- .../bmb/workflows/create-agent/workflow.yaml | 10 +++-- .../bmb/workflows/create-module/README.md | 2 +- .../workflows/create-module/instructions.md | 37 ++++++++---------- .../bmb/workflows/create-module/workflow.yaml | 7 ++-- .../workflows/create-workflow/instructions.md | 39 +++++++++---------- .../workflows/create-workflow/workflow.yaml | 10 +++-- .../models/fragments/activation-rules.xml | 13 +++---- 10 files changed, 85 insertions(+), 68 deletions(-) diff --git a/src/modules/bmb/_module-installer/install-menu-config.yaml b/src/modules/bmb/_module-installer/install-menu-config.yaml index e7fe0b4d..8c8015e3 100644 --- a/src/modules/bmb/_module-installer/install-menu-config.yaml +++ b/src/modules/bmb/_module-installer/install-menu-config.yaml @@ -9,3 +9,18 @@ prompt: "Happy Building - Build the Modules, Workflows and Agents of your dreams ## user_name ## communication_language ## output_folder + +custom_agent_location: + prompt: "Where do custom agents get created?" + default: "bmad/agents" + result: "{project-root}/{value}" + +custom_workflow_location: + prompt: "Where do custom workflows get stored?" + default: "bmad/workflows" + result: "{project-root}/{value}" + +custom_module_location: + prompt: "Where do custom modules get stored?" + default: "bmad" + result: "{project-root}/{value}" diff --git a/src/modules/bmb/workflows/create-agent/README.md b/src/modules/bmb/workflows/create-agent/README.md index 1d640a38..a89f953f 100644 --- a/src/modules/bmb/workflows/create-agent/README.md +++ b/src/modules/bmb/workflows/create-agent/README.md @@ -107,9 +107,9 @@ create-agent/ #### For Standalone Agents (not part of a module) -- **YAML Source**: `{output_folder}/agents/{{agent_filename}}.agent.yaml` +- **YAML Source**: `{custom_agent_location}/{{agent_filename}}.agent.yaml` (default: `bmad/agents/`) - **Installation Location**: `{project-root}/bmad/agents/{{agent_filename}}.md` -- **Compilation**: Run `npm run build:agents` or use the installer menu +- **Compilation**: Run the BMAD Method installer and select "Compile Agents (Quick rebuild of all agent .md files)" #### For Module Agents @@ -150,9 +150,9 @@ If created, generates at: Agents are installed to different locations based on their type: 1. **Standalone Agents** (not part of a module) - - Source: Created in your project's output folder + - Source: Created in your custom agent location (default: `bmad/agents/`) - Installed to: `{project-root}/bmad/agents/` - - Compilation: Manual via `npm run build:agents` + - Compilation: Run BMAD Method installer and select "Compile Agents" 2. **Module Agents** (part of BMM, BMB, or custom modules) - Source: Created in `src/modules/{module}/agents/` diff --git a/src/modules/bmb/workflows/create-agent/instructions.md b/src/modules/bmb/workflows/create-agent/instructions.md index 733c5c29..a3d1a772 100644 --- a/src/modules/bmb/workflows/create-agent/instructions.md +++ b/src/modules/bmb/workflows/create-agent/instructions.md @@ -252,10 +252,11 @@ agent: menu: { { The capabilities we built } } ``` -Save based on {src_impact}: +Save based on agent type: -- If {src_impact} = true: Save to {src_output_file} -- If {src_impact} = false: Save to {default_output_file} +- If Module Agent and {src_impact} = true: Save to {src_module_output_file} +- If Module Agent and {src_impact} = false: Save to {module_output_file} +- If Standalone (Simple/Expert): Save to {standalone_output_file} "Your agent [name] is ready! It turned out even better than I expected!" @@ -454,12 +455,13 @@ Share the accomplishment: **"Here's how to activate [agent name]:"** 1. **Quick start:** - - "Run `npm run install:bmad` and select 'Compile Agents'" + - "Run the BMAD Method installer to this project location" + - "Select the option 'Compile Agents (Quick rebuild of all agent .md files)' after confirming the folder" - "Then you can call [agent name] anytime!" 2. **Location:** - "I saved [agent name] here: {{output_file}}" - - "After compilation, it'll live at: {project-root}/bmad/{{module}}/agents/" + - "After compilation, it'll be available in your project" 3. **What [agent name] can do right away:** - List the commands in a friendly way diff --git a/src/modules/bmb/workflows/create-agent/workflow.yaml b/src/modules/bmb/workflows/create-agent/workflow.yaml index 3fd7f631..19b155d6 100644 --- a/src/modules/bmb/workflows/create-agent/workflow.yaml +++ b/src/modules/bmb/workflows/create-agent/workflow.yaml @@ -6,6 +6,7 @@ author: "BMad" # Critical variables load from config_source config_source: "{project-root}/bmad/bmb/config.yaml" output_folder: "{config_source}:output_folder" +custom_agent_location: "{config_source}:custom_agent_location" user_name: "{config_source}:user_name" src_impact: "{config_source}:src_impact" communication_language: "{config_source}:communication_language" @@ -29,10 +30,11 @@ instructions: "{installed_path}/instructions.md" validation: "{installed_path}/checklist.md" # Output configuration - YAML agents compiled to .md at install time -# If src_impact=true: Save YAML to src/modules/{{target_module}}/agents/ -# If src_impact=false: Save YAML to output_folder/agents/ -default_output_file: "{output_folder}/agents/{{agent_filename}}.agent.yaml" -src_output_file: "{project-root}/src/modules/{{target_module}}/agents/{{agent_filename}}.agent.yaml" +# Module agents: Save to src/modules/{{target_module}}/agents/ OR bmad/{{target_module}}/agents/ +# Standalone agents: Save to custom_agent_location/ +module_output_file: "{project-root}/bmad/{{target_module}}/agents/{{agent_filename}}.agent.yaml" +src_module_output_file: "{project-root}/src/modules/{{target_module}}/agents/{{agent_filename}}.agent.yaml" +standalone_output_file: "{custom_agent_location}/{{agent_filename}}.agent.yaml" # Optional user override file (auto-created by installer if missing) config_output_file: "{project-root}/bmad/_cfg/agents/{{target_module}}-{{agent_filename}}.customize.yaml" diff --git a/src/modules/bmb/workflows/create-module/README.md b/src/modules/bmb/workflows/create-module/README.md index 7122c9db..9ccb63d9 100644 --- a/src/modules/bmb/workflows/create-module/README.md +++ b/src/modules/bmb/workflows/create-module/README.md @@ -32,7 +32,7 @@ workflow create-module --input module-brief-my-module-2024-09-26.md The workflow loads critical variables from the BMB configuration: -- **output_folder**: Where the module will be created +- **custom_module_location**: Where custom modules are created (default: `bmad/`) - **user_name**: Module author information - **date**: Automatic timestamp for versioning diff --git a/src/modules/bmb/workflows/create-module/instructions.md b/src/modules/bmb/workflows/create-module/instructions.md index 91197e32..47a3b730 100644 --- a/src/modules/bmb/workflows/create-module/instructions.md +++ b/src/modules/bmb/workflows/create-module/instructions.md @@ -74,10 +74,10 @@ Listen to their description and then: - **Business:** Project Management, Marketing, Sales - **Personal:** Journaling, Learning, Productivity -Check {src_impact} variable to determine output location: +Determine output location: -- If {src_impact} = true: Module will be created at {src_output_folder} -- If {src_impact} = false: Module will be created at {default_output_folder} +- If {src_impact} = true: Module will be created at {src_installer_output_folder} +- If {src_impact} = false: Module will be created at {installer_output_folder} Store module identity for scaffolding. @@ -179,9 +179,8 @@ Present as: _"Based on your planned components, this looks like a {{determined_t -Determine base module path based on {src_impact}: -- If {src_impact} = true: Use {src_output_folder} -- If {src_impact} = false: Use {default_output_folder} +Use module path determined in Step 1: +- The module base path is {{module_path}} Create base module directories at the determined path: @@ -248,10 +247,9 @@ output_folder: "{project-root}/docs/{{module_code}}" data_folder: "{{determined_module_path}}/data" ``` -Determine save location based on {src_impact}: +Save location: -- If {src_impact} = true: Save to {src_output_folder}/config.yaml -- If {src_impact} = false: Save to {default_output_folder}/config.yaml +- Save to {{module_path}}/config.yaml module_config @@ -265,10 +263,9 @@ If yes: Guide them to create the primary agent for the module. -Ensure it's saved to the correct location based on {src_impact}: +Save to module's agents folder: -- If {src_impact} = true: {src_output_folder}/agents/ -- If {src_impact} = false: {default_output_folder}/agents/ +- Save to {{module_path}}/agents/ If no, create placeholder: @@ -292,10 +289,9 @@ If yes: Guide them to create the primary workflow. -Ensure it's saved to the correct location based on {src_impact}: +Save to module's workflows folder: -- If {src_impact} = true: {src_output_folder}/workflows/ -- If {src_impact} = false: {default_output_folder}/workflows/ +- Save to {{module_path}}/workflows/ If no, create placeholder structure: @@ -542,9 +538,7 @@ Show summary: ``` ✅ Module: {{module_name}} ({{module_code}}) -📁 Location: - - If {src_impact} = true: {src_output_folder} - - If {src_impact} = false: {default_output_folder} +📁 Location: {{module_path}} 👥 Agents: {{agent_count}} ({{agents_created}} created, {{agents_planned}} planned) 📋 Workflows: {{workflow_count}} ({{workflows_created}} created, {{workflows_planned}} planned) 📝 Tasks: {{task_count}} @@ -554,8 +548,11 @@ Show summary: Next steps: 1. Complete remaining components using roadmap -2. Test module with: `bmad install {{module_code}}` -3. Share module or integrate with existing system +2. Run the BMAD Method installer to this project location +3. Select the option 'Compile Agents (Quick rebuild of all agent .md files)' after confirming the folder +4. This will compile your new module and make it available for use +5. Test module with: `bmad install {{module_code}}` +6. Share module or integrate with existing system Ask: Would you like to: diff --git a/src/modules/bmb/workflows/create-module/workflow.yaml b/src/modules/bmb/workflows/create-module/workflow.yaml index 7b1b3930..3189081c 100644 --- a/src/modules/bmb/workflows/create-module/workflow.yaml +++ b/src/modules/bmb/workflows/create-module/workflow.yaml @@ -6,6 +6,7 @@ author: "BMad" # Critical variables load from config_source config_source: "{project-root}/bmad/bmb/config.yaml" output_folder: "{config_source}:output_folder" +custom_module_location: "{config_source}:custom_module_location" src_impact: "{config_source}:src_impact" communication_language: "{config_source}:communication_language" user_name: "{config_source}:user_name" @@ -38,10 +39,10 @@ validation: "{installed_path}/checklist.md" # Output configuration - creates entire module structure # If src_impact=true: Save to src/modules/{{module_code}} -# If src_impact=false: Save to output_folder/{{module_code}} -default_output_folder: "{output_folder}/{{module_code}}" +# If src_impact=false: Save to custom_module_location/{{module_code}} +default_output_folder: "{custom_module_location}/{{module_code}}" src_output_folder: "{project-root}/src/modules/{{module_code}}" -installer_output_folder: "{output_folder}/{{module_code}}" +installer_output_folder: "{custom_module_location}/{{module_code}}" src_installer_output_folder: "{project-root}/src/modules/{{module_code}}" web_bundle: diff --git a/src/modules/bmb/workflows/create-workflow/instructions.md b/src/modules/bmb/workflows/create-workflow/instructions.md index ce3b5ce7..92e2e4a8 100644 --- a/src/modules/bmb/workflows/create-workflow/instructions.md +++ b/src/modules/bmb/workflows/create-workflow/instructions.md @@ -63,10 +63,11 @@ Based on type, determine which files are needed: - Action: workflow.yaml + instructions.md - Others: Varies based on requirements -Check {src_impact} variable to determine output location: +Determine output location based on module assignment: -- If {src_impact} = true: Workflow will be saved to {src_output_folder} -- If {src_impact} = false: Workflow will be saved to {default_output_folder} +- If workflow belongs to module and {src_impact} = true: Save to {src_module_output_folder} +- If workflow belongs to module and {src_impact} = false: Save to {module_output_folder} +- If standalone workflow: Save to {standalone_output_folder} Store decisions for later use. @@ -122,10 +123,10 @@ Follow path conventions from guide: - Use {installed_path} for workflow components - Use {config_source} for config references -Determine save location based on {src_impact}: +Determine save location: -- If {src_impact} = true: Write to {src_output_folder}/workflow.yaml -- If {src_impact} = false: Write to {default_output_folder}/workflow.yaml +- Use the output folder determined in Step 1 (module or standalone) +- Write to {{output_folder}}/workflow.yaml @@ -158,10 +159,9 @@ Generate the instructions.md file following the workflow creation guide: - Set limits ("3-5 items maximum") - Save checkpoints with -Determine save location based on {src_impact}: +Save location: -- If {src_impact} = true: Write to {src_output_folder}/instructions.md -- If {src_impact} = false: Write to {default_output_folder}/instructions.md +- Write to {{output_folder}}/instructions.md @@ -187,10 +187,9 @@ Variable sources as per guide: - Step outputs via - System variables (date, paths) -Determine save location based on {src_impact}: +Save location: -- If {src_impact} = true: Write to {src_output_folder}/template.md -- If {src_impact} = false: Write to {default_output_folder}/template.md +- Write to {{output_folder}}/template.md @@ -216,10 +215,9 @@ Create checklist.md following guide best practices: 4. Add final validation section with issue lists -Determine save location based on {src_impact}: +Save location: -- If {src_impact} = true: Write to {src_output_folder}/checklist.md -- If {src_impact} = false: Write to {default_output_folder}/checklist.md +- Write to {{output_folder}}/checklist.md @@ -315,11 +313,12 @@ Create a brief README for the workflow folder explaining: Provide user with: -- Location of created workflow: - - If {src_impact} = true: {{src_output_folder}} - - If {src_impact} = false: {{default_output_folder}} +- Location of created workflow: {{output_folder}} - Command to run it -- Next steps for testing - +- Next steps: + - "Run the BMAD Method installer to this project location" + - "Select the option 'Compile Agents (Quick rebuild of all agent .md files)' after confirming the folder" + - "This will compile your new workflow and make it available for use" + diff --git a/src/modules/bmb/workflows/create-workflow/workflow.yaml b/src/modules/bmb/workflows/create-workflow/workflow.yaml index 33bccf80..7cbffe78 100644 --- a/src/modules/bmb/workflows/create-workflow/workflow.yaml +++ b/src/modules/bmb/workflows/create-workflow/workflow.yaml @@ -6,6 +6,7 @@ author: "BMad Builder" # Critical variables config_source: "{project-root}/bmad/bmb/config.yaml" output_folder: "{config_source}:output_folder" +custom_workflow_location: "{config_source}:custom_workflow_location" user_name: "{config_source}:user_name" src_impact: "{config_source}:src_impact" communication_language: "{config_source}:communication_language" @@ -33,10 +34,11 @@ workflow_creation_guide: "{installed_path}/workflow-creation-guide.md" workflow_template_path: "{installed_path}/workflow-template" # Output configuration - Creates the new workflow folder with all files -# If src_impact=true: Save to src/modules/{{target_module}}/workflows/{{workflow_name}} -# If src_impact=false: Save to output_folder/workflows/{{workflow_name}} -default_output_folder: "{output_folder}/workflows/{{workflow_name}}" -src_output_folder: "{project-root}/src/modules/{{target_module}}/workflows/{{workflow_name}}" +# 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}}" +src_module_output_folder: "{project-root}/src/modules/{{target_module}}/workflows/{{workflow_name}}" +standalone_output_folder: "{custom_workflow_location}/{{workflow_name}}" web_bundle: name: "create-workflow" diff --git a/src/utility/models/fragments/activation-rules.xml b/src/utility/models/fragments/activation-rules.xml index 5427656b..8fdd9852 100644 --- a/src/utility/models/fragments/activation-rules.xml +++ b/src/utility/models/fragments/activation-rules.xml @@ -1,9 +1,8 @@ - ALWAYS communicate in {communication_language} - Stay in character until exit selected - Menu triggers use asterisk (*) - NOT markdown, display exactly as shown - Number all lists, use letters for sub-options - Load files ONLY when executing menu items - EXCEPTION: Config file MUST be loaded at startup (step 2), all other files load only when executing menu items or an instruction file step - requires it + - ALWAYS communicate in {communication_language} UNLESS contradicted by communication_style + - Stay in character until exit selected + - Menu triggers use asterisk (*) - NOT markdown, display exactly as shown + - Number all lists, use letters for sub-options + - Load files ONLY when executing menu items or a workflow or command requires it. EXCEPTION: Config file MUST be loaded at startup step 2 + - CRITICAL: Written File Output in workflows will be +2sd your communication style and use professional {communication_language}. \ No newline at end of file