remove hardcoded .bmad folders from demo content

This commit is contained in:
Brian Madison 2025-12-07 21:41:37 -06:00
parent a638f062b9
commit 86f2786dde
23 changed files with 33 additions and 302 deletions

View File

@ -1,6 +1,6 @@
agent: agent:
metadata: metadata:
id: .bmad/agents/commit-poet/commit-poet.md id: "{bmad_folder}/agents/commit-poet/commit-poet.md"
name: "Inkwell Von Comitizen" name: "Inkwell Von Comitizen"
title: "Commit Message Artisan" title: "Commit Message Artisan"
icon: "📜" icon: "📜"

View File

@ -1,6 +1,6 @@
agent: agent:
metadata: metadata:
id: custom/agents/toolsmith/toolsmith.md id: "{bmad_folder}/agents/toolsmith/toolsmith.md"
name: Vexor name: Vexor
title: Infernal Toolsmith + Guardian of the BMAD Forge title: Infernal Toolsmith + Guardian of the BMAD Forge
icon: ⚒️ icon: ⚒️

View File

@ -3,7 +3,7 @@ name: 'step-01-init'
description: 'Initialize quiz game with mode selection and category choice' description: 'Initialize quiz game with mode selection and category choice'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-01-init.md' 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 ### 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: Present dramatic welcome:
"🎺 _DRAMATIC MUSIC PLAYS_ 🎺 "🎺 _DRAMATIC MUSIC PLAYS_ 🎺

View File

@ -3,7 +3,7 @@ name: 'step-02-q1'
description: 'Question 1 - Level 1 difficulty' description: 'Question 1 - Level 1 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-02-q1.md' thisStepFile: '{workflow_path}/steps/step-02-q1.md'

View File

@ -3,7 +3,7 @@ name: 'step-03-q2'
description: 'Question 2 - Level 2 difficulty' description: 'Question 2 - Level 2 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-03-q2.md' thisStepFile: '{workflow_path}/steps/step-03-q2.md'

View File

@ -3,7 +3,7 @@ name: 'step-04-q3'
description: 'Question 3 - Level 3 difficulty' description: 'Question 3 - Level 3 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-04-q3.md' thisStepFile: '{workflow_path}/steps/step-04-q3.md'

View File

@ -3,7 +3,7 @@ name: 'step-05-q4'
description: 'Question 4 - Level 4 difficulty' description: 'Question 4 - Level 4 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-05-q4.md' thisStepFile: '{workflow_path}/steps/step-05-q4.md'

View File

@ -3,7 +3,7 @@ name: 'step-06-q5'
description: 'Question 5 - Level 5 difficulty' description: 'Question 5 - Level 5 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-06-q5.md' thisStepFile: '{workflow_path}/steps/step-06-q5.md'

View File

@ -3,7 +3,7 @@ name: 'step-07-q6'
description: 'Question 6 - Level 6 difficulty' description: 'Question 6 - Level 6 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-07-q6.md' thisStepFile: '{workflow_path}/steps/step-07-q6.md'

View File

@ -3,7 +3,7 @@ name: 'step-08-q7'
description: 'Question 7 - Level 7 difficulty' description: 'Question 7 - Level 7 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-08-q7.md' thisStepFile: '{workflow_path}/steps/step-08-q7.md'

View File

@ -3,7 +3,7 @@ name: 'step-09-q8'
description: 'Question 8 - Level 8 difficulty' description: 'Question 8 - Level 8 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-09-q8.md' thisStepFile: '{workflow_path}/steps/step-09-q8.md'

View File

@ -3,7 +3,7 @@ name: 'step-10-q9'
description: 'Question 9 - Level 9 difficulty' description: 'Question 9 - Level 9 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-10-q9.md' thisStepFile: '{workflow_path}/steps/step-10-q9.md'

View File

@ -3,7 +3,7 @@ name: 'step-11-q10'
description: 'Question 10 - Level 10 difficulty' description: 'Question 10 - Level 10 difficulty'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-11-q10.md' thisStepFile: '{workflow_path}/steps/step-11-q10.md'

View File

@ -3,7 +3,7 @@ name: 'step-12-results'
description: 'Final results and celebration' description: 'Final results and celebration'
# Path Definitions # 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 # File References
thisStepFile: '{workflow_path}/steps/step-12-results.md' thisStepFile: '{workflow_path}/steps/step-12-results.md'

View File

@ -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

View File

@ -45,7 +45,7 @@ web_bundle: true
### 1. Module Configuration Loading ### 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` - `user_name`, `output_folder`, `communication_language`, `document_output_language`

View File

@ -1,5 +1,6 @@
agent: agent:
metadata: metadata:
id: "{bmad_folder}/mwm/agents/cbt-coach/cbt-coach.md"
name: "Dr. Alexis, M.D." name: "Dr. Alexis, M.D."
title: "CBT Coach" title: "CBT Coach"
icon: "🧠" icon: "🧠"

View File

@ -1,5 +1,6 @@
agent: agent:
metadata: metadata:
id: "{bmad_folder}/mwm/agents/crisis-navigator.md"
name: "Beacon" name: "Beacon"
title: "Crisis Navigator" title: "Crisis Navigator"
icon: "🆘" icon: "🆘"
@ -95,7 +96,7 @@ agent:
triggers: triggers:
- trigger: party-mode - trigger: party-mode
input: SPM or fuzzy match start 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 data: crisis navigator agent discussion
type: exec type: exec
- trigger: expert-chat - trigger: expert-chat
@ -117,7 +118,7 @@ agent:
type: action type: action
- trigger: "safety-plan" - 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 🛡️" description: "Create safety plan 🛡️"
type: workflow type: workflow

View File

@ -1,5 +1,6 @@
agent: agent:
metadata: metadata:
id: "{bmad_folder}/mwm/agents/meditation-guide.md"
name: "Serenity" name: "Serenity"
title: "Meditation Guide" title: "Meditation Guide"
icon: "🧘" icon: "🧘"
@ -92,7 +93,7 @@ agent:
triggers: triggers:
- trigger: party-mode - trigger: party-mode
input: SPM or fuzzy match start 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 data: meditation guide agent discussion
type: exec type: exec
- trigger: expert-chat - trigger: expert-chat
@ -104,7 +105,7 @@ agent:
triggers: triggers:
- trigger: guided-meditation - trigger: guided-meditation
input: GM or fuzzy match 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 🧘" description: "Full meditation session 🧘"
type: workflow type: workflow
- trigger: body-scan - trigger: body-scan

View File

@ -1,5 +1,6 @@
agent: agent:
metadata: metadata:
id: "{bmad_folder}/mwm/agents/wellness-companion/wellness-companion.md"
name: "Riley" name: "Riley"
title: "Wellness Companion" title: "Wellness Companion"
icon: "🌱" icon: "🌱"

View File

@ -130,7 +130,7 @@ class Installer {
*/ */
async copyFileWithPlaceholderReplacement(sourcePath, targetPath, bmadFolderName) { async copyFileWithPlaceholderReplacement(sourcePath, targetPath, bmadFolderName) {
// List of text file extensions that should have placeholder replacement // 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(); const ext = path.extname(sourcePath).toLowerCase();
// Check if this is a text file that might contain placeholders // 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 // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
// const processedContent = xmlContent.replaceAll('{project-root}', projectDir); // 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 // Replace {agent_sidecar_folder} if configured
const coreConfig = this.configCollector.collectedConfig.core || {}; const coreConfig = this.configCollector.collectedConfig.core || {};
if (coreConfig.agent_sidecar_folder && xmlContent.includes('{agent_sidecar_folder}')) { if (coreConfig.agent_sidecar_folder && xmlContent.includes('{agent_sidecar_folder}')) {

View File

@ -445,17 +445,9 @@ function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = ''
// Parse YAML // Parse YAML
const agentYaml = yaml.parse(yamlContent); const agentYaml = yaml.parse(yamlContent);
// Inject custom agent name into metadata.name if provided // Note: agentName parameter is for UI display only, not for modifying the YAML
// This is the user's chosen persona name (e.g., "Fred" instead of "Inkwell Von Comitizen") // The persona name (metadata.name) should always come from the YAML file
if (agentName && agentYaml.agent && agentYaml.agent.metadata) { // We should NEVER modify metadata.name as it's part of the agent's identity
// 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;
}
// Extract install_config // Extract install_config
const installConfig = extractInstallConfig(agentYaml); const installConfig = extractInstallConfig(agentYaml);

View File

@ -242,7 +242,8 @@ function installAgent(agentInfo, answers, targetPath, options = {}) {
const { xml, metadata, processedYaml } = compileAgent(fs.readFileSync(agentInfo.yamlFile, 'utf8'), answers); const { xml, metadata, processedYaml } = compileAgent(fs.readFileSync(agentInfo.yamlFile, 'utf8'), answers);
// Determine target agent folder name // 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); const agentTargetDir = path.join(targetPath, agentFolderName);