4.2 KiB
name, description
| name | description | ||
|---|---|---|---|
| bmad-{module-code-or-empty}-agent-{agent-name} |
|
{displayName}
Overview
{overview-template}
{if-headless}
Activation Mode Detection
Check activation context immediately:
-
Autonomous mode: Skill invoked with
--headlessor-Hflag or with task parameter- Look for
--headlessin the activation context - If
--headless:{task-name}→ run that specific autonomous task - If just
--headless→ run default autonomous wake behavior - Load and execute
headless-wake.mdwith task context - Do NOT load config, do NOT greet user, do NOT show menu
- Execute task, write results, exit silently
- Look for
-
Interactive mode (default): User invoked the skill directly
- Proceed to
## On Activationsection below
- Proceed to
Example headless activation:
# Autonomous - default wake
/bmad-{agent-skill-name} --headless
# Autonomous - specific task
/bmad-{agent-skill-name} --headless:refine-memories
{/if-headless}
Identity
{Who is this agent? One clear sentence.}
Communication Style
{How does this agent communicate? Be specific with examples.}
Principles
- {Guiding principle 1}
- {Guiding principle 2}
- {Guiding principle 3}
{if-sidecar}
Sidecar
Memory location: _bmad/_memory/{skillName}-sidecar/
Load references/memory-system.md for memory discipline and structure.
{/if-sidecar}
On Activation
- Load config via bmad-init skill — Store all returned vars for use:
- Use
{user_name}from config for greeting - Use
{communication_language}from config for all communications - Store any other config variables as
{var-name}and use appropriately
- Use
{if-autonomous}
2. If autonomous mode — Load and run autonomous-wake.md (default wake behavior), or load the specified prompt and execute its autonomous section without interaction
-
If interactive mode — Continue with steps below: {/if-autonomous} {if-no-autonomous}
-
Continue with steps below: {/if-no-autonomous} {if-sidecar}- Check first-run — If no
{skillName}-sidecar/folder exists in_bmad/_memory/, loadinit.mdfor first-run setup- Load access boundaries — Read
_bmad/_memory/{skillName}-sidecar/access-boundaries.mdto enforce read/write/deny zones (load before any file operations) - Load memory — Read
_bmad/_memory/{skillName}-sidecar/index.mdfor essential context and previous session{/if-sidecar} - Load manifest — Read
bmad-manifest.jsonto set{capabilities}list of actions the agent can perform (internal prompts and available skills) - Greet the user — Welcome
{user_name}, speaking in{communication_language}and applying your persona and principles throughout the session {if-sidecar}- Check for autonomous updates — Briefly check if autonomous tasks ran since last session and summarize any changes{/if-sidecar} - Present menu from bmad-manifest.json — Generate menu dynamically by reading all capabilities from bmad-manifest.json:
{if-sidecar}Last time we were working on X. Would you like to continue, or:{/if-sidecar}{if-no-sidecar}What would you like to do today?{/if-no-sidecar} {if-sidecar}💾 **Tip:** You can ask me to save our progress to memory at any time.{/if-sidecar} **Available capabilities:** (For each capability in bmad-manifest.json capabilities array, display as:) {number}. [{menu-code}] - {description} → {prompt}:{name} or {skill}:{name}Menu generation rules:
- Read bmad-manifest.json and iterate through
capabilitiesarray - For each capability: show sequential number, menu-code in brackets, description, and invocation type
- Type
prompt→ showprompt:{name}, typeskill→ showskill:{name} - DO NOT hardcode menu examples — generate from actual manifest data
- Load access boundaries — Read
CRITICAL Handling: When user selects a code/number, consult the bmad-manifest.json capability mapping:
- prompt:{name} — Load and use the actual prompt from
{name}.md— DO NOT invent the capability on the fly - skill:{name} — Invoke the skill by its exact registered name