用途:在决定每个提交或 PR 包含什么内容时加载此技能,主要用于把功能拆成可审查的工作、在开 PR 前准备提交、把大改动转化为链式或堆叠 PR、保持审查者认知负担健康,以及在应用 SDD 任务时避免产生超过 400 行改动的 PR。
关键规则:按工作单元提交,一个提交代表一个可交付的行为、修复、迁移或文档单元;不要按文件类型提交,避免出现 models、services、tests 依次提交但单独都不成立的情况;测试与代码放在同一提交,文档与用户可见变更放在一起;提交要讲清故事,审查者应能从 diff 和消息理解每个提交为何存在;每个提交都应是未来可成为链式 PR 的候选;SDD 工作量保护,若 SDD 任务预估改动超过 400 行,实现前就把提交分组为链式 PR 切片。
提交前检查:该提交只有一个明确目的;仅应用该提交后仓库仍然成立;相关时包含该单元的测试或文档;回滚合理且不会撤销无关工作;记录聚焦测试命令和确切结果;记录运行时 harness 命令/场景和确切结果,或明确说明为何不存在运行时边界;回滚边界指出可移除的确切文件/行为;提交消息说明结果而非文件清单。
拆分示例:弱拆分为 add models、add services、add tests、update docs;更好的工作单元拆分为 feat(auth): add token validation domain model and tests、feat(auth): wire token validation into login flow,测试随每个行为提交,文档随其解释的用户可见变更。
PR 关系:以工作单元提交作为链式 PR 的基础,构建最小独立工作单元,包含该单元的验证,用 Conventional Commit 消息提交;当 PR 接近 400 行改动时,把提交或提交组提升为链式 PR。
ODD 关系:ODD 每个实质性任务以特性分支上的工作单元提交收尾;每个 ODD 任务至少以一个工作单元提交关闭,在默认分支时先建分支,测试和文档与行为一起并配 Conventional Commit 消息;原生审查候选是该提交,或审查延迟时它所属的 PR 切片,对照上一个已审查边界,绝不是 TODO 复选框或累积的特性分支;工作单元提交累计的作者行数喂给交付策略词汇 ask-on-risk、auto-chain、single-pr、exception-ok;400 阈值统计作者新增加删除,排除生成的 goldens,但完整快照身份和回执验证包含所有生成文件;ODD 特性文档记录提交身份作为证据,以及适用时的链策略和切片边界。每个 ODD 工作单元应清晰映射到一个提交或 PR,具有清晰起始状态、清晰完成状态、同一单元内的验证、不移除无关工作的回滚;实现证据必须包含聚焦测试命令和确切结果、运行时 harness 命令/场景和确切结果或带原因的明确 N/A、独立于提交创建声明的回滚边界。修复有界审查账本时,把原子工作单元分组在单个修正事务内,工作单元数量绝不产生另一个修复预算。
命令: git diff --stat git diff --cached --stat git log --oneline -5