3.0 KiB
3.0 KiB
Phase 1: Schema and Format Review (PR #821)
Date: 2025-10-28 Branch: pr-821-review
What we inspected
- BMAD agent schema implementation:
tools/schema/agent.js - Example BMAD agent:
src/modules/bmb/agents/bmad-builder.agent.yaml - Example PR agent (Claude):
subagentic/claude-subagents/agents/master.md
Findings
BMAD Agent Schema (YAML)
- File extension:
*.agent.yaml - Validated via Zod schema (
tools/schema/agent.js) - Required structure:
agent.metadata(id, name, title, icon, optional module)agent.persona(role, identity, communication_style, principles[])agent.menu[](entries withtrigger,description, and one command target:workflow|validate-workflow|exec|action|tmpl|data|run-workflow)- Optional:
agent.critical_actions[],agent.prompts[]
- Module scoping derived from path:
src/modules/<module>/agents/
PR Subagent Format (Markdown)
- File extension:
.mdwith YAML frontmatter - Frontmatter keys observed:
name,description,model,color - Body contains prose defining behavior, commands (e.g.,
*help,*task), and resource lists - Designed for editor-level runtime loading (e.g.,
~/.claude/tasks)
Compatibility Assessment
- Schema: Incompatible (Markdown vs YAML schema)
- Data shape: Different core concepts (persona/menu vs freeform behavior & commands)
- Invocation model: Different (BMAD menus/workflows vs
*commands and@agententries)
Implications
- BMAD validators (
validate:schemas, tests) do not apply tosubagentic/content - Direct migration requires either:
- An adapter to convert subagent MD to BMAD
*.agent.yamldefinitions, or - A generator to produce subagentic MD from BMAD YAML agents (reverse direction), or
- Keep subagentic content external and reference it in docs
- An adapter to convert subagent MD to BMAD
Minimal Adapter Proposal (Option 1)
- Parser: Read Markdown, extract frontmatter (name/description) and derive persona/menu
- Mapping sketch:
agent.metadata: id<module or external>/subagentic/<name>, name<frontmatter.name>, title from description, icon defaultagent.persona: role from name, identity from description; principles use subagent "Core Operating Principles"agent.menu: map*commands to menutrigger+action(exec), with descriptions from Commands section
- Output: Write to
src/modules/subagentic/agents/<agent>.agent.yaml(new module) - Caveat: Requires curation; not all commands map cleanly to BMAD command targets
Current Repo Validation Status (context)
npm test(fixtures) => 48 passed, 2 failed (fixture expectations)npm run validate:schemas(real agents) => 14 valid, 3 invalid (existing BMM agents with extra keys)- These failures are unrelated to PR #821 content and pre-exist under
src/modules/bmm/agents/
Recommendation for Phase 2
- Do not attempt to validate
subagentic/with BMAD schema (non-applicable) - If integration is desired, spike an adapter script to convert 1-2 agents as proof of concept
- Otherwise, proceed with decision on documenting subagentic as an external alternative