
safer-dependencies v0.6.0
Автоматизированный уровень безопасности зависимостей для ИИ-помощников по кодированию, который проверяет пакеты на наличие CVE, typosquats, заброшенность, проблемы с возрастом версий и целостность хешей в экосистемах npm, PyPI, RubyGems, Maven, Go и Rust.
Safer Dependencies для Claude Code
Когда ИИ-ассистенты по написанию кода, такие как Claude, добавляют пакеты в ваш проект, они часто выбирают ту версию, которая звучит подходяще — не проверяя, есть ли у неё известные уязвимости безопасности, поддерживается ли пакет по-прежнему активно, или не является ли имя опечаткой от вредоносного двойника.
safer-dependencies — это уровень безопасности для Claude Code: он находится между Claude и вашими файлами манифестов и автоматически выполняет свои проверки безопасности: установки с уязвимостями отклоняются до их запуска, а рискованная версия, записанная в манифест, исправляется на диске сразу после записи. Он обнаруживает и исправляет рискованные зависимости — CVE, typosquatting, заброшенные пакеты и проблемы с возрастом версий, а также период охлаждения для совершенно новых релизов — в npm, PyPI, RubyGems, Maven, Go, Rust и PHP (Composer). См. CAPABILITIES.md для точного описания того, что покрывается, а что нет.
Новичок? GETTING-STARTED.md проведёт вас от нуля до рабочей установки примерно за пять минут.
Безопасность и конфиденциальность: см. SECURITY.md (раскрытие уязвимостей), PRIVACY.md (исходящие данные, отсутствие телеметрии) и CAPABILITIES.md (от чего инструмент защищает, а от чего нет).
Лицензия (исходный код доступен — НЕ OSI «открытый исходный код»): Бесплатно для использования и модификации в своих целях, включая коммерческое использование внутри компании и создание продуктов, которые вы продаёте. Отдельная платная лицензия требуется только для монетизации самого программного обеспечения как такового — его продажи, включения в продукт или сервис, который продаётся, или предоставления его функциональности третьим лицам за плату (включая хостинг/SaaS/API). Распространение и производные работы должны сохранять лицензию и указывать этот проект. См. LICENSE (Раздел 4 об ограничении коммерческого использования); запросы на коммерческую лицензию через github.com/robert-auger.
Содержание
- Начало работы — от нуля до установки примерно за пять минут
- Что он делает
- Что его запускает
- Что в этом репозитории
- Поддерживаемые экосистемы
- Установка
- Уровни предупреждений
- Как это работает
- Журнал аудита
- Требования
- FAQ
Начало работы
GETTING-STARTED.md проведёт вас от нуля до рабочей установки примерно за пять минут — предварительные требования, интерактивная установка и проверка. Для полного справочника по установке (глобальная/проектная/ручная установка, особенности Windows, список разрешённых разрешений, обновление и удаление) см. INSTALLATION.md.
Повседневное использование: после установки хуков ничего запускать не нужно — safer-dependencies работает автоматически в фоновом режиме. Когда Claude добавляет или устанавливает пакеты, он помечает рискованные зависимости и обновляет уязвимые версии до безопасной на месте — и блокирует установку с известной уязвимостью до её запуска — так что небезопасные пакеты обнаруживаются и исправляются без необходимости вас просить. Вы всё равно можете вызывать его напрямую в любое время: «безопасен ли [email protected]?», «проверь настройку safer-dependencies» или «покажи статистику safer-dependencies».
Что он делает
Когда Claude собирается добавить пакет в ваш проект, safer-dependencies перехватывает действие и выполняет 5 проверок:
- Происхождение — официальный реестр, обнаружение typosquatting (npm/PyPI/RubyGems/Maven/crates.io), возраст пакета
- Возраст версии — выбирает новейшую стабильную версию, опубликованную 7+ дней назад (окно охлаждения)
- Сканирование уязвимостей — OSV API, с нативными инструментами экосистемы (npm audit, pip-audit, bundle audit), когда они доступны
- Целостность hash-привязки — для строк PyPI
requirements.txtс привязками--hash=sha256:...объявленный хэш проверяется на соответствие опубликованным хэшам PyPI; несовпадение выдаёт WARNING - Заброшенные и устаревшие пакеты — известные заброшенные пакеты (например,
paperclip,request,pycrypto,github.com/dgrijalva/jwt-go) немедленно жёстко блокируются с предложенной заменой; пакеты без стабильного релиза в течение 2+ лет получают рекомендательное предупреждениеSTALE:. Жёстко заблокированные пакеты удаляются из манифеста, и Claude спросит, как действовать дальше; пакеты только с пометкой устаревших остаются на месте.
Если обнаружены проблемы, Claude выдаёт предупреждения и может отступить к более безопасной версии. Все проверки записываются в ~/.claude/safer-dependencies-audit-YYYY-MM.log (один файл на календарный месяц).
Что его запускает
Навык срабатывает автоматически, когда Claude:
Операции с манифестом / установкой
- Добавляет или обновляет пакет в
package.json,requirements.txt,Gemfile,pom.xml,build.gradle,Cargo.toml,go.modили любом другом поддерживаемом манифесте - Записывает
import,requireилиuseдля пакета, ещё не объявленного в манифесте - Генерирует или обновляет lock-файл (проверяются только новые/изменённые записи)
- Запускает установку через менеджер пакетов через Bash (
npm install,bundle install,poetry install,uv sync,go mod tidyи т. д.) — Pre-Install проверяет аргументы команды, Post-Install проверяет полученный lock-файл - Записывает
Dockerfileили CI-пайплайн (.github/workflows/*.ymlи т. д.), содержащие шаги установки с закреплёнными версиями через менеджер пакетов
Вопросы выбора и рекомендаций
- Сравнение библиотек/фреймворков: «стоит ли использовать axios или node-fetch?», «moment vs dayjs?», «что лучше X или Y?»
- Запросы рекомендаций: «какой хороший HTTP-клиент для Python?», «порекомендуй библиотеку логирования для Go», «какой пакет обрабатывает CSV в Node?»
- Выбор версии: «какую версию Django мне использовать?», «последний стабильный Flask?»
Выражения намерения использовать (до добавления)
- «Я хочу использовать FastAPI для этого», «я думаю добавить Celery», «мы рассматриваем Prisma как ORM», «давай используем Tailwind»
Вопросы о здоровье и доверии к пакетам
- «moment.js всё ещё поддерживается?», «этот gem ещё активен?», «X заброшен?», «X достиг конца жизни (EOL)?», «можно ли доверять этому пакету?», «когда faker обновлялся в последний раз?»
Команды скаффолдинга
npx create-react-app,npm create vite@latest,django-admin startproject,rails new,cargo new+cargo add, «создай новый проект FastAPI»