BMAD-METHOD/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml

34 lines
834 B
YAML
Raw Normal View History

feat: add agent schema validation with comprehensive testing (#774) Introduce automated validation for agent YAML files using Zod to ensure schema compliance across all agent definitions. This feature validates 17 agent files across core and module directories, catching structural errors and maintaining consistency. Schema Validation (tools/schema/agent.js): - Zod-based schema validating metadata, persona, menu, prompts, and critical actions - Module-aware validation: module field required for src/modules/**/agents/, optional for src/core/agents/ - Enforces kebab-case unique triggers and at least one command target per menu item - Validates persona.principles as array (not string) - Comprehensive refinements for data integrity CLI Validator (tools/validate-agent-schema.js): - Scans src/{core,modules/*}/agents/*.agent.yaml - Parses with js-yaml and validates using Zod schema - Reports detailed errors with file paths and field paths - Exits 1 on failures, 0 on success - Accepts optional project_root parameter for testing Testing (679 lines across 3 test files): - test/test-cli-integration.sh: CLI behavior and error handling tests - test/unit-test-schema.js: Direct schema validation unit tests - test/test-agent-schema.js: Comprehensive fixture-based tests - 50 test fixtures covering valid and invalid scenarios - ESLint configured to support CommonJS test files - Prettier configured to ignore intentionally broken fixtures CI Integration (.github/workflows/lint.yaml): - Renamed from format-check.yaml to lint.yaml - Added schema-validation job running npm run validate:schemas - Runs in parallel with prettier and eslint jobs - Validates on all pull requests Data Cleanup: - Fixed src/core/agents/bmad-master.agent.yaml: converted persona.principles from string to array format Documentation: - Updated schema-classification.md with validation section - Documents validator usage, enforcement rules, and CI integration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
2025-10-20 05:14:50 -07:00
# Test: Valid kebab-case triggers
# Expected: PASS
agent:
metadata:
id: kebab-triggers
name: Kebab Case Triggers
title: Kebab Triggers
icon: 🧪
persona:
role: Test agent with kebab-case triggers
identity: I test kebab-case trigger validation.
communication_style: Clear
principles:
- Test kebab-case format
menu:
- trigger: help
description: Single word trigger
action: display_help
- trigger: list-tasks
description: Two word trigger
action: list_tasks
- trigger: workflow-init-process
description: Three word trigger
action: init_workflow
- trigger: test123
description: Trigger with numbers
action: test
- trigger: multi-word-kebab-case-trigger
description: Long kebab-case trigger
action: long_action