Сканер безопасности для навыков ИИ-агентов. Обнаруживает уязвимости, вредоносные паттерны, риски безопасности, промпт-инъекции, эксфильтрацию данных и риски цепочки поставок в навыках Claude Code, Codex и MCP до их установки.
Сканер безопасности для навыков ИИ-агентов. Обнаруживайте уязвимости, вредоносные шаблоны и риски безопасности перед установкой навыков агентов.
Навыки ИИ-агентов (используемые Claude Code, Codex CLI, Gemini CLI и т. д.) выполняются с неявным доверием и минимальной проверкой. В проанализированном подмножестве исследовательского набора данных из 31 132 навыков 26,1% навыков содержат уязвимости, а 5,2% демонстрируют вероятные вредоносные намерения.
SkillSpector помогает ответить на вопрос: «Безопасно ли устанавливать этот навык?»
SkillSpector является частью конвейера NVIDIA Verified Skills, который сканирует, оценивает и подписывает навыки агентов перед публикацией. Навыки, прошедшие проверку, публикуются в каталоге навыков NVIDIA.
/skillspector для сканирования навыков изнутри сессий агента.Уведомление об открытом программном обеспечении: Этот проект загрузит и установит дополнительные сторонние проекты с открытым исходным кодом. Ознакомьтесь с условиями лицензий этих проектов с открытым исходным кодом перед использованием.
Сначала создайте и активируйте виртуальное окружение (все цели make предполагают активное venv). Используйте uv или pip; Makefile использует uv, если он доступен, иначе pip.
Быстрая установка с uv (только CLI):```bash uv tool install git+https://github.com/NVIDIA/skillspector.git
Если вы планируете запускать `skillspector mcp`, установите дополнительный пакет MCP во время установки:```bash
uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'
Из источника:```bash
git clone https://github.com/NVIDIA/skillspector.git cd skillspector
uv venv .venv && source .venv/bin/activate
make install
make install-dev
### Docker (Python не требуется)
Запустите SkillSpector без установки Python, собрав его локально из включённого [Dockerfile](https://github.com/nvidia/skillspector/blob/main/Dockerfile). Образ основан на официальном образе Docker Official Python `3.12-slim-bookworm`.
**Соберите образ:**```bash
make docker-build
# or: docker build -t skillspector .
Сканирование локального каталога путём монтирования текущего каталога в /scan, рабочий каталог контейнера:```bash
docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --no-llm
**Сканирование с анализом LLM** путём передачи учётных данных через локальный файл `.env`:```bash
cat > .env <<'EOF'
SKILLSPECTOR_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
EOF
| -t | --target | Целевой URL |
| -f | --file | Файл, содержащий целевые URL |
| -o | --output | Файл для сохранения результатов |
| -c | --cookie | Cookie для использования в запросах |
| -H | --header | Пользовательский заголовок для использования в запросах |
| -A | --user-agent | Пользовательский User-Agent для использования в запросах |
| -X | --proxy | Прокси для использования в запросах |
| -r | --redirect | Следовать перенаправлениям |
| -k | --insecure | Не проверять SSL-сертификаты |
| -v | --verbose | Включить подробный вывод |
| -h | --help | Показать справку |```bash
docker run --rm
-v "$PWD:/scan"
--env-file .env
skillspector scan ./my-skill/
Или передайте учётные данные напрямую из окружения вашей оболочки:```bash
docker run --rm \
-v "$PWD:/scan" \
-e SKILLSPECTOR_PROVIDER=anthropic \
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
skillspector scan ./my-skill/
Написать отчёт в файловую систему хоста, записав его в смонтированный каталог:```bash
docker run --rm
-v "$PWD:/scan"
skillspector scan ./my-skill/ --no-llm --format json --output report.json
**Необязательный псевдоним** для повторяющихся статических сканирований:```bash
alias skillspector-docker='docker run --rm -v "$PWD:/scan" skillspector'
skillspector-docker scan ./my-skill/ --no-llm
skillspector scan ./my-skill/
skillspector scan ./SKILL.md
skillspector scan https://github.com/user/my-skill
skillspector scan ./my-skill.zip
#### Ограничения размера
SkillSpector применяет два независимых ограничения на удалённые и архивные входные данные, чтобы ограничить влияние слишком больших загрузок и zip-бомб:
- **Ограничение на приём**: `INGEST_MAX_BYTES` (100 MiB) — применяется к потоковым загрузкам по URL, общему размеру распакованных zip-архивов и использованию диска после клонирования Git-репозиториев.
- **Ограничение на элементы zip**: `INGEST_MAX_ZIP_MEMBERS` (10 000) — ограничивает количество записей в одном zip-архиве.
Обратите внимание, что ограничение анализа в 1 MB на файл (`MAX_FILE_BYTES`) — это отдельный, нижележащий лимит: он ограничивает то, что отдельные анализаторы будут читать из уже принятого каталога. Приведённые выше ограничения на приём ограничивают то, сколько контента вообще может оказаться на диске. Нарушение любого из ограничений на приём приводит к отказу с ошибкой `IngestLimitExceededError`.
### Форматы вывода```bash
# Terminal output (default) - pretty formatted
skillspector scan ./my-skill/