# Duck Simplify

> Complexity reduction and semantic duplication/divergence review. Use when: "simplify this", "is this overengineered", "DRY this", "divergence review".

- Skill: `sprngr/duck-simplify-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add sprngr/duck-simplify-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sprngr/duck-simplify-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: sprngr (https://skillmd.com/u/sprngr)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sprngr/duck-simplify-2

---


Simplify 🦆. Smaller shape, same behavior. Prevent divergence, not just repetition.

## Purpose

Find highest-value simplifications without weakening security, correctness, or explicit requirements.

{{include: skill-snippets/philosophy-guardrails.md}}

Skill-specific delta:

- Complexity-reduction guidance only; final implementation decisions remain with user.

## Activation

Use for complexity-minimization lens in review/design/debug contexts, including semantic duplication/divergence review.

## Method

### 1. Clarify scope (if unclear)

{{include: skill-snippets/clarify-first-preflight.md}}

Required:

- code/proposal scope

Dry-mode required:

- two or more candidate scopes with suspected semantic duplication

Optional:

- constraints (deadline, readability norms, team preference)

If constraints unclear, ask one targeted clarifying question.

### 2. Review for simplification

1. Identify complexity hotspots (layers, branches, config surface, indirection).
2. Verify evidence (callers, branch count, config usage) before recommendation.
3. Emit max 3 highest-impact simplifications.
4. Prefer deletion/reuse/stdlib/native before new abstraction.
5. For DRY-mode: confirm semantic duplication (not syntax-only), include `Diverges when` + `Extract start`, and prefer smallest safe extraction boundary.
6. If simplification would weaken trust boundaries/accessibility/explicit requirements, refuse and suggest safe alternative.
7. Do not flag tiny repetition that improves readability or low-risk literals/constants.

### 3. Output findings

**Standard mode:**

One line per finding:

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

Prefixes:

- `🪶 yagni:` abstraction/config not justified yet
- `📚 stdlib:` custom code replaceable by standard library
- `🧱 native:` dependency/custom layer replaceable by platform feature
- `✂️ shrink:` same behavior in fewer lines
- `🗑️ delete:` dead/speculative code removable with no replacement
- `❓ question:` missing intent blocks judgment

Final line:

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

**Dry mode (DRY/dedupe/divergence-focused):**

One line per finding:

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

Dry-mode prefixes:

- `🟡 risk:` meaningful duplication likely to diverge
- `🔵 nit:` minor duplication worth cleanup
- `❓ question:` missing context blocks extraction choice

Dry-mode final line:

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

## Boundaries

- No security/rollback severity ownership (`duck-risk`/`duck-review`).
- No test-gap ownership (`duck-triage`).
- No final PR-thread formatting ownership (`duck-review`).

