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
- Read the menu patterns reference from
{agentMenuPatterns} - Read the built agent YAML from
{builtYaml} - Read the edit plan from
{editPlan} - Extract the menu/commands section from the builtYaml
- Determine agent type (Simple, Expert, or Module) from metadata
- Compare actual menu against ALL validation rules
Protocol 2: Validation Checks
Perform these checks systematically - validate EVERY rule specified in agentMenuPatterns.md:
-
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)
-
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)
-
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
-
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
-
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
-
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
-
Standards Compliance
- No prohibited patterns or commands
- No security vulnerabilities in patterns
- No ambiguous or conflicting items
- Consistent naming conventions
-
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
- Menu handlers SHOULD reference external sidecar files (e.g.,
- 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
- Determine agent type from metadata:
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