Skip to main content

dependency-auditor

依存関係のセキュリティ脆弱性・ライセンス適合性・最新性を監査します。パッケージの脆弱性や CVE の確認、ライセンス違反やサプライチェーンリスクの調査、古いライブラリの棚卸しを頼まれた場合に使用してください。

Source facts

Repository
ynitto/sandbox
Last source activity
November 3, 2026 at 12:08
Detected SKILL.md language
Japanese
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
4 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
dependency-auditor
description
依存関係のセキュリティ脆弱性・ライセンス適合性・最新性を監査します。パッケージの脆弱性や CVE の確認、ライセンス違反やサプライチェーンリスクの調査、古いライブラリの棚卸しを頼まれた場合に使用してください。
metadata
{"version":"1.0.0","tier":"experimental","category":"review","tags":["dependencies","security","license","audit","supply-chain"]}
# dependency-auditor プロジェクトの依存関係を **セキュリティ・ライセンス・最新性** の3軸で監査し、リスクと対処方針を報告する。 ## パス解決 このSKILL.mdが置かれているディレクトリを `SKILL_DIR` とする。スクリプトは `scripts/` から、ライセンス分類は `references/license-guide.md` を参照する。 --- ## ワークフロー ### Step 0: スコープチェック 以下に該当する場合は確認する: - 依存関係ファイル(package.json / requirements.txt / Cargo.toml 等)が存在しない - ロックファイルが存在しない(バージョンが固定されていないため監査精度が低下する旨を伝える) ### Step 1: パッケージマネージャーを検出する `audit_deps.py` でプロジェクト内の依存管理ファイルを自動検出する: ```bash # 自動検出してすべて監査 python ${SKILL_DIR}/scripts/audit_deps.py # 特定ディレクトリを指定 python ${SKILL_DIR}/scripts/audit_deps.py --path ./ # 監査軸を絞る(security / license / outdated) python ${SKILL_DIR}/scripts/audit_deps.py --check security python ${SKILL_DIR}/scripts/audit_deps.py --check license python ${SKILL_DIR}/scripts/audit_deps.py --check outdated # JSON 出力 python ${SKILL_DIR}/scripts/audit_deps.py --json # 重要度フィルタ python ${SKILL_DIR}/scripts/audit_deps.py --severity high ``` 検出対象ファイル: | ファイル | パッケージマネージャー | |---------|-------------------| | `package.json` / `package-lock.json` | npm / yarn / pnpm | | `requirements.txt` / `Pipfile.lock` / `pyproject.toml` | pip / Poetry / uv | | `Cargo.toml` / `Cargo.lock` | cargo (Rust) | | `go.mod` / `go.sum` | Go modules | | `Gemfile` / `Gemfile.lock` | Bundler (Ruby) | | `pom.xml` | Maven (Java) | | `build.gradle` / `build.gradle.kts` | Gradle (Java/Kotlin) | --- ### Step 2: セキュリティ脆弱性を監査する スクリプトが出力した検出コマンドを実行して CVE 情報を収集する。スクリプトが実行できない環境では、以下を手動で実行する: ```bash # npm npm audit --audit-level=moderate npm audit --json | python ${SKILL_DIR}/scripts/audit_deps.py --parse-npm-json # pip pip install pip-audit pip-audit --format json # cargo cargo install cargo-audit cargo audit --json # Go go list -json -m all | nancy sleuth # Bundler gem install bundler-audit bundle-audit check --update ``` 各脆弱性について以下を確認する: - **CVE ID** と CVSS スコア - **影響を受けるバージョン** と修正済みバージョン - **修正方法**: アップデート / 代替パッケージ / 回避策 --- ### Step 3: ライセンスを確認する `references/license-guide.md` のライセンス分類表を参照して、各依存パッケージのライセンスを評価する。 ライセンスリスク分類: | リスク | ライセンス例 | 問題 | |--------|------------|------| | 🔴 **要確認** | GPL v2/v3, AGPL | コピーレフトによりソース開示義務の可能性 | | 🟡 **注意** | LGPL, MPL, EPL | 条件付き利用可。確認が必要 | | 🟢 **許容** | MIT, Apache 2.0, BSD, ISC | 商用・プロプライエタリ利用可 | | ⚪ **要調査** | 独自ライセンス, ライセンス不明 | 個別に確認が必要 | 確認ポイント: - **直接依存 + 推移的依存** を含めてチェックする - GPL な依存を含む場合、アプリ全体のライセンスへの影響を検討する - AGPL は SaaS でも影響を受けることに注意する --- ### Step 4: 最新性・メンテナンス状況を確認する ```bash # npm(古いパッケージの確認) npm outdated # pip pip list --outdated # cargo cargo outdated # Go go list -u -m all ``` メンテナンス状況の評価基準: - 最終コミットが **2年以上前** → 非メンテナンスの疑い - GitHub のスター数が急減 / アーカイブ済み → 移行先を検討 - セキュリティパッチのみで機能追加なし → 安定 or 停滞を判断する --- ### Step 5: 結果を報告する #### 報告フォーマット ``` ## 依存関係監査結果 ### 検出されたパッケージマネージャー - <npm / pip / cargo 等>: <依存パッケージ数>件(直接: X件 / 推移的: Y件) --- ### 🔒 セキュリティ脆弱性 #### 🔴 Critical [CVE-XXXX-XXXXX / CVSS: X.X] パッケージ: <name>@<version> 脆弱性: <説明> 修正バージョン: <version> 対処: <アップデートコマンド or 代替パッケージ> #### 🟠 High [CVE-XXXX-XXXXX / CVSS: X.X] ...(同形式) #### 🟡 Moderate / Medium ...(同形式) --- ### 📄 ライセンス問題 #### 🔴 要確認(コピーレフト) パッケージ: <name>@<version> ライセンス: <GPL v3 等> リスク: <ソース開示義務の可能性。商用利用要確認> 対処: <代替パッケージ候補 or 法務確認> #### 🟡 注意(要条件確認) ...(同形式) --- ### 🕐 最新性・メンテナンス #### 放棄リスクあり パッケージ: <name>@<現在> → <最新> 最終更新: <日付> 対処: <移行候補 or 継続判断理由> #### メジャーバージョン遅延(2世代以上) パッケージ: <name>@<現在> → <最新> 対処: <更新コマンド / ブレーキングチェンジ確認> --- ### デプロイ前チェックリスト - [ ] Critical / High 脆弱性が0件 - [ ] コピーレフトライセンスの法務確認済み - [ ] ロックファイルがコミット済み - [ ] 依存関係の自動更新(Dependabot / Renovate)が設定済み ### サマリー - セキュリティ: Critical X件 / High X件 / Moderate X件 - ライセンス: 要確認 X件 / 注意 X件 - 最新性: メジャー遅延 X件 / 放棄リスク X件 - 総評: <優先対処事項> ``` --- ## 判定スキーマ(machine-readable) skill-mentor など呼び出し元が結果を集約するために使用する構造化フォーマット。 Step 5 の報告末尾に `<!-- verdict-json -->` コメントで囲んで出力する。 ```json { "skill": "dependency-auditor", "verdict": "CLEAN | NEEDS_ATTENTION | CRITICAL_RISK", "severity_summary": { "critical": 0, "high": 0, "moderate": 0, "license_issues": 0, "abandoned": 0 }, "blocking": false, "blocking_issues": [ { "type": "vulnerability | license | abandoned", "severity": "Critical | High", "package": "パッケージ名@バージョン", "cve": "CVE-XXXX-XXXXX", "cvss_score": 9.1, "summary": "問題の要約(1行)", "fix": "修正バージョンまたは対処方法" } ] } ``` **`verdict`**: `critical=0 && high=0 && license_issues=0` → `CLEAN`、`critical=0` → `NEEDS_ATTENTION`、`critical>0` → `CRITICAL_RISK`。 **`blocking`**: Critical 脆弱性またはコピーレフトライセンス問題が1件以上の場合のみ `true`。 --- ## 補助リソース - **scripts/audit_deps.py** — パッケージマネージャー自動検出・監査コマンド実行・結果集約 - **references/license-guide.md** — ライセンス分類・条件早見表
View on GitHub