bmad-customize
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBMad Customize
BMad 自定义
Translate the user's intent into a correctly-placed TOML override file under for a customizable agent or workflow skill. Discover, route, author, write, verify.
{project-root}/_bmad/custom/Scope v1: per-skill overrides ( / ) and per-skill overrides ( / ). Central config () is out of scope — point users at the How to Customize BMad guide.
[agent]bmad-agent-<role>.toml.user.toml[workflow]bmad-<workflow>.toml.user.toml{project-root}/_bmad/custom/config.tomlWhen the target's doesn't expose what the user wants, say so plainly. Don't invent fields.
customize.toml将用户的意图转换为放置在目录下的正确TOML覆盖文件,用于可自定义的Agent或工作流技能。流程包括:发现、路由、编写、写入、验证。
{project-root}/_bmad/custom/V1版本范围:针对单个技能的覆盖配置( / )和针对单个技能的覆盖配置( / )。中央配置文件()不在当前范围内——请引导用户查看BMad自定义指南。
[agent]bmad-agent-<role>.toml.user.toml[workflow]bmad-<workflow>.toml.user.toml{project-root}/_bmad/custom/config.toml当目标技能的未提供用户所需的配置项时,请直接告知用户,不要自行新增字段。
customize.tomlPreflight
预检查
- No → BMad isn't installed. Say so, stop.
{project-root}/_bmad/ - missing → continue, but Step 6 verify falls back to manual merge.
{project-root}/_bmad/scripts/resolve_customization.py - Both present → proceed.
- 不存在目录 → 未安装BMad。请告知用户并终止流程。
{project-root}/_bmad/ - 缺少→ 继续执行,但步骤6的验证环节将回退到手动合并方式。
{project-root}/_bmad/scripts/resolve_customization.py - 上述两项均存在 → 继续执行。
Activation
激活
Load and from for (default ) and (default ). Greet. If the user's invocation already names a target skill AND a specific change, jump to Step 3.
_bmad/config.toml_bmad/config.user.toml{project-root}user_nameBMadcommunication_languageEnglish从加载和,获取(默认值为)和(默认值为)。向用户问候。如果用户的请求中已明确指定目标技能和具体修改内容,直接跳至步骤3。
{project-root}_bmad/config.toml_bmad/config.user.tomluser_nameBMadcommunication_languageEnglishStep 1: Classify intent
步骤1:意图分类
- 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.
- 定向型 — 指定具体技能和具体修改 → 步骤3。
- 探索型 — "我可以自定义哪些内容?" → 步骤2。
- 审核/迭代型 — 想要查看或修改已有的自定义配置 → 步骤2,优先展示已有覆盖配置的技能;在步骤3中先读取现有覆盖配置再进行编写。
- 跨领域型 — 修改内容可应用于多个场景 → 步骤3,明确与用户确认选择Agent还是工作流层面的配置。
Step 2: Discovery
步骤2:发现
python3 {skill-root}/scripts/list_customizable_skills.py --project-root {project-root}Use (repeatable) if the user has skills installed in additional locations.
--extra-root <path>Group the returned and for the user; for each show name, description, whether or is true. Surface any . For audit/iterate intents, lead with already-overridden entries.
agentsworkflowshas_team_overridehas_user_overrideerrors[]Empty list: show , ask whether skills live elsewhere (offer ); otherwise stop.
scanned_roots--extra-rootpython3 {skill-root}/scripts/list_customizable_skills.py --project-root {project-root}如果用户在其他位置安装了技能,可使用参数(可重复使用)。
--extra-root <path>将返回的和分组展示给用户;每个条目需显示名称、描述、或是否为true。展示所有信息。对于审核/迭代型意图,优先展示已有覆盖配置的条目。
agentsworkflowshas_team_overridehas_user_overrideerrors[]若返回列表为空:展示,询问用户技能是否安装在其他位置(提供选项);否则终止流程。
scanned_roots--extra-rootStep 3: Determine the right surface
步骤3:确定合适的配置层面
Read the target's . Top-level or block defines the surface.
customize.toml[agent][workflow]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. with
bmad-agent-pm.toml,persistent_facts).principles - One workflow only → workflow surface (e.g. with
bmad-create-prd.toml).activation_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). Surgical, reliable.on_complete - 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 ): say so; offer / or as approximations, or recommend to create a custom skill.
customize.tomlactivation_steps_prependappendpersistent_factsbmad-builder读取目标技能的文件。顶层的或块定义了配置层面。
customize.toml[agent][workflow]如果已存在团队或用户覆盖配置,先读取该配置并总结已有的自定义内容,再进行新配置的编写。
跨领域型意图 — 与用户逐一确认两个层面的配置:
- 某个Agent运行的所有工作流 → Agent层面(例如中的
bmad-agent-pm.toml、persistent_facts)。principles - 仅单个工作流 → 工作流层面(例如中的
bmad-create-prd.toml)。activation_steps_prepend - 多个特定工作流 → 依次创建多个工作流覆盖配置,而非Agent层面的覆盖配置。
单一层面配置的判断准则:
- 工作流层面:模板替换、输出路径、步骤特定行为,或已暴露的命名标量(、
*_template)。精准、可靠。on_complete - Agent层面:角色设定、沟通风格、组织全局信息、菜单变更、该Agent调度的所有工作流都需应用的行为。
当存在歧义时,向用户展示两种选项的优缺点,给出推荐方案,由用户决定。
若用户的意图超出了已暴露的配置层面(步骤逻辑、顺序、中未包含的任何内容):告知用户;可提供/或作为近似方案,或推荐使用创建自定义技能。
customize.tomlactivation_steps_prependappendpersistent_factsbmad-builderStep 4: Compose the override
步骤4:编写覆盖配置
Translate plain-English into TOML against the target's fields. If an existing override was read, frame the change as additive.
customize.tomlMerge semantics:
- Scalars (,
icon,role,*_template) — override wins.on_complete - Append arrays (,
persistent_facts/activation_steps_prepend,append) — team/user entries append in order.principles - Keyed arrays of tables (menu items with or
code) — matching keys replace, new keys append.id
Overrides are sparse: only the fields being changed. Never copy the whole .
customize.tomlTemplate swap ( scalar): offer to copy the default template to , point the override at the new path, offer to help edit it.
*_template{project-root}/_bmad/custom/{skill-name}-{purpose}-template.md将用户的自然语言需求转换为符合目标技能字段的TOML配置。如果已读取现有覆盖配置,将修改内容作为增量更新进行编写。
customize.toml合并规则:
- 标量(、
icon、role、*_template)—— 覆盖配置优先。on_complete - 数组追加(、
persistent_facts/activation_steps_prepend、append)—— 团队/用户配置条目按顺序追加。principles - 带键的数组表(包含或
code的菜单项)—— 匹配的键会被替换,新键会被追加。id
覆盖配置应仅包含需要修改的字段,无需复制整个文件。
customize.toml模板替换(标量):可将默认模板复制到,在覆盖配置中指向新路径,并可协助用户编辑该模板。
*_template{project-root}/_bmad/custom/{skill-name}-{purpose}-template.mdStep 5: Team or user placement
步骤5:选择团队或用户配置位置
Under :
{project-root}/_bmad/custom/- — team, committed. Policies, org conventions, compliance.
{skill-name}.toml - — user, gitignored. Personal tone, private facts, shortcuts.
{skill-name}.user.toml
Default by character (policy → team, personal → user), confirm before writing.
在目录下:
{project-root}/_bmad/custom/- — 团队配置,需提交到版本控制。适用于政策、组织规范、合规要求。
{skill-name}.toml - — 用户个人配置,会被Git忽略。适用于个人语气、私人信息、快捷操作。
{skill-name}.user.toml
根据配置内容的性质默认选择(政策类→团队配置,个人类→用户配置),写入前需与用户确认。
Step 6: Show, confirm, write, verify
步骤6:展示、确认、写入、验证
-
Show the full TOML. If the file exists, show a diff. Never silently overwrite.
-
Wait for explicit yes.
-
Write. Createif needed.
{project-root}/_bmad/custom/ -
Verify:
python3 {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 —(base),<install-path>/customize.toml(team),{project-root}/_bmad/custom/{skill-name}.toml(user) — apply base → team → user with the same merge rules (scalars override, tables deep-merge,{project-root}/_bmad/custom/{skill-name}.user.toml/code-keyed arrays merge by key, all other arrays append), describe how the changed fields resolve.idVerify 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.
-
展示完整的TOML配置。如果文件已存在,展示差异内容。禁止静默覆盖。
-
等待用户明确确认。
-
写入配置。若目录不存在则创建。
{project-root}/_bmad/custom/ -
验证:
python3 {project-root}/_bmad/scripts/resolve_customization.py --skill <install-path> --key <agent-or-workflow>展示合并后的输出,指出已修改的字段。解析器缺失或执行失败: 读取所有存在的配置层——(基础配置)、<install-path>/customize.toml(团队配置)、{project-root}/_bmad/custom/{skill-name}.toml(用户配置)——按照基础→团队→用户的顺序应用相同的合并规则(标量覆盖、表深度合并、带{project-root}/_bmad/custom/{skill-name}.user.toml/code键的数组按键合并、其他数组追加),描述修改后的字段如何合并。id验证显示覆盖配置未生效(字段未变更、合并冲突、文件未被识别):结合验证结果重新进入步骤4。通常是字段名称错误、合并模式错误(标量vs数组)或范围错误导致。 -
总结修改内容、文件位置以及迭代方式。提醒用户提交团队配置到版本控制。
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 () — see the How to Customize BMad guide.
{project-root}/_bmad/custom/config.toml - Step logic, ordering, behavior not in — open a feature request, or use
customize.tomlto create a custom skill. Offer to help with either.bmad-builder - Skills without a — not customizable.
customize.toml
- 中央配置()—— 请查看BMad自定义指南。
{project-root}/_bmad/custom/config.toml - 步骤逻辑、顺序、中未包含的行为—— 提交功能请求,或使用
customize.toml创建自定义技能。可协助用户完成其中任一操作。bmad-builder - 无文件的技能—— 不可自定义。
customize.toml