From bmad-utility-skills
Converts a BMad skill into downloadable web bundles for Gemini Gem and ChatGPT Custom GPT, including persona, instructions, and knowledge files. Use when publishing skills to consumer LLM platforms.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bmad-utility-skills:bmad-os-skill-to-bundleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Convert a BMad skill folder into a self-contained web bundle a non-technical user installs as a Gemini Gem or ChatGPT Custom GPT. Canonical example: `assets/example-bundle/`. INSTRUCTIONS scaffold: `assets/instructions-template.md`.
Convert a BMad skill folder into a self-contained web bundle a non-technical user installs as a Gemini Gem or ChatGPT Custom GPT. Canonical example: assets/example-bundle/. INSTRUCTIONS scaffold: assets/instructions-template.md.
SKILL.md defines the protocol. Both required.bmad-agent-* peer in the same module owns this work (analyst owns brainstorming, research, brief, PRFAQ; pm owns PRD, epics, stories), lift name, title, icon, role, identity, communication_style, principles verbatim from its customize.toml. Invent only when no owning agent exists.[preferences] defaults to none. It earns a slot only for values that persist usefully across sessions (default user name is the classic). Per-session choices (mode, depth, focus) are opening conversation, not preferences.SKILL.md plus optional references/ and data files.bundles-output/<slug>/.Confirm the source path, the derived slug, the owning-agent persona source (if any), and the output destination. Then proceed.
Read the source whole. Source SKILL.md, every references/*.md, every data file. Identify the methodology master, the owning agent, the data dependencies, and any doc-validation rules the source applies to its own outputs.
Plan the translations. Map each framework dependency to its persona-executable equivalent before writing. If something is pure deploy automation with no LLM essence, surface it and decide with the user.
Write the bundle SKILL.md. Rewrite the source as standalone instructions a persona can execute on a consumer platform. Inline references/ content; strip {project-root}, customize.toml, file routing, on-activation scaffolding. Bake in: Canvas at start with continuous updates, visual-first via Mermaid/HTML, web-search bias for stale facts. Name the methodology master. Put the polish work (and the validation-file load if any) at the end of the session flow.
Lift validation to its own file (if the source applies one). Write to <bundle>/<purpose>-validation.md and have the protocol load it during polish.
Copy data files (.csv, .yaml, .txt) unchanged.
Generate the personas. Default: inherited from the owning agent if one exists; otherwise invented with 1 or 2 named practitioners in identity and a suggested_focus ending "Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere." One swap-example: contrasting voice, equal competence, same field shape.
Fill INSTRUCTIONS.md from assets/instructions-template.md: title, persona, swap-example, list of files to upload, and the Web Browsing capability line if the protocol uses search. Inside every YAML block scalar (role: |, identity: |, communication_style: |, suggested_focus: |), each paragraph must be a single physical line — no hard wraps at any column width. Viewers word-wrap; hard wraps just produce annoying ragged breaks.
Trim pass. Read the drafted SKILL.md and INSTRUCTIONS.md end to end and cut every line that fails "would a capable LLM do this correctly without being told?" Specifically hunt for: ceremonial preambles ("This file defines..."), ## Closing Stance flourishes, restated rules across multiple sections, LLM-default coaching advice (don't hedge, honor user steering, mirror before pushing), anti-patterns that restate the core stance, and INSTRUCTIONS lines like "Do not skim. Do not answer from priors." Compare line count to the source: a 30-50% reduction is normal. If the bundle is the same size or larger than the source, something went wrong; trim again.
Confirm and write. Show the bundle path and file list; ask before overwriting a non-empty destination.
SKILL.md raw as the bundle protocol. Framework idioms will not translate.bmad-agent-* exists.bmad-os-, {project-root}, customize.toml, or file routing into bundle output.## Closing Stance flourish at the end of the bundle SKILL.md. Cut it.communication_style field. Pick one place; the SKILL.md top is the natural home.role: |, identity: |, etc.) in INSTRUCTIONS.md. Each paragraph is a single physical line; viewers handle the wrapping.assets/example-bundle/ (brainstorming coach) is the canonical bundle to study. assets/instructions-template.md is the INSTRUCTIONS scaffold.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub bmad-code-org/bmad-utility-skills --plugin bmad-utility-skills