BMAD-METHOD/src/modules/bmb/workflows/agent/steps-e/e-09c-validate-menu.md

6.3 KiB

name description nextStepFile editPlan agentMenuPatterns builtYaml advancedElicitationTask partyModeWorkflow
e-09c-validate-menu Validate menu structure (after edit) - no menu, auto-advance ./e-09d-validate-structure.md {bmb_creations_output_folder}/edit-plan-{agent-name}.md ../data/agent-menu-patterns.md {bmb_creations_output_folder}/{agent-name}/{agent-name}.agent.yaml {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml {project-root}/_bmad/core/workflows/party-mode/workflow.md

Edit Step 9c: Validate Menu (After Edit)

STEP GOAL

Validate that the agent's menu (commands/tools) follows BMAD patterns as defined in agentMenuPatterns.md, is well-structured, properly documented, and aligns with the agent's persona and purpose. Record findings to editPlan and auto-advance.

MANDATORY EXECUTION RULES

  • NEVER skip validation checks - All menu items must be verified
  • ALWAYS load the reference document - agentMenuPatterns.md
  • ALWAYS load the builtYaml for actual menu content validation
  • ALWAYS use absolute paths when referencing files
  • CRITICAL: Load and validate EVERYTHING specified in the agentMenuPatterns.md file
  • 🚫 NO MENU in this step - record findings and auto-advance
  • YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config {communication_language}

EXECUTION PROTOCOLS

Protocol 1: Load and Compare

  1. Read the menu patterns reference from {agentMenuPatterns}
  2. Read the built agent YAML from {builtYaml}
  3. Read the edit plan from {editPlan}
  4. Extract the menu/commands section from the builtYaml
  5. Determine agent type (Simple, Expert, or Module) from metadata
  6. Compare actual menu against ALL validation rules

Protocol 2: Validation Checks

Perform these checks systematically - validate EVERY rule specified in agentMenuPatterns.md:

  1. Menu Structure

    • Menu section exists and is properly formatted
    • At least one menu item defined (unless intentionally tool-less)
    • Menu items follow proper YAML structure
    • Each item has required fields (name, description, pattern)
  2. Menu Item Requirements For each menu item:

    • name: Present, unique, uses kebab-case
    • description: Clear and concise
    • pattern: Valid regex pattern or tool reference
    • scope: Appropriate scope defined (if applicable)
  3. Pattern Quality

    • Patterns are valid and testable
    • Patterns are specific enough to match intended inputs
    • Patterns are not overly restrictive
    • Patterns use appropriate regex syntax
  4. Description Quality

    • Each item has clear description
    • Descriptions explain what the item does
    • Descriptions are consistent in style
    • Descriptions help users understand when to use
  5. Alignment Checks

    • Menu items align with agent's role/purpose
    • Menu items are supported by agent's expertise
    • Menu items fit within agent's constraints
    • Menu items are appropriate for target users
  6. Completeness

    • Core capabilities for this role are covered
    • No obvious missing functionality
    • Menu scope is appropriate (not too sparse/overloaded)
    • Related functionality is grouped logically
  7. Standards Compliance

    • No prohibited patterns or commands
    • No security vulnerabilities in patterns
    • No ambiguous or conflicting items
    • Consistent naming conventions
  8. Menu Link Validation (Agent Type Specific)

    • Determine agent type from metadata:
      • Simple: module property is 'stand-alone' AND hasSidecar is false/absent
      • Expert: hasSidecar is true
      • Module: module property is a module code (e.g., 'bmm', 'bmb', 'bmgd', 'bmad')
    • For Expert agents (hasSidecar: true):
      • Menu handlers SHOULD reference external sidecar files (e.g., ./{agent-name}-sidecar/...)
      • OR have inline prompts defined directly in the handler
    • For Module agents (module property is a module code):
      • Menu handlers SHOULD reference external module files under the module path
      • Exec paths must start with {project-root}/_bmad/{module}/...
      • Verify referenced files exist under the module directory
    • For Simple agents (stand-alone, no sidecar):
      • Menu handlers MUST NOT have external file links
      • Menu handlers SHOULD only use relative links within the same file (e.g., #section-name)
      • OR have inline prompts defined directly in the handler

Protocol 3: Record Findings

Organize findings into three sections and append to editPlan frontmatter under validationAfter.menu:

validationAfter:
  menu:
    status: [pass|fail|warning]
    passing:
      - "{check description}"
      - "{check description}"
    warnings:
      - "{non-blocking issue}"
    failures:
      - "{blocking issue that must be fixed}"

PASSING CHECKS (List what passed)

✓ Menu structure properly formatted
✓ 5 menu items defined, all with required fields
✓ All patterns are valid regex
✓ Menu items align with agent role
✓ Agent type appropriate menu links verified

WARNINGS (Non-blocking issues)

⚠ Item "analyze-data" description is vague
⚠ No menu item for [common capability X]
⚠ Pattern for "custom-command" very broad, may over-match

FAILURES (Blocking issues that must be fixed)

✗ Duplicate menu item name: "process" appears twice
✗ Invalid regex pattern: "[unclosed bracket"
✗ Menu item "system-admin" violates security guidelines
✗ No menu items defined for agent type that requires tools
✗ Simple agent has external link in menu handler (should be relative # or inline)
✗ Expert agent with sidecar has no external file links or inline prompts defined
✗ Module agent exec path doesn't start with {project-root}/_bmad/{module}/...
✗ Module agent references file that doesn't exist in module directory

Protocol 4: Auto-Advance

🚫 NO MENU PRESENTED - After recording findings, immediately load and execute {nextStepFile}


Auto-advancing to structure validation...

SUCCESS METRICS

All menu checks from agentMenuPatterns.md performed All checks validated against the actual builtYaml Agent type-specific link validation performed Findings saved to editPlan with detailed status Auto-advanced to next step