← All skills
bmad-toolsmith
75 / 100 · Review before installing
Check before installing.
By bmad-code-org/BMAD-METHOD (GitHub) · other · 55,255 stars · scanned at commit a867e16
Smithy the Toolsmith builds and maintains BMad skills, agents and modules. Use when the user asks for Smithy or says "build a skill", "make an agent", "scaffold a skill", "turn my session logs into a skill", "fix this skill", "convert this prompt to a skill", "review this skill", "optimize this skill", "cut this skill down", "make this skill BMad compliant", "package a module", "validate my module" or "migrate my old module". Not for running evals (`bmad-eval`) or overriding an installed skill …
Works with any agent that supports SKILL.md skills.
What this skill can do
Downloads and installs other software
The author does not mention this.
Found in 17 places.
Show 14 more
- skills/bmad-toolsmith/scripts/tests/test_scan_paths.py, line 75
self.assertEqual([f["text"] for f in hits], ["python3 scripts/go.py", "python -m json.tool", "pip install"]) - skills/bmad-toolsmith/shapes/agent/assets/SKILL-template.md, line 17
1. Resolve the agent block: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key agent`. Scrip - skills/bmad-toolsmith/shapes/agent/assets/SKILL-template.md, line 24
8. Dispatch. When the request names what the user wants, run the matching `{agent.menu}` item without showing the menu. Otherwise render the menu as a numbered - skills/bmad-toolsmith/shapes/memory-agent/assets/SKILL-template-bootloader.md, line 38
1. Resolve the agent block: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key agent`. Scrip - skills/bmad-toolsmith/shapes/multi-skill-module/assets/record-SKILL-template.md, line 5
This folder is the {title} module's record, not something to run. Invoke the `bmad` skill with `setup {code}`; it sets the module up if it never was, and otherw - skills/bmad-toolsmith/shapes/plain-skill/assets/SKILL-template.md, line 13
1. Config: `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative`. Script n - skills/bmad-toolsmith/shapes/plain-skill/assets/SKILL-template.md, line 19
{What the skill does, as outcomes with their reason. Exact procedure only where a wrong move costs something. Name a reference when its branch is reached, never - skills/bmad-toolsmith/shapes/plain-skill/assets/sample-skill/SKILL.md, line 11
1. Config: `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative`. Script n - skills/bmad-toolsmith/shapes/plain-skill/shape.md, line 33
- Changing a value is the `bmad-customize` skill's job, never the skill's own: no save command, no override writer, no merge script, no fallback reader for when - skills/bmad-toolsmith/shapes/rendered-agent/assets/workflow.md, line 38
A request that names what the user wants runs the matching item. Its `prompt` is the instruction; its `skill` is invoked by name, and when that skill is not ins - skills/bmad-toolsmith/shapes/single-skill-module/shape.md, line 28
- `update_source` is where `npx skills add` fetches the skill from, `github:<owner>/<repo>` or `github:<owner>/<repo>/<path>`; ask when it is not in the convers - skills/bmad-toolsmith/ship.md, line 68
For anything named but not installed, offer `npx skills add <repo> --skill <name>`; never run it unasked. - skills/bmad-toolsmith/ship.md, line 74
Smithy builds and packages offline. The install path from a public repo is `npx skills add <repo> --skill <name>`; say that and no more. When the user names a m - skills/bmad-toolsmith/ship.md, line 81
- When it was written where their agent reads skills: that it is live now, and that updates are theirs to make because the skills CLI will not track it. Otherwi
Connects to the internet
The author does not mention this.
Found in 2 places.
Runs commands on your computer
The author does not mention this.
Found in 21 places.
Show 17 more
- skills/bmad-toolsmith/scripts/tests/test_memory_agent_scripts.py, line 39
def run(script: Path, *args: str) -> subprocess.CompletedProcess: - skills/bmad-toolsmith/scripts/tests/test_memory_agent_scripts.py, line 40
return subprocess.run([sys.executable, str(script), *map(str, args)], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_prepass.py, line 46
res = subprocess.run([sys.executable, str(SCRIPT), str(skill)], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_process_template.py, line 33
res = subprocess.run([sys.executable, str(SCRIPT), str(path), *args], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_process_template.py, line 74
res = subprocess.run( - skills/bmad-toolsmith/scripts/tests/test_process_template.py, line 113
res = subprocess.run([sys.executable, str(SCRIPT), "/nonexistent/t.md"], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_read_session_log.py, line 77
res = subprocess.run( - skills/bmad-toolsmith/scripts/tests/test_registry.py, line 71
res = subprocess.run( - skills/bmad-toolsmith/scripts/tests/test_scan_legacy_module.py, line 70
res = subprocess.run([sys.executable, str(SCRIPT), str(folder)], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_scan_legacy_module.py, line 179
res = subprocess.run([sys.executable, str(SCRIPT), "/nonexistent"], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_scan_paths.py, line 23
res = subprocess.run([sys.executable, str(SCRIPT), str(skill)], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_scan_paths.py, line 146
res = subprocess.run( - skills/bmad-toolsmith/scripts/tests/test_scan_paths.py, line 161
res = subprocess.run( - skills/bmad-toolsmith/scripts/tests/test_scan_paths.py, line 173
res = subprocess.run([sys.executable, str(SCRIPT), "/nonexistent"], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_scan_scripts.py, line 31
res = subprocess.run([sys.executable, str(SCRIPT), str(skill)], capture_output=True, text=True) - skills/bmad-toolsmith/scripts/tests/test_scan_scripts.py, line 90
res = subprocess.run([sys.executable, str(SCRIPT), "/nonexistent"], capture_output=True, text=True) - skills/bmad-toolsmith/shapes/script-utility/assets/test-template.py, line 11
def run(*args: str) -> subprocess.CompletedProcess[str]:
and 1 more places
Safer alternatives
Low-risk skills in the same category (other) that look related. Check that one does what you need.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'bmad-toolsmith' ] || [ -L ~/.agents/skills/'bmad-toolsmith' ]; then echo 'A skill folder named bmad-toolsmith already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/bmad-code-org/BMAD-METHOD' "$d" && git -C "$d" checkout --quiet 'a867e1604b365d48ea03cbd109da1066ba0c84bc' -- 'skills/bmad-toolsmith' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/bmad-toolsmith' ~/.agents/skills/'bmad-toolsmith' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'bmad-toolsmith' ~/.claude/skills/'bmad-toolsmith' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for bmad-code-org/BMAD-METHOD shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/bmad-code-org/BMAD-METHOD/)
Score history
| Date | Version | Score |
|---|
| 2026-11-08 | a867e16 | 75 |