Audit codebases to find semantically duplicate functions with different names or implementations.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "finding-duplicate-functions" skill from askskill: 1. Download https://raw.githubusercontent.com/obra/superpowers-lab/main/skills/finding-duplicate-functions/SKILL.md 2. Save it as ~/.claude/skills/finding-duplicate-functions/SKILL.md 3. Reload skills and tell me it's ready
Please audit all functions in this codebase and identify those that perform the same task semantically but have different names or implementations. Group them by similarity, explain their shared responsibility and key differences, and recommend which function should be kept as the canonical implementation.
A grouped report of duplicate functions with similarity reasons, differences, and consolidation recommendations.
This project was partly generated with LLM assistance. Focus on cases where a new function was created instead of reusing an existing one. List suspected duplicate functions, identify call sites that could reuse existing implementations, and provide refactoring suggestions.
A refactoring-oriented audit showing reusable functions, replaceable call sites, and cleanup suggestions.
Please inspect this utils directory and find helper functions with overlapping behavior, such as multiple formatting, parsing, validation, or transformation functions. Output a consolidation plan and suggest standardized naming and migration steps.
A utility consolidation list with duplicates, naming standardization suggestions, and migration paths.
LLM-generated codebases accumulate semantic duplicates: functions that serve the same purpose but were implemented independently. Classical copy-paste detectors (jscpd) find syntactic duplicates but miss "same intent, different implementation."
This skill uses a two-phase approach: classical extraction followed by LLM-powered intent clustering.
| Phase | Tool | Model | Output |
|---|---|---|---|
| 1. Extract | scripts/extract-functions.sh | - | catalog.json |
| 2. Categorize | scripts/categorize-prompt.md | haiku | categorized.json |
| 3. Split | scripts/prepare-category-analysis.sh | - | categories/*.json |
| 4. Detect | scripts/find-duplicates-prompt.md | opus | duplicates/*.json |
| 5. Report | scripts/generate-report.sh | - | report.md |
digraph duplicate_detection {
rankdir=TB;
node [shape=box];
extract [label="1. Extract function catalog\n./scripts/extract-functions.sh"];
categorize [label="2. Categorize by domain\n(haiku subagent)"];
split [label="3. Split into categories\n./scripts/prepare-category-analysis.sh"];
detect [label="4. Find duplicates per category\n(opus subagent per category)"];
report [label="5. Generate report\n./scripts/generate-report.sh"];
review [label="6. Human review & consolidate"];
extract -> categorize -> split -> detect -> report -> review;
}
./scripts/extract-functions.sh src/ -o catalog.json
Options:
-o FILE: Output file (default: stdout)-c N: Lines of context to capture (default: 15)-t GLOB: File types (default: *.ts,*.tsx,*.js,*.jsx)--include-tests: Include test files (excluded by default)Test files (*.test.*, *.spec.*, __tests__/**) are excluded by default since test utilities are less likely to be consolidation candidates.
Dispatch a haiku subagent using the prompt in scripts/categorize-prompt.md.
Insert the contents of catalog.json where indicated in the prompt template. Save output as categorized.json.
./scripts/prepare-category-analysis.sh categorized.json ./categories
Creates one JSON file per category. Only categories with 3+ functions are worth analyzing.
For each category file in ./categories/, dispatch an opus subagent using the prompt in scripts/find-duplicates-prompt.md.
Save each output as ./duplicates/{category}.json.
./scripts/generate-report.sh ./duplicates ./duplicates-report.md
Produces a prioritized markdown report grouped by confidence level.
Review the report. For HIGH confidence duplicates:
Focus extraction on these areas first - they accumulate duplicates fastest:
| Zone | Common Duplicates |
|---|---|
utils/, helpers/, lib/ | General utilities reimplemented |
| Validation code | Same checks written multiple ways |
| Error formatting | Error-to-string conversions |
| Path manipulation | Joining, resolving, normalizing paths |
| String formatting | Case conversion, truncation, escaping |
| Date formatting | Same formats implemented repeatedly |
| API response shaping | Similar transformations for different endpoints |
…
Use MCP services on demand via CLI without preloading extra context.
Run interactive CLI sessions safely via tmux for editors, REPLs, and Git flows.
Create isolated workspaces for feature development without disturbing current code.
Implement features and fixes by writing tests before production code.
Clarify intent, requirements, and solution direction before any creative implementation work.
Set conversation rules to discover and invoke skills before replying.
Detect duplicated code across many formats to improve code quality and refactoring.
Query JavaScript and TypeScript codebases in natural language for function insights.
Run multi-model reviews for code changes, PRs, and risky edits.
Run deterministic funnel, accessibility, and LLM visibility audits with honest reports.
Audit site SEO health, uncover keyword gaps, and prioritize optimization actions.
Search code semantically across 40+ languages with context expansion and hybrid retrieval.