mcpField
D
duck-simplify

duck-simplify

github.com/sprngr开发855 次安装2 周前更新
代码仓库

关于 duck-simplify

duck-simplify 是用于代码评审、设计和调试场景的简化分析技能,面向希望降低复杂度并避免语义分歧的开发者。它优先考虑删除、复用或使用标准能力,并将最终实现决定留给用户。

主要功能

  1. 01识别复杂度热点
  2. 02核实调用与配置使用情况
  3. 03最多提出三项高影响简化
  4. 04优先删除、复用或采用标准能力
  5. 05检查语义重复与分歧风险

适用场景

  1. 01评估代码方案中的复杂层次
  2. 02查找可能逐渐分歧的重复逻辑
  3. 03审查是否需要新增抽象或配置
  4. 04比较复用与自定义实现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sprngr/rubber-duck --skill duck-simplify

安装后在 Claude Code 中输入/duck-simplify确认已加载。

附带文件references/GUARDRAILS.md

详细介绍

简化 🦆。形状更小,行为不变。防止语义偏离,而不只是消除重复。

目的

找出价值最高的简化方案,同时不削弱安全性、正确性或明确要求。

理念护栏(技能专属)

继承 references/GUARDRAILS.md 中的共享护栏。

技能专属差异:

  • 仅提供复杂度精简指导;最终实现决策仍由用户做出。

激活

在评审、设计、调试场景中,从复杂度最小化的角度审视问题,包括语义重复/偏离评审。

方法

1. 明确范围(如不清楚)
  • 上下文不完整时,提出 1–3 个有针对性的澄清问题
  • 证据不足时,明确说明假设

必需:

  • 代码/提案范围

干运行模式必需:

  • 两个或更多存在语义重复嫌疑的候选范围

可选:

  • 约束(截止日期、可读性规范、团队偏好)

约束不清楚时,提出一个有针对性的澄清问题。

2. 评审是否可简化
  1. 找出复杂度热点(层级、分支、配置面、间接层)。
  2. 提出建议前核实证据(调用方、分支数量、配置使用情况)。
  3. 最多提出 3 个影响最大的简化建议。
  4. 优先选择删除、复用、标准库/原生功能,而不是新增抽象。
  5. 对 DRY 模式:确认是语义重复(而非仅语法重复),包含 Diverges when + Extract start,并优先选择最小的安全抽取边界。
  6. 如果简化会削弱信任边界、无障碍性或明确要求,则拒绝并建议安全替代方案。
  7. 不要指出为提升可读性而保留的微小重复,也不要指出风险低的字面量/常量。
3. 输出发现

标准模式:

每项发现一行:

<前缀> <路径[:行号|范围]> — <复杂度成本>。修复:<更精简的形式>。

前缀:

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

最后一行:

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

干运行模式(聚焦 DRY/去重/语义偏离):

每项发现一行:

<前缀> <路径[:行号|范围A<->范围B]> — <重复行为 + 偏离风险>。Diverges when: <未来的变更触发条件>。Extract start: <路径:行号>。Fix: <抽取边界>。

干运行模式前缀:

  • 🟡 risk: 有意义的重复,可能导致偏离
  • 🔵 nit: 值得清理的轻微重复
  • ❓ question: 上下文缺失,无法确定抽取方案

干运行模式最后一行:

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

边界

  • 不负责安全性/回滚严重性(duck-risk/duck-review)。
  • 不负责测试缺口(duck-triage)。
  • 不负责最终 PR 讨论串格式(duck-review)。

评论

支持 Markdown