overlay-guide.md

July 26, 2026 · View on GitHub

Maestro 的 Overlay 系统提供非侵入式命令扩展 —— 不修改原始 .claude/commands/*.md 文件,注入自定义步骤、阅读要求、质量门禁等内容。Overlay 在每次 maestro install 时自动重新应用。


核心概念

Overlay = JSON 文件,声明"在哪个命令的哪个 section 注入什么内容"。Patcher 用 HTML 注释标记包裹注入内容,实现:

  • 幂等性 —— 重复 apply 不产生重复内容
  • 可追溯 —— 标记标注每段内容来自哪个 overlay
  • 可逆性 —— remove 精确剥离标记内容

文件布局

~/.maestro/overlays/
├── cli-verify.json              # 用户 overlay
├── quality-gate.json            # 用户 overlay
├── docs/                        # overlay 引用的文档
│   └── verify-protocol.md
└── _shipped/                    # 随 maestro 发布的只读 overlay(不要编辑)

Overlay 文件格式

{
  "name": "cli-verify",
  "description": "Add CLI verification after maestro-companion finishes",
  "targets": ["maestro-companion", "maestro-ralph"],
  "priority": 50,
  "enabled": true,
  "patches": [
    {
      "section": "required_reading",
      "mode": "append",
      "content": "## CLI Verification Protocol (overlay)\n\n@~/.maestro/overlays/docs/verify-protocol.md"
    },
    {
      "section": "execution",
      "mode": "append",
      "content": "## CLI Verification (overlay)\n\nAfter execution, run:\n```bash\nmaestro delegate \"PURPOSE: Verify...\" --mode analysis\n```"
    }
  ]
}

字段说明

字段类型必需说明
namestring唯一标识符,kebab-case
targetsstring[]目标命令名(不含 .md
prioritynumber应用优先级,数值小的先应用(默认 50)
enabledboolean设为 false 暂时禁用
scopestring"global" / "project" / "any"
patchesPatch[]补丁列表

Patch 字段

字段说明
section目标 XML section 名称
mode"append" / "prepend" / "replace" / "new-section"
content注入的 Markdown 内容
afterSectionnew-section 模式:新 section 插入在此 section 之后

可用 Section

purpose · required_reading · deferred_reading · context · execution · error_codes · success_criteria

Mode 行为

Mode行为
append在 section 闭合标签前追加
prepend在 section 开始标签后插入
replace替换整个 section 内容
new-section创建新 XML section(通过 afterSection 控制位置)

注入机制

Patcher 用 HTML 注释标记包裹注入内容:

<!-- maestro-overlay:cli-verify#1 hash=a3f8b2c1 -->
## CLI Verification (overlay)
...
<!-- /maestro-overlay:cli-verify#1 -->
  • cli-verify — overlay 名称,#1 — patch 索引,hash — 内容 SHA-256 短哈希(用于变更检测)

幂等性:apply 时检查标记是否存在。哈希一致则跳过,哈希不同则先剥离再重新注入。


命令参考

# 查看 overlay(交互式 TUI)
maestro overlay list

# 应用所有 overlay(幂等)
maestro overlay apply

# 添加并应用
maestro overlay add <file.json>

# 导出/移除
maestro overlay export <name>
maestro overlay remove <name>

# Bundle 打包与导入
maestro overlay bundle -o team-overlays.json
maestro overlay import-bundle team-overlays.json

Bundle 格式

{
  "version": "1.0",
  "overlays": [
    { "name": "cli-verify", "targets": [...], "patches": [...] }
  ],
  "docs": {
    "verify-protocol.md": "# Verify Protocol\n\n..."
  }
}

打包时自动收集 patch content 中 @~/.maestro/overlays/docs/<name> 引用的文档。


交互式管理 TUI

运行 maestro overlay list 进入终端 UI,支持 [d] Delete[q] Quit 操作。Section map 按目标命令文件分组,patch 按 overlay 名称聚合显示。


创建 Overlay

# 自然语言创建
/maestro-overlay "在 maestro-companion 执行后增加 CLI 代码质量验证"

# 手动创建
# 1. 编写 overlay JSON 文件
# 2. maestro overlay add <file.json>
# 3. maestro overlay list 验证

最佳实践

命名:描述性 kebab-case(cli-verify-after-execute),体现"做什么"而非"改哪里"

内容:注入标题带 (overlay) 后缀,保持精简,引用外部文档用 @~/.maestro/overlays/docs/

优先级10-30 基础设施、40-60 标准步骤、70-90 后置检查

团队协作bundle / import-bundle 分享,项目级 overlay 放版本控制