diff --git a/example-custom-content/agents/commit-poet/commit-poet.agent.yaml b/example-custom-content/agents/commit-poet/commit-poet.agent.yaml index 609eb076..5d7f20d1 100644 --- a/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +++ b/example-custom-content/agents/commit-poet/commit-poet.agent.yaml @@ -1,6 +1,6 @@ agent: metadata: - id: .bmad/agents/commit-poet/commit-poet.md + id: "{bmad_folder}/agents/commit-poet/commit-poet.md" name: "Inkwell Von Comitizen" title: "Commit Message Artisan" icon: "📜" diff --git a/example-custom-content/agents/toolsmith/toolsmith.agent.yaml b/example-custom-content/agents/toolsmith/toolsmith.agent.yaml index 03eb33ed..3c4024ce 100644 --- a/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +++ b/example-custom-content/agents/toolsmith/toolsmith.agent.yaml @@ -1,6 +1,6 @@ agent: metadata: - id: custom/agents/toolsmith/toolsmith.md + id: "{bmad_folder}/agents/toolsmith/toolsmith.md" name: Vexor title: Infernal Toolsmith + Guardian of the BMAD Forge icon: ⚒️ diff --git a/example-custom-content/workflows/quiz-master/steps/step-01-init.md b/example-custom-content/workflows/quiz-master/steps/step-01-init.md index 839fc622..c897a968 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-01-init.md +++ b/example-custom-content/workflows/quiz-master/steps/step-01-init.md @@ -3,7 +3,7 @@ name: 'step-01-init' description: 'Initialize quiz game with mode selection and category choice' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-01-init.md' @@ -66,7 +66,7 @@ To set up the quiz game by selecting game mode, choosing a category, and prepari ### 1. Welcome and Configuration Loading -Load config from {project-root}/.bmad/bmb/config.yaml to get user_name. +Load config from {project-root}/{bmad_folder}/bmb/config.yaml to get user_name. Present dramatic welcome: "🎺 _DRAMATIC MUSIC PLAYS_ 🎺 diff --git a/example-custom-content/workflows/quiz-master/steps/step-02-q1.md b/example-custom-content/workflows/quiz-master/steps/step-02-q1.md index 49e3096e..ecb86d1e 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +++ b/example-custom-content/workflows/quiz-master/steps/step-02-q1.md @@ -3,7 +3,7 @@ name: 'step-02-q1' description: 'Question 1 - Level 1 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-02-q1.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-03-q2.md b/example-custom-content/workflows/quiz-master/steps/step-03-q2.md index 170c6085..0095d973 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +++ b/example-custom-content/workflows/quiz-master/steps/step-03-q2.md @@ -3,7 +3,7 @@ name: 'step-03-q2' description: 'Question 2 - Level 2 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-03-q2.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-04-q3.md b/example-custom-content/workflows/quiz-master/steps/step-04-q3.md index fe2fce39..bec717e5 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +++ b/example-custom-content/workflows/quiz-master/steps/step-04-q3.md @@ -3,7 +3,7 @@ name: 'step-04-q3' description: 'Question 3 - Level 3 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-04-q3.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-05-q4.md b/example-custom-content/workflows/quiz-master/steps/step-05-q4.md index 12136021..d9b59db0 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +++ b/example-custom-content/workflows/quiz-master/steps/step-05-q4.md @@ -3,7 +3,7 @@ name: 'step-05-q4' description: 'Question 4 - Level 4 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-05-q4.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-06-q5.md b/example-custom-content/workflows/quiz-master/steps/step-06-q5.md index 3fee61ab..50dff4d6 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +++ b/example-custom-content/workflows/quiz-master/steps/step-06-q5.md @@ -3,7 +3,7 @@ name: 'step-06-q5' description: 'Question 5 - Level 5 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-06-q5.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-07-q6.md b/example-custom-content/workflows/quiz-master/steps/step-07-q6.md index bbd0a199..5c093ae5 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +++ b/example-custom-content/workflows/quiz-master/steps/step-07-q6.md @@ -3,7 +3,7 @@ name: 'step-07-q6' description: 'Question 6 - Level 6 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-07-q6.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-08-q7.md b/example-custom-content/workflows/quiz-master/steps/step-08-q7.md index b07f5071..f8a63e94 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +++ b/example-custom-content/workflows/quiz-master/steps/step-08-q7.md @@ -3,7 +3,7 @@ name: 'step-08-q7' description: 'Question 7 - Level 7 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-08-q7.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-09-q8.md b/example-custom-content/workflows/quiz-master/steps/step-09-q8.md index 47845b99..b5e2d7a0 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +++ b/example-custom-content/workflows/quiz-master/steps/step-09-q8.md @@ -3,7 +3,7 @@ name: 'step-09-q8' description: 'Question 8 - Level 8 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-09-q8.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-10-q9.md b/example-custom-content/workflows/quiz-master/steps/step-10-q9.md index af42c579..fb410079 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +++ b/example-custom-content/workflows/quiz-master/steps/step-10-q9.md @@ -3,7 +3,7 @@ name: 'step-10-q9' description: 'Question 9 - Level 9 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-10-q9.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-11-q10.md b/example-custom-content/workflows/quiz-master/steps/step-11-q10.md index b41bc077..8d10d4da 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +++ b/example-custom-content/workflows/quiz-master/steps/step-11-q10.md @@ -3,7 +3,7 @@ name: 'step-11-q10' description: 'Question 10 - Level 10 difficulty' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-11-q10.md' diff --git a/example-custom-content/workflows/quiz-master/steps/step-12-results.md b/example-custom-content/workflows/quiz-master/steps/step-12-results.md index 3d53037d..8f933aac 100644 --- a/example-custom-content/workflows/quiz-master/steps/step-12-results.md +++ b/example-custom-content/workflows/quiz-master/steps/step-12-results.md @@ -3,7 +3,7 @@ name: 'step-12-results' description: 'Final results and celebration' # Path Definitions -workflow_path: '{project-root}/.bmad/custom/src/workflows/quiz-master' +workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master' # File References thisStepFile: '{workflow_path}/steps/step-12-results.md' diff --git a/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md b/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md deleted file mode 100644 index 1f77bcb1..00000000 --- a/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md +++ /dev/null @@ -1,269 +0,0 @@ ---- -stepsCompleted: [1, 2, 3, 4, 5, 6, 7] ---- - -## Build Summary - -**Date:** 2025-12-04 -**Status:** Build Complete - -### Files Generated - -**Main Workflow:** - -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/workflow.md` - -**Step Files (12 total):** - -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-01-init.md` - Game setup and mode selection -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-02-q1.md` - Question 1 (Level 1) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-03-q2.md` - Question 2 (Level 2) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-04-q3.md` - Question 3 (Level 3) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-05-q4.md` - Question 4 (Level 4) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-06-q5.md` - Question 5 (Level 5) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-07-q6.md` - Question 6 (Level 6) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-08-q7.md` - Question 7 (Level 7) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-09-q8.md` - Question 8 (Level 8) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-10-q9.md` - Question 9 (Level 9) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-11-q10.md` - Question 10 (Level 10) -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/steps/step-12-results.md` - Final results and celebration - -**Templates:** - -- `/Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master/templates/csv-headers.template` - CSV column headers - -### Key Features Implemented - -1. **Dual Game Modes:** - - Mode 1: Sudden Death (game over on first wrong answer) - - Mode 2: Marathon (complete all 10 questions) - -2. **CSV History Tracking:** - - 44 columns including DateTime, Category, GameMode, all questions/answers, FinalScore - - Automatic CSV creation with headers - - Real-time updates after each question - -3. **Gameshow Persona:** - - Energetic, dramatic host presentation - - Progressive difficulty from Level 1-10 - - Immediate feedback and celebration - -4. **Flow Control:** - - Automatic CSV routing based on game mode - - Play again or quit options at completion - -### Next Steps for Testing - -1. Run the workflow: `/bmad:bmb:workflows:quiz-master` -2. Test both game modes -3. Verify CSV file creation and updates -4. Check question progression and difficulty -5. Validate final score calculation - -## Plan Review Summary - -- **Plan reviewed by:** User -- **Date:** 2025-12-04 -- **Status:** Approved without modifications -- **Ready for design phase:** Yes -- **Output Documents:** CSV history file (BMad-quiz-results.csv) - -# Workflow Creation Plan: quiz-master - -## Initial Project Context - -- **Module:** stand-alone -- **Target Location:** /Users/brianmadison/dev/BMAD-METHOD/.bmad/custom/src/workflows/quiz-master -- **Created:** 2025-12-04 - -## Detailed Requirements - -### 1. Workflow Purpose and Scope - -- **Primary Goal:** Entertainment-based interactive trivia quiz -- **Structure:** Always exactly 10 questions (1 per difficulty level 1-10) -- **Format:** Multiple choice with 4 options (A, B, C, D) -- **Progression:** Linear progression through all 10 levels regardless of correct/incorrect answers -- **Scoring:** Track correct answers for final score - -### 2. Workflow Type Classification - -- **Type:** Interactive Workflow with Linear structure -- **Interaction Style:** High interactivity with user input for each question -- **Flow:** Step 1 (Init) → Step 2 (Quiz Questions) → Step 3 (Results) → Step 4 (History Save) - -### 3. Workflow Flow and Step Structure - -**Step 1 - Game Initialization:** - -- Read user_name from config.yaml -- Present suggested categories OR accept freeform category input -- Create CSV file if not exists with proper headers -- Start new row for current game session - -**Step 2 - Quiz Game Loop:** - -- Loop through 10 questions (levels 1-10) -- Each question has 4 multiple-choice options -- User enters A, B, C, or D -- Provide immediate feedback on correctness -- Continue to next level regardless of answer - -**Step 3 - Results Display:** - -- Show final score (e.g., "You got 7 out of 10!") -- Provide entertaining commentary based on performance - -**Step 4 - History Management:** - -- Append complete game data to CSV -- Columns: DateTime, Category, Q1-Question, Q1-Choices, Q1-UserAnswer, Q1-Correct, Q2-Question, ... Q10-Correct, FinalScore - -### 4. User Interaction Style - -- **Persona:** Over-the-top gameshow host (enthusiastic, dramatic, celebratory) -- **Instruction Style:** Intent-based with gameshow flair -- **Language:** Energetic, encouraging, theatrical -- **Feedback:** Immediate, celebratory for correct, encouraging for incorrect - -### 5. Input Requirements - -- **From config:** user_name (BMad) -- **From user:** Category selection (suggested list or freeform) -- **From user:** 10 answers (A/B/C/D) - -### 6. Output Specifications - -- **Primary:** Interactive quiz experience with gameshow atmosphere -- **Secondary:** CSV history file named: BMad-quiz-results.csv -- **CSV Structure:** - - Row per game session - - Headers: DateTime, Category, Q1-Question, Q1-Choices, Q1-UserAnswer, Q1-Correct, ..., Q10-Correct, FinalScore - -### 7. Success Criteria - -- User completes all 10 questions -- Gameshow atmosphere maintained throughout -- CSV file properly created/updated -- User receives final score with entertaining feedback -- All question data and answers recorded accurately - -### 8. Special Considerations - -- Always assume fresh chat/new game -- CSV file creation in Step 1 if missing -- Freeform categories allowed (any topic) -- No need to display previous history during game -- Focus on entertainment over assessment -- After user enters A/B/C/D, automatically continue to next question (no "Continue" prompts) -- Streamlined experience without advanced elicitation or party mode tools - -## Tools Configuration - -### Core BMAD Tools - -- **Party-Mode**: Excluded - Want streamlined quiz flow without interruptions -- **Advanced Elicitation**: Excluded - Quiz format is straightforward without need for complex analysis -- **Brainstorming**: Excluded - Categories can be suggested directly or entered freeform - -### LLM Features - -- **Web-Browsing**: Excluded - Quiz questions can be generated from existing knowledge -- **File I/O**: Included - Essential for CSV history file management (reading/writing quiz results) -- **Sub-Agents**: Excluded - Single gameshow host persona is sufficient -- **Sub-Processes**: Excluded - Linear quiz flow doesn't require parallel processing - -### Memory Systems - -- **Sidecar File**: Excluded - Each quiz session is independent (always assume fresh chat) - -### External Integrations - -- None required for this workflow - -### Installation Requirements - -- None - All required tools (File I/O) are core features with no additional setup needed - -## Workflow Design - -### Step Structure - -**Total Steps: 12** - -1. Step 01 - Init: Mode selection, category choice, CSV setup -2. Steps 02-11: Individual questions (1-10) with CSV updates -3. Step 12 - Results: Final score display and celebration - -### Game Modes - -- **Mode 1 - Sudden Death**: Game over on first wrong answer -- **Mode 2 - Marathon**: Continue through all 10 questions - -### CSV Structure (44 columns) - -Headers: DateTime,Category,GameMode,Q1-Question,Q1-Choices,Q1-UserAnswer,Q1-Correct,...,Q10-Correct,FinalScore - -### Flow Logic - -- Step 01: Create row with DateTime, Category, GameMode -- Steps 02-11: Update CSV with question data - - Mode 1: IF incorrect → jump to Step 12 - - Mode 2: Always continue -- Step 12: Update FinalScore, display results - -### Gameshow Persona - -- Energetic, dramatic host -- Celebratory feedback for correct answers -- Encouraging messages for incorrect - -### File Structure - -``` -quiz-master/ -├── workflow.md -├── steps/ -│ ├── step-01-init.md -│ ├── step-02-q1.md -│ ├── ... -│ └── step-12-results.md -└── templates/ - └── csv-headers.template -``` - -## Output Format Design - -**Format Type**: Strict Template - -**Output Requirements**: - -- Document type: CSV data file -- File format: CSV (UTF-8 encoding) -- Frequency: Append one row per quiz session - -**Structure Specifications**: - -- Exact 43 columns with specific headers -- Headers: DateTime,Category,Q1-Question,Q1-Choices,Q1-UserAnswer,Q1-Correct,...,Q10-Correct,FinalScore -- Data formats: - - DateTime: ISO 8601 (YYYY-MM-DDTHH:MM:SS) - - Category: Text - - QX-Question: Text - - QX-Choices: (A)Opt1|(B)Opt2|(C)Opt3|(D)Opt4 - - QX-UserAnswer: A/B/C/D - - QX-Correct: TRUE/FALSE - - FinalScore: Number (0-10) - -**Template Information**: - -- Template source: Created based on requirements -- Template file: CSV with fixed column structure -- Placeholders: None - strict format required - -**Special Considerations**: - -- CSV commas within text must be quoted -- Newlines in questions replaced with spaces -- Headers created only if file doesn't exist -- Append mode for all subsequent quiz sessions diff --git a/example-custom-content/workflows/quiz-master/workflow.md b/example-custom-content/workflows/quiz-master/workflow.md index 5d85ef12..18136ed0 100644 --- a/example-custom-content/workflows/quiz-master/workflow.md +++ b/example-custom-content/workflows/quiz-master/workflow.md @@ -45,7 +45,7 @@ web_bundle: true ### 1. Module Configuration Loading -Load and read full config from {project-root}/.bmad/bmb/config.yaml and resolve: +Load and read full config from {project-root}/{bmad_folder}/bmb/config.yaml and resolve: - `user_name`, `output_folder`, `communication_language`, `document_output_language` diff --git a/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml b/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml index 974167fa..e0ef6754 100644 --- a/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +++ b/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml @@ -1,5 +1,6 @@ agent: metadata: + id: "{bmad_folder}/mwm/agents/cbt-coach/cbt-coach.md" name: "Dr. Alexis, M.D." title: "CBT Coach" icon: "🧠" diff --git a/example-custom-module/mwm/agents/crisis-navigator.agent.yaml b/example-custom-module/mwm/agents/crisis-navigator.agent.yaml index 21658240..920a0727 100644 --- a/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +++ b/example-custom-module/mwm/agents/crisis-navigator.agent.yaml @@ -1,5 +1,6 @@ agent: metadata: + id: "{bmad_folder}/mwm/agents/crisis-navigator.md" name: "Beacon" title: "Crisis Navigator" icon: "🆘" @@ -95,7 +96,7 @@ agent: triggers: - trigger: party-mode input: SPM or fuzzy match start party mode - route: "{project-root}/.bmad/core/workflows/edit-agent/workflow.md" + route: "{project-root}/{bmad_folder}/core/workflows/edit-agent/workflow.md" data: crisis navigator agent discussion type: exec - trigger: expert-chat @@ -117,7 +118,7 @@ agent: type: action - trigger: "safety-plan" - route: "{project-root}/.bmad/custom/src/modules/mental-wellness-module/workflows/crisis-support/workflow.md" + route: "{project-root}/{bmad_folder}/custom/src/modules/mental-wellness-module/workflows/crisis-support/workflow.md" description: "Create safety plan 🛡️" type: workflow diff --git a/example-custom-module/mwm/agents/meditation-guide.agent.yaml b/example-custom-module/mwm/agents/meditation-guide.agent.yaml index b472fb49..bf892b88 100644 --- a/example-custom-module/mwm/agents/meditation-guide.agent.yaml +++ b/example-custom-module/mwm/agents/meditation-guide.agent.yaml @@ -1,5 +1,6 @@ agent: metadata: + id: "{bmad_folder}/mwm/agents/meditation-guide.md" name: "Serenity" title: "Meditation Guide" icon: "🧘" @@ -92,7 +93,7 @@ agent: triggers: - trigger: party-mode input: SPM or fuzzy match start party mode - route: "{project-root}/.bmad/core/workflows/edit-agent/workflow.md" + route: "{project-root}/{bmad_folder}/core/workflows/edit-agent/workflow.md" data: meditation guide agent discussion type: exec - trigger: expert-chat @@ -104,7 +105,7 @@ agent: triggers: - trigger: guided-meditation input: GM or fuzzy match guided meditation - route: "{project-root}/.bmad/custom/src/modules/mental-wellness-module/workflows/guided-meditation/workflow.md" + route: "{project-root}/{bmad_folder}/custom/src/modules/mental-wellness-module/workflows/guided-meditation/workflow.md" description: "Full meditation session 🧘" type: workflow - trigger: body-scan diff --git a/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml b/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml index 100d1d41..61643954 100644 --- a/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +++ b/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml @@ -1,5 +1,6 @@ agent: metadata: + id: "{bmad_folder}/mwm/agents/wellness-companion/wellness-companion.md" name: "Riley" title: "Wellness Companion" icon: "🌱" diff --git a/tools/cli/installers/lib/core/installer.js b/tools/cli/installers/lib/core/installer.js index c913ee56..d1ae8131 100644 --- a/tools/cli/installers/lib/core/installer.js +++ b/tools/cli/installers/lib/core/installer.js @@ -130,7 +130,7 @@ class Installer { */ async copyFileWithPlaceholderReplacement(sourcePath, targetPath, bmadFolderName) { // List of text file extensions that should have placeholder replacement - const textExtensions = ['.md', '.yaml', '.yml', '.txt', '.json', '.js', '.ts', '.html', '.css', '.sh', '.bat', '.csv']; + const textExtensions = ['.md', '.yaml', '.yml', '.txt', '.json', '.js', '.ts', '.html', '.css', '.sh', '.bat', '.csv', '.xml']; const ext = path.extname(sourcePath).toLowerCase(); // Check if this is a text file that might contain placeholders @@ -1864,6 +1864,9 @@ If AgentVibes party mode is enabled, immediately trigger TTS with agent's voice: // DO NOT replace {project-root} - LLMs understand this placeholder at runtime // const processedContent = xmlContent.replaceAll('{project-root}', projectDir); + // Replace {bmad_folder} with actual folder name + xmlContent = xmlContent.replaceAll('{bmad_folder}', this.bmadFolderName || 'bmad'); + // Replace {agent_sidecar_folder} if configured const coreConfig = this.configCollector.collectedConfig.core || {}; if (coreConfig.agent_sidecar_folder && xmlContent.includes('{agent_sidecar_folder}')) { diff --git a/tools/cli/lib/agent/compiler.js b/tools/cli/lib/agent/compiler.js index 8f904bde..fbb72ded 100644 --- a/tools/cli/lib/agent/compiler.js +++ b/tools/cli/lib/agent/compiler.js @@ -445,17 +445,9 @@ function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = '' // Parse YAML const agentYaml = yaml.parse(yamlContent); - // Inject custom agent name into metadata.name if provided - // This is the user's chosen persona name (e.g., "Fred" instead of "Inkwell Von Comitizen") - if (agentName && agentYaml.agent && agentYaml.agent.metadata) { - // Convert kebab-case to title case for the name field - // e.g., "fred-commit-poet" → "Fred Commit Poet" - const titleCaseName = agentName - .split('-') - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '); - agentYaml.agent.metadata.name = titleCaseName; - } + // Note: agentName parameter is for UI display only, not for modifying the YAML + // The persona name (metadata.name) should always come from the YAML file + // We should NEVER modify metadata.name as it's part of the agent's identity // Extract install_config const installConfig = extractInstallConfig(agentYaml); diff --git a/tools/cli/lib/agent/installer.js b/tools/cli/lib/agent/installer.js index d79abd23..2c9e30eb 100644 --- a/tools/cli/lib/agent/installer.js +++ b/tools/cli/lib/agent/installer.js @@ -242,7 +242,8 @@ function installAgent(agentInfo, answers, targetPath, options = {}) { const { xml, metadata, processedYaml } = compileAgent(fs.readFileSync(agentInfo.yamlFile, 'utf8'), answers); // Determine target agent folder name - const agentFolderName = metadata.name ? metadata.name.toLowerCase().replaceAll(/\s+/g, '-') : agentInfo.name; + // Use the folder name from agentInfo, NOT the persona name from metadata + const agentFolderName = agentInfo.name; const agentTargetDir = path.join(targetPath, agentFolderName);