SKILL-template.md 3.2 KB


name: {skill-name}

description: {one-line summary plus the trigger phrases that should route here, e.g. "Use when the user says X or wants to Y"}

{skill-name}

{One paragraph stating the destination: the stance the skill acts from, the outcome it produces, who consumes that output, and the bar that consumer sets. Write it once; do not restate it lower down.}

Resolution rules

  • Bare paths and {skill-root} (e.g. references/guide.md) resolve from this skill's installed directory.
  • {project-root} → the project working directory.
  • {skill-name} → the skill directory's basename.

On Activation

  1. Load config from {project-root}/_bmad/config.yaml (and .user.yaml if present). Use sensible defaults for anything missing rather than requiring configuration.
  1. Resume check. Look for an existing .memlog.md in the run folder. If one is found, read it once to rebuild state and continue append-only; otherwise initialize a new memlog with uv run {project-root}/_bmad/scripts/memlog.py init --path <run-folder>/.memlog.md.
  1. Resolve the workflow block: run uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow. If the script fails, merge these three files yourself in base → team → user order — {skill-root}/customize.toml, {project-root}/_bmad/custom/{skill-name}.toml, {project-root}/_bmad/custom/{skill-name}.user.toml — where scalars override, tables deep-merge, arrays of tables keyed by code/id replace matching entries and append new ones, and all other arrays append. Reference resolved values as {workflow.<name>} everywhere below; never hardcode a path beside a declared scalar.

{Body}

{The body is whatever the skill needs and nothing more. State each beat as the outcome you want, reserving exact procedure for the few places a wrong move costs something. Name stages with descriptive words, never numbered prefixes.}