dependency-updater について
複数言語のプロジェクト向け依存関係管理スキルです。プロジェクト形式を検出し、パッチ・マイナー更新を適用し、メジャー更新前に確認します。
主な機能
- 01言語とパッケージマネージャーの検出
- 02古いパッケージの確認
- 03パッチ・マイナー更新の適用
- 04メジャー更新前の確認
- 05依存関係のセキュリティ監査
- 06依存関係の競合診断
活用シーン
- 01プロジェクトの依存関係更新
- 02パッケージの脆弱性確認
- 03バージョン競合の調査
- 04モノレポの依存関係更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ softaworks/ agent-toolkit --skill dependency-updaterインストール後、Claude Code で/dependency-updaterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdscripts/check-tool.shrun-taze.sh詳細
Dependency Updater
自動検出と安全なアップデートを備えた、あらゆる言語向けのスマートな依存関係管理。
クイックスタート
update my dependencies
このスキルはプロジェクトの種類を自動検出し、残りの処理を行います。
トリガー
| トリガー | 例 |
|---|---|
| 依存関係を更新 | "update dependencies", "update deps" |
| 古いパッケージを確認 | "check for outdated packages" |
| 依存関係の問題を修正 | "fix my dependency problems" |
| セキュリティ監査 | "audit dependencies for vulnerabilities" |
| 依存関係を診断 | "diagnose dependency issues" |
サポートされている言語
| 言語 | パッケージファイル | 更新ツール | 監査ツール |
|---|---|---|---|
| Node.js | package.json | taze | npm audit |
| Python | requirements.txt, pyproject.toml | pip-review | safety, pip-audit |
| Go | go.mod | go get -u | govulncheck |
| Rust | Cargo.toml | cargo update | cargo audit |
| Ruby | Gemfile | bundle update | bundle audit |
| Java | pom.xml, build.gradle | mvn versions:* | mvn dependency:* |
| .NET | *.csproj | dotnet outdated | dotnet list package --vulnerable |
クイックリファレンス
| 更新の種類 | バージョン変更 | アクション |
|---|---|---|
| 固定 | ^ や ~ がない | スキップ(意図的に固定されている) |
| PATCH | x.y.z → x.y.Z | 自動適用 |
| MINOR | x.y.z → x.Y.0 | 自動適用 |
| MAJOR | x.y.z → X.0.0 | ユーザーに個別に確認 |
ワークフロー
User Request
│
▼
┌─────────────────────────────────────────────────────┐
│ Step 1: DETECT PROJECT TYPE │
│ • Scan for package files (package.json, go.mod...) │
│ • Identify package manager │
├─────────────────────────────────────────────────────┤
│ Step 2: CHECK PREREQUISITES │
│ • Verify required tools are installed │
│ • Suggest installation if missing │
├─────────────────────────────────────────────────────┤
│ Step 3: SCAN FOR UPDATES │
│ • Run language-specific outdated check │
│ • Categorize: MAJOR / MINOR / PATCH / Fixed │
├─────────────────────────────────────────────────────┤
│ Step 4: AUTO-APPLY SAFE UPDATES │
│ • Apply MINOR and PATCH automatically │
│ • Report what was updated │
├─────────────────────────────────────────────────────┤
│ Step 5: PROMPT FOR MAJOR UPDATES │
│ • AskUserQuestion for each MAJOR update │
│ • Show current → new version │
├─────────────────────────────────────────────────────┤
│ Step 6: APPLY APPROVED MAJORS │
│ • Update only approved packages │
├─────────────────────────────────────────────────────┤
│ Step 7: FINALIZE │
│ • Run install command │
│ • Run security audit │
└─────────────────────────────────────────────────────┘
言語別のコマンド
Node.js (npm/yarn/pnpm)
# Check prerequisites
scripts/check-tool.sh taze "npm install -g taze"
# Scan for updates
taze
# Apply minor/patch
taze minor --write
# Apply specific majors
taze major --write --include pkg1,pkg2
# Monorepo support
taze -r # recursive
# Security
npm audit
npm audit fix
Python
# Check outdated
pip list --outdated
# Update all (careful!)
pip-review --auto
# Update specific
pip install --upgrade package-name
# Security
pip-audit
safety check
Go
# Check outdated
go list -m -u all
# Update all
go get -u ./...
# Tidy up
go mod tidy
# Security
govulncheck ./...
Rust
# Check outdated
cargo outdated
# Update within semver
cargo update
# Security
cargo audit
Ruby
# Check outdated
bundle outdated
# Update all
bundle update
# Update specific
bundle update --conservative gem-name
# Security
bundle audit
Java (Maven)
# Check outdated
mvn versions:display-dependency-updates
# Update to latest
mvn versions:use-latest-releases
# Security
mvn dependency:tree
mvn dependency-check:check
.NET
# Check outdated
dotnet list package --outdated
# Update specific
dotnet add package PackageName
# Security
dotnet list package --vulnerable
診断モード
依存関係が壊れている場合は、診断を実行します:
よくある問題と修正方法
| 問題 | 症状 | 修正方法 |
|---|---|---|
| バージョンの競合 | "Cannot resolve dependency tree" | クリーンインストールを行い、overrides/resolutions を使用 |
| ピア依存関係 | "Peer dependency not satisfied" | 必要なピアバージョンをインストール |
| セキュリティの脆弱性 | npm audit で問題が表示される | npm audit fix を実行するか、手動で更新 |
| 未使用の依存関係 | バンドルが肥大化している | depcheck(Node)またはそれに相当するツールを実行 |
| 重複した依存関係 | 複数のバージョンがインストールされている | npm dedupe またはそれに相当するコマンドを実行 |
緊急時の修正
# Node.js - Nuclear reset
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
# Python - Clean virtualenv
rm -rf venv
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Go - Reset modules
rm go.sum
go mod tidy
セキュリティ監査
どのプロジェクトに対しても、セキュリティチェックを実行します:
# Node.js
npm audit
npm audit --json | jq '.metadata.vulnerabilities'
# Python
pip-audit
safety check
# Go
govulncheck ./...
# Rust
cargo audit
# Ruby
bundle audit
# .NET
dotnet list package --vulnerable
重大度ごとの対応
| 重大度 | アクション |
|---|---|
| Critical | 直ちに修正 |
| High | 24時間以内に修正 |
| Moderate | 1週間以内に修正 |
| Low | 次のリリースで修正 |
アンチパターン
| 避けるべきこと | 理由 | 代わりに |
|---|---|---|
| 固定されたバージョンを更新する | 意図的に固定されている | スキップする |
| MAJOR を自動適用する | 破壊的変更を含む | ユーザーに確認する |
| MAJOR の確認をまとめて行う | 文脈が失われる | 個別に確認する |
| ロックファイルをスキップする | 再現不可能なビルドになる | ロックファイルを必ずコミットする |
| セキュリティアラートを無視する | 脆弱性が残る | 重大度に応じて対処する |
検証チェックリスト
更新後:
- 更新のスキャンがエラーなく完了した
- MINOR/PATCH の更新が自動適用された
- MAJOR の更新は個別に確認を求められた
- 固定バージョンは変更されていない
- ロックファイルが更新された
- インストールコマンドが実行された
- セキュリティ監査に合格した(または問題が記録されている)
詳細解説: プロジェクトの検出
スキルはパッケージファイルをスキャンして、プロジェクトの種類を自動検出します。
| 検出されたファイル | 言語 | パッケージマネージャー |
|---|---|---|
package.json | Node.js | npm/yarn/pnpm |
requirements.txt | Python | pip |
pyproject.toml | Python | pip/poetry |
Pipfile | Python | pipenv |
go.mod | Go | go modules |
Cargo.toml | Rust | cargo |
Gemfile | Ruby | bundler |
pom.xml | Java | Maven |
build.gradle | Java/Kotlin | Gradle |
*.csproj | .NET | dotnet |
モノレポでは検出順序が重要です:
- まずカレントディレクトリを確認する
- 次にワークスペース/モノレポのパターンを確認する
- 該当する場合は再帰的な実行を提案する
詳細解説: taze を使った Node.js
前提条件
# Install taze globally (recommended)
npm install -g taze
# Or use npx
npx taze
スマートアップデートの流れ
# 1. Scan all updates
taze
# 2. Apply safe updates (minor + patch)
taze minor --write
# 3. For each major, prompt user:
# "Update @types/node from ^20.0.0 to ^22.0.0?"
# If yes, add to approved list
# 4. Apply approved majors
taze major --write --include approved-pkg1,approved-pkg2
# 5. Install
npm install # or pnpm install / yarn
自動承認リスト
メジャーバージョンの更新が頻繁に行われるものの、後方互換性のあるパッケージがあります:
| パッケージ | 理由 |
|---|---|
lucide-react | アイコンライブラリ。メジャー更新は追加的な変更のみ |
@types/* | 型定義。通常は安全 |
詳細解説: バージョン戦略
セマンティックバージョニング
MAJOR.MINOR.PATCH (e.g., 2.3.1)
MAJOR: Breaking changes - requires code changes
MINOR: New features - backward compatible
PATCH: Bug fixes - backward compatible
範囲指定子
| 指定子 | 意味 | 例 |
|---|---|---|
^1.2.3 | マイナー + パッチ可 | >=1.2.3 <2.0.0 |
~1.2.3 | パッチのみ | >=1.2.3 <1.3.0 |
1.2.3 | 完全一致(固定) | 1.2.3 のみ |
>=1.2.3 | 以上 | >=1.2.3 を満たす任意のバージョン |
* | 任意 | 最新版(危険) |
推奨戦略
{
"dependencies": {
"critical-lib": "1.2.3", // Exact for critical
"stable-lib": "~1.2.3", // Patch only for stable
"modern-lib": "^1.2.3" // Minor OK for active
}
}
詳細解説: 競合の解決
Node.js の競合
診断:
npm ls package-name # See dependency tree
npm explain package-name # Why installed
yarn why package-name # Yarn equivalent
overrides による解決:
// package.json
{
"overrides": {
"lodash": "^4.18.0"
}
}
resolutions による解決(Yarn):
{
"resolutions": {
"lodash": "^4.18.0"
}
}
Python の競合
診断:
pip check
pipdeptree -p package-name
解決:
# Use virtual environment
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Or use constraints
pip install -c constraints.txt -r requirements.txt
スクリプトリファレンス
| スクリプト | 目的 |
|---|---|
scripts/check-tool.sh | ツールがインストールされているか確認する |
scripts/run-taze.sh | 適切なフラグを付けて taze を実行する |
関連ツール
| ツール | 言語 | 目的 |
|---|---|---|
| taze | Node.js | スマートな依存関係の更新 |
| npm-check-updates | Node.js | taze の代替 |
| pip-review | Python | 対話形式の pip 更新 |
| cargo-edit | Rust | Cargo の依存関係管理 |
| bundler-audit | Ruby | セキュリティ監査 |
コメント
Markdown 対応