mcpField
M
merge-protocol

merge-protocol

github.com/noobygains开发11558 次安装3 天前更新
代码仓库

关于 merge-protocol

merge-protocol 是用于收尾开发工作的技能,指导将已完成的工作合并、保留或放弃。它要求先通过测试,再提供四种集成路径,并规定确认和工作树清理步骤。

主要功能

  1. 01集成前要求测试通过
  2. 02识别主干分支
  3. 03提供四种结构化集成路径
  4. 04放弃前要求输入确认词
  5. 05按所选路径规定工作树清理

适用场景

  1. 01收尾已完成的功能分支
  2. 02验证后创建 Pull Request
  3. 03保留分支以便稍后处理
  4. 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