mcpField
F
finishing-a-development-branch

finishing-a-development-branch

github.com/ganyuanran开发1.4k51 次安装今天更新
代码仓库

关于 finishing-a-development-branch

finishing-a-development-branch 是用于安全验证并收尾开发分支或工作树的技能。它将集成决策与检出环境清理分开,并要求核实资源归属、重新验证及读取结果证据。

主要功能

  1. 01识别分支和工作树归属
  2. 02处置前执行最新验证
  3. 03选择获授权的集成或保留方式
  4. 04仅清理任务拥有的资源
  5. 05清理后核实 Git 状态

适用场景

  1. 01在本地合并已完成的任务分支
  2. 02保留分支以便稍后集成
  3. 03移除经明确确认的任务工作树

安装

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

$npx skills add https://github.com/ganyuanran/aegis --skill finishing-a-development-branch

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

详细介绍

完成开发分支

概述

集成方式与检出环境的生命周期是两回事。先验证,只修改任务拥有的资源,然后证明哪些内容已删除或保留。

核心原则: 最新证据 -> 已授权的集成 -> 按所有权清理 -> Git/路径回读。

开始时说明: 说明将结束哪种分支/工作树生命周期。

第 1 步:检测环境和所有权

读取任务的 TaskStartSnapshot 和当前仓库状态。记录:

  • 根目录、HEAD、分支/分离状态、上游差异,以及正在进行的 Git 操作;
  • 已暂存/未暂存/未跟踪的路径,以及任务拥有的变更;
  • git worktree list --porcelain;
  • 分支/工作树的创建者、任务所有权、基础分支和清理触发条件。

遇到冲突、无法解释的分离状态、验证失败、清理目标中存在脏文件/未跟踪文件,或所有权未知时,停止操作。不要根据 main 或 master 这样的名称推断基础分支;应使用任务记录、仓库权威信息或用户明确指示。绝不自动暂存、重置、清理、拉取、变基、修订提交、强制推送或绕过钩子。

对于可信的、由宿主管理的分离检出环境,请遵循仓库批准的托管工作区约定:验证宿主绑定、默认 cwd、根目录和 HEAD;然后使用其限定范围的本地提交和原生交接流程。在回执中报告分离 HEAD。此例外不授权自动删除分离检出环境,也不允许绕过未知的所有权/绑定状态。

如果不存在由任务创建的分支/工作树,且未请求集成,则跳过此工作流:报告本地任务提交,并注明 Task clean 和 Repository clean;不要凭空增加合并/PR 流程。

第 2 步:最新验证

运行能够证明任务已完成的最小当前权威测试集。如果失败,保留所有工作并返回诊断。不要声称分支已准备就绪。

第 3 步:选择已授权的结果

如果任务分支确实需要处理,只提供适用的选项:

  1. 在本地合并到记录的基础分支;
  2. 推送并创建/更新 PR;
  3. 保留分支,以便稍后集成;
  4. 丢弃确切的任务所有分支/工作树。

推送、PR、远程删除、发布和强制操作均需用户明确授权。丢弃操作需要用户提供最新的精确文字确认,明确写出分支、工作树路径以及将丢失的提交/变更。笼统同意并不足够。

第 4 步:执行时不进行隐式修改

本地合并

验证目标检出环境安全,切换到记录的基础分支,不隐式拉取后再合并,并在合并结果上重新运行验证。如果集成或验证失败,保留两边的历史记录并停止。

推送或 PR

只推送已授权的任务分支,并创建/更新 PR,附上摘要和最新测试证据。创建 PR 本身并不能证明已合并,也不要求保留临时工作树。

保留分支

保留分支。默认移除由任务创建且干净的临时工作树;只有在明确需要继续使用该检出环境时才保留,并说明原因。

丢弃

在获得精确确认后,只移除确认中指定的、干净且由任务拥有的工作树,然后移除指定分支。如果其中任何一项与确认内容不一致,则停止并再次询问。

第 5 步:删除分支前证明已集成

使用与合并策略相匹配的证据:

  • 合并/快进:证明任务分支顶端提交是记录的基础分支的祖先;
  • 压缩合并/变基:使用最新的 PR 合并元数据,以及与策略相符的补丁等价性验证(变基提交使用 git cherry;压缩合并使用稳定的 patch-id,或有界的变更路径/树比较),不能只测试祖先关系;
  • 未合并/仍打开的 PR:保留分支,除非已获得精确的丢弃确认。

绝不要仅仅因为 PR 已创建或存在名称相似的提交就删除分支。

步骤 6:按依赖顺序清理

对于由任务拥有的干净资源:

  1. 切换到另一个安全的已注册检出;绝不删除当前工作目录;
  2. 先移除/注销工作树,使用 git worktree remove <exact-path>;
  3. 重新读取 git worktree list --porcelain;
  4. 确认该确切路径已不存在;
  5. 只有此后才能删除已集成或已确切确认的分支;
  6. 重新读取分支引用、HEAD 和仓库状态。

不要常规使用 --force、全局 git worktree prune、通配符删除,也不要清理任务所有权记录中未列出的资源。在 Windows 上,Git 可能会注销工作树,但其目录仍处于锁定状态:重新检查注册状态和确切解析后的路径;仅在安全时移除已证明确由任务拥有且干净的残留目录,否则保留并报告锁定/路径情况。绝不要扩大删除范围。

最终 Git 回执

报告:

  • 当前分支和提交 SHA/消息,或说明没有提交的原因;
  • 分别报告 Task clean: yes|no 和 Repository clean: yes|no;
  • 已创建、移除或保留的分支/工作树,以及证据/原因;
  • 集成证据和任何待用户执行的操作。

Task clean 表示不存在未提交的任务所有增量。Repository clean 表示仓库中不存在已暂存、未暂存或未跟踪的状态。

这是一份本地 Git 回执;除重新读取的证据外,它不代表权威的完成或合并状态。

集成

仅当分支/工作树集成或明确的生命周期处理属于任务范围时调用。与 using-git-worktrees 和 verification-before-completion 配套使用。

评论

支持 Markdown