schema standardization and bmad ide orchesatrtor can do anything

This commit is contained in:
Brian Madison
2025-06-10 07:17:19 -05:00
parent 810a39658a
commit 0d59c686dd
74 changed files with 2087 additions and 58486 deletions

138
bmad-core/schemas/README.md Normal file
View File

@@ -0,0 +1,138 @@
# BMAD Schemas
This directory contains YAML schema definitions for BMAD Method configuration files.
## Agent Schema
The `agent-schema.yml` defines the EXACT structure required for agent configuration files in the BMAD Method, based on the standard pm.yml structure.
### Required Structure
Every agent configuration file MUST have exactly these fields:
```yaml
agent:
name: string # Human-friendly name (e.g., "John")
id: string # Unique identifier (e.g., "pm")
title: string # Professional title (e.g., "Product Manager")
description: string # Main goal and purpose of the agent
persona: string # Reference to persona file in bmad-core/personas/
customize: string # Customization instructions (use "" if none)
dependencies:
tasks: [] # Array of task files from bmad-core/tasks/
templates: [] # Array of template files from bmad-core/templates/
checklists: [] # Array of checklist files from bmad-core/checklists/
data: [] # Array of data files from bmad-core/data/
utils: [] # Array of utility files from bmad-core/utils/
```
### Important Notes
1. **ALL fields are required** - Even if empty, include all fields with empty arrays `[]` or empty strings `""`
2. **No additional fields allowed** - The schema enforces exactly this structure
3. **No environments section** - Environment-specific configurations are not part of the standard
4. **Customize field** - Must be present even if empty (use `""`)
### Example (pm.yml)
```yaml
agent:
name: John
id: pm
title: Product Manager
description: >-
Main goal is to help produce or maintain the best possible PRD and represent the end user the
product will serve.
persona: pm
customize: ""
dependencies:
tasks:
- create-doc-from-template
- correct-course
- create-deep-research-prompt
- brownfield-create-epic
- brownfield-create-story
- execute-checklist
templates:
- prd-tmpl
- brownfield-prd-tmpl
checklists:
- pm-checklist
- change-checklist
data:
- technical-preferences
utils:
- template-format
```
## Agent Team Schema
The `agent-team-schema.yml` defines the structure for agent team configuration files in the BMAD Method.
### Required Structure
Every team configuration file MUST have exactly these fields:
```yaml
bundle:
name: string # Team name (e.g., "Team Fullstack")
description: string # Team purpose and capabilities
agents: [] # Array of agent IDs or "*" for all agents
workflows: [] # Array of workflow names from bmad-core/workflows/
```
### Important Notes
1. **ALL fields are required** - Include all fields even if arrays are empty
2. **No additional fields allowed** - The schema enforces exactly this structure
3. **Agent wildcard** - Use `"*"` to include all available agents
4. **Workflows** - Reference workflow files from bmad-core/workflows/ (without extension)
### Example (team-fullstack.yml)
```yaml
bundle:
name: Team Fullstack
description: >-
Comprehensive full-stack development team capable of handling both greenfield
application development and brownfield enhancement projects. This team combines
strategic planning, user experience design, and holistic system architecture
to deliver complete solutions from concept to deployment.
agents:
- bmad
- analyst
- pm
- ux-expert
- architect
- po
workflows:
- brownfield-fullstack
- brownfield-service
- brownfield-ui
- greenfield-fullstack
- greenfield-service
- greenfield-ui
```
### Special Cases
**Using Wildcards** - The team-all.yml example shows using both specific agents and wildcards:
```yaml
agents:
- bmad
- "*" # Includes all other agents
```
## File References
All references in schemas should be file names WITHOUT extensions:
-`prd-tmpl` (not `prd-tmpl.md`)
-`pm-checklist` (not `pm-checklist.md`)
- ✅ `greenfield-fullstack` (not `greenfield-fullstack.yml`)

View File

@@ -0,0 +1,232 @@
# BMAD Agent Configuration Schema
# This schema defines the structure for BMAD agent configuration files
# Agents are composed of configuration + persona + dependencies
type: object
required:
- agent
- dependencies
properties:
agent:
type: object
description: Core agent configuration and metadata
required:
- name
- id
- title
- description
- persona
- customize
properties:
name:
type: string
description: Human-friendly character name of the agent
pattern: "^[A-Z][a-z]+$"
examples:
- "John"
- "Mary"
- "Sarah"
- "James"
- "Quinn"
- "Sally"
- "Winston"
- "Bob"
- "BMad"
id:
type: string
description: Unique identifier for the agent (lowercase, hyphenated)
pattern: "^[a-z][a-z0-9-]*$"
examples:
- "pm"
- "analyst"
- "architect"
- "po"
- "sm"
- "dev"
- "qa"
- "ux-expert"
- "bmad"
title:
type: string
description: Professional title or role
minLength: 5
maxLength: 50
examples:
- "Product Manager"
- "Business Analyst"
- "Architect"
- "Product Owner"
- "Scrum Master"
- "Full Stack Developer"
- "QA Engineer"
- "UX Expert"
description:
type: string
description: Main goal and purpose of the agent
minLength: 20
maxLength: 300
persona:
type: string
description: Reference to the persona file in bmad-core/personas/
pattern: "^bmad-core/personas/[a-z][a-z0-9-]*\\.md$"
customize:
type: string
description: Customization instructions or empty string for no customization
default: ""
dependencies:
type: object
description: Resources required by this agent
required:
- tasks
- templates
- checklists
- data
- utils
properties:
tasks:
type: array
description: List of task files from bmad-core/tasks/
items:
type: string
pattern: "^[a-z][a-z0-9-]*$"
uniqueItems: true
templates:
type: array
description: List of template files from bmad-core/templates/
items:
type: string
pattern: "^[a-z][a-z0-9-]*-tmpl$"
uniqueItems: true
checklists:
type: array
description: List of checklist files from bmad-core/checklists/
items:
type: string
pattern: "^[a-z][a-z0-9-]*-checklist$"
uniqueItems: true
data:
type: array
description: List of data files from bmad-core/data/
items:
type: string
pattern: "^[a-z][a-z0-9-]*$"
uniqueItems: true
utils:
type: array
description: List of utility files from bmad-core/utils/
items:
type: string
pattern: "^[a-z][a-z0-9-]*$"
uniqueItems: true
# No additional properties allowed
additionalProperties: false
# Validation rules
allOf:
# Ensure persona file matches agent id
- if:
properties:
agent:
properties:
id:
const: "ux-expert"
then:
properties:
agent:
properties:
persona:
const: "bmad-core/personas/ux-expert.md"
- if:
properties:
agent:
properties:
id:
pattern: "^(?!ux-expert).*$"
then:
properties:
agent:
properties:
persona:
pattern: "^bmad-core/personas/\\1\\.md$"
# Examples showing valid agent configurations
examples:
product_manager:
agent:
name: "John"
id: "pm"
title: "Product Manager"
description: "Creates Product Requirements Documents (PRDs) and conducts product research to define product strategy"
persona: "bmad-core/personas/pm.md"
customize: ""
dependencies:
tasks:
- "create-doc-from-template"
- "advanced-elicitation"
- "shard-doc"
templates:
- "prd-tmpl"
- "project-brief-tmpl"
- "brownfield-prd-tmpl"
checklists:
- "pm-checklist"
data:
- "bmad-kb"
- "technical-preferences"
utils:
- "template-format"
business_analyst:
agent:
name: "Mary"
id: "analyst"
title: "Business Analyst"
description: "Facilitates brainstorming sessions, creates research prompts, and develops comprehensive project briefs"
persona: "bmad-core/personas/analyst.md"
customize: ""
dependencies:
tasks:
- "advanced-elicitation"
- "create-deep-research-prompt"
- "create-doc-from-template"
templates:
- "project-brief-tmpl"
checklists: []
data:
- "bmad-kb"
utils: []
architect:
agent:
name: "Winston"
id: "architect"
title: "Architect"
description: "Designs comprehensive system architectures balancing user experience, technical excellence, and practical implementation"
persona: "bmad-core/personas/architect.md"
customize: ""
dependencies:
tasks:
- "create-doc-from-template"
- "execute-checklist"
- "shard-doc"
templates:
- "architecture-tmpl"
- "fullstack-architecture-tmpl"
- "brownfield-architecture-tmpl"
checklists:
- "architect-checklist"
data:
- "technical-preferences"
utils: []

View File

@@ -0,0 +1,153 @@
# BMAD Agent Team Configuration Schema
# This schema defines the structure for BMAD agent team configuration files
# Teams bundle multiple agents and workflows for specific project types
type: object
required:
- bundle
- agents
- workflows
properties:
bundle:
type: object
description: Team bundle metadata and configuration
required:
- name
- description
properties:
name:
type: string
description: Human-friendly name of the team bundle
pattern: "^Team .+$"
examples:
- "Team Fullstack"
- "Team No UI"
- "Team All"
description:
type: string
description: Detailed description of the team's purpose, capabilities, and use cases
minLength: 20
maxLength: 500
agents:
type: array
description: List of agents included in this team bundle
minItems: 2
items:
type: string
description: Agent ID matching agents/{agent}.yml or special value '*' for all agents
pattern: "^([a-z-]+|\\*)$"
examples:
- "bmad"
- "analyst"
- "pm"
- "ux-expert"
- "architect"
- "po"
- "sm"
- "dev"
- "qa"
- "*"
uniqueItems: true
allOf:
- description: Must include 'bmad' as the orchestrator
contains:
const: "bmad"
workflows:
type: array
description: List of workflows this team can execute
minItems: 1
items:
type: string
description: Workflow ID matching bmad-core/workflows/{workflow}.yml
enum:
- "brownfield-fullstack"
- "brownfield-service"
- "brownfield-ui"
- "greenfield-fullstack"
- "greenfield-service"
- "greenfield-ui"
uniqueItems: true
# No additional properties allowed
additionalProperties: false
# Validation rules
allOf:
- if:
properties:
agents:
contains:
const: "*"
then:
properties:
agents:
maxItems: 2
description: When using wildcard '*', only 'bmad' and '*' should be present
- if:
properties:
bundle:
properties:
name:
const: "Team No UI"
then:
properties:
agents:
not:
contains:
const: "ux-expert"
workflows:
not:
contains:
enum: ["brownfield-ui", "greenfield-ui"]
# Examples showing valid team configurations
examples:
minimal_team:
bundle:
name: "Team Minimal"
description: "Minimal team for basic project planning and architecture without implementation"
agents:
- bmad
- analyst
- architect
workflows:
- greenfield-service
fullstack_team:
bundle:
name: "Team Fullstack"
description: "Comprehensive full-stack development team capable of handling both greenfield application development and brownfield enhancement projects. This team combines strategic planning, user experience design, and holistic system architecture to deliver complete solutions from concept to deployment."
agents:
- bmad
- analyst
- pm
- ux-expert
- architect
- po
workflows:
- brownfield-fullstack
- brownfield-service
- brownfield-ui
- greenfield-fullstack
- greenfield-service
- greenfield-ui
all_agents_team:
bundle:
name: "Team All"
description: "This is a full organization of agents and includes every possible agent. This will produce the largest bundle but give the most options for discussion in a single session"
agents:
- bmad
- "*"
workflows:
- brownfield-fullstack
- brownfield-service
- brownfield-ui
- greenfield-fullstack
- greenfield-service
- greenfield-ui

View File

@@ -0,0 +1,240 @@
# 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"]