
SkillSpector v2.5.3
AIエージェントスキルのためのセキュリティスキャナー。インストールする前に、Claude Code、Codex、MCPスキルにおける脆弱性、悪意のあるパターン、セキュリティリスク、プロンプトインジェクション、データ外部流出、サプライチェーンリスクを検出します。
SkillSpector
AIエージェントスキル向けのセキュリティスキャナー。 エージェントスキルをインストールする前に、脆弱性、悪意のあるパターン、セキュリティリスクを検出します。
概要
AIエージェントスキル(Claude Code、Codex CLI、Gemini CLI などで使用されるもの)は、暗黙の信頼と最小限の審査のもとで実行されます。調査によると、スキルの26.1%に脆弱性が含まれており、5.2%が悪意のある意図を示している可能性があります。
SkillSpector は、「このスキルはインストールしても安全か?」 という問いに答える手助けをします。
SkillSpector は NVIDIA Verified Skills パイプラインの一部であり、公開前にエージェントスキルをスキャン、評価、署名します。合格したスキルは NVIDIA skills カタログに公開されます。
ドキュメント
- インストール前にエージェントスキルをスキャンする — ホストされたガイド: いつスキャンするか、レポートの読み方、インストールをゲートする方法。
- 開発ガイド — アーキテクチャ、パッケージレイアウト、アナライザーパイプラインの拡張方法。
- 分析リソースの上限 — フェイルクローズドなバンドル、パーサー、ネストされたアーティファクト、台帳、検出結果の上限。
- Pi 拡張機能 — エージェントセッション内からスキルをスキャンするための Pi ツールとして SkillSpector をインストールします。
機能
- マルチフォーマット入力: Git リポジトリ、URL、zip ファイル、ディレクトリ、単一ファイルをスキャン
- 17カテゴリにわたる71の脆弱性パターン: プロンプトインジェクション、データ流出、権限昇格、サプライチェーン、過剰なエージェンシー、出力処理、システムプロンプト漏洩、メモリポイズニング、ツールの悪用、ローグエージェント、拒否回避、トリガー悪用、危険なコード(AST)、テイント追跡、YARA シグネチャ、MCP 最小権限、MCP ツールポイズニング
- 2段階分析: 高速な静的解析 + オプションの LLM セマンティック評価
- ライブ脆弱性検索: SC4 は OSV.dev にクエリしてリアルタイムの CVE データを取得し、自動オフラインフォールバックを備える
- 複数の出力形式: ターミナル、JSON、Markdown、SARIF レポート
- リスクスコアリング: 0〜100 のスコアと重大度ラベル、明確な推奨事項
- ベースライン / 誤検知の抑制: glob ルールまたはフィンガープリントベースラインで既知の検出結果を承認し、再スキャンでは新規の問題のみを表面化(ドキュメント)
クイックスタート
インストール
オープンソースソフトウェアに関する通知: 本プロジェクトは、追加のサードパーティ製オープンソースソフトウェアプロジェクトをダウンロードおよびインストールします。使用前に、これらのオープンソースプロジェクトのライセンス条項を確認してください。
まず仮想環境を作成してアクティベートしてください(すべての make ターゲットは venv がアクティブであることを前提としています)。uv または pip を使用してください。Makefile は uv が利用可能な場合は uv を、そうでなければ pip を使用します。
uv によるクイックインストール(CLI のみ):```bash uv tool install git+https://github.com/NVIDIA/skillspector.git
Update later: uv tool update skillspector
`skillspector mcp` を実行する予定がある場合は、インストール時に MCP extra をインストールしてください:```bash
uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'
ソースから:```bash
Clone the repository
git clone https://github.com/NVIDIA/skillspector.git cd skillspector
Create and activate virtual environment
uv venv .venv && source .venv/bin/activate
or: python3 -m venv .venv && source .venv/bin/activate
Install for production use
make install
Or install with development dependencies
make install-dev
### Docker(Python 不要)
付属の [Dockerfile](https://github.com/nvidia/skillspector/blob/main/Dockerfile) からローカルでビルドすることで、Python をインストールせずに SkillSpector を実行できます。イメージは Docker 公式 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
I'm ready to translate chunk 13 of 47. Please provide the source content you'd like me to translate from English to Japanese.```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
基本的な使用方法```bash
Scan a local skill directory
skillspector scan ./my-skill/
Scan a single SKILL.md file
skillspector scan ./SKILL.md
Scan a Git repository
skillspector scan https://github.com/user/my-skill
Scan a zip file
skillspector scan ./my-skill.zip
#### サイズ制限
SkillSpector は、リモートおよびアーカイブ入力に対して 2 つの独立した上限を適用し、過大なダウンロードや 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/
# JSON output - machine readable
skillspector scan ./my-skill/ --format json --output report.json
# Markdown output - for documentation
skillspector scan ./my-skill/ --format markdown --output report.md
# SARIF output - for CI/CD integration and IDE tooling
skillspector scan ./my-skill/ --format sarif --output report.sarif
バッチスキャン
contrib/batch_scan/ からスキルディレクトリ全体を並列でスキャンします:```bash
python -m contrib.batch_scan.batch_scan ./my-skills/ --no-llm
python -m contrib.batch_scan.batch_scan ./my-skills/ --workers 20 -f json -o report.json
python -m contrib.batch_scan.batch_scan ./tests/fixtures/ -f terminal --workers 20
多言語検出(zh/ja/ko)とターミナル/JSON/Markdown出力をサポートします。
より高い並列度でLLMスキャンを行うには、
[`.env.example`](https://github.com/nvidia/skillspector/blob/main/contrib/batch_scan/.env.example)に従って複数のAPIキーを設定してください。キーがアカウントレベルのレート制限を共有していなければ、プールによってスループットと耐障害性が向上します。
詳細は[contribガイド](https://github.com/nvidia/skillspector/blob/main/contrib/batch_scan/docs)を参照してください。
> **LLMサポートに関する注記:** デフォルト設定は、最も安価な公開オプションとしてDeepSeekを対象としています。DeepSeek-Chatは
> [終了が予定されており](https://api-docs.deepseek.com/)、コントリビューターは
> ローカルモデルに対してテストするハードウェアを持っていません。バッチスキャナーは
> もともとOpenAI互換エンドポイントでテストされました — DeepSeekの
> 構造化出力サポートの欠如により、手動でのJSONパースパッチが必要でした。より汎用的な
> バックエンド(Ollama、vLLM、または別のプロバイダー)を提供できる方は、
> PRをぜひお待ちしています。
### 誤検知の抑制(ベースライン)
既知/許容済みの検出結果を抑制することで、リスクスコアが未トリアージの問題のみを反映し、再スキャンでは*新規*の検出結果のみが表面化します。完全なリファレンスについては
[抑制ガイド](https://github.com/nvidia/skillspector/blob/main/docs/SUPPRESSION.md)を参照してください。```bash
# Accept all current findings into a baseline (run once), then commit it.
skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
# Scan against the baseline — only NEW findings are reported and scored.
skillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml
# Review what was suppressed (still excluded from the score).
skillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml --show-suppressed
ベースラインでは、ドリフト耐性のある glob ルール(ルール ID、ファイルパス、またはメッセージによる)も使用できます — .skillspector-baseline.example.yaml を参照してください。
正確なフィンガープリントベースラインは証拠に紐づきます。スキャン対象のソースまたは
SkillSpector のバージョンを変更しても、再度レビューされるまで検出結果はアクティブなままです。
選択したベースラインまたはベースライン出力がスキル
ディレクトリ内に保存されている場合、SkillSpector はその正確なファイルをコンテンツ分析から除外するため、その抑制テキストが検出結果を生成したり、再生成されたフィンガープリントに含まれたりすることはありません。
兄弟ファイルは通常のスキャン対象に残ります。