
BMad Customize
FreeEasily customize BMad agent and workflow behaviors.
Free · Opens the source repo
What BMad Customize does
BMad Customize is a Python-based tool designed to help users create and manage customization overrides for BMad skills. This skill translates user intents into TOML configuration files that define how agents and workflows behave within the BMad framework. By generating the appropriate override files, users can tailor the functionality of their BMad installations to better suit their needs, whether it be for personal use or team collaboration.
The skill operates by first determining the user's intent—whether they want to customize a specific skill, explore available customization options, or review existing overrides. It guides users through a structured process, starting with the classification of their intent, followed by the discovery of customizable skills, and finally composing the necessary TOML overrides. This ensures that users can make informed decisions about how to modify their BMad agents and workflows effectively.
BMad Customize supports both team and user-specific overrides, allowing for flexibility in managing configurations. Team overrides are intended for shared settings within an organization, while user overrides can be personalized for individual preferences. The skill also includes verification steps to ensure that the overrides are correctly applied and provides feedback on the changes made, which is crucial for maintaining clarity in configurations.
This skill is particularly useful for developers and designers working within the BMad ecosystem who need to adapt agent behaviors or workflows to meet specific project requirements. By simplifying the customization process, BMad Customize empowers users to enhance their productivity and streamline their workflows without delving deep into the underlying configurations.
When to use it
Use this skill when you need to customize the behavior of BMad agents or workflows based on specific project requirements.
When not to use it
This skill is not suitable for users who do not have BMad installed or for those who require deep customizations beyond what is exposed in the `customize.toml` files.
What you can build with it
Customizing Agent Behavior
When a user wants to change how an agent responds or interacts, they can use BMad Customize to create specific overrides.
Exploring Customization Options
Users can discover which skills are customizable and what changes can be made without prior knowledge of TOML.
Reviewing Existing Overrides
For users who have previously customized skills, this tool helps audit and iterate on existing configurations.
How to install BMad Customize
View source1. Install with the skills CLI
npx skills add bmad-code-org/bmad-method/bmad-customize --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by bmad-code-orgBMad Customize
Translate the user's intent into a correctly-placed TOML override file under {project-root}/_bmad/custom/ for a customizable agent or workflow skill. Discover, route, author, write, verify.
Scope v1: per-skill [agent] overrides (bmad-agent-<role>.toml / .user.toml) and per-skill [workflow] overrides (bmad-<workflow>.toml / .user.toml). Central config ({project-root}/_bmad/custom/config.toml) is out of scope — point users at the How to Customize BMad guide.
When the target's customize.toml doesn't expose what the user wants, say so plainly. Don't invent fields.
Preflight
- No
{project-root}/_bmad/→ BMad isn't installed. Say so, stop. {project-root}/_bmad/scripts/resolve_customization.pymissing → continue, but Step 6 verify falls back to manual merge.- Both present → proceed.
Activation
Load _bmad/config.toml and _bmad/config.user.toml from {project-root} for user_name (default BMad) and communication_language (default English). Greet. If the user's invocation already names a target skill AND a specific change, jump to Step 3.
Step 1: Classify intent
- Directed — specific skill + specific change → Step 3.
- Exploratory — "what can I customize?" → Step 2.
- Audit/iterate — wants to review or change something already customized → Step 2, lead with skills that have existing overrides; read the existing override in Step 3 before composing.
- Cross-cutting — could live on multiple surfaces → Step 3, choose agent vs workflow explicitly with the user.
Step 2: Discovery
uv run {skill-root}/scripts/list_customizable_skills.py --project-root {project-root}
Use --extra-root <path> (repeatable) if the user has skills installed in additional locations.
Group the returned agents and workflows for the user; for each show name, description, whether has_team_override or has_user_override is true. Surface any errors[]. For audit/iterate intents, lead with already-overridden entries.
Empty list: show scanned_roots, ask whether skills live elsewhere (offer --extra-root); otherwise stop.
Step 3: Determine the right surface
Read the target's customize.toml. Top-level [agent] or [workflow] block defines the surface.
If a team or user override already exists, read it first and summarize what's already overridden before composing.
Cross-cutting intent — walk both surfaces with the user:
- Every workflow a given agent runs → agent surface (e.g.
bmad-agent-pm.tomlwithpersistent_facts,principles). - One workflow only → workflow surface (e.g.
bmad-prd.tomlwithactivation_steps_prepend). - Several specific workflows → multiple workflow overrides in sequence, not an agent override.
Single-surface heuristic:
- Workflow-level: template swap, output path, step-specific behavior, or a named scalar already exposed (
*_template,on_complete). Surgical, reliable. - Agent-level: persona, communication style, org-wide facts, menu changes, behavior that should apply to every workflow the agent dispatches.
When ambiguous, present both with tradeoff, recommend one, let the user decide.
Intent outside the exposed surface (step logic, ordering, anything not in customize.toml): say so; offer activation_steps_prepend/append or persistent_facts as approximations, or recommend bmad-builder to create a custom skill.
Step 4: Compose the override
Translate plain-English into TOML against the target's customize.toml fields. If an existing override was read, frame the change as additive.
Merge semantics:
- Scalars (
icon,role,*_template,on_complete) — override wins. - Append arrays (
persistent_facts,activation_steps_prepend/append,principles) — team/user entries append in order. - Keyed arrays of tables (menu items with
codeorid) — matching keys replace, new keys append.
Overrides are sparse: only the fields being changed. Never copy the whole customize.toml.
Template swap (*_template scalar): offer to copy the default template to {project-root}/_bmad/custom/{skill-name}-{purpose}-template.md, point the override at the new path, offer to help edit it.
Step 5: Team or user placement
Under {project-root}/_bmad/custom/:
{skill-name}.toml— team, committed. Policies, org conventions, compliance.{skill-name}.user.toml— user, gitignored. Personal tone, private facts, shortcuts.
Default by character (policy → team, personal → user), confirm before writing.
Step 6: Show, confirm, write, verify
-
Show the full TOML. If the file exists, show a diff. Never silently overwrite.
-
Wait for explicit yes.
-
Write. Create
{project-root}/_bmad/custom/if needed. -
Verify:
uv run {project-root}/_bmad/scripts/resolve_customization.py --skill <install-path> --key <agent-or-workflow>Show the merged output, point out the changed fields.
Resolver missing or fails: read whichever layers exist —
<install-path>/customize.toml(base),{project-root}/_bmad/custom/{skill-name}.toml(team),{project-root}/_bmad/custom/{skill-name}.user.toml(user) — apply base → team → user with the same merge rules (scalars override, tables deep-merge,code/id-keyed arrays merge by key, all other arrays append), describe how the changed fields resolve.Verify shows override didn't land (field unchanged, merge conflict, file not picked up): re-enter Step 4 with the verify output as context. Usually wrong field name, wrong merge mode (scalar vs array), or wrong scope.
-
Summarize what changed, where the file lives, how to iterate. Remind the user to commit team overrides.
Complete when
- Override file written (or user explicitly aborted).
- User has seen resolver output (or manual fallback merge summary).
- User has acknowledged the summary.
Otherwise the skill isn't done — finish or tell the user they're exiting incomplete.
When this skill can't help
- Central config (
{project-root}/_bmad/custom/config.toml) — see the How to Customize BMad guide. - Step logic, ordering, behavior not in
customize.toml— open a feature request, or usebmad-builderto create a custom skill. Offer to help with either. - Skills without a
customize.toml— not customizable.
Frequently asked questions about BMad Customize
Similar skills
Skill Creator
Efficiently create and manage skills for Gemini CLI.
Agent Development
Create and manage autonomous agents for Claude Code.
Math Olympiad Solver
Solve and verify competition math problems effectively.
Microsoft Skill Creator
Create specialized skills for Microsoft technologies.
Doublecheck
A verification pipeline for AI-generated claims.
Skill Development for Claude Code
Create and enhance skills for Claude Code plugins.
