用途:在 deepseek-harness 分支推送、强推、标记可评审或声称检查通过前,运行一次相关本地证据。唯一例外是 gh stack sync,它可能先发布级联变基,需在返回后立即验证各重写层,证据通过前不得合并。Git 钩子范围很窄:pre-commit 修复暂存 lint、检查暂存空白、守护 vendored 源码元数据;pre-push 只跑增量仓库类型检查,全量覆盖与平台矩阵由 CI 负责。
主要流程:先用 git status --short --branch 与 git rev-parse --show-toplevel 确认检出与分支,再核对线上 PR base 或栈父 ref 并拉取,然后查看完整范围:pnpm --silent run change-scope --base <verified-base-ref>。该命令不会猜测或拉取 base;可用 --head <ref>。合并变更后的 base 后需重跑报告并只重跑被合并失效的检查。
证据选择:没有通用本地基线,行为变更需最窄的可失败测试或专门检查。包/脚本行为跑所属 Vitest 文件或聚焦测试名;远程 mock 类型改动在交接前跑 pnpm run typecheck,并在测试代理中保留例外;文档相关跑 pnpm run doc-sync;模型、编辑器、CLI 或终端可见输出跑聚焦快照或可运行示例;清单、公共导出、构建配置或运行时路径跑 pnpm run build 与所属冒烟;真实提供方行为在有凭据时跑 pnpm run test:e2e。不要因提交或推送就重复已通过的检查,尤其不要为重复 pre-push 钩子而先跑类型检查。过滤写法示例:pnpm run test:snapshot snapshots/session/headless.snapshot.ts -t 'cordis-inspect-jsdoc'。
覆盖率选择与测试选择分开,可用 pnpm exec vitest run ... --coverage --coverage.include='...',测试不明确时可用 vitest related 发现候选,但配置、动态加载、子进程、worker、构建产物或外部提供方触及的行为需显式选择。不得用 --passWithNoTests、降低阈值或缩小 include 掩盖未覆盖文件。全量本地预演仅在用户明确要求、诊断 CI 失败或改动范围过大时执行。
改写历史的推送:standalone 与 stack PR 分支允许 rebase,改写前需记录远程精确 OID 并用 --force-with-lease=<branch>:<observed-oid> 发布;gh stack push 与 gh stack sync 提供租约保护;禁止裸 --force。改写后需重新拉取线上 head 并复查未解决评论、批准、可合并性和检查。
gh stack sync 后:重新查询每个分支 head 与官方栈顺序,检查每个重写层相对其线上 PR base 的变更范围,运行所选证据,所有 PR 保持未合并并报告验证待定,直到全部通过;失败则保留已发布 head,修复并发布更正。
失败处理:普通推送前检查失败应停止并修复或说明阻塞;环境相关失败需记录命令、失败测试与平台差异,确认非平台证据,优先修复跨平台非确定性;跳过本地钩子仅在用户明确要求或同意时,并报告失败内容与预期 CI 差异。推送后可用 git rev-parse HEAD origin/$(git branch --show-current) 校验,再以 gh pr checks 查看 CI;若提示无检查且对应 SHA 运行数为 0,先用 gh pr view <number> --json mergeable,mergeStateStatus 判断冲突,CONFLICTING/DIRTY 时不产生 pull_request 工作流,解决冲突是唯一修复,空提交、--allow-empty 推送、草稿切换、回退恢复都不会产生检查。
限制:本技能不提供通用本地基线,全量覆盖由 CI 负责;未提供的具体命令、配置或数值以资料为准,暂未提供更多细节。