CUPID Checker 是一个用于代码审查的技能,依据 Dan North 提出的 CUPID 五项属性评估代码。CUPID 是一组描述“令人愉悦的代码”的属性,而非规则;代码没有“是否合规”,只是更接近或更远离每项属性的中心。五项属性为:C 可组合(Composable,与他人协作良好)、U Unix 哲学(Unix philosophy,只做好一件事)、P 可预测(Predictable,行为符合预期)、I 符合习惯(Idiomatic,感觉自然)、D 基于领域(Domain-based,解决方案领域建模问题领域)。
审查流程分四步。第一步理解上下文:先确认语言/框架(影响“符合习惯”评估)、代码用途(影响“Unix 哲学”和“基于领域”评估)、团队背景(影响“符合习惯”下的本地惯例)以及范围(单个函数、模块还是整个代码库);若用户未提供,可简短询问一个问题即可开始。第二步逐项评估:对五项属性各输出一节,包含评级(🟢 强 / 🟡 中 / 🔴 弱)、观察(具体、引用代码)和建议(如何向中心靠近),并引用具体行号、函数名或模式,避免泛泛而谈。第三步总体总结:用 2–4 句综合整体情况,给出 1–3 项最高杠杆改进(最可能同时正向影响多项属性),并指出代码已做得好的地方。第四步可选重构草图:若用户想看改进,提供具体重构草图(非完整重写),聚焦一两个最高杠杆改动。
语气与框架上,CUPID 明确不关乎规则或合规,反馈应表述为“行进方向而非通过/失败”,承认权衡(如“更可组合但代价是 X”),尊重既有选择,避免“这违反了 X”或“你必须 Y”,改用“向更可组合的代码靠近可能涉及……”等表述。快速参考中列出各属性的绿旗与红旗:可组合看窄而聚焦的 API、名称/签名意图清晰、导入少,红旗为上帝对象、宽泛的万能 API、深层依赖树;Unix 哲学看单一明确用途、一句话可描述、无意外副作用,红旗为做多件不相关的事、难以概括用途;可预测看确定性输出、易测试、可观测(内置日志/指标)、可见地处理边界情况,红旗为隐藏状态、静默失败、非确定性行为、难以测试;符合习惯看与同语言/代码库其他代码相似、使用标准库模式、命名一致,红旗为混合范式、重复造内置轮子、风格不一致;基于领域看代码读起来像领域对话、类型以领域概念命名、结构映射用例,红旗为 CS 术语命名(HashMap、Controller、Manager)、结构映射框架而非领域。
按需阅读 references/cupid-properties.md 可获取每项属性的子维度细节与示例审查输出。基准测试场景为 .benchmarks/scenarios/cupid-checker-001-review.md,在 claude-opus-4-8、claude-sonnet-4-6、claude-haiku-4-5 上均显示启用后通过率提升(+25 至 +37),该技能强制输出规定的五属性结构(每项评级+观察+建议)。