用途:把用户的自定义意图翻译成放置在 {project-root}/_bmad/custom/ 下的 TOML 覆盖文件,作用于可定制的 agent 或 workflow 技能,流程为发现、路由、编写、写入、验证。v1 范围:每个技能的 [agent] 覆盖(bmad-agent-<role>.toml / .user.toml)和 [workflow] 覆盖(bmad-<workflow>.toml / .user.toml);中央配置({project-root}/_bmad/custom/config.toml)不在范围内,需引导用户查看 How to Customize BMad 指南。当目标的 customize.toml 未暴露用户所需内容时,应明确说明,不得虚构字段。
主要能力与用法:预检时,若无 {project-root}/_bmad/ 则说明 BMad 未安装并停止;若缺少 {project-root}/_bmad/scripts/resolve_customization.py 可继续,但验证环节回退为手工合并。激活后问候用户;若调用已指明目标技能和具体更改,直接进入判定环节。意图分类包括:定向、探索、审计/迭代、横切。探索时运行:uv run {skill-root}/scripts/list_customizable_skills.py --project-root {project-root};可用 --extra-root <path>(可重复)指定额外安装位置;对结果分组展示名称、描述及 has_team_override / has_user_override,并呈现 errors[]。审计/迭代时优先列出已有覆盖的条目。
确定表面:读取目标 customize.toml,顶层 [agent] 或 [workflow] 块定义表面;若已有覆盖先读取并总结。横切意图需与用户明确选 agent 还是 workflow;模糊时给出两种方案权衡、推荐其一由用户决定。意图超出暴露表面时,建议 activation_steps_prepend/append 或 persistent_facts 作为近似,或推荐 bmad-builder 创建自定义技能。
合并语义:标量(icon、role、*_template、on_complete)以覆盖为准;追加数组(persistent_facts、activation_steps_prepend/append、principles)按顺序追加;以 code 或 id 为键的表数组按键替换或追加。覆盖应稀疏,只写要改的字段,绝不复制整个 customize.toml。模板替换时可将默认模板复制到 {project-root}/_bmad/custom/{skill-name}-{purpose}-template.md 并指向新路径。
放置与验证:{skill-name}.toml 为团队版(提交),{skill-name}.user.toml 为用户版(gitignore);按性质默认并确认。写入前展示完整 TOML,若文件已存在则展示 diff,等待用户明确 yes,绝不静默覆盖。验证运行:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill <install-path> --key <agent-or-workflow>,展示合并结果并指出变更字段。解析器缺失或失败时,按 base → team → user 顺序手工合并(标量覆盖、表深合并、code/id 键数组合并、其余数组追加)并说明字段解析结果。若验证显示覆盖未生效,带验证输出回到编写步骤,通常是字段名、合并模式或作用域错误。完成后总结变更、文件位置和迭代方式,提醒提交团队覆盖。限制:中央配置、customize.toml 之外的步骤逻辑、无 customize.toml 的技能均不支持。