用途
Reviewable Branch Diffs 是一个面向 AI 编码代理的技能,目标不是定义编码标准,而是决定当前 Git 分支上哪些改动应当被修改以符合既有标准,从而使分支的整体 diff 便于人类审查。编码标准本身来自用户指令、其他技能、仓库说明或工具,而非该技能提供。
主要能力
-
建立 Git 基线:仅使用 Git 方式确定目标集成分支。若用户或仓库工作流明确指定集成分支则采用;否则用 git remote 确定相关远程,再通过 git symbolic-ref --quiet --short refs/remotes/<remote>/HEAD 解析该远程的默认分支(符号引用缺失时可在合适网络条件下使用 git ls-remote --symref <remote> HEAD 查询远程 HEAD,而非当前检出 HEAD)。远程默认分支并不等于实际合并目标,若证据冲突或存在歧义,需先确定目标再应用范围敏感规则,并确保候选引用存在且足够新。
-
检查改动:使用 git diff --find-renames <base-ref>...HEAD 比较已提交的分支改动与其合并基点;使用 git diff --find-renames "$(git merge-base <base-ref> HEAD)" 将同一基线与当前工作区(含暂存和未暂存的已跟踪改动)比较;使用 git ls-files --others --exclude-standard 发现两个 diff 都不包含的未跟踪文件。
-
界定可改范围:新引入的代码应用适用规范;为功能而修改的既有代码只改必要部分,保留无关的周边代码;功能未改动的既有代码——即便所在文件被触及——其既有违规保持不动。改动一行不等于整个函数或文件可被重组。
-
在范围内应用约定:既有函数若功能仅改其中一行,保留其原有位置,即使另有排序约定会把它放在别处;新函数则按适用规则规定的位置插入。对新增函数和参数应用必需的标注约定,不回溯修改无关的既有签名。格式化仅针对新引入或必要修改的代码,避免重排无关的既有行;若格式化工具重写更大区域,保留必需编辑并尽量还原无关改动。若强制格式化或检查要求更大范围改动,应识别约束并做技术上有效的最小改动,不默默接受仅格式化的巨大 diff。
-
保留分支级审查边界:同一分支上的单独清理提交仍会出现在该分支的整体 diff 中,因此无关清理需要独立的作用域,而不仅仅是独立的提交。
-
验证结果:针对已解析基线重新检查完整 diff,包括未提交的已跟踪编辑和未跟踪文件;检查每个移动的代码块、重排的签名和仅格式化的 hunk 是否有必要的功能相关理由,移除附带清理;确保实际行为变更在可行时表现为局部 diff,并运行相关测试;报告无法避免的范围扩大或未解决的基线歧义。
使用方式
该技能以代理指导的形式使用,用于约束 AI 编码代理在 Git 功能分支上应用规范时的行为。具体安装命令、运行命令或配置方式暂未提供。
适用场景
适用于需要让功能分支 diff 保持可审查性的开发流程,尤其是当存在多种编码标准、格式工具或重构约定,而代理可能过度应用它们时。
限制
该技能是代理行为指导,并非有保证的 Git 策略门禁;如需确定性执行,应使用与代理运行时相适应的、经独立验证的检查器或钩子。