SuperAPI AI 工具集

merge-change

部署与运维

查看项目

更新于 10-17 16:22

技能介绍

用途

merge-change 是 jan-jan/guardrails 技能集中的合规合并技能,用于在 develop-change 完成后,将一个变更以一次经过验证、签名的 squash 合并方式整合进基础分支。它把合并过程变成受控的检查点,确保每一步都经过验证,任何失败都停止并修复。

主要能力

  • 前置条件检查:确认 develop-change 已完成且测试套件全绿。
  • 基础分支检测:通过 .guardrails/scripts/lib.sh 中的 gr_base_branch 检测基础分支,不假设为 main。
  • 合并最新基础分支:在变更工作树中合并最新基础分支,处理冲突,并运行 prune-plans.sh 清理计划。
  • 合并前预检:运行 merge-preflight.sh --before-review,读取警告,失败则停止并给出修复行。
  • 独立审查:派发全新子代理或人工审查者,提供 diff、计划、相关 ID 的 find-items.sh show 输出,审查者回答代码是否满足每个声明的 REQ/LLR、测试是否会在行为破坏时失败、是否覆盖异常输入、是否有未标记的派生工作。
  • 验证记录:复制 .guardrails/templates/verification.md 到 docs/verification/<date>-<branch>.md,填写并提交,记录解决的 ID、红转绿、审查结论和发现。
  • 验证套件:按 verify-before-merge 描述派发验证套件,读取门禁摘要的通过/失败计数。
  • 再次预检:运行 merge-preflight.sh <change-branch>,包含审查检查。
  • Squash 合并:在主检出中执行 git merge --squash <branch>,生成提交消息文件,交由用户执行签名提交。
  • 清理:finish-merge.sh 验证签名后删除工作树和分支。

使用方式

技能以步骤形式执行,每一步都有明确的命令和检查。开始时会宣布:“Using the merge-change skill to integrate this change.” 所有步骤在变更工作树中运行,直到第 7 步。失败时停止,将修复派发到嵌套任务工作树 .worktrees/<change-branch>-<tag>,使用 task-worktree.sh start <tag> 创建,修复报告绿色后运行 task-worktree.sh merge <tag> 合并任务分支、移除工作树并删除任务分支,然后从第 1 步重新运行。

关键命令包括:

  • 检测基础分支:BASE=$(. .guardrails/scripts/lib.sh && gr_base_branch) && [ -n "$BASE" ]
  • 合并基础分支:git merge "$base_ref"
  • 预检:sh .guardrails/scripts/merge-preflight.sh --before-review <change-branch>
  • 标记审查提交:git -c commit.gpgsign=false commit --allow-empty -m 'review dispatched'
  • 移除审查工作树:sh .guardrails/scripts/task-worktree.sh remove review
  • 验证记录:复制模板并填写
  • 最终 squash:git diff --cached --quiet && git merge --squash <branch>
  • 用户执行:git commit -S -F /tmp/merge-<branch>.msg && sh .guardrails/scripts/finish-merge.sh <branch>

适用场景

适用于使用 jan-jan/guardrails 工作流的项目,在 develop-change 完成后需要将变更合规地合并进基础分支时。特别适合需要严格审查、验证记录和签名提交的团队。

限制

  • 必须由用户执行签名提交,技能本身不运行 git commit -S。
  • 签名失败且无密钥配置时,停止并指向 ratchet 设置清单,没有未签名回退。
  • 审查发现必须逐条处理,不能通过删除发现来回应 REVIEW 失败。
  • 工作树清理必须通过脚本,不能手动使用 --force 或 -D。
  • 基础分支移动后需要重新运行相应步骤。
  • 技能依赖 .guardrails/scripts/ 下的多个脚本和模板,缺失时无法执行。
  • 部分细节(如具体脚本实现、模板内容)在资料中未提供。