find-duplication

Find code duplication in the codebase. Supports two modes - scoped to current branch changes or a full codebase sweep. Use when the user asks to find duplicated code, copy-paste, repeated patterns, or wants to deduplicate before a PR.

openshift/lightspeed-service1 installsApache-2.0Synced Aug 25

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI

Agent Skills format with YAML frontmatter. Claude Code reads it as-is.

---
name: "find-duplication"
description: "Find code duplication in the codebase. Supports two modes - scoped to current branch changes or a full codebase sweep. Use when the user asks to find duplicated code, copy-paste, repeated patterns, or wants to deduplicate before a PR."
license: "Apache-2.0"
---

# Find Code Duplication

Detect duplicated or near-duplicate code and suggest consolidation candidates.

## Rules

- Report findings, do not refactor. Refactoring is a separate task.
- Focus on production code (`ols/`). Skip test duplication unless explicitly asked.
- Group findings by severity: exact duplicates first, then near-duplicates.
- For each finding, state whether extraction is worth it or acceptable duplication.

## Step 1: Determine Scope

Ask the user:
- **Branch mode**: only files changed in the current branch vs main.
- **Full mode**: scan the entire `ols/` directory.

For branch mode:

```bash
git diff --name-only origin/main -- 'ols/' | grep '\.py$'
```

For full mode, the target is `ols/`.

## Step 2: Run Pylint Duplicate Detection

```bash
uv run pylint --disable=all --enable=duplicate-code --min-similarity-lines=6 <target files or directory>
```

Review output. Filter out false positives:
- Import blocks (common imports are not duplication)
- Pydantic model boilerplate (Field declarations)
- Single-line patterns (logging, raises)

## Step 3: Semantic Duplication Search

Pylint only catches textual similarity. Also look for:

1. **Similar function signatures** — functions with near-identical parameter lists doing similar work.
2. **Repeated error handling** — same try/except/log/return pattern across multiple files.
3. **Copy-pasted blocks** — search for distinctive string literals or variable names that appear in multiple files.

```bash
rg "<distinctive pattern>" ols/ --type py -l
```

## Step 4: Classify Findings

For each duplicate found, classify:

| Category | Action |
|----------|--------|
| **Extract** — identical logic in 3+ places | Recommend a shared helper |
| **Parameterize** — same structure, different values | Recommend a common function with parameters |
| **Acceptable** — similar but serving different domains | Note it, no action needed |
| **Test-only** — repeated test setup/fixtures | Recommend shared fixture (only if user asked) |

## Step 5: Report

For each finding:

1. Files and line ranges involved
2. What is duplicated (brief description)
3. Classification (extract / parameterize / acceptable)
4. Suggested location for shared code (if applicable)

Summary: total findings, how many actionable, estimated lines saved.

More General & Other skills

← All General & Other skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY