Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
obra avatar

Finding Duplicate Functions

  • 553 installs
  • 408 repo stars
  • Updated June 1, 2026
  • obra/superpowers-lab

finding-duplicate-functions is an agent skill that detects semantically duplicate functions in LLM-generated codebases using classical extraction plus LLM intent clustering beyond jscpd copy-paste detection.

About

finding-duplicate-functions is an obra superpowers-lab skill for auditing codebases where LLM agents created parallel implementations of the same intent under different names. Classical copy-paste detectors like jscpd catch syntactic duplicates but miss same-purpose, different-implementation functions common in agent-generated repos. The skill uses a two-phase pipeline: classical function extraction followed by LLM-powered intent clustering to surface consolidation candidates. Developers reach for finding-duplicate-functions after heavy AI-assisted coding sessions, before refactors, or when test suites balloon with overlapping helpers. Outputs guide deduplication PRs that shrink maintenance surface without breaking behaviorally distinct code paths.

  • Two-phase approach: classical function extraction followed by LLM-powered intent clustering
  • Finds semantic duplicates where functions do the same thing but have different names or implementations
  • Especially effective on LLM-generated codebases that tend to create new functions instead of reusing existing ones
  • 5-step automated workflow from extraction through final markdown report
  • Runs after jscpd to catch duplicates that syntactic tools cannot detect

Finding Duplicate Functions by the numbers

  • 553 all-time installs (skills.sh)
  • +13 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #228 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/obra/superpowers-lab --skill finding-duplicate-functions

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs553
repo stars408
Security audit3 / 3 scanners passed
Last updatedJune 1, 2026
Repositoryobra/superpowers-lab

How do you find duplicate-intent functions in AI code?

Detect semantically duplicate functions in LLM-generated codebases that classical tools miss.

Who is it for?

Developers reviewing LLM-generated or rapidly iterated codebases accumulating overlapping utility functions.

Skip if: Greenfield projects with minimal code or teams needing only literal copy-paste detection via jscpd alone.

When should I use this skill?

The user audits an AI-generated codebase for duplicate helpers, overlapping utilities, or semantic duplication jscpd missed.

What you get

Intent-clustered duplicate function groups with consolidation recommendations for refactoring PRs.

  • intent-clustered duplicate function report
  • consolidation recommendations

By the numbers

  • Uses a 2-phase pipeline: classical extraction plus LLM intent clustering

Files

SKILL.mdMarkdownGitHub ↗

Finding Duplicate-Intent Functions

Overview

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.

When to Use

  • Codebase has grown organically with multiple contributors (human or LLM)
  • You suspect utility functions have been reimplemented multiple times
  • Before major refactoring to identify consolidation opportunities
  • After jscpd has been run and syntactic duplicates are already handled

Quick Reference

PhaseToolModelOutput
1. Extractscripts/extract-functions.sh-catalog.json
2. Categorizescripts/categorize-prompt.mdhaikucategorized.json
3. Splitscripts/prepare-category-analysis.sh-categories/*.json
4. Detectscripts/find-duplicates-prompt.mdopusduplicates/*.json
5. Reportscripts/generate-report.sh-report.md

Process

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;
}

Phase 1: Extract Function Catalog

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

Phase 2: Categorize by Domain

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.

Phase 3: Split into Categories

./scripts/prepare-category-analysis.sh categorized.json ./categories

Creates one JSON file per category. Only categories with 3+ functions are worth analyzing.

Phase 4: Find Duplicates (Per Category)

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.

Phase 5: Generate Report

./scripts/generate-report.sh ./duplicates ./duplicates-report.md

Produces a prioritized markdown report grouped by confidence level.

Phase 6: Human Review

Review the report. For HIGH confidence duplicates: 1. Verify the recommended survivor has tests 2. Update callers to use the survivor 3. Delete the duplicates 4. Run tests

High-Risk Duplicate Zones

Focus extraction on these areas first - they accumulate duplicates fastest:

ZoneCommon Duplicates
utils/, helpers/, lib/General utilities reimplemented
Validation codeSame checks written multiple ways
Error formattingError-to-string conversions
Path manipulationJoining, resolving, normalizing paths
String formattingCase conversion, truncation, escaping
Date formattingSame formats implemented repeatedly
API response shapingSimilar transformations for different endpoints

Common Mistakes

Extracting too much: Focus on exported functions and public methods. Internal helpers are less likely to be duplicated across files.

Skipping the categorization step: Going straight to duplicate detection on the full catalog produces noise. Categories focus the comparison.

Using haiku for duplicate detection: Haiku is cost-effective for categorization but misses subtle semantic duplicates. Use Opus for the actual duplicate analysis.

Consolidating without tests: Before deleting duplicates, ensure the survivor has tests covering all use cases of the deleted functions.

Related skills

How it compares

Pick finding-duplicate-functions over jscpd alone when auditing agent-generated repos for same-purpose helpers with different implementations.

FAQ

How is finding-duplicate-functions different from jscpd?

finding-duplicate-functions catches semantic duplicates—functions with the same intent but different names or implementations. jscpd only finds syntactic copy-paste matches that classical detectors already cover.

When should finding-duplicate-functions run?

finding-duplicate-functions fits post-generation audits of LLM-assisted codebases, especially when new utility functions appear instead of reusing existing ones. Run it before large refactors or merge reviews.

Is Finding Duplicate Functions safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Code Review & Qualitybackendintegrationstesting

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.