mcpField
L
land-branch

land-branch

github.com/jayden-dang开发157 次安装今天更新
代码仓库

关于 land-branch

land-branch 是一项分支收尾技能,可确定打开 PR、本地合并、保留、丢弃或阻止等操作,并按对应流程执行保护措施。它面向管理已完成分支的 Agent,要求验证证据对应当前版本,且删除前必须获得明确确认。

主要功能

  1. 01确定分支收尾操作
  2. 02准备分支并编排提交顺序
  3. 03核验当前版本的验证证据
  4. 04创建或更新 PR,或执行本地合并
  5. 05丢弃前要求输入指定确认词

适用场景

  1. 01准备分支后打开 PR
  2. 02验证通过后在本地合并分支
  3. 03按明确意图保留或丢弃分支

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jayden-dang/skills --skill land-branch

安装后在 Claude Code 中输入/land-branch确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

conventions.md
eval.json
passive-data-safety.md
prepare.md
TESTS.md
tickets.md
scripts/
owner-notice.py
ship-guard.sh

详细介绍

完成一个分支

解决所请求的结果,准备分支,并执行该操作。

不变量

REUSE EVIDENCE BOUND TO THE CURRENT REVISION.
FALL BACK TO VERIFICATION WHEN THAT EVIDENCE IS ABSENT OR STALE.
NEVER DELETE WORK WITHOUT LITERAL CONFIRMATION.

由 Agent 撰写的 PR 标题和正文仍是评审依据。不设软件包审批流程,也不存在 .skills/pr-packages/ 目录树。

1. 明确意图

按以下顺序逐项判断,遇到首个能确定操作的条件即停止:

  1. 用户请求中的明确意图:pr、merge、keep、discard 或 block(“打开 PR”之类的常见说法也算);
  2. 该头部分支已有 PR → pr;
  3. docs/agents/project.md 中的 Default landing action:,且其值为 pr、merge 或 keep;
  4. 提出一个简短问题:“PR、本地合并,还是保留分支?”

绝不推断 discard 或 block。用户明确指定的操作就是其选择;不要再提供第二组选项。

完成条件: 确定且仅确定一个操作。

2. 在本地准备

必须:加载 prepare.md 并按其要求执行,直到完成 Author commits,然后对 pr 和 merge 执行其 Ship guard 和 Sequence the branch into verifiable units 部分。 在其中确定并备忘基准分支。仅对 pr 撰写 PR 文本。

排序有意改写历史:评审者会按提交顺序阅读,因此顺序必须能说明问题。该操作有锚点,不具破坏性——prepare.md 会先记录一个可恢复的分支尖端。任何 HEAD 变更,无论来自残留提交还是改写,都会使先前的完成凭据过时;第 3 步负责处理此回退,因此排序必须在此处进行,绝不能在证据确立后再做。

完成条件: 已确定基准分支、约定、上下文、工单和提交;分支已按有序序列整理并记录锚点;没有尚未处理的范围内已跟踪残留内容。

3. 确立跨越证据

此步骤仅适用于 pr 和 merge。keep、discard 和 block 不声称分支已通过验证。

必须:加载 ../../execution/execute-common/close-receipt.md,并按其固定验证步骤检查 .skills/<CODE>/close-receipt.md。

  • 有效凭据: 使用该凭据。不要重新运行等效的验证、可追溯性、评审或验收检查。
  • 缺少凭据或凭据已过时: 必须使用子技能 prove-claim 运行 每条验证命令,并重新执行 audit-trace。如果尚未在当前修订版本上验证面向用户的行为,必须使用子技能 validate-feature。如果验证失败,只阻止 pr 和 merge;报告失败的证据,并保留 keep、discard 和 block 作为可选操作。

如果本会话中有可直接粘贴的已暂存区块,请重新打印这些区块,并注明 /record-debt;它们绝不会阻止跨越操作。

完成条件: pr/merge 有当前修订版本的有效凭据或全新且通过的回退证据;否则,明确说明无法执行跨越操作。

4. 检测环境

GIT_DIR=$(cd "$(git rev-parse --git-dir)" && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" && pwd -P)
状态含义
equal普通检出——无需清理工作树
differ,命名分支关联工作树——适用经来源检查的清理
differ,分离的 HEAD外部管理的工作区——不执行本地合并或清理

使用 prepare.md 备忘的基准分支;绝不要根据拓扑重新选择基准分支。

5. 仅记录已配置的边界

如果存在,读取 docs/agents/project.md 的 ## Decision boundaries。只有非占位行匹配 land-branch:<action> 或 land-branch:* 时才需要记录。没有此章节或没有匹配行,表示无需记录。

对于匹配的行,在产生副作用前,必须使用子技能 record-verdict,并附上已确定的判定、边界类型、层级/谓词事实,以及行内的持久证据。发布失败会阻止该已配置的跨越操作。绝不为 keep 生成记录。

完成条件: 未配置记录,或所需记录已发布。

6. 执行已确定的操作

PR

加载 prepare.md Author PR text(必需子技能:使用 speak-outer)。 推送分支——如果排序操作重写了已发布的分支,则使用 --force-with-lease—— 然后为已记录的基分支创建或更新 PR。通过进程临时文件提交标题和正文的字节, 绝不要将它们插值为 shell 输入;保留工作树。

以就绪状态打开,绝不要作为草稿打开——省略 --draft,对默认创建草稿的 工具传入 draft: false,并将仍以草稿状态打开的 PR 设为就绪。草稿不算完成交接。 按照 prepare.md Post the verdict,将步骤 3 的证据发布到 PR 上,并按照 tickets.md After the PR opens 推进工单集。然后报告 URL 并停止:告知用户用 /tend-pr 监看 CI,而不是在此等待;等待会阻塞下一个分支,还会在后续推送重启 的提交上浪费运行次数。

本地合并

只有明确表达意图时才执行此操作。在主仓库根目录中:

git checkout "<base>" && git pull && git merge "<feature-branch>"

合并结果是一个新版本。进行任何清理之前,先对其运行完整验证套件。若失败,保留 工作树和分支并报告失败。若成功,执行步骤 7,并通过 git branch -d 删除功能分支。

保留

报告分支名称和工作树路径。不做任何更改。

丢弃

列出将被永久删除的分支、提交和工作树路径。 要求用户输入字面词 discard;“yes”和“confirm”均不算数。确认后,执行步骤 7, 并通过 git branch -D 删除。

阻止

报告最终阻止原因,并保留分支。

完成条件: 已完成已确定的操作,或因具体失败而未执行。

7. 清理工作树

仅适用于本地合并成功或确认丢弃之后。

  • 仅移除位于 .worktrees/ 或 worktrees/ 下的工作树,或位于 .isolate-workspace/ 或 isolate-workspace/ 下的残留树。
  • 绝不移除由工具链管理或由外部管理的工作区。
  • 移除前先 cd 到主仓库根目录,然后运行 git worktree prune。

8. 完成收尾

PR 或合并后,检查功能项的 Status::

状态操作
Draft报告缺少审批;不要转换状态
Approved / In-progress + 每项任务均已勾选 + 追踪记录干净 + 有交接证据必需子技能:使用 realign-spec
Approved / In-progress + 证据不完整报告缺少的证据
Implemented / Shipped,无偏差跳过
Implemented / Shipped,存在偏差必需子技能:使用 realign-spec

对于 PR、合并或保留操作:若涉及多个任务或风险路径,告知用户使用 /understand <range>。此项可选,且绝不会阻止已确定的操作。

警示信号

  • 重新运行已由当前有效版本回执证明通过的检查
  • 信任其基准、HEAD、工作区干净状态或必需插槽不符合要求的回执
  • 用户已明确表达意图后,仍显示选项菜单
  • 因样例、研究资料包、团队简报或债务记录而阻止 PR/合并
  • 没有匹配的项目边界配置时,仍发布决策记录
  • 将“land this”推断为本地合并、丢弃或阻止
  • 合并结果通过验证前就移除工作树
  • 破坏性操作确认时,接受字面值 discard 以外的任何内容
  • 重写分支前未先记录可恢复的锚点
  • 重写 execute 系列任务提交,使判定结果与其评估对象脱节
  • 重用重写前建立的证据
  • 写入 .skills/pr-packages/ 或添加 PR 文本审批环节
  • scripts/ship-guard.sh 仍输出 lockfile、generated 或 out-of-plan 行时就推送
想法实际情况
“即使 HEAD 完全没变,保持新鲜也意味着重新运行”回执已将证明绑定到该版本;应验证绑定,而不是重放工作。
“授权路径意味着抽样必须阻止流程”抽样用于分配人工注意力;审核并接受后,它只是建议。
“打开 PR 只是菜单偏好”这是明确意图。证据问题解决后就应执行。
“每次跨越边界都值得单独记录”平台历史记录是默认方式;自定义记录属于可选的项目策略。

评论

支持 Markdown