SuperAPI AI 工具集

duck-simplify

编程与开发

查看项目

更新于 10-16 03:00

技能介绍

duck-simplify 🦆 是一个复杂度削减与语义重复/分叉审查技能。其核心理念是:更小的形态,相同的行为;防止分叉,而不仅仅是防止重复。

用途

在代码审查、设计和调试场景中,提供“复杂度最小化”视角,包括语义重复与分叉审查。目标是找出最高价值的简化点,同时不削弱安全性、正确性或明确需求。

该技能仅提供复杂度削减指导,最终实现决策仍由用户负责。它继承 references/GUARDRAILS.md 中的共享护栏,并附带技能特定的差异说明。

主要能力

标准模式审查

  • 识别复杂度热点:层次、分支、配置面、间接层。
  • 在给出建议前验证证据,例如调用方、分支数量、配置使用情况。
  • 最多输出 3 条最高影响的简化建议。
  • 优先选择删除/复用/标准库/原生能力,其次才是新增抽象。
  • 如果简化会削弱信任边界、可访问性或明确需求,则拒绝并建议安全替代方案。
  • 不标记那些提升可读性的微小重复或低风险字面量/常量。

标准模式的发现前缀包括:

  • 🪶 yagni:抽象/配置尚不必要
  • 📚 stdlib:自定义代码可由标准库替代
  • 🧱 native:依赖/自定义层可由平台特性替代
  • ✂️ shrink:相同行为可用更少行数实现
  • 🗑️ delete:死代码/推测性代码可直接删除且无需替换
  • ❓ question:缺少意图,无法判断

标准模式输出格式为每行一条发现:

<prefix> <path[:line|scope]> — <complexity cost>. Fix: <smaller shape>.

最后一行汇总:

totals: <n> findings, <n> questions. net: -<N> lines possible.

Dry 模式审查(DRY/去重/分叉聚焦)

  • 确认存在语义重复,而非仅语法重复。
  • 当存在“分叉”可能时,纳入 Diverges 信息,并给出 Extract start。
  • 优先选择最小的安全提取边界。

Dry 模式的前缀包括:

  • 🟡 risk:有意义的重复,未来可能分叉
  • 🔵 nit:值得清理的轻微重复
  • ❓ question:缺少上下文,无法选择提取方案

Dry 模式输出格式为每行一条发现:

<prefix> <path[:line|scopeA<->scopeB]> — <duplicated behavior + drift risk>. Diverges when: <future change trigger>. Extract start: <path:line>. Fix: <extraction boundary>.

Dry 模式最后一行汇总:

totals: <n> findings, <n> questions. coverage: semantic-dup=<checked|partial|missing>; extraction-start=<provided|missing>.

使用方式

该技能在审查/设计/调试上下文中激活,用于复杂度最小化视角,包括语义重复/分叉审查。

调用时会先澄清范围:

  • 当上下文不完整时,提出 1-3 个有针对性的澄清问题。
  • 当证据缺失时,明确陈述假设。
  • 必需项:代码/提案范围。
  • Dry 模式必需项:两个或更多候选范围,且疑似存在语义重复。
  • 可选项:约束条件(截止时间、可读性规范、团队偏好)。
  • 若约束不清晰,提出一个有针对性的澄清问题。

随后进行简化审查并输出发现。

适用场景

  • 用户说“simplify this”。
  • 用户问“is this overengineered”。
  • 用户说“DRY this”。
  • 用户要求“divergence review”。
  • 需要在审查、设计或调试中采用复杂度最小化视角。

限制

  • 不负责安全/回滚严重性判定,该职责属于 duck-risk/duck-review。
  • 不负责测试缺口判定,该职责属于 duck-triage。
  • 不负责最终 PR 线程格式化,该职责属于 duck-review。
  • 不标记提升可读性的微小重复或低风险字面量/常量。
  • 若简化会削弱信任边界、可访问性或明确需求,则拒绝并建议安全替代方案。
  • 仅提供复杂度削减指导,最终实现决策仍由用户负责。