Display a formatted table of all available BMAD agent skills with their skill name, module, agent name, and description. Use when the user says 'list bmad agents', 'show agents', '/bmad-agents', 'what agents are available', 'who are the bmad agents', or wants to know which BMAD agent personas can be loaded. Also use when the user asks which agent to use for a specific task and needs to compare available options.
A dynamically generated markdown table of all installed BMAD agent skills — discovered from the filesystem via the bundled extraction script — with columns for Skill Name, Module, Agent Name, and Description.
Two extraction scripts are bundled (relative to this skill's directory). Use the shell script by
default; fall back to the Python script only if sh is unavailable.
scripts/extract-agents-csv.sh — POSIX sh + grep + sed, no dependenciesscripts/extract-agents-csv.py — Python 3 stdlib only (no PyYAML)Both scripts accept the same positional arguments and produce identical CSV output.
Locate the script. Resolve the skill directory from context (typically installed under
~/.claude/skills/bmad-agents/).
to confirm argument names and defaults:
--help firstsh <skill-dir>/scripts/extract-agents-csv.sh --help
Generate the CSV by running the shell script with the installed skills directory and a temp output path:
sh <skill-dir>/scripts/extract-agents-csv.sh ~/.claude/skills /tmp/agent-manifest.csv
If the shell script fails, fall back to:
python3 <skill-dir>/scripts/extract-agents-csv.py ~/.claude/skills /tmp/agent-manifest.csv
Read the CSV and build the table. Each row has these columns:
name — the skill name (e.g., bmad-bmm-agent-analyst)module — the BMAD module (e.g., bmm)displayName — the agent's human name (e.g., Mary)icon — optional emoji iconrole — one-line role descriptiontitle — agent titleOutput a CSV table — no preamble, no explanation, just the table:
| Skill Name | Module | Agent | Role |
|---|---|---|---|
| ... | ... | ... | ... |
icon + displayName if icon is present (e.g., 🔍 Mary),
otherwise just displayNamerole field; fall back to title if role is emptyAfter the table, add one blank line then:
To load an agent, invoke its skill by name — e.g., \/bmad-bmm-agent-pm``
python3 ...extract-agents-csv.py).~/.claude/skills/.bmad-{module}-agent-{agentName} and extract from their descriptions.