AgentSkillsCN

de-dupe

通过保持代码的“DRY 原则”,消除重复代码与技术债务。适用于被要求去重逻辑、提取共享工具,或重构重复模式时使用(“保持代码 DRY”、“去除重复代码”、“提取公共函数”、“降低技术债务”)。在重构前,务必对未提交的更改进行检查。

SKILL.md
--- frontmatter
name: de-dupe
description: Remove duplicated code and tech debt by keeping code DRY. Use when asked to de-duplicate logic, extract shared utilities, or refactor repeated patterns ("keep code DRY", "remove duplicated code", "extract common functions", "reduce tech debt"). Include checks for uncommitted changes before refactors.

De-dupe and DRY Refactor

Follow a safe, repeatable workflow to find duplicated code, extract shared helpers, and reduce maintenance burden while preserving behavior.

Workflow

  1. Check for uncommitted changes before refactor.

    • Run git status -sb and note touched files.
    • If the tree is dirty, prefer working incrementally and avoid mixing unrelated changes.
  2. Identify duplication targets.

    • Scan for obvious repeats in the touched files.
    • Use rg to find similar blocks or repeated strings.
      • Example: rg -n "functionName|error message|regex literal" src/
      • Example: rg -n "(\w+\([^)]*\))" src/ then narrow to common blocks.
  3. Decide if extraction is warranted.

    • Extract when logic is repeated 2+ times and the abstraction is stable.
    • Do not extract when it makes call sites harder to read or behavior diverges.
  4. Extract shared utilities.

    • Create a small function with a focused signature.
    • Place in an existing shared module or create a new utils/shared file.
    • Keep side effects explicit and minimize hidden dependencies.
  5. Replace duplicates.

    • Update call sites to use the new helper.
    • Remove redundant code and keep names consistent.
  6. Verify behavior.

    • Update or add tests when behavior is non-trivial.
    • Run relevant tests or linters if available.

Heuristics

  • Prefer simple helpers over deep class refactors.
  • Keep params explicit; avoid passing large context objects without need.
  • Extract constants for repeated literals (strings, regexes, numbers).
  • If duplication is across layers, consider moving logic to the lowest shared layer.

Guardrails

  • Avoid introducing new dependencies for small refactors.
  • Do not change public APIs unless explicitly requested.
  • Preserve performance characteristics; avoid extra allocations in hot paths.

Notes for Codex

  • Use rg for fast discovery and validate with context before editing.
  • Keep the diff small and focused; do not mix refactors with unrelated changes.