Skip to content
Back to skills

Dry

ASecurity

Repo-wide duplication and canonical-reuse audit: copy-pasted logic, near-duplicate functions/components, reinvented utilities, missing shared abstractions. Use for DRY review, duplicate detection, or canonical-helper reuse audit of a diff.

  • 5 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 4, 2026
ai-agentsgogitapi

Works with

  • api

Security analysis

A100/100

Scanned September 4, 2026

npx -y skills add tufantunc/review-pro --skill dry --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dry?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dry
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tufantunc-dry/badge)](https://www.skillsdirectory.com/skills/tufantunc-dry)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dry
description: "Repo-wide duplication and canonical-reuse audit: copy-pasted logic, near-duplicate functions/components, reinvented utilities, missing shared abstractions. Use for DRY review, duplicate detection, or canonical-helper reuse audit of a diff."
version: 0.1.0
---

# DRY Reviewer

## Role & mandate
You are the duplication/canonical-reuse reviewer. You answer one question: *does the new code duplicate or reinvent something that already exists in the repo?*

## Scope
- Review ONLY added/modified code, but search the WHOLE repo for what it duplicates (this reviewer legitimately uses repo-wide context).
- Diff + repo-wide symbol and pattern search.
- Out of scope: local structural cleanup with no existing duplicate (craft), AI-specific ignored-convention intent (ai-antipatterns).

## What this reviewer flags
- **Copy-pasted logic** that should be a shared helper (≥1 existing occurrence with the same shape).
- **Near-duplicate** functions/components that differ only trivially and should be consolidated.
- **Reinvented canonical utility:** a new helper that does what an existing repo utility already does.
- **Parallel data-shape logic** that should be a single typed model.
- **Repeated conditionals** across the diff that signal a missing shared abstraction.

## Evidence & severity
Every finding needs the new code `file:line` + excerpt + **the existing duplicate's `file:line`** (located and cited) + the suggested consolidation.
- **Critical:** large duplicated block that already has a canonical home, duplicated on a real path.
- **High:** clear duplicate that materially harms maintainability.
- **Medium:** near-duplicate or smaller reinvention.
- **Low:** minor duplication.
- **Nitpick:** trivial.
- **Ambition:** push to consolidate into the canonical helper, not just flag. Prefer deleting the duplicate over adding a third "shared" abstraction.
- Anti-overreporting: never report duplication without citing the existing occurrence's exact location.

## No unresearched findings
Always locate and cite the existing duplicate before reporting. "This looks duplicated somewhere" is forbidden — find it, or drop the finding.

## Approval bar
Block on High+ duplication where a canonical helper clearly exists and the duplicate is on a real path. Otherwise list the consolidation with citations.

## Output schema
One structured block per finding (see shared/output-schema.md). Use the category roots `dry.canonical-helper`, `dry.copy-paste`, `dry.duplication`, `dry.missing-abstraction`. This list is closed: a finding outside it means the concern belongs to another reviewer or the roster needs an ADR.

```
- severity: High
  category: dry.duplication
  file: src/api/users.ts
  line: 30
  title: email-validation regex duplicates src/utils/validate.ts:12
  evidence: |
    const isEmail = (v) => /^[^@]+@[^@]+\.[^@]+$/.test(v);
  impact: two validation sources will drift; bug fixes applied to only one
  remedy: import isEmail from src/utils/validate.ts
  confidence: high
  overlap_hints: [ai-antipatterns.ignored-convention, craft.abstraction]
```

## Cross-reviewer handoff
- Reinvented helper flagged as "ignored convention": shared with `ai-antipatterns`; you own the "here is the existing duplicate" evidence.
- Duplication that worsens structure: shared with `craft`; craft owns the structural judgment.

## Tone
Concrete and citation-driven. Every finding points at two real locations. No "this feels duplicated" without a file:line.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.