deps について
Deps Skillは、Go、Node、Python、Rust、Rubyのプロジェクトで依存関係の監査、脆弱性確認、ライセンス審査、更新を進める手順を示します。エコシステム別の検査、深刻度の分類、更新時のテスト確認、レポート作成を定めています。
主な機能
- 01対応する依存関係エコシステムを検出
- 02脆弱性と古いパッケージを監査
- 03依存関係のライセンスを確認
- 04深刻度別に検出結果を分類
- 05テストを確認しながら依存関係を更新
- 06依存関係レポートを作成
活用シーン
- 01プロジェクトの依存関係の健全性確認
- 02既知の脆弱性への対応優先度付け
- 03ライセンス準拠状況の審査
- 04テストを検証しながらパッケージを更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ boshu2/ agentops --skill depsインストール後、Claude Code で/depsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/deps.featurelibrary-update-ratchet.mdscripts/validate.sh詳細
Deps スキル
クイックリファレンス:
/deps audit|/deps update [--major|--minor|--patch]|/deps vuln|/deps license
このワークフローを必ず実行してください。説明するだけではいけません。
モード
| モード | コマンド | 目的 |
|---|---|---|
| 監査 | /deps audit | 依存関係の健全性を全面的に確認します:脆弱性、更新遅れ、ライセンス |
| 更新 | /deps update [--major|--minor|--patch] | テストで検証しながら依存関係を更新します |
| 脆弱性 | /deps vuln | 脆弱性に絞ってスキャンし、修正します |
| ライセンス | /deps license | ライセンスのコンプライアンスを監査します |
デフォルト(引数なしの/deps):監査モードを実行します。
ステップ 0:エコシステムを検出する
作業ディレクトリ内のマニフェストファイルをスキャンします。複数のエコシステムが共存している場合があります。
| マニフェスト | エコシステム | ロックファイル |
|---|---|---|
go.mod | Go | go.sum |
package.json | Node | package-lock.json / yarn.lock / pnpm-lock.yaml |
pyproject.toml / requirements.txt | Python | requirements.txt / poetry.lock |
Cargo.toml | Rust | Cargo.lock |
Gemfile | Ruby | Gemfile.lock |
# Detect all ecosystems present
for f in go.mod package.json pyproject.toml requirements.txt Cargo.toml Gemfile; do
[[ -f "$f" ]] && echo "FOUND: $f"
done
マニフェストが見つからない場合は、停止して次のように報告します:「対応している依存関係マニフェストが見つかりません。」
ステップ 1:現在の状態を監査する
エコシステムに適したコマンドを実行します。分類のため、すべての出力を取得してください。
Go
go list -m -u all # List all modules, flag available updates
govulncheck ./... # Vulnerability scan against Go vuln DB
go mod tidy # Clean up unused deps (dry-run first)
Node
npm audit # Known vulnerabilities
npm outdated # Available updates (current vs wanted vs latest)
npx license-checker-webpack-plugin --out /dev/stdout 2>/dev/null || npx license-checker --json
Python
pip-audit # Vulnerability scan (install: pip install pip-audit)
pip list --outdated # Available updates
pip-licenses 2>/dev/null || echo "pip-licenses not installed"
Rust
cargo audit # Vulnerability scan (install: cargo install cargo-audit)
cargo outdated # Available updates (install: cargo install cargo-outdated)
cargo license 2>/dev/null || echo "cargo-license not installed"
Ruby
bundle audit check # Vulnerability scan (install: gem install bundler-audit)
bundle outdated # Available updates
ステップ 2:検出事項を分類する
検出事項をすべて、次の重大度のいずれか1つに分類します。
| 重大度 | 基準 | 対応 |
|---|---|---|
| 重大 | 悪用が確認されている既知のCVE、CVSS >= 9.0 | 直ちに更新し、リリースをブロックします |
| 高 | 悪用が確認されていないセキュリティアドバイザリ、CVSS 7.0-8.9、セキュリティ上の影響を伴うメジャーバージョンの遅れ | 現在のセッション中に更新します |
| 中 | マイナーバージョンの遅れ、非推奨パッケージ、古い推移的依存関係 | 更新を計画し、可能であればまとめて対応します |
| 低 | パッチレベルの更新、外観上のバージョン変更、情報提供のみのアドバイザリ | 随時更新します |
次のサマリーテーブルを出力します:
SEVERITY PACKAGE CURRENT AVAILABLE REASON
Critical example-lib 1.2.3 1.2.8 CVE-2025-XXXXX (RCE)
High some-framework 3.1.0 4.2.0 Security advisory SA-2025-YYY
Medium helper-pkg 2.0.1 2.3.0 3 minor versions behind
Low util-lib 1.0.0 1.0.1 Patch release
ステップ 3:更新戦略
要求された更新範囲に基づいて戦略を選択します(指定がない場合は、分類に基づきます)。
ライブラリファミリー全体または依存関係の範囲全体を更新するよう要求された場合は、マニフェストを変更する前にreferences/library-update-ratchet.mdを読んでください。ここでは、パッケージごとのループ、ロールバックの証拠、リリースノートの確認方法を定めています。
パッチ更新(--patchまたは重大度「低」)
- すべてのパッチ更新をまとめて行います。
- まとめて更新した後、テストスイート全体を1回実行します。
- 1つのコミットにまとめます:
chore(deps): batch patch updates。
マイナー更新(--minorまたは重大度「中」)
- 依存関係を1つずつ更新します。
- 更新のたびにテストを実行します。
- 個別にコミットします:
chore(deps): update <pkg> to <version>。
メジャー更新(--majorまたは重大度「高」/「重大」)
- まず、互換性を損なう変更を調査します(CHANGELOG、移行ガイド、リリースノートを確認)。
- 依存関係を1つずつ更新します。
- 更新のたびにテストスイート全体を実行します。
- 互換性を損なう変更を本文に記載して、個別にコミットします:
chore(deps): update <pkg> to <version> Breaking: <brief description of what changed>
判断マトリックス
| フラグ | パッチ | マイナー | メジャー |
|---|---|---|---|
--patch | はい | いいえ | いいえ |
--minor | はい | はい | いいえ |
--major | はい | はい | はい |
| (デフォルト) | はい | はい | いいえ |
ステップ 4:更新を実行する(更新モードのみ)
更新する依存関係ごとに、次のループを厳密に実行します。
1. Record current state (version, lock file hash)
2. Update the dependency
3. Run tests: `go test ./...` / `npm test` / `pytest` / `cargo test`
4. If PASS:
- Stage changed manifest + lock file
- Commit: chore(deps): update <pkg> from <old> to <new>
5. If FAIL:
- Revert: restore manifest + lock file to pre-update state
- Document the incompatibility in the report
- Continue to next dependency
エコシステム固有の更新コマンド
| エコシステム | パッチ/マイナー | メジャー |
|---|---|---|
| Go | go get <pkg>@latest | go get <pkg>@v<major> |
| Node | npm update <pkg> | npm install <pkg>@latest |
| Python | pip install --upgrade <pkg> | pip install <pkg>~=<version> |
| Rust | cargo update -p <pkg> | Cargo.tomlを編集してから、cargo updateを実行 |
| Ruby | bundle update <pkg> | Gemfileを編集してから、bundle installを実行 |
ステップ 5:レポートの出力
レポートを .agents/deps/ に書き込みます。必要に応じてディレクトリを作成してください。
mkdir -p .agents/deps
ファイル名の形式:YYYY-MM-DD-deps-<mode>.md
レポートテンプレート
# Dependency Report - <mode> - <date>
## Ecosystem: <detected>
## Summary
- Total dependencies: <N>
- Outdated: <N>
- Vulnerable: <N>
- License issues: <N>
## Findings
### Critical
<table or "None">
### High
<table or "None">
### Medium
<table or "None">
### Low
<table or "None">
## Updates Applied
<list of commits or "Audit only - no updates applied">
## Failed Updates
<list with reasons or "None">
## License Compliance
<summary or "Not checked - use /deps license">
ライセンスコンプライアンス(ライセンスモード)
互換性マトリックス
| ライセンス | プロプライエタリでの使用可 | コピーレフト | 配布時の義務 |
|---|---|---|---|
| MIT | はい | いいえ | ライセンステキストを含める |
| Apache-2.0 | はい | いいえ | ライセンスと NOTICE ファイルを含める |
| BSD-2-Clause | はい | いいえ | ライセンステキストを含める |
| BSD-3-Clause | はい | いいえ | ライセンステキストを含める。推奨を表明しない |
| ISC | はい | いいえ | ライセンステキストを含める |
| MPL-2.0 | はい(ファイル単位) | 弱い | 変更した MPL ファイルは MPL のままにする |
| LGPL-2.1 | 条件付き | 弱い | 動的リンクは可。静的リンクでは開示が必要 |
| GPL-2.0 | いいえ | 強い | 派生物全体を GPL にする必要がある |
| GPL-3.0 | いいえ | 強い | 派生物全体を GPL にする必要がある |
| AGPL-3.0 | いいえ | 強い | ネットワーク経由での利用により開示が必要になる |
| SSPL | いいえ | 強い | サービスプロバイダーはスタック全体をオープンソースにする必要がある |
| Unlicense | はい | いいえ | 義務なし |
ルール
- プロプライエタリなプロジェクトでは、すべてのコピーレフトライセンス(GPL、AGPL、SSPL)を Critical として警告します。
- 弱いコピーレフト(MPL、LGPL)を Medium として警告します。使用方法を確認してください。
- ライセンスがない場合は High として警告します。不明なライセンスは、すべての権利が留保されているものとして扱います。
- バージョン間でのライセンス変更を警告します。更新によってライセンスが変わる可能性があります。
プロジェクトの種類を判定する
LICENSEに GPL/AGPL が含まれる場合:プロジェクトはコピーレフトであり、すべてのライセンスに互換性があります。LICENSEに MIT/Apache/BSD が含まれる場合、またはプロジェクトがプロプライエタリの場合:コピーレフトの依存関係を警告します。LICENSEファイルが存在しない場合:プロジェクトのライセンスが未定義であることを警告します。
エラー処理
| 状況 | 対応 |
|---|---|
ツール(govulncheck、pip-audit など)がインストールされていない | 不足しているツールを報告し、インストールコマンドを提示して、利用可能なツールで続行します |
| ネットワークを利用できない | 利用可能であればキャッシュ済みの脆弱性データベースを使用し、データの古さを記載します |
| テストスイートが存在しない | 明確に警告し、テスト検証をスキップして、レポートに記載します |
| マニフェストの解析エラー | エラーを報告し、そのエコシステムをスキップします |
関連項目
skills/standards/SKILL.md— 言語固有の規約skills/security/SKILL.md— より広範なセキュリティスキャンskills/vibe/SKILL.md— コード品質の検証- references/library-update-ratchet.md
参考ドキュメント
- references/deps.feature — 実行可能な仕様:マニフェストのスキャン、脆弱性/更新状況/ライセンスの監査、脆弱性+ライセンスモード、複数エコシステム、result.json(soc-qk4b)