- Next.js 14+ with App Router and TypeScript - Tailwind CSS and ShadCN UI styling - Zustand state management - Dexie.js for IndexedDB (local-first data) - Auth.js v5 for authentication - BMAD framework integration Co-Authored-By: Claude <noreply@anthropic.com>
5.6 KiB
5.6 KiB
Expert Agent Validation Checklist
Validate Expert agents meet BMAD quality standards.
YAML Structure
- YAML parses without errors
agent.metadataincludes:id,name,title,icon,module,hasSidecaragent.metadata.hasSidecaristrue(Expert agents have sidecars)agent.metadata.moduleisstand-aloneor module code (bmm,cis,bmgd, etc.)agent.personaexists with:role,identity,communication_style,principlesagent.critical_actionsexists (MANDATORY for Expert)agent.menuexists with at least one item- File named:
{agent-name}.agent.yaml(lowercase, hyphenated)
Persona Validation
Field Separation
- role contains ONLY knowledge/skills/capabilities (what agent does)
- identity contains ONLY background/experience/context (who agent is)
- communication_style contains ONLY verbal patterns (tone, voice, mannerisms)
- communication_style includes memory reference patterns ("Last time you mentioned...")
- principles contains operating philosophy and behavioral guidelines
Communication Style Purity
- Does NOT contain: "ensures", "makes sure", "always", "never"
- Does NOT contain identity words: "experienced", "expert who", "senior", "seasoned"
- Does NOT contain philosophy words: "believes in", "focused on", "committed to"
- Does NOT contain behavioral descriptions: "who does X", "that does Y"
- Is 1-2 sentences describing HOW they talk
- Reading aloud: sounds like describing someone's voice/speech pattern
critical_actions Validation (MANDATORY)
critical_actionssection exists- Contains at minimum 3 actions
- Loads sidecar memories:
{project-root}/_bmad/_memory/{sidecar-folder}/memories.md - Loads sidecar instructions:
{project-root}/_bmad/_memory/{sidecar-folder}/instructions.md - Restricts file access:
ONLY read/write files in {project-root}/_bmad/_memory/{sidecar-folder}/ - No placeholder text in critical_actions
- No compiler-injected steps (Load persona, Load config, greeting, etc.)
Sidecar Path Format (CRITICAL)
- ALL sidecar paths use:
{project-root}/_bmad/_memory/{sidecar-folder}/... {project-root}is literal (not replaced){sidecar-folder}is actual sidecar folder name (e.g.,journal-keeper-sidecar)- No relative paths like
./{sidecar-folder}/ - No absolute paths like
/Users/...
Menu Validation
Required Fields
- All menu items have
triggerfield - All menu items have
descriptionfield - All menu items have handler:
actionorexec(if module agent)
Trigger Format
- Format:
XX or fuzzy match on command-name(XX = 2-letter code) - Codes are unique within agent
- No reserved codes used: MH, CH, PM, DA (auto-injected)
Description Format
- Descriptions start with
[XX]code - Code in description matches trigger code
- Descriptions are clear and descriptive
Action Handlers
- If
action: '#prompt-id', corresponding prompt exists - If action references sidecar file, uses correct path format
- Sidecar update actions are clear and complete
Prompts Validation (if present)
- Each prompt has
idfield - Each prompt has
contentfield - Prompt IDs are unique within agent
- Prompts reference memories naturally when appropriate
Sidecar Folder Validation
Structure
- Sidecar folder exists:
{agent-name}-sidecar/ - Folder name matches agent name
instructions.mdexists (recommended)memories.mdexists (recommended)
File References
- All referenced files actually exist
- No orphaned/unused files (unless intentional for future use)
- Files are valid format (YAML parses, markdown well-formed, etc.)
Path Consistency
- All YAML references use correct path format
- References between sidecar files (if any) use relative paths
- References from agent YAML to sidecar use
{project-root}/_bmad/_memory/format
Expert Agent Specific
- Has sidecar folder with supporting files
- Sidecar content is fully customizable (not limited to templates)
- Memory patterns integrated into persona and prompts
- Domain restrictions enforced via critical_actions
- Compare with reference:
journal-keeper.agent.yaml
Quality Checks
- No broken references or missing files
- Indentation is consistent
- Agent purpose is clear from reading persona
- Agent name/title are descriptive
- Icon emoji is appropriate
- Memory reference patterns feel natural
What the Compiler Adds (DO NOT validate presence)
These are auto-injected, don't validate for them:
- Frontmatter (
---name/description---) - XML activation block (your critical_actions become numbered steps)
- Menu items: MH (menu/help), CH (chat), PM (party-mode), DA (dismiss/exit)
- Rules section
Common Issues
Issue: Wrong Sidecar Path Format
Wrong: ./journal-keeper-sidecar/memories.md
Fix: {project-root}/_bmad/_memory/journal-keeper-sidecar/memories.md
Issue: Missing critical_actions
Fix: Add at minimum:
critical_actions:
- 'Load COMPLETE file {project-root}/_bmad/_memory/{sidecar-folder}/memories.md'
- 'Load COMPLETE file {project-root}/_bmad/_memory/{sidecar-folder}/instructions.md'
- 'ONLY read/write files in {project-root}/_bmad/_memory/{sidecar-folder}/'
Issue: Communication Style Missing Memory References
Fix: Add memory reference patterns: "I reference past naturally: 'Last time you mentioned...'"