← 返回文章档案 开源项目拆解
Agent Skills 工程化实践 · 第 11 / 13 篇

Agent Skills 工程化实践 11:让代码更好改,也让 diff 与冲突更容易审

逐一解释 codebase-design、improve-codebase-architecture、code-review 与 resolving-merge-conflicts,建立从模块设计到集成收尾的质量边界。

质量不是最后一轮 lint

Agent 可以快速增加代码,也会快速增加 interface、configuration 与跨文件 knowledge。真正的质量控制必须贯穿三个位置:设计 module shape、定期发现 architecture friction、用稳定 fixed point 审阅 diff。冲突发生时,还要能从双方 primary source 恢复 intent。

这四个 Skills 分别守住这些位置,并且不会互相替代。

codebase-design:给模块形状一套精确语言

触发方式:Model-invoked。 当你在设计 interface、寻找 seam、提升 testability 或讨论 architecture:

请用 codebase-design 评估支付计算模块:interface 是否过宽,variation 应该放在哪个 seam,测试能否只通过 public interface 完成。

它要求一致使用 module、interface、implementation、depth、seam、adapter、leverage 与 locality。重点不是发明更多 abstraction,而是形成 deep module:调用者只需理解小 interface,却能获得大量 behavior。

两个实用检查:deletion test 看移除 module 后 complexity 是消失还是只是散回 callers;interface is the test surface 看真实 behavior 能否通过 interface 被验证。如果为了测试必须穿透 private details,通常说明 seam 位置不对。

上游 Skill:codebase-design

improve-codebase-architecture:先 survey,再由人选 candidate

触发方式:User-invoked。 适合周期性 architecture health check:

/improve-codebase-architecture

它读取 domain model 与代码,寻找 deepening opportunities,生成 visual HTML report,再让人选择一个 candidate 进入 grilling。报告应该展示 Before/After、interface friction、预期 leverage 与风险,但在用户选择前不应该开始重构。

它是 survey,不是 legacy rescue。老系统里发现十个问题,不代表一次 session 应该修十个;候选项的价值是让团队选择下一项最有 leverage 的改善。频繁运行也不等于频繁改架构,很多时候正确结论是“当前没有值得支付迁移成本的 candidate”。

上游 Skill:improve-codebase-architecture

code-review:固定一个点,分开两个轴

触发方式:Model-invoked。 用户要求 review branch、PR、WIP 或“review since X”时使用:

请用 code-review 审查从 main 到 HEAD 的变化,spec 是 #128。

输入必须包含 fixed point:commit、branch、tag 或 merge-base。Skill 分别运行两个 parallel reviews:

  • Standards:是否符合 repo documented standards,并以常见 Fowler smells 为 baseline;
  • Spec:是否忠实实现 originating issue/spec,有没有遗漏或 scope creep。

两个轴必须分开,因为“写得漂亮但做错需求”和“功能正确但结构失控”是不同失败。发现问题后,修复并 commit,再针对同一个 fixed point 重跑;不要把 HEAD^ 当成长期 fixed point,否则每次新增 commit 都会缩小审阅范围。

完成标准: finding 指向具体证据和影响;无法确认的 spec 不是由 reviewer 猜测;最终没有 actionable findings,且完整 diff 从固定点到当前 HEAD 都被覆盖。

上游 Skill:code-review

resolving-merge-conflicts:按 intent 解决,不按“选左选右”解决

触发方式:Model-invoked。 只在 merge 或 rebase 已经处于 conflict state 时使用:

请用 resolving-merge-conflicts 继续当前 rebase,逐个 hunk 追溯双方 intent,并完成 rebase。

它先读取 git state 与 history,再为每个 conflict 找 primary sources:commit message、PR、issue、spec 和相关 tests。能同时保留双方 intent 时合并;确实不兼容时,选择符合当前 merge goal 的一方,并记录 trade-off。不要为了让标记消失而发明第三种 behavior。

解决后要运行项目真实 checks,stage,并把 merge/rebase 完成到底。Skill 明确要求 never --abort,但这不是授权它忽略风险;如果 primary sources 不足,应停下来向人确认 intent,而不是把 syntax resolution 当成 semantic resolution。

上游 Skill:resolving-merge-conflicts

把四个动作放回正确时间

设计或改变 module      → codebase-design
周期性寻找高价值改善    → /improve-codebase-architecture
实现形成稳定 diff 后     → code-review <fixed-point>
已经进入 merge conflict → resolving-merge-conflicts

质量不是统一的“再检查一下”。设计 vocabulary、architecture survey、diff review 与 conflict resolution 各自需要不同证据。把它们混成一次泛化 review,最后得到的往往只是很多意见,没有可靠门禁。

来源与版本

  • 上游参考:README Reference
  • 参考分支:main · 核验 commit:8b78b53 · 核验日期:2026-08-14
来源记录 https://github.com/mattpocock/skills 参考分支:main 参考 commit:8b78b531ab96 核验日期:2026/8/14