Files
L-Ami-Fiduciaire/_bmad/bmb/workflows/agent/data/agent-validation.md
Saad Ibn-Ezzoubayr 35545c2a8f feat: L'Ami Fiduciaire V1.0.0 — full codebase with Story 0.1 complete
Initial commit of the L'Ami Fiduciaire SaaS platform built on Laravel 12,
Vue 3, Inertia.js 2, and Tailwind CSS 4.

Story 0.1 (rename folders to declarations in database) is implemented and
code-reviewed: migration, rollback, and 6 Pest tests all passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:33:10 +00:00

3.7 KiB

Agent Validation

Common (All Agents)

YAML Structure

  • Parses without errors
  • metadata: id, name, title, icon, module, hasSidecar
  • hasSidecar: true|false
  • module: stand-alone|bmm|cis|bmgd|...
  • persona: role, identity, communication_style, principles
  • menu: ≥1 item
  • Filename: {name}.agent.yaml (lowercase, hyphenated)

Persona Fields

Field Contains Does NOT Contain
role Knowledge/skills/capabilities Background, experience, "who"
identity Background/experience/context Skills, "what"
communication_style Tone/voice/mannerisms (1-2 sentences) "ensures", "expert", "believes", "who does X"
principles Operating philosophy, behavioral guidelines Verbal patterns, "how they talk"

Menu Items

  • trigger: XX or fuzzy match on command-name (XX = 2-letter code, unique)
  • No reserved codes: MH, CH, PM, DA (auto-injected)
  • description: Starts with [XX], code matches trigger
  • action: #prompt-id (exists) or inline text

Prompts (if present)

  • Each has id, content
  • IDs unique within agent
  • Uses semantic XML: <instructions>, <process>, etc.

Quality

  • No broken references
  • Indentation consistent
  • Purpose clear from persona
  • Name/title descriptive, icon appropriate

hasSidecar: false

Structure

  • Single .agent.yaml file (no sidecar folder)
  • No {project-root}/_bmad/_memory/ paths
  • Size under ~250 lines (unless justified)

critical_actions (OPTIONAL)

  • No references to sidecar files
  • No placeholders, no compiler-injected steps
  • Valid paths if any files referenced

Reference: commit-poet.agent.yaml


hasSidecar: true

Structure

  • sidecar-folder specified in metadata
  • Folder exists: {name}-sidecar/
  • Sidecar contains: instructions.md, memories.md (recommended)

critical_actions (MANDATORY)

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}/'
  • Exists with ≥3 actions
  • Loads memories, loads instructions, restricts file access
  • No placeholders, no compiler-injected steps

Path Format (CRITICAL)

  • ALL sidecar paths: {project-root}/_bmad/_memory/{sidecar-folder}/...
  • {project-root} is literal (not replaced)
  • {sidecar-folder} = actual folder name
  • No ./ or /Users/ paths

Persona Addition

  • communication_style includes memory reference patterns
  • Natural: "Last time you mentioned..." or "I've noticed patterns..."

Menu Actions

  • Sidecar references use correct path format
  • Update actions are complete

Reference: journal-keeper/


Compiler-Injected (Skip Validation)

  • Frontmatter (---name/description---)
  • XML activation block
  • Menu items: MH, CH, PM, DA
  • Rules section

Common Fixes

Issue Fix
Behaviors in communication_style Move to identity or principles
trigger: analyze trigger: AN or fuzzy match on analyze
description: 'Analyze code' description: '[AC] Analyze code'
./sidecar/memories.md {project-root}/_bmad/_memory/sidecar/memories.md
Missing critical_actions (hasSidecar: true) Add load memories, load instructions, restrict access
No memory references (hasSidecar: true) Add to communication_style: "Last time you mentioned..."