BMAD-METHOD/src/modules/bmb/reference/agents/simple-examples
Brian Madison 054b031c1d 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-18 21:55:47 -06:00
..
README.md feat: Complete BMAD agent creation system with install tooling, references, and field guidance 2025-11-18 21:55:47 -06:00
commit-poet.agent.yaml feat: Complete BMAD agent creation system with install tooling, references, and field guidance 2025-11-18 21:55:47 -06:00

README.md

Simple Agent Reference: Commit Poet (Inkwell Von Comitizen)

This folder contains a complete reference implementation of a BMAD Simple Agent - a self-contained agent with all logic embedded within a single YAML file.

Overview

Agent Name: Inkwell Von Comitizen Type: Simple Agent (Standalone) Purpose: Transform commit messages into art with multiple writing styles

This reference demonstrates:

  • Pure self-contained architecture (no external dependencies)
  • Embedded prompts using action="#prompt-id" pattern
  • Multiple sophisticated output modes from single input
  • Strong personality-driven design
  • Complete YAML schema for Simple Agents

File Structure

stand-alone/
├── README.md                    # This file - architecture overview
└── commit-poet.agent.yaml       # Complete agent definition (single file!)

That's it! Simple Agents are self-contained - everything lives in one YAML file.

Key Architecture Patterns

1. Single File, Complete Agent

Everything the agent needs is embedded:

  • Metadata (name, title, icon, type)
  • Persona (role, identity, communication_style, principles)
  • Prompts (detailed instructions for each command)
  • Menu (commands linking to embedded prompts)

No external files required!

2. Embedded Prompts with ID References

Instead of inline action text, complex prompts are defined separately and referenced by ID:

prompts:
  - id: conventional-commit
    content: |
      OH! Let's craft a BEAUTIFUL conventional commit message!

      First, I need to understand your changes...
      [Detailed instructions]      

menu:
  - trigger: conventional
    action: '#conventional-commit' # References the prompt above
    description: 'Craft a structured conventional commit'

Benefits:

  • Clean separation of menu structure from prompt content
  • Prompts can be as detailed as needed
  • Easy to update individual prompts
  • Commands stay concise in the menu

3. The # Reference Pattern

When you see action="#prompt-id":

  • The # signals: "This is an internal reference"
  • LLM looks for <prompt id="prompt-id"> in the same agent
  • Executes that prompt's content as the instruction

This is different from:

  • action="inline text" - Execute this text directly
  • exec="{path}" - Load external file

4. Multiple Output Modes

Single agent provides 10+ different ways to accomplish variations of the same core task:

  • *conventional - Structured commits
  • *story - Narrative style
  • *haiku - Poetic brevity
  • *explain - Deep "why" explanation
  • *dramatic - Theatrical flair
  • *emoji-story - Visual storytelling
  • *tldr - Ultra-minimal
  • Plus utility commands (analyze, improve, batch)

Each mode has its own detailed prompt but shares the same agent personality.

5. Strong Personality

The agent has a memorable, consistent personality:

  • Enthusiastic wordsmith who LOVES finding perfect words
  • Gets genuinely excited about commit messages
  • Uses literary metaphors
  • Quotes authors when appropriate
  • Sheds tears of joy over good variable names

This personality is maintained across ALL commands through the persona definition.

When to Use Simple Agents

Perfect for:

  • Single-purpose tools (calculators, converters, analyzers)
  • Tasks that don't need external data
  • Utilities that can be completely self-contained
  • Quick operations with embedded logic
  • Personality-driven assistants with focused domains

Not ideal for:

  • Agents needing persistent memory across sessions
  • Domain-specific experts with knowledge bases
  • Agents that need to access specific folders/files
  • Complex multi-workflow orchestration

YAML Schema Deep Dive

agent:
  metadata:
    id: .bmad/agents/{agent-name}/{agent-name}.md  # Build path
    name: "Display Name"
    title: "Professional Title"
    icon: "🎭"
    type: simple  # CRITICAL: Identifies as Simple Agent

  persona:
    role: |
      First-person description of what the agent does      
    identity: |
      Background, experience, specializations (use "I" voice)      
    communication_style: |
      HOW the agent communicates (tone, quirks, patterns)      
    principles:
      - "I believe..." statements
      - Core values that guide behavior

  prompts:
    - id: unique-identifier
      content: |
        Detailed instructions for this command
        Can be as long and detailed as needed
        Include examples, steps, formats        

  menu:
    - trigger: command-name
      action: "#prompt-id"
      description: "What shows in the menu"

Why This Pattern is Powerful

  1. Zero Dependencies - Works anywhere, no setup required
  2. Portable - Single file can be moved/shared easily
  3. Maintainable - All logic in one place
  4. Flexible - Multiple modes/commands from one personality
  5. Memorable - Strong personality creates engagement
  6. Sophisticated - Complex prompts despite simple architecture

Comparison: Simple vs Expert Agent

Aspect Simple Agent Expert Agent
Files Single YAML YAML + sidecar folder
Dependencies None External resources
Memory Session only Persistent across sessions
Prompts Embedded Can be external files
Data Access None Domain-restricted
Use Case Self-contained tasks Domain expertise with context

Using This Reference

For Building Simple Agents

  1. Study the YAML structure - especially prompts section
  2. Note how personality permeates every prompt
  3. See how #prompt-id references work
  4. Understand menu → prompt connection

For Understanding Embedded Prompts

  1. Each prompt is a complete instruction set
  2. Prompts maintain personality voice
  3. Structured enough to be useful, flexible enough to adapt
  4. Can include examples, formats, step-by-step guidance

For Designing Agent Personalities

  1. Persona defines WHO the agent is
  2. Communication style defines HOW they interact
  3. Principles define WHAT guides their decisions
  4. Consistency across all prompts creates believability

Files Worth Studying

The entire commit-poet.agent.yaml file is worth studying, particularly:

  1. Persona section - How to create a memorable character
  2. Prompts with varying complexity - From simple (tldr) to complex (batch)
  3. Menu structure - Clean command organization
  4. Prompt references - The #prompt-id pattern

Key Takeaways

  • Simple Agents are powerful despite being single-file
  • Embedded prompts allow sophisticated behavior
  • Strong personality makes agents memorable and engaging
  • Multiple modes from single agent provides versatility
  • Self-contained = portable and dependency-free
  • The #prompt-id pattern enables clean prompt organization

This reference demonstrates how BMAD Simple Agents can be surprisingly powerful while maintaining architectural simplicity.