Files
calctext/.agents/skills/bmad-agent-builder/references/metadata-reference.md
2026-03-16 19:54:53 -04:00

4.4 KiB

Manifest Reference

Every BMad skill has a bmad-manifest.json at its root. This is the unified format for agents, workflows, and simple skills.

File Location

{skillname}/
├── SKILL.md              # name, description, persona content
├── bmad-manifest.json    # Capabilities, module integration, persona distillate
└── ...

SKILL.md Frontmatter (Minimal)

---
name: bmad-{modulecode}-{skillname}
description: [5-8 word summary]. [Use when user says 'X' or 'Y'.]
---

bmad-manifest.json

NOTE: Do NOT include $schema in generated manifests. The schema is used by validation tooling only — it is not part of the delivered skill.

{
  "module-code": "bmb",
  "replaces-skill": "bmad-original-agent",
  "persona": "A succinct distillation of who this agent is and how they operate.",
  "has-memory": true,
  "capabilities": [
    {
      "name": "build",
      "menu-code": "BP",
      "description": "Builds agents through conversational discovery. Outputs to skill folder.",
      "supports-headless": true,
      "prompt": "build-process.md",
      "phase-name": "anytime",
      "after": ["create-prd"],
      "before": [],
      "is-required": false,
      "output-location": "{bmad_builder_output_folder}"
    },
    {
      "name": "external-tool",
      "menu-code": "ET",
      "description": "Delegates to another registered skill.",
      "supports-headless": false,
      "skill-name": "bmad-some-other-skill"
    }
  ]
}

Field Reference

Top-Level Fields

Field Type Required Purpose
module-code string If module Short code for namespacing (e.g., bmb, cis)
replaces-skill string No Registered skill name this replaces. Inherits metadata during bmad-init.
persona string Agents only Succinct distillation of the agent's essence. Presence = this is an agent.
has-memory boolean No Whether state persists across sessions via sidecar memory

Capability Fields

Field Type Required Purpose
name string Yes Kebab-case identifier
menu-code string Yes 2-3 uppercase letter shortcut for menus
description string Yes What it does and when to suggest it
supports-autonomous boolean No Can run without user interaction
prompt string No Relative path to prompt file (internal capability)
skill-name string No Registered name of external skill (external capability)
phase-name string No Module phase this belongs to
after array No Skill names that should run before this capability
before array No Skill names this capability should run before
is-required boolean No If true, skills in before are blocked until this completes
output-location string No Where output goes (may use config variables)

Three Capability Flavors

  1. Has prompt — internal capability routed to a prompt file
  2. Has skill-name — delegates to another registered skill
  3. Has neither — SKILL.md handles it directly

The replaces-skill Field

When set, the skill inherits metadata from the replaced skill during bmad-init. Explicit fields in the new manifest override inherited values.

Agent vs Workflow vs Skill

No type field needed — inferred from content:

  • Has persona → agent
  • No persona → workflow or skill (distinction is complexity, not manifest structure)

Config Loading

All module skills MUST use the bmad-init skill at startup.

Path Construction Rules — CRITICAL

Only use {project-root} for _bmad paths.

Three path types:

  • Skill-internal — bare relative paths (no prefix)
  • Project _bmad paths — always {project-root}/_bmad/...
  • Config variables — used directly, already contain {project-root} in their resolved values

Correct:

references/reference.md                # Skill-internal (bare relative)
capability.md                         # Skill-internal (bare relative)
{project-root}/_bmad/_memory/x-sidecar/  # Project _bmad path
{output_folder}/report.md            # Config var (already has full path)

Never use:

../../other-skill/file.md              # Cross-skill relative path breaks with reorganization
{project-root}/{config_var}/output.md # Double-prefix
./references/reference.md              # Relative prefix breaks context changes