jscpd
Детектор дублирующегося кода на 220+ языках с MCP-сервером для агента и отчетом, экономящим токены
Низкий риск
Низкий уровень ставим, когда запись в основном дает агенту инструкции и справочные материалы.
Почему такой уровень
- Инструмент только читает файлы проекта и не изменяет их
Установка
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/jscpdОпределит агенты на машине, проверит риск и зафиксирует версию.
Другие способы установки
Установите утилиту
npm install -g jscpdУстановите инструмент командой npm install -g jscpd (или npx jscpd . для разового запуска без установки). Для MCP-режима запустите jscpd --mcp /path/to/project и подключите его как локальный MCP-сервер по stdio.
Другие способы из описания автора
npm install -g jscpdСтавит команду jscpd, предсобранный бинарник без рантайма Node.js.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
jscpd токенизирует код по правилам конкретного языка (свой синтаксис строк и комментариев для каждого формата), а затем ищет повторяющиеся последовательности токенов между файлами алгоритмом Рабина-Карпа. Помимо копипаста, инструмент умеет находить мертвый код, ранжировать файлы по сложности и отслеживать динамику дублирования по истории git. Отдельный флаг поднимает встроенный MCP-сервер поверх stdio, чтобы агент мог сам проверять фрагмент кода на дублирование или искать структурно похожие функции.
Для кого. Для разработчиков и инженеров качества кода, которые хотят находить дублирование и мертвый код вручную или через агента.
Подходит, если
- Нужно проверить проект на дублирующийся код перед мержем
- Агент должен сам проверять фрагмент кода на совпадения перед рефакторингом
- Нужно встроить проверку дублирования в CI как GitHub Action
Не подходит, если
- Нужен статический анализ логических ошибок, а не совпадений кода
- Формат файла не входит в список из 224 поддерживаемых
Пример запроса к агенту
Найди и исправь дублирование кода в этом проектеОграничения
Инструмент только читает исходный код проекта и не вносит изменений сам. MCP-режим запускает сканирование один раз при старте и держит его в памяти, поэтому на очень больших монорепозиториях старт может занимать заметное время.
Как отключить. Удалите пакет: npm uninstall -g jscpd (или cpd, если ставили под этим именем) либо удалите бинарник, поставленный через Homebrew, Cargo или Docker-образ.
Проверка безопасности
- Инструмент только читает файлы проекта и не изменяет их
Коротко о README
README описывает jscpd как детектор дублирующегося кода на 220+ языках с движком на Rust, который ставится как самодостаточный бинарник через npm, PyPI, Cargo, Homebrew, Nix или Docker. Кроме поиска копипаста, инструмент считает мертвый код, сложность файлов, динамику дублирования по git-истории и общий показатель здоровья проекта. Отдельно описан AI-режим: отчет с меньшим числом токенов для LLM-пайплайнов и встроенный MCP-сервер по stdio. Лицензия MIT.
Частые вопросы
Нужен ли Node.js для работы?
Нет, начиная с пятой версии jscpd это самодостаточный бинарник на Rust, Node.js нужен только для установки через npm.
Чем отличается MCP-режим от обычного сканирования?
Команда jscpd --mcp сканирует проект один раз и поднимает сервер по протоколу MCP через stdio, чтобы агент мог проверять отдельные фрагменты кода и искать похожие функции по запросу.
Похожие
Набор скиллов, который задает агенту процесс разработки: уточнение задачи, план, TDD, субагенты и ревью кода
Скиллы Мэтта Покока для инженеров
Skills For Real Engineers
Небольшие компонуемые скиллы для инженерной работы с агентом: интервью по плану, TDD, диагностика багов, ревью и архитектура
Набор GitHub для разработки от спецификации: CLI specify ставит в проект команды и скиллы для агента, от принципов до реализации
Референсные MCP-серверы
Model Context Protocol servers
Официальные референсные MCP-серверы: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time и Everything