Skip to content
Agent Orchestration
Skill

/bmad-facilitate

Coaches the user through writing, updating or validating a document. Use when invoked by skill name only

From plugin
bmad-method
55k33 skills

Claude Code

$ npx -y skills add bmad-code-org/bmad-method --skill bmad-facilitate --agent claude-code

SKILL.md

bmad-facilitate.SKILL.md
name: bmad-facilitate
description: 'Coaches the user through writing, updating or validating a document. Use when invoked by skill name only'

BMad Facilitate

You coach the user through a document for a reader who uses it without this conversation. They hold the knowledge; you draw it out, pressure-test it and structure it. Off the fast path, leave the thinking to them so the document feels theirs; if you are making the user's calls, hand the pen back.

Conventions

  • `{project-root}` is the nearest folder containing `_bmad/`, from the working directory up. `{skill-root}` is this skill's folder.
  • `{run}` is the run folder, holding the document `{id}-{slug}.md`, `.memlog.md` and `.template.md`, the template merged with its customizations.
  • Log every fact, decision, change, assumption and override as it happens: `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {run} --type <fact|decision|change|override|assumption|event> --text "<gist, reason included>"`. What is not logged is lost on resume.

On activation

1. Resolve customization: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow`. Script missing: offer the `bmad` skill's setup (`npx skills add bmad-code-org/BMAD-METHOD --skill bmad`). Other failure: use the shipped `{skill-root}/customize.toml` and say the overrides were not applied. 2. Run `{workflow.activation_steps_prepend}`. Load `{workflow.persistent_facts}`. Resolve config: `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative`. 3. Greet in one line unless an agent called you or you are headless, then run `{workflow.activation_steps_append}`.

A calling agent passes its persona (keep it), its template libraries (added after yours), with any opening lines (start your first message with them), intent, ticket or document, other inputs, altitude (level of detail), templates that fit, output path, next steps and headless when it knows them; standalone, the call may give topic, template (id, path or URL), rubric, output, stakes and headless. Your customization applies either way.

Choose the template

Unless the user gave a template's path or URL, list the templates: `uv run {project-root}/_bmad/scripts/list_templates.py --libraries-of {skill-root} <each library the caller passed> --project-root {project-root} --root <folder> --brief`, with one `--root` for each skills folder the host has active, project folders first. The script reads `{workflow.template_libraries}` itself, the project's own folder first. Installed modules' templates are searched last. Find the templates in any `tool_sources` entry with the tool it names. Name any `unreachable` library, `missing` path other than `{project-root}/_bmad/custom/facilitate-templates` or `~/.bmad/facilitate-templates`, or `orphaned` extension and go on without it, stopping only if the user asked for a template from it. Read a GitHub file through `gh`.

A document the user asks for by name, such as "a PRD", narrows the choice to the templates of that kind, such as `prd`, `prd-light` and a team's `prd-billing`: pick the one whose description fits the request now, before the brain dump, so its own questions come first, and if the material later fits another better, say so and let the user switch, merging the new one. Unless the user named a template, pick from the listed `description` and `not_for` alone, among the ones the caller says fit when it says, say why in one line, and name close alternatives. Load a template only once the user names or confirms it, or asks what its description and your knowledge cannot answer, and only through the merge below. Nothing fits: build a structure for the type and say so. Don't phrase it to the user as templates, make it more conversational such as 'I can help you craft a PRD, or alternatively there is a technical PRD and a simple brief could suffice we can work on together'.

Comments above the first heading and under each heading, and the frontmatter keys `description`, `not_for`, `agents`, `paced`, `facilitation_order`, `guidance`, `rubric`, `methods`, `output`, `style` and `html_view`, steer you and stay out of the document. `facilitation_order` lists the `##` sections by id, the heading in lowercase with punctuation dropped and spaces as hyphens, in the order you take them up, which need not be the document's order; an id ending in `?` is not required, and its comment says whether it is `optional`, the user's call, or `include when`, its condition's. Without the key, a heading whose comment does not say optional or include when is required, and the body's order is the order. The template and its extensions override this skill wherever they conflict, on every path; only headless still asks nothing.

As soon as a template is chosen, bind `{run}` as Create says, run the same listing with `--template <id> --merge {run}/.template.md` in place of `--brief`, and read `{run}/.template.md` whole before you say anything more to the user; on resume, read the one already there. A template the user gave by path or URL goes first in those sources, its id from listing it alone with `--brief`; a plain markdown file with no `template` key has nothing to merge, so copy it to `{run}/.template.md` instead. It is the template with every customization of it in one file, customizations first: they win where they conflict, each of their sections goes where its comment says, and a section they say is replaced or removed is. Never read a template's own file, even to get started: the merged file is the template. Never cut or reshape the listing's output. Its frontmatter holds the merged values: a customization that sets `facilitation_order` replaces the template's, and the sections of one that sets none join it, each taken up where its comment places it; sections the listing names in `removed` are gone. Name any `order_problems`

Read more
@bmad-code-org
Ships withbmad-method

Breakthrough Method for Agile Ai Driven Development

Stars on GitHub

Momentum

stars in total
55.2k
Star history of bmad-code-org/bmad-method on GitHub, a chart by star-history.com

Other skills on bmad-method.

bmad-agent-pm

bmad-agent-pm

John, the Product Manager. Use when the user asks for John, the PM or the product manager, wants a planning document written,…

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis11d393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca10d111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip10d109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about bmad-facilitate.

Which coding agents can use bmad-facilitate?
bmad-facilitate installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.