
Novu 开源仓库中的 Park and Review 技能基于 Git Worktree 的原子化代码审查与重构工作流【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu导读本文深入解析 Novu 开源仓库the open-source communication infrastructure for agents and products为 AI 编程 Agent 内置的一套名为nv-park-and-review的代码审查技能技能定义文件。它以基线提交baseline commit→ 一次性审查 worktree → 单提交粒度的核弹级质量审查 → 独立重构提交 → 合并回主线五步闭环为核心专门用于审查本地未提交改动中的 AI 生成痕迹AI slop与冗余代码。读完本文你将掌握这套可复制的 Git 工作流如何用 worktree 隔离审查现场、如何把审查结论固化为行为保持的独立重构提交、以及如何用快进合并让功能差异与审查差异在历史中清晰可分。为什么需要Park and Review把审查从功能开发中解耦在 Novu 这样的超大型 monorepo包含apps/api、apps/worker、apps/dashboard、apps/ws、packages/*等数十个可发布包中AI 辅助开发会引入一个典型问题功能改动与代码质量修复混杂在同一个 diff 中评审者难以区分这个改动是业务逻辑还是这是为了讨好 linter 的冗余重构。nv-park-and-review的解法非常明确先把当前未提交的功能改动冻结为一个基线提交baseline commit立刻跳入一个轻量的审查 worktree让主 checkout 恢复空闲在 worktree 内只针对那一个提交运行核弹级代码质量审查thermo-nuclear review把审查产出的修复整理成另一个独立的重构提交最后把重构提交合并回原分支并拆除 worktree。这样形成的提交历史是feature 提交 → refactor 提交两段式结构功能差异与审查驱动的重构始终分别可审。技能文档明确声明调用本技能即授权它创建的这两个提交步骤 1 与步骤 4且不得 amend 或 squash 基线提交。该技能并非孤立存在它嵌入了 Novu 的 Agent 技能生态。在 nv-implement 技能 中/nv-park-and-review被规定为每个切片slice子代理的收尾动作Closing step: commit withtype(scope): why, then run/nv-park-and-reviewfrom the worktree在 novu-prepare-pr 技能 中提交规范被进一步约束为type(scope): concise why fixes NV-XXXscope 取值包括dashboard、api-service、worker、shared等见 pullrequest.mdc 规则。也就是说nv-park-and-review是 Novu 从切片实现到PR 准备整条流水线的质量闸门。工作流总览五步闭环技能以一张可勾选的进度清单定义整体流程- [ ] 1. Baseline commit要审查的功能提交 - [ ] 2. Exit to a review worktree一条命令跳入审查工作区 - [ ] 3. Thermo-nuclear review仅针对该提交的核弹级审查 - [ ] 4. Triage fix, then a separate refactor commit分诊修复 独立重构提交 - [ ] 5. Land back on the original branch teardown合并回原分支 拆除下面按步骤逐一展开并补充可直接复制的命令。步骤 1创建基线提交Baseline commit这是整个流程的锚点后续所有审查都只针对这一个提交。技能规定的动作顺序是先并行检查现状确认要提交的内容范围git status git diff # 暂存区 未暂存区 git log --oneline -15 # 观察本仓库的提交信息风格只暂存内聚的改动如果用户已经暂存了文件就直接提交这些否则暂存相关的已修改文件。明确排除无关的本地编辑——技能要求Stage the cohesive change only防止把无关文件卷进基线。按仓库的 conventional 风格提交格式为type(scope): concise whyscope 沿用dashboard、api-service、worker、shared等。建议用 HEREDOC 写提交信息避免引号转义问题git commit -m $(cat EOF feat(dashboard): add workflow trigger button why 说明 EOF )留意提交钩子Novu 仓库的 package.json 中通过 husky 配置了pre-commit: lint-staged钩子同时声明了lint-staged: lint-staged与check: biome check .、check:fix: biome check --write .等脚本依赖biomejs/biome。技能明确提示lint-staged与biome check --write会在提交时运行并可能自动格式化暂存文件提交依然成功但如果钩子失败必须修复后重新提交绝不使用--amend。提交后立刻捕获基线 SHA——这是唯一的审查目标git rev-parse HEAD # 得到 BASE_SHA技能强调Invoking this skill authorizes the two commits it creates (steps 1 and 4). Do not amend or squash the baseline commit.——amend/squash 基线会破坏审查只针对该提交的精确边界因此被严格禁止。步骤 2一条命令跳入审查 worktree基线提交完成后立即把后续的审查、分诊编辑与重构提交全部搬到独立 worktree让主 checkout 恢复空闲、可以并行处理其他工作。这里刻意不使用仓库里更重的nv-worktree-create技能文档 中该技能会复制.env*、初始化 enterprise 子模块、执行pnpm symlink:submodules等因为审查通过不需要环境复制、依赖安装或构建一条轻量命令即可git worktree add -b review/branch-BASE_SHA:0:7 ../review-BASE_SHA:0:7 BASE_SHA命令拆解片段含义-b review/branch-BASE_SHA:0:7从当前分支名 基线 SHA 前 7 位拼出审查分支名例如review/feat-dashboard-a1b2c3d../review-BASE_SHA:0:7与主仓库同级的兄弟目录例如../review-a1b2c3dBASE_SHA检出到基线提交保证审查现场与基线完全一致从这一步起所有命令与文件编辑都必须在 worktree 路径内执行绝不碰主 checkout直到步骤 5。如果目标 worktree 路径已存在磁盘上或git worktree list中技能要求中止并回退到原地审查不要强行覆盖。关于 worktree 的路径命名规范、.env复制与依赖安装细节可参考配套的 nv-worktree-commands 技能它给出REPO_ROOT/REPO_PARENT的推导公式、DIR_NAME sanitize(BRANCH)小写、/→-的命名规则以及git worktree list、git -C path status -sb等检查命令。Novu 特有的注意事项是该文档强调的worktree 不会自动携带被 gitignore 的.env文件若需要本地密钥应从父 checkout 复制绝不能运行node scripts/setup-env-files.js因为那会重新生成STORE_ENCRYPTION_KEY导致 worktree 与父环境、共享的本地 Mongo/Redis 密钥不一致。步骤 3Thermo-nuclear review——仅针对 BASE_SHA 的核弹级审查进入 worktree 后先用两条命令收集精确的审查范围git show BASE_SHA --stat # 变更文件清单 git show BASE_SHA # 完整提交 diff用于粘贴进子代理 prompt然后启动一个thermo-nuclear-code-quality-review子代理Task 工具readonly: true前台运行以便拿到结果后立即行动。技能内置了完整的子代理 prompt 模板核心要点如下范围控制最关键只审查BASE_SHA这一个提交改动的行可以阅读整个文件获取上下文但每条 findings必须指向该提交引入/修改的具体行不得报告既有代码或整个分支的问题审查焦点AI slopAI 生成痕迹、冗余/死代码、重复逻辑、不必要的抽象或 props、反转/含义混淆的布尔命名、状态管理异味冗余 state 与派生值、effect 误用、stale-closure/依赖数组问题输出要求每条 finding 给出文件、具体符号/行号、严重级别、为什么是问题、以及一个具体的最小修复方案区分 must-fix 与 optional跳过不影响正确性或可维护性的吹毛求疵只返回 findings不得修改任何文件。这个thermo-nuclear审查词同时出现在 Novu 的其他技能中构成了统一的质量审查标准nv-implement在步骤 5 对整条 feature 分支 diff 也启动同一个子代理novu-prepare-pr在质量关卡Quality passes中同样要求load the skill, review the branch diff for structure/maintainability并紧随其后运行deslop技能清除 AI slop冗余注释、防御性噪音、多余 cast、重复测试。步骤 4分诊、修复与独立重构提交在 worktree 内完成拿到审查结果后不要盲信先做验证与分诊删除前先验证对每一条死代码/冗余断言用 Grep 确认调用点、setter、其他调用方确认确实无引用后才删除只应用 must-fix 与高价值 finding所有编辑必须是**行为保持behavior-preserving**的有意的或低价值的 finding 予以推迟并向用户说明原因不扩大范围分诊期间不得顺手加功能编辑完成后对每个改动过的文件运行ReadLints任何重命名后要用 Grep 检查残留的旧标识符只修必要的既有 lint只暂存分诊改动的文件新建一个提交再次强调绝不 amend BASE_SHAgit commit -m $(cat EOF refactor(scope): 删除了什么/重命名了什么以及为什么 EOF )用git log --oneline -3确认历史形态先出现 BASE_SHA随后是重构提交。如果审查没有发现值得修复的问题直接跳过步骤 4进入步骤 5 只拆除 worktree 与分支无需合并并向用户报告审查干净。步骤 5合并回原分支并拆除Land back teardown回到主 checkout用快进合并把原分支推进到审查分支上然后拆除 worktree——技能明确说用普通命令即可无需专门的清理技能git merge --ff-only review/branch-BASE_SHA:0:7 git worktree remove ../review-BASE_SHA:0:7 git branch -d review/branch-BASE_SHA:0:7关键失败处理如果--ff-only失败说明审查期间原分支发生了移动——此时绝不强制合并而是报告分叉情况把审查分支留在原地交给用户自行协调。这与仓库内 nv-worktree-cleanup 技能 的安全原则一脉相承该技能规定绝不未经用户确认--force移除 worktree、绝不删除主 worktree 或 Agent 当前所在的 worktree、默认用git branch -d安全删除。贯穿全程的 Guardrails护栏技能在末尾总结了四条不可逾越的边界它们是整个工作流正确性的保障提交必须分离基线提交步骤 1与重构提交步骤 4保持独立永远不要 squash 二者也不要--amend基线审查只针对单一基线提交永远不是整个分支——这保证了审查结论可追溯、可复现空审查结果优雅退出若审查无可修之处跳过步骤 4步骤 5 只拆除 worktree 与分支无内容可合并报告干净结果即可不主动推送除非用户明确要求不 push、不开 PR。此外从调用上下文nv-implement还能提炼出配套约束切片提交与审查重构提交在合并过程中同样必须保持分离子代理一旦越过自己 worktree 的边界编辑了兄弟切片就必须被纠正。与相关技能的关系图谱nv-park-and-review位于 Novu Agent 技能体系的质量保障中枢技能文档末尾列出其配套技能thermo-nuclear-code-quality-review步骤 3 使用的审查评分标准rubric本技能只负责圈定范围、提交现场审查本身完全委托给它deslop从 diff 中移除 AI slop 的配套技能与核弹级审查在novu-prepare-pr的质量关卡中先后使用nv-worktree-commandsworktree 命令速查手册当轻量设置需要排障时查阅路径命名、创建/移除/prune、.env*复制、依赖安装等novu-prepare-pr实现完成后的完整 PR 准备流程与本技能前后衔接。如果从更宏观的流水线看这一整套技能串成了 Novu 仓库 AI 协作开发的完整闭环nv-worktree-create建隔离环境→nv-implement切片并行实现每片收尾跑/nv-park-and-review→nv-park-and-review本次主题提交级原子审查→novu-prepare-prPR 准备与 CI 分诊→nv-worktree-cleanup回收过期 worktree。nv-park-and-review恰好处于实现质量与交付质量的接缝处用两个分离的提交把做了什么和修了什么永久性地记录在历史中。实践要点速查记住核心不变式基线提交只做一次、绝不 amend/squash审查只针对这一提交修复永远以新提交落盘。worktree 分支命名review/branch-BASE_SHA:0:7、目录../review-BASE_SHA:0:7保证多轮审查互不冲突、可快速对应到源提交。审查子代理必须readonly: true只返回 findings 不落盘修改防止审查环节污染现场。合并回主线一律--ff-only失败即报告分叉、绝不强推。仓库的 pre-commit 钩子husky lint-staged biome会在提交时自动格式化暂存文件这是正常现象钩子失败要新提交修复而不是回改历史。这套工作流不依赖任何第三方平台全部由原生 Git worktree 能力与任务委托构成可直接移植到任何遵循 conventional commits 的 Git 仓库中用于把AI 辅助开发的产出纳入与人类开发者同等严格的审查纪律。【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考