关于 merge-protocol
merge-protocol 是用于收尾开发工作的技能,指导将已完成的工作合并、保留或放弃。它要求先通过测试,再提供四种集成路径,并规定确认和工作树清理步骤。
主要功能
- 01集成前要求测试通过
- 02识别主干分支
- 03提供四种结构化集成路径
- 04放弃前要求输入确认词
- 05按所选路径规定工作树清理
适用场景
- 01收尾已完成的功能分支
- 02验证后创建 Pull Request
- 03保留分支以便稍后处理
- 04经明确确认后放弃工作
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ noobygains/ godmode --skill merge-protocol安装后在 Claude Code 中输入/merge-protocol确认已加载。
详细介绍
合并协议
概述
协调开发的最后一步:将已完成的工作并入主线,或妥善清理。
核心原则: 先验证,再提供选项,执行选定的路径,然后进行清理。
开始时宣布: “我正在使用 merge-protocol 技能来完成这项工作。”
首要指令
测试未通过,不得集成
不设例外。不走变通办法。不抄近路。
适用时机
- 所有计划中的实现工作都已完成并提交
- 当前分支上的测试套件全部通过
- 已解决评审反馈(如果有征求反馈)
- 已准备好合并、搁置或放弃该分支
- 委派执行或任务运行器完成后
- 需要拆除工作区隔离分支时
思维陷阱
| 自我辩解 | 事实 |
|---|---|
| “一小时前测试还全通过,不用重跑” | 此后任何提交都会使旧结果失效。现在重新验证。 |
| “合并只是机械操作,不会出问题” | 冲突和集成回归确实可能发生。测试合并后的状态。 |
| “我明天再移除工作树” | 孤立的工作树会越积越多,造成混乱。立即移除。 |
| “让我直接合并吧——跳过菜单” | 始终提供全部四条路径。由人来选择工作流。 |
| “放弃显而易见,不用确认” | 永久销毁工作需要明确的文字确认。务必确认。 |
工作流
阶段 1:验证测试套件
首先运行完整的测试套件:
# Execute the project's test runner
npm test / cargo test / pytest / go test ./...
如果失败:
Suite failures detected (<N> failing). Resolution required before proceeding:
[Display failing tests]
Integration cannot continue until the suite is green.
在此停止。不要进入阶段 2。
如果成功: 进入阶段 2。
阶段 2:确定主干分支
# Determine the ancestor branch
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
或者确认:“此分支从 main 分出——对吗?”
阶段 3:提供集成路径
准确提供以下四个选项:
Work is complete and verified. Select an integration path:
1. Merge into <trunk> locally
2. Push and open a Pull Request
3. Leave the branch untouched (I'll handle it myself)
4. Abandon this work entirely
Which path?
保持简洁——不要添加额外说明。
阶段 4:执行选定路径
路径 1:本地合并
# Switch to trunk
git checkout <trunk>
# Sync with remote
git pull
# Integrate the feature branch
git merge <feature-branch>
# Validate the merged state
<test command>
# Remove the merged branch
git branch -d <feature-branch>
然后:进入阶段 5(拆除工作树)
路径 2:拉取请求
# Push the branch upstream
git push -u origin <feature-branch>
# Open the PR
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
<2-3 bullets describing the changes>
## Verification Steps
- [ ] <checklist items>
EOF
)"
然后:进入阶段 5(拆除工作树)
路径 3:暂缓
报告:“分支 已保留。工作树仍位于 。”
不要拆除工作树。
路径 4:放弃
必须获得明确确认:
Permanent deletion warning:
- Branch <name>
- All commits: <commit-list>
- Worktree at <path>
Type 'abandon' to proceed.
等待用户输入完全匹配的单词。
确认后:
git checkout <trunk>
git branch -D <feature-branch>
然后:进入阶段 5(拆除工作树)
阶段 5:拆除工作树
适用于路径 1、2 和 4:
检查当前分支是否位于工作树中:
git worktree list | grep $(git branch --show-current)
如果是:
git worktree remove <worktree-path>
路径 3: 保留工作树。
决策矩阵
| 路径 | 合并 | 推送 | 保留工作树 | 移除分支 |
|---|---|---|---|---|
| 1. 本地合并 | 是 | 否 | 否 | 是 |
| 2. 拉取请求 | 否 | 是 | 是 | 否 |
| 3. 暂缓 | 否 | 否 | 是 | 否 |
| 4. 放弃 | 否 | 否 | 否 | 是(强制) |
常见错误
跳过验证
- 后果: 有问题的代码进入主干,创建失败的 PR
- 纠正: 提供路径前务必验证测试套件
开放式提问
- 后果: “接下来呢?”会导致含糊不清、停滞不前
- 纠正: 准确提供四条结构化路径
过早移除工作树
- 后果: 销毁 PR 或暂缓工作所需的工作区
- 纠正: 仅在路径 1 和路径 4 中拆除工作树
悄然放弃
- 后果: 未让人知情就删除工作
- 纠正: 执行任何破坏性操作前,必须要求用户输入“abandon”
防护措施
禁止:
- 测试失败时仍继续操作
- 未验证集成结果就进行合并
- 未经明确确认就删除分支
- 除非用户明确要求,否则不得强制推送
必须:
- 提供路径前运行测试套件
- 准确提供四个选项
- 路径 4 必须获得文字确认
- 仅在路径 1 和路径 4 中拆除工作树
集成
调用方:
- godmode:delegated-execution(最后一步)— 所有委派任务完成后
- godmode:task-runner(最后一步)— 所有执行批次完成后
配合使用:
- godmode:workspace-isolation — 拆除该技能创建的工作树
评论
支持 Markdown