# De Dupe

> 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. Use when this capability is needed.

- Skill: `tomevault-io/de-dupe` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/de-dupe`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/de-dupe/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/de-dupe

---


# 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.

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/saadjs) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-14 -->

