关于 finishing-a-development-branch
finishing-a-development-branch 是用于安全验证并收尾开发分支或工作树的技能。它将集成决策与检出环境清理分开,并要求核实资源归属、重新验证及读取结果证据。
主要功能
- 01识别分支和工作树归属
- 02处置前执行最新验证
- 03选择获授权的集成或保留方式
- 04仅清理任务拥有的资源
- 05清理后核实 Git 状态
适用场景
- 01在本地合并已完成的任务分支
- 02保留分支以便稍后集成
- 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 步:选择已授权的结果
如果任务分支确实需要处理,只提供适用的选项:
- 在本地合并到记录的基础分支;
- 推送并创建/更新 PR;
- 保留分支,以便稍后集成;
- 丢弃确切的任务所有分支/工作树。
推送、PR、远程删除、发布和强制操作均需用户明确授权。丢弃操作需要用户提供最新的精确文字确认,明确写出分支、工作树路径以及将丢失的提交/变更。笼统同意并不足够。
第 4 步:执行时不进行隐式修改
本地合并
验证目标检出环境安全,切换到记录的基础分支,不隐式拉取后再合并,并在合并结果上重新运行验证。如果集成或验证失败,保留两边的历史记录并停止。
推送或 PR
只推送已授权的任务分支,并创建/更新 PR,附上摘要和最新测试证据。创建 PR 本身并不能证明已合并,也不要求保留临时工作树。
保留分支
保留分支。默认移除由任务创建且干净的临时工作树;只有在明确需要继续使用该检出环境时才保留,并说明原因。
丢弃
在获得精确确认后,只移除确认中指定的、干净且由任务拥有的工作树,然后移除指定分支。如果其中任何一项与确认内容不一致,则停止并再次询问。
第 5 步:删除分支前证明已集成
使用与合并策略相匹配的证据:
- 合并/快进:证明任务分支顶端提交是记录的基础分支的祖先;
- 压缩合并/变基:使用最新的 PR 合并元数据,以及与策略相符的补丁等价性验证(变基提交使用
git cherry;压缩合并使用稳定的 patch-id,或有界的变更路径/树比较),不能只测试祖先关系; - 未合并/仍打开的 PR:保留分支,除非已获得精确的丢弃确认。
绝不要仅仅因为 PR 已创建或存在名称相似的提交就删除分支。
步骤 6:按依赖顺序清理
对于由任务拥有的干净资源:
- 切换到另一个安全的已注册检出;绝不删除当前工作目录;
- 先移除/注销工作树,使用
git worktree remove <exact-path>; - 重新读取
git worktree list --porcelain; - 确认该确切路径已不存在;
- 只有此后才能删除已集成或已确切确认的分支;
- 重新读取分支引用、
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 配套使用。