# IDE Agent Schema Definition # This schema defines the structure for IDE agent configuration files (.ide.md) # IDE agents are self-contained, conversational agents with commands and specialized capabilities type: object required: - role - file_references - persona - core_principles - critical_startup_operating_instructions - commands properties: role: type: string description: "The title/role name of the IDE agent" pattern: "^.+ IDE Agent$" examples: - "Product Manager IDE Agent" - "Business Analyst IDE Agent" - "Full Stack Developer IDE Agent" file_references: type: object description: "File paths and references used by the agent" required: - taskroot properties: taskroot: type: string description: "Root directory for task files" const: "bmad-core/tasks/" templates: type: string description: "Directory containing template files" const: "bmad-core/templates/" checklists: type: string description: "Directory containing checklists" const: "bmad-core/checklists/" default-template: type: string description: "Default template used by the agent" pattern: "^bmad-core/templates/.+$" additionalProperties: true persona: type: object required: - name - role - identity - focus - style properties: name: type: string description: "The agent's character name" examples: ["John", "Mary", "Sarah", "James", "Quinn", "Sally", "Winston", "Bob", "BMad"] role: type: string description: "The agent's professional role" identity: type: string description: "Extended description of the agent's specialization and expertise" minLength: 20 focus: type: string description: "Primary objectives and responsibilities" minLength: 20 style: type: string description: "Communication style and approach characteristics" minLength: 20 core_principles: type: array description: "Always-active principles that guide the agent's behavior" minItems: 3 contains: type: object properties: principle: const: "Numbered Options Protocol" description: pattern: ".*numbered lists.*easy selection.*" items: type: object required: - principle - description properties: principle: type: string description: "Brief principle title" pattern: "^[A-Z].*" description: type: string description: "Detailed explanation of the principle" minLength: 10 critical_startup_operating_instructions: type: array description: "Instructions executed when the agent starts" minItems: 1 items: type: string description: "Individual startup instruction" allOf: - description: "First instruction must announce name/role and mention *help" contains: type: string pattern: ".*(announce|Announce).*(name|role).*\\*help.*" commands: type: array description: "Available commands the agent can execute" minItems: 2 contains: type: object properties: command: const: "*help" description: pattern: ".*numbered list.*selection.*" items: type: object required: - command - description properties: command: type: string pattern: "^\\*[a-z][a-z0-9-]*( \\{[^}]+\\})?$" description: "Command syntax (must start with *)" description: type: string description: "What the command does" minLength: 10 parameters: type: array description: "Optional parameters for the command" items: type: string pattern: "^[a-z][a-z0-9-]*$" # Optional properties for agent-specific capabilities additionalProperties: true # Additional optional sections that may appear definitions: optional_sections: expertise: type: object description: "Technical expertise areas (commonly used by architect agents)" additionalProperties: type: string workflow: type: array description: "Step-by-step workflow description" items: type: string task_execution_protocol: type: object description: "Detailed protocol for task execution (commonly used by dev agents)" additionalProperties: true agent_transformation_protocol: type: object description: "Protocol for transforming into other agents (used by BMAD orchestrator)" additionalProperties: true # Validation rules allOf: # Ensure common commands are properly formatted - if: properties: commands: contains: properties: command: const: "*chat-mode" then: properties: commands: contains: properties: description: pattern: ".*(conversational mode|advanced-elicitation).*" # Ensure create commands reference tasks - if: properties: commands: contains: properties: command: pattern: "^\\*create-" then: properties: commands: contains: properties: description: pattern: ".*(task|create-doc).*" # Examples showing valid IDE agent configurations examples: product_manager: role: "Product Manager IDE Agent" file_references: taskroot: "bmad-core/tasks/" templates: "bmad-core/templates/" default-template: "bmad-core/templates/prd-tmpl" persona: name: "John" role: "Product Manager" identity: "Product Manager specialized in document creation and product research" focus: "Creating Product Requirements Documents (PRDs) and other product documentation using templates" style: "Analytical, inquisitive, data-driven, user-focused, pragmatic" core_principles: - principle: "User-Focused Requirements" description: "All requirements must center on user needs and value" - principle: "Clear Success Metrics" description: "Define measurable outcomes for all features" - principle: "Numbered Options Protocol" description: "When presenting multiple options, use numbered lists for easy selection" critical_startup_operating_instructions: - "Announce your name and role, and let user know they can say *help at any time" commands: - command: "*help" description: "Show these available commands as a numbered list offering selection" - command: "*chat-mode" description: "Enter conversational mode with advanced-elicitation options" - command: "*create-doc {template-name}" description: "Run task create-doc with specified template" parameters: ["template-name"]