# Find Duplication

> Find code duplication in the codebase. Supports branch-scoped or full sweep. Use when the user asks to find duplicated code or repeated patterns before a PR.

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

---


# Find Code Duplication

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

## Rules

- Report findings, do not refactor unless the user asks.
- Focus on production code under `src/lightspeed_agentic/`. Skip test duplication unless asked.
- Group by severity: exact duplicates first, then near-duplicates.

## Step 1: Determine Scope

- **Branch mode**: files changed vs `main`.
- **Full mode**: entire `src/lightspeed_agentic/`.

Branch mode:

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

Full mode target: `src/lightspeed_agentic/`.

## Step 2: Run Pylint Duplicate Detection

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

Filter false positives: import blocks, Pydantic boilerplate, one-liners.

## Step 3: Semantic Duplication Search

Look for similar signatures, repeated error handling, copy-pasted blocks:

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

## Step 4: Classify Findings

| Category | Action |
|----------|--------|
| Extract — identical logic in 3+ places | Shared helper |
| Parameterize — same structure, different values | Common function |
| Acceptable — different domains | Note only |
| Test-only | Fixtures (if user asked) |

## Step 5: Report

Files, line ranges, description, classification, suggested helper location.
Summary: counts and rough savings.

