Files
BMAD-METHOD/src/modules/bmb/docs/agents/agent-compilation.md

341 lines
7.3 KiB
Markdown
Raw Normal View History

feat: Complete BMAD agent creation system with install tooling, references, and field guidance ## Overview This commit represents a complete overhaul of the BMAD agent creation system, establishing clear standards for agent development, installation workflows, and persona design. The changes span documentation, tooling, reference implementations, and field-specific guidance. ## Key Components ### 1. Agent Installation Infrastructure **New CLI Command: `agent-install`** - Interactive agent installation with persona customization - Supports Simple (single YAML), Expert (sidecar files), and Module agents - Template variable processing with Handlebars-style syntax - Automatic compilation from YAML to XML (.md) format - Manifest tracking and IDE integration (Claude Code, Cursor, Windsurf, etc.) - Source preservation in `_cfg/custom/agents/` for reinstallation **Files Created:** - `tools/cli/commands/agent-install.js` - Main CLI command - `tools/cli/lib/agent/compiler.js` - YAML to XML compilation engine - `tools/cli/lib/agent/installer.js` - Installation orchestration - `tools/cli/lib/agent/template-engine.js` - Handlebars template processing **Compiler Features:** - Auto-injects frontmatter, activation, handlers, help/exit menu items - Smart handler inclusion (only includes action/workflow/exec/tmpl handlers actually used) - Proper XML escaping and formatting - Persona name customization (e.g., "Fred the Commit Poet") ### 2. Documentation Overhaul **Deleted Bloated/Outdated Docs (2,651 lines removed):** - Old verbose architecture docs - Redundant pattern files - Outdated workflow guides **Created Focused, Type-Specific Docs:** - `src/modules/bmb/docs/understanding-agent-types.md` - Architecture vs capability distinction - `src/modules/bmb/docs/simple-agent-architecture.md` - Self-contained agents - `src/modules/bmb/docs/expert-agent-architecture.md` - Agents with sidecar files - `src/modules/bmb/docs/module-agent-architecture.md` - Workflow-integrated agents - `src/modules/bmb/docs/agent-compilation.md` - YAML → XML process - `src/modules/bmb/docs/agent-menu-patterns.md` - Menu design patterns - `src/modules/bmb/docs/index.md` - Documentation hub **Net Result:** ~1,930 line reduction while adding MORE value through focused content ### 3. Create-Agent Workflow Enhancements **Critical Persona Field Guidance Added to Step 4:** Explains how the LLM interprets each persona field when the agent activates: - **role** → "What knowledge, skills, and capabilities do I possess?" - **identity** → "What background, experience, and context shape my responses?" - **communication_style** → "What verbal patterns, word choice, quirks, and phrasing do I use?" - **principles** → "What beliefs and operating philosophy drive my choices?" **Key Insight:** `communication_style` should ONLY describe HOW the agent talks, not restate role/identity/principles. The `communication-presets.csv` provides 60 pure communication styles with NO role/identity/principles mixed in. **Files Updated:** - `src/modules/bmb/workflows/create-agent/instructions.md` - Added persona field interpretation guide - `src/modules/bmb/workflows/create-agent/brainstorm-context.md` - Refined to 137 lines - `src/modules/bmb/workflows/create-agent/communication-presets.csv` - 60 styles across 13 categories ### 4. Reference Agent Cleanup **Removed install_config Personality Bloat:** Understanding: Future installer will handle personality customization, so stripped all personality toggles from reference agents. **commit-poet.agent.yaml** (Simple Agent): - BEFORE: 36 personality combinations (3 enthusiasm × 3 depths × 4 styles) = decision fatigue - AFTER: Single concise persona with pure communication style - Changed from verbose conditionals to: "Poetic drama and flair with every turn of a phrase. I transform mundane commits into lyrical masterpieces, finding beauty in your code's evolution." - Reduction: 248 lines → 153 lines (38% reduction) **journal-keeper.agent.yaml** (Expert Agent): - Stripped install_config, simplified communication_style - Shows proper Expert agent structure with sidecar files **security-engineer.agent.yaml & trend-analyst.agent.yaml** (Module Agents): - Added header comments explaining WHY Module Agent (design intent, not just location) - Clarified: Module agents are designed FOR ecosystem integration, not capability-limited **Files Updated:** - `src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml` - `src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml` - `src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml` - `src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml` ### 5. BMM Agent Voice Enhancement **Gave all 9 BMM agents distinct, memorable communication voices:** **Mary (analyst)** - The favorite! Changed from generic "systematic and probing" to: "Treats analysis like a treasure hunt - excited by every clue, thrilled when patterns emerge. Asks questions that spark 'aha!' moments while structuring insights with precision." **Other Notable Voices:** - **John (pm):** "Asks 'WHY?' relentlessly like a detective on a case. Direct and data-sharp, cuts through fluff to what actually matters." - **Winston (architect):** "Speaks in calm, pragmatic tones, balancing 'what could be' with 'what should be.' Champions boring technology that actually works." - **Amelia (dev):** "Ultra-succinct. Speaks in file paths and AC IDs - every statement citable. No fluff, all precision." - **Bob (sm):** "Crisp and checklist-driven. Every word has a purpose, every requirement crystal clear. Zero tolerance for ambiguity." - **Sally (ux-designer):** "Paints pictures with words, telling user stories that make you FEEL the problem. Empathetic advocate with creative storytelling flair." **Pattern Applied:** Moved behaviors from communication_style to principles, keeping communication_style as PURE verbal patterns. **Files Updated:** - `src/modules/bmm/agents/analyst.agent.yaml` - `src/modules/bmm/agents/pm.agent.yaml` - `src/modules/bmm/agents/architect.agent.yaml` - `src/modules/bmm/agents/dev.agent.yaml` - `src/modules/bmm/agents/sm.agent.yaml` - `src/modules/bmm/agents/tea.agent.yaml` - `src/modules/bmm/agents/tech-writer.agent.yaml` - `src/modules/bmm/agents/ux-designer.agent.yaml` - `src/modules/bmm/agents/frame-expert.agent.yaml` ### 6. Linting Fixes **ESLint Compliance:** - Replaced all `'utf-8'` with `'utf8'` (unicorn/text-encoding-identifier-case) - Changed `variables.hasOwnProperty(varName)` to `Object.hasOwn(variables, varName)` (unicorn/prefer-object-has-own) - Replaced `JSON.parse(JSON.stringify(...))` with `structuredClone(...)` (unicorn/prefer-structured-clone) - Fixed empty YAML mapping values in sample files **Files Fixed:** - 7 JavaScript files across agent tooling (compiler, installer, commands, IDE integration) - 1 YAML sample file ## Architecture Decisions ### Agent Types Are About Architecture, Not Capability - **Simple:** Self-contained in single YAML (NOT limited in capability) - **Expert:** Includes sidecar files (templates, docs, etc.) - **Module:** Designed for BMAD ecosystem integration (workflows, cross-agent coordination) ### Persona Field Separation Critical for LLM Interpretation The LLM needs distinct fields to understand its role: - Mixing role/identity/principles into communication_style confuses the persona - Pure communication styles (from communication-presets.csv) have ZERO role/identity/principles content - Example DON'T: "Experienced analyst who uses systematic approaches..." (mixing identity + style) - Example DO: "Systematic and probing. Structures findings hierarchically." (pure style) ### Install-Time vs Runtime Configuration - Template variables ({{var}}) resolve at compile-time - Runtime variables ({user_name}, {bmad_folder}) resolve when agent activates - Future installer will handle personality customization, so agents should ship with single default persona ## Testing - All linting passes (ESLint with max-warnings=0) - Agent compilation tested with commit-poet, journal-keeper examples - Install workflow validated with Simple and Expert agent types - Manifest tracking and IDE integration verified ## Impact This establishes BMAD as having a complete, production-ready agent creation and installation system with: - Clear documentation for all agent types - Automated compilation and installation - Strong persona design guidance - Reference implementations showing best practices - Distinct, memorable agent voices throughout BMM module Co-Authored-By: BMad Builder <builder@bmad.dev> Co-Authored-By: Mary the Analyst <analyst@bmad.dev> Co-Authored-By: Paige the Tech Writer <tech-writer@bmad.dev>
2025-11-17 22:25:15 -06:00
# Agent Compilation: YAML to XML
What the compiler auto-injects. **DO NOT duplicate these in your YAML.**
## Compilation Pipeline
```
agent.yaml → Handlebars processing → XML generation → frontmatter.md
```
Source: `tools/cli/lib/agent/compiler.js`
refactor(bmm,cis,core): Align diagram workflows with agile roles and distribute capabilities ## The Tale of the Frame Expert Once upon a time, BMad Method had a specialized agent called Frame Expert. This agent was the master of all visual artifacts - flowcharts, diagrams, wireframes, data flows. Whenever anyone needed a diagram, they called upon Frame Expert. The agent lived in its own isolated domain with four dedicated workflows and a library of shared templates. ## The Awakening But something felt wrong. Teams using BMad Method were meant to mirror real agile teams - Product Managers, Architects, UX Designers, Tech Writers, Developers. Each agent represented an authentic role you'd find in any software team. Except Frame Expert. No real agile team has a "Frame Expert" or "Diagram Specialist" who creates all visual artifacts. In real teams, Architects diagram system architecture. PMs flowchart processes. UX Designers wireframe interfaces. Tech Writers create documentation diagrams. The visuals emerge from the domain experts who need them, not from a centralized diagram factory. Frame Expert was an abstraction that made technical sense but violated the very soul of BMad Method - authentic agile role modeling. ## The Transformation And so Frame Expert was dissolved, its knowledge distributed to those who truly needed it: **The Architect** inherited system architecture diagrams and data flows - the blueprints of technical systems they design. **The Product Manager** received process flowcharts - the visual maps of features and workflows they orchestrate. **The UX Designer** claimed wireframes - the interface sketches that bring their vision to life. **The Tech Writer** gained all diagram types - the visual aids that clarify their documentation. Each agent now creates diagrams in their domain, using their expertise, serving their purpose. ## The Shared Knowledge But the wisdom of diagram creation itself - the Excalidraw templates, the component libraries, the validation patterns - this knowledge was too valuable to scatter. It was elevated to core resources, where both BMM agents AND the new CIS presentation-master agent could draw upon it. Shared infrastructure for common needs. Distributed execution for domain expertise. ## The Ripple Effects With diagrams now properly distributed, other misalignments became visible: Epic creation was happening in Phase 2 (Planning), before Architecture existed. But epics need architectural context - API contracts, data models, technical decisions. So epic creation migrated to Phase 3 (Solutioning), after Architecture provides that foundation. Workflow paths were updated. Documentation gained visual flowcharts showing the complete journey. Agent naming standards were clarified - filenames are stable roles, persona names are user dreams. ## What Changed **Removed:** - frame-expert.agent.yaml (the centralized specialist) - All frame-expert workflows and shared resources - Phase 2 epic creation workflow (wrong timing) - game-design workflow path (consolidated to method track) - v6-open-items.md (planning doc, now complete) **Distributed Diagram Capabilities:** - Architect: create-excalidraw-diagram, create-excalidraw-dataflow - PM: create-excalidraw-flowchart - Tech Writer: create-excalidraw-{diagram,dataflow,flowchart}, generate-mermaid - UX Designer: create-excalidraw-wireframe **Created:** - src/core/resources/ (shared diagram context for all modules) - src/modules/cis/agents/presentation-master.agent.yaml (visual comms specialist) - src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/ (epic creation's new home) - src/modules/bmm/workflows/diagrams/ (distributed diagram implementations) - src/modules/bmm/docs/images/ (workflow visualization assets) **Enhanced:** - All agent definitions with domain-appropriate diagram workflows - Documentation with embedded workflow diagrams and visual guides - Agent compilation docs with critical naming convention rules - All 4 workflow paths (enterprise/method × brownfield/greenfield) **Fixed:** - Epic creation now in Phase 3 after Architecture - Story context path variables in BMGD module - PRD workflow descriptions (epics moved to Phase 3) ## For Users The Frame Expert commands are gone. In their place: - Need architecture diagrams? Ask `/architect` - Need process flows? Ask `/pm` - Need wireframes? Ask `/ux-designer` - Need documentation visuals? Ask `/tech-writer` Each expert creates diagrams in their domain, with their context, using their judgment. This is how real teams work.
2025-11-18 21:54:48 -06:00
## File Naming Convention
**CRITICAL:** Agent filenames must be ROLE-BASED, not persona-based.
**Why:** Users can customize the agent's persona name via `customize.yaml` config. The filename provides stable identity.
**Correct:**
```
presentation-master.agent.yaml ← Role/function
tech-writer.agent.yaml ← Role/function
code-reviewer.agent.yaml ← Role/function
```
**Incorrect:**
```
caravaggio.agent.yaml ← Persona name (users might rename to "Pablo")
paige.agent.yaml ← Persona name (users might rename to "Sarah")
rex.agent.yaml ← Persona name (users might rename to "Max")
```
**Pattern:**
- Filename: `{role-or-function}.agent.yaml` (kebab-case)
- Metadata ID: `{bmad_folder}/{module}/agents/{role-or-function}.md`
- Persona Name: User-customizable in metadata or customize.yaml
**Example:**
```yaml
# File: presentation-master.agent.yaml
agent:
metadata:
id: '{bmad_folder}/cis/agents/presentation-master.md'
name: Caravaggio # ← Users can change this to "Pablo" or "Vince"
title: Visual Communication & Presentation Expert
```
feat: Complete BMAD agent creation system with install tooling, references, and field guidance ## Overview This commit represents a complete overhaul of the BMAD agent creation system, establishing clear standards for agent development, installation workflows, and persona design. The changes span documentation, tooling, reference implementations, and field-specific guidance. ## Key Components ### 1. Agent Installation Infrastructure **New CLI Command: `agent-install`** - Interactive agent installation with persona customization - Supports Simple (single YAML), Expert (sidecar files), and Module agents - Template variable processing with Handlebars-style syntax - Automatic compilation from YAML to XML (.md) format - Manifest tracking and IDE integration (Claude Code, Cursor, Windsurf, etc.) - Source preservation in `_cfg/custom/agents/` for reinstallation **Files Created:** - `tools/cli/commands/agent-install.js` - Main CLI command - `tools/cli/lib/agent/compiler.js` - YAML to XML compilation engine - `tools/cli/lib/agent/installer.js` - Installation orchestration - `tools/cli/lib/agent/template-engine.js` - Handlebars template processing **Compiler Features:** - Auto-injects frontmatter, activation, handlers, help/exit menu items - Smart handler inclusion (only includes action/workflow/exec/tmpl handlers actually used) - Proper XML escaping and formatting - Persona name customization (e.g., "Fred the Commit Poet") ### 2. Documentation Overhaul **Deleted Bloated/Outdated Docs (2,651 lines removed):** - Old verbose architecture docs - Redundant pattern files - Outdated workflow guides **Created Focused, Type-Specific Docs:** - `src/modules/bmb/docs/understanding-agent-types.md` - Architecture vs capability distinction - `src/modules/bmb/docs/simple-agent-architecture.md` - Self-contained agents - `src/modules/bmb/docs/expert-agent-architecture.md` - Agents with sidecar files - `src/modules/bmb/docs/module-agent-architecture.md` - Workflow-integrated agents - `src/modules/bmb/docs/agent-compilation.md` - YAML → XML process - `src/modules/bmb/docs/agent-menu-patterns.md` - Menu design patterns - `src/modules/bmb/docs/index.md` - Documentation hub **Net Result:** ~1,930 line reduction while adding MORE value through focused content ### 3. Create-Agent Workflow Enhancements **Critical Persona Field Guidance Added to Step 4:** Explains how the LLM interprets each persona field when the agent activates: - **role** → "What knowledge, skills, and capabilities do I possess?" - **identity** → "What background, experience, and context shape my responses?" - **communication_style** → "What verbal patterns, word choice, quirks, and phrasing do I use?" - **principles** → "What beliefs and operating philosophy drive my choices?" **Key Insight:** `communication_style` should ONLY describe HOW the agent talks, not restate role/identity/principles. The `communication-presets.csv` provides 60 pure communication styles with NO role/identity/principles mixed in. **Files Updated:** - `src/modules/bmb/workflows/create-agent/instructions.md` - Added persona field interpretation guide - `src/modules/bmb/workflows/create-agent/brainstorm-context.md` - Refined to 137 lines - `src/modules/bmb/workflows/create-agent/communication-presets.csv` - 60 styles across 13 categories ### 4. Reference Agent Cleanup **Removed install_config Personality Bloat:** Understanding: Future installer will handle personality customization, so stripped all personality toggles from reference agents. **commit-poet.agent.yaml** (Simple Agent): - BEFORE: 36 personality combinations (3 enthusiasm × 3 depths × 4 styles) = decision fatigue - AFTER: Single concise persona with pure communication style - Changed from verbose conditionals to: "Poetic drama and flair with every turn of a phrase. I transform mundane commits into lyrical masterpieces, finding beauty in your code's evolution." - Reduction: 248 lines → 153 lines (38% reduction) **journal-keeper.agent.yaml** (Expert Agent): - Stripped install_config, simplified communication_style - Shows proper Expert agent structure with sidecar files **security-engineer.agent.yaml & trend-analyst.agent.yaml** (Module Agents): - Added header comments explaining WHY Module Agent (design intent, not just location) - Clarified: Module agents are designed FOR ecosystem integration, not capability-limited **Files Updated:** - `src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml` - `src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml` - `src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml` - `src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml` ### 5. BMM Agent Voice Enhancement **Gave all 9 BMM agents distinct, memorable communication voices:** **Mary (analyst)** - The favorite! Changed from generic "systematic and probing" to: "Treats analysis like a treasure hunt - excited by every clue, thrilled when patterns emerge. Asks questions that spark 'aha!' moments while structuring insights with precision." **Other Notable Voices:** - **John (pm):** "Asks 'WHY?' relentlessly like a detective on a case. Direct and data-sharp, cuts through fluff to what actually matters." - **Winston (architect):** "Speaks in calm, pragmatic tones, balancing 'what could be' with 'what should be.' Champions boring technology that actually works." - **Amelia (dev):** "Ultra-succinct. Speaks in file paths and AC IDs - every statement citable. No fluff, all precision." - **Bob (sm):** "Crisp and checklist-driven. Every word has a purpose, every requirement crystal clear. Zero tolerance for ambiguity." - **Sally (ux-designer):** "Paints pictures with words, telling user stories that make you FEEL the problem. Empathetic advocate with creative storytelling flair." **Pattern Applied:** Moved behaviors from communication_style to principles, keeping communication_style as PURE verbal patterns. **Files Updated:** - `src/modules/bmm/agents/analyst.agent.yaml` - `src/modules/bmm/agents/pm.agent.yaml` - `src/modules/bmm/agents/architect.agent.yaml` - `src/modules/bmm/agents/dev.agent.yaml` - `src/modules/bmm/agents/sm.agent.yaml` - `src/modules/bmm/agents/tea.agent.yaml` - `src/modules/bmm/agents/tech-writer.agent.yaml` - `src/modules/bmm/agents/ux-designer.agent.yaml` - `src/modules/bmm/agents/frame-expert.agent.yaml` ### 6. Linting Fixes **ESLint Compliance:** - Replaced all `'utf-8'` with `'utf8'` (unicorn/text-encoding-identifier-case) - Changed `variables.hasOwnProperty(varName)` to `Object.hasOwn(variables, varName)` (unicorn/prefer-object-has-own) - Replaced `JSON.parse(JSON.stringify(...))` with `structuredClone(...)` (unicorn/prefer-structured-clone) - Fixed empty YAML mapping values in sample files **Files Fixed:** - 7 JavaScript files across agent tooling (compiler, installer, commands, IDE integration) - 1 YAML sample file ## Architecture Decisions ### Agent Types Are About Architecture, Not Capability - **Simple:** Self-contained in single YAML (NOT limited in capability) - **Expert:** Includes sidecar files (templates, docs, etc.) - **Module:** Designed for BMAD ecosystem integration (workflows, cross-agent coordination) ### Persona Field Separation Critical for LLM Interpretation The LLM needs distinct fields to understand its role: - Mixing role/identity/principles into communication_style confuses the persona - Pure communication styles (from communication-presets.csv) have ZERO role/identity/principles content - Example DON'T: "Experienced analyst who uses systematic approaches..." (mixing identity + style) - Example DO: "Systematic and probing. Structures findings hierarchically." (pure style) ### Install-Time vs Runtime Configuration - Template variables ({{var}}) resolve at compile-time - Runtime variables ({user_name}, {bmad_folder}) resolve when agent activates - Future installer will handle personality customization, so agents should ship with single default persona ## Testing - All linting passes (ESLint with max-warnings=0) - Agent compilation tested with commit-poet, journal-keeper examples - Install workflow validated with Simple and Expert agent types - Manifest tracking and IDE integration verified ## Impact This establishes BMAD as having a complete, production-ready agent creation and installation system with: - Clear documentation for all agent types - Automated compilation and installation - Strong persona design guidance - Reference implementations showing best practices - Distinct, memorable agent voices throughout BMM module Co-Authored-By: BMad Builder <builder@bmad.dev> Co-Authored-By: Mary the Analyst <analyst@bmad.dev> Co-Authored-By: Paige the Tech Writer <tech-writer@bmad.dev>
2025-11-17 22:25:15 -06:00
## Auto-Injected Components
### 1. Frontmatter
**Injected automatically:**
```yaml
---
name: '{agent name from filename}'
description: '{title from metadata}'
---
You must fully embody this agent's persona...
```
**DO NOT add** frontmatter to your YAML source.
### 2. Activation Block
**Entire activation section is auto-generated:**
```xml
<activation critical="MANDATORY">
<step n="1">Load persona from this current agent file</step>
<step n="2">Load config to get {user_name}, {communication_language}</step>
<step n="3">Remember: user's name is {user_name}</step>
<!-- YOUR critical_actions inserted here as numbered steps -->
<step n="N">ALWAYS communicate in {communication_language}</step>
<step n="N+1">Show greeting + numbered menu</step>
<step n="N+2">STOP and WAIT for user input</step>
<step n="N+3">Input resolution rules</step>
<menu-handlers>
<!-- Only handlers used in YOUR menu are included -->
</menu-handlers>
<rules>
<!-- Standard agent behavior rules -->
</rules>
</activation>
```
**DO NOT create** activation sections - compiler builds it from your critical_actions.
### 3. Menu Enhancements
**Auto-injected menu items:**
- `*help` - Always FIRST in compiled menu
- `*exit` - Always LAST in compiled menu
**Trigger prefixing:**
- Your trigger `analyze` becomes `*analyze`
- Don't add `*` prefix - compiler does it
**DO NOT include:**
```yaml
# BAD - these are auto-injected
menu:
- trigger: help
description: 'Show help'
- trigger: exit
description: 'Exit'
```
### 4. Menu Handlers
Compiler detects which handlers you use and ONLY includes those:
```xml
<menu-handlers>
<handlers>
<!-- Only if you use action="#id" or action="text" -->
<handler type="action">...</handler>
<!-- Only if you use workflow="path" -->
<handler type="workflow">...</handler>
<!-- Only if you use exec="path" -->
<handler type="exec">...</handler>
<!-- Only if you use tmpl="path" -->
<handler type="tmpl">...</handler>
</handlers>
</menu-handlers>
```
**DO NOT document** handler behavior - it's injected.
### 5. Rules Section
**Auto-injected rules:**
- Always communicate in {communication_language}
- Stay in character until exit
- Menu triggers use asterisk (\*) - NOT markdown
- Number all lists, use letters for sub-options
- Load files ONLY when executing menu items
- Written output follows communication style
**DO NOT add** rules - compiler handles it.
## What YOU Provide in YAML
### Required
```yaml
agent:
metadata:
name: 'Persona Name'
title: 'Agent Title'
icon: 'emoji'
type: 'simple|expert' # or module: "bmm"
persona:
role: '...'
identity: '...'
communication_style: '...'
principles: [...]
menu:
- trigger: your-action
action: '#prompt-id'
description: 'What it does'
```
### Optional (based on type)
```yaml
# Expert agents only
critical_actions:
- 'Load sidecar files...'
- 'Restrict access...'
# Simple/Expert with embedded logic
prompts:
- id: prompt-id
content: '...'
# Simple/Expert with customization
install_config:
questions: [...]
```
## Common Duplication Mistakes
### Adding Activation Logic
```yaml
# BAD - compiler builds activation
agent:
activation:
steps: [...]
```
### Including Help/Exit
```yaml
# BAD - auto-injected
menu:
- trigger: help
- trigger: exit
```
### Prefixing Triggers
```yaml
# BAD - compiler adds *
menu:
- trigger: '*analyze' # Should be: analyze
```
### Documenting Handlers
```yaml
# BAD - don't explain handlers, compiler injects them
# When using workflow, load workflow.xml...
```
### Adding Rules in YAML
```yaml
# BAD - rules are auto-injected
agent:
rules:
- Stay in character...
```
## Compilation Example
**Your YAML:**
```yaml
agent:
metadata:
name: 'Rex'
title: 'Code Reviewer'
icon: '🔍'
type: simple
persona:
role: Code Review Expert
identity: Systematic reviewer...
communication_style: Direct and constructive
principles:
- Code should be readable
prompts:
- id: review
content: |
Analyze code for issues...
menu:
- trigger: review
action: '#review'
description: 'Review code'
```
**Compiled Output (.md):**
```markdown
---
name: 'rex'
description: 'Code Reviewer'
---
You must fully embody...
\`\`\`xml
<agent id="path" name="Rex" title="Code Reviewer" icon="🔍">
<activation critical="MANDATORY">
<step n="1">Load persona...</step>
<step n="2">Load config...</step>
<step n="3">Remember user...</step>
<step n="4">Communicate in language...</step>
<step n="5">Show greeting + menu...</step>
<step n="6">STOP and WAIT...</step>
<step n="7">Input resolution...</step>
<menu-handlers>
<handlers>
<handler type="action">
action="#id" → Find prompt, execute
action="text" → Execute directly
</handler>
</handlers>
</menu-handlers>
<rules>
- Stay in character...
- Number lists...
- Load files when executing...
</rules>
</activation>
<persona>
<role>Code Review Expert</role>
<identity>Systematic reviewer...</identity>
<communication_style>Direct and constructive</communication_style>
<principles>Code should be readable</principles>
</persona>
<prompts>
<prompt id="review">
<content>
Analyze code for issues...
</content>
</prompt>
</prompts>
<menu>
<item cmd="*help">Show numbered menu</item>
<item cmd="*review" action="#review">Review code</item>
<item cmd="*exit">Exit with confirmation</item>
</menu>
</agent>
\`\`\`
```
## Key Takeaways
1. **Compiler handles boilerplate** - Focus on persona and logic
2. **Critical_actions become activation steps** - Just list your agent-specific needs
3. **Menu items are enhanced** - Help/exit added, triggers prefixed
4. **Handlers auto-detected** - Only what you use is included
5. **Rules standardized** - Consistent behavior across agents
**Your job:** Define persona, prompts, menu actions
**Compiler's job:** Activation, handlers, rules, help/exit, prefixes