# finding-duplicate-functions

Находит функции с одинаковым смыслом, но разными названиями и кодом. Помогает расчистить утилиты и хелперы в репозиториях, которые писали разные люди или нейросети.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 634 установки · ★ 433
- Автор: obra
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/obra/superpowers-lab/tree/HEAD/skills/finding-duplicate-functions/SKILL.md
- Обновлён: 2026-06-01
- HTML: https://affpapa.org/nevibecode/skills/finding-duplicate-functions

## Что делает

Скилл ищет скрытые смысловые дубли в коде на TypeScript и JavaScript. Обычные утилиты вроде `jscpd` ловят прямой копипаст, но пропускают ситуации, когда разные разработчики или нейросети пишут одинаковый хелпер с нуля под другим именем. Процесс начинается со скрипта `./scripts/extract-functions.sh`. Он собирает каталог функций с контекстом в 15 строк и отсекает тестовые файлы вроде `*.test.*` и `__tests__/**`.

Дальше в дело вступают две модели. Для экономии токенов первичную сортировку по доменам делает быстрая Haiku по шаблону `scripts/categorize-prompt.md`. Затем скрипт делит функции по папкам, отбирая группы от трёх штук. Сам поиск дублей внутри каждой категории автор доверяет исключительно Opus. Haiku на этом шаге пропускает неочевидные совпадения логики. Итог работы сводится в отчёт `duplicates-report.md` с группировкой по уровню уверенности.

Удалять найденные дубликаты вслепую опасно. Перед удалением кода обязательно нужно проверить тесты у оставленной базовой функции и переписать места вызовов.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add obra/superpowers-lab --skill finding-duplicate-functions -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/finding-duplicate-functions/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/finding-duplicate-functions/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add obra/superpowers-lab --skill finding-duplicate-functions -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/finding-duplicate-functions/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add obra/superpowers-lab --skill finding-duplicate-functions -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/finding-duplicate-functions/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install obra/superpowers-lab finding-duplicate-functions
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/finding-duplicate-functions/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add obra/superpowers-lab --skill finding-duplicate-functions -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/obra/superpowers-lab --path skills/finding-duplicate-functions
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/finding-duplicate-functions/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add obra/superpowers-lab --skill finding-duplicate-functions -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/obra/superpowers-lab/tree/HEAD/skills/finding-duplicate-functions/SKILL.md

## Когда брать
- найти хелперы с одинаковым назначением и разным кодом
- собрать каталог экспортированных функций без захвата тестов
- сгруппировать методы по предметным областям
- сформировать отчёт по смысловым дублям для рефакторинга

## Примеры запросов агенту
- Запусти аудит кодовой базы на скрытые дубликаты функций с помощью finding-duplicate-functions
- Выдели общие функции в src/ и проверь их на смысловые повторы через finding-duplicate-functions

## Похожие
- [fallow](https://affpapa.org/nevibecode/skills/fallow.md) — скилл · 9600 установок
- [coding-standards](https://affpapa.org/nevibecode/skills/coding-standards.md) — скилл · 5700 установок
- [dry-refactoring](https://affpapa.org/nevibecode/skills/dry-refactoring.md) — скилл · 3600 установок
- [sentry-sdk-upgrade](https://affpapa.org/nevibecode/skills/sentry-sdk-upgrade.md) — скилл · 3100 установок
- [command-pattern](https://affpapa.org/nevibecode/skills/command-pattern.md) — скилл · 645 установок
- [jscodeshift](https://affpapa.org/nevibecode/skills/jscodeshift.md) — скилл · 410 установок

Из того же набора: [obra/superpowers-lab](https://affpapa.org/nevibecode/by/obra/superpowers-lab.md) — 3 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
