update-deps
古いバージョンのすべての依存ライブラリについて、変更履歴、破壊的変更、バグ修正、廃止予定機能などを詳しく調査して監査します。実際にアップデートは行わず、一時的な計画を作成するため、アップグレード前に依存ライブラリの変更内容を確認したい場合に使用できます。
description の原文を見る
Audit all outdated dependencies with detailed research on changelogs, breaking changes, bug fixes, and deprecations. Creates a temporary plan without updating anything. Use when you want to review what changed in your dependencies before upgrading.
SKILL.md 本文
依存関係更新監査
事前読み込みデータ
!PM="npm"; if [ -f bun.lockb ] || [ -f bun.lock ]; then PM="bun"; elif [ -f pnpm-lock.yaml ]; then PM="pnpm"; elif [ -f yarn.lock ]; then PM="yarn"; fi; echo "=== PACKAGE_MANAGER ==="; echo "$PM"; echo "=== DATE ==="; date +%Y-%m-%d; echo "=== OUTDATED ==="; if [ "$PM" = "pnpm" ]; then pnpm outdated --json 2>/dev/null || true; elif [ "$PM" = "bun" ]; then bun outdated 2>/dev/null || true; elif [ "$PM" = "yarn" ]; then yarn outdated --json 2>/dev/null || true; else npm outdated --json 2>/dev/null || true; fi; echo "=== AUDIT ==="; if [ "$PM" = "pnpm" ]; then pnpm audit --json 2>/dev/null || true; elif [ "$PM" = "npm" ]; then npm audit --json 2>/dev/null || true; elif [ "$PM" = "yarn" ]; then yarn audit --json 2>/dev/null || true; fi; echo "=== OVERRIDES ==="; node -e "const p=require('./package.json'); console.log(JSON.stringify({overrides:p.overrides,pnpmOverrides:p.pnpm?.overrides,resolutions:p.resolutions}||{}))" 2>/dev/null || echo "{}"; echo "=== DEV_DEPS ==="; node -e "console.log(JSON.stringify(Object.keys(require('./package.json').devDependencies||{})))" 2>/dev/null || echo "[]"; echo "=== PINNED ==="; node -e "const p=require('./package.json'); const all={...p.dependencies,...p.devDependencies}; const pinned=Object.entries(all).filter(([,v])=>!v.startsWith('^')&&!v.startsWith('~')&&!v.startsWith('>')).map(([k,v])=>k+': '+v); console.log(JSON.stringify(pinned))" 2>/dev/null || echo "[]"; echo "=== ENGINES ==="; node -e "const p=require('./package.json'); console.log(JSON.stringify({node:p.engines?.node,typescript:p.devDependencies?.typescript,packageManager:p.packageManager}))" 2>/dev/null || echo "{}"; echo "=== NODE_VERSION ==="; node --version 2>/dev/null || echo "unknown"
引数
引数が渡された場合(例:/update-deps react、/update-deps major):
- 引数が
major、minor、patchの場合 — その更新タイプのみにフィルタリングします - それ以外の場合は、パッケージ名フィルタとして扱い — 引数を含む名前のパッケージのみを監査します
- 引数がない場合は、古いバージョンのすべてのパッケージを監査します
引数: $ARGUMENTS
ステップ 1 — 解析と分類
上記の事前読み込みデータから、古いバージョンのすべてのパッケージのリストを以下の情報で構築します:
- パッケージ名
- 現在のバージョン → 望ましいバージョン(セマンティックバージョニング範囲内) → 最新バージョン
- 範囲内:
wanted > currentの場合は yes(package.jsonを変更することなく更新可能)、範囲の変更が必要な場合は no dependencyまたはdevDependency(DEV_DEPS リストを使用)- 更新タイプ:現在 → 最新を比較して major、minor、または patch
- 非推奨: pnpm JSON 出力の
isDeprecatedフィールドを確認します。目立つようにフラグを立てます。 - 固定: PINNED リストを確認します。パッケージに
^/~プレフィックスがない場合(意図的にロックされている)は注記します。 - オーバーライドあり: OVERRIDES データを確認します。パッケージがオーバーライド/レジョリューションに表示される場合はフラグを立てます。
- セキュリティアドバイザリ: AUDIT データと相互参照します。既知の CVE があるパッケージにフラグを立てます。
- エンジン制約: プロジェクトの Node.js バージョン(ENGINES + NODE_VERSION から)と TypeScript バージョンに注記します。エージェントは新しいパッケージバージョンがより新しい Node.js または TypeScript を必要とするかどうかを確認する必要があります。
引数フィルタを適用します。フィルタ後に古いバージョンのパッケージがない場合(フィルタ後)、ユーザーに通知して停止します。
bun に関する注記: bun outdated は JSON ではなく人間が読みやすいテーブルを出力します。それに応じて解析します。
Yarn Berry に関する注記: Yarn v2+ は yarn outdated をサポートしていない可能性があります。コマンドが失敗した場合は、パッケージごとに yarn npm info <pkg> を実行するか、npm outdated --json にフォールバックします。
スケールガード: フィルタ後に古いバージョンのパッケージが 40 個を超える場合は、ユーザーに数を通知し、スコープを狭めることを提案します(例:/update-deps major または /update-deps react)。ユーザー確認後のみ進行するか、自動的に major + minor 更新のみに制限します(パッチをスキップ)。
ステップ 2 — リサーチ + 影響分析(単一パス、並列エージェント)
並列エージェント呼び出しを起動します。各エージェントは 1 回のパスで変更ログをリサーチし、コードベースの影響を確認します。
グループ化戦略(目標:最大 10〜12 エージェント):
- 1 パッケージにつき 1 エージェント - 破壊的変更が予想される major 更新
- エコシステムでグループ化 - minor 更新:すべての
@tanstack/*を一緒に、すべての@radix-ui/*を一緒に、すべての@sentry/*を一緒に、すべてのeslint関連を一緒に。グループごとに 1 エージェント。 - 1 つのエージェント - すべての
@types/*パッケージ(これらは定型的で軽量な処理です) - 1 つのエージェント - すべてのパッチのみの更新(軽量:セキュリティ修正と注目すべきバグのみ確認)
エージェント プロンプト テンプレート
各エージェントは以下の指示を受け取り、従う必要があります:
パート A — リサーチ(割り当てられた各パッケージ):
以下のソースをこの順序で試して変更ログ情報を見つけます — 有意な結果が得られたらすぐに停止します:
- npm レジストリメタデータ: Bash で
npm view [package-name] repository.url homepageを実行してリポジトリ URL とホームページを取得します - GitHub Releases ページ: リポが GitHub 上にある場合、
WebFetchでhttps://github.com/[org]/[repo]/releases— これは大多数のプロジェクトが破壊的変更とマイグレーションガイドを文書化する場所です - リポ内の CHANGELOG.md:
WebFetchでhttps://raw.githubusercontent.com/[org]/[repo]/main/CHANGELOG.md(mainで 404 の場合はmasterブランチも試します)。多くのライブラリ(Radix、Prisma、TanStack など)は GitHub Releases の代わりに、または加えてCHANGELOG.mdを保持しています。重要:CHANGELOG は非常に大きい場合があります — 現在のバージョンと最新バージョン間のエントリのみを抽出し、より古いものはすべてスキップします - マイグレーションガイド: major 更新の場合、
WebFetchでhttps://github.com/[org]/[repo]/blob/main/MIGRATION.mdまたはUPGRADING.md— 一部のライブラリは専用のマイグレーション ドキュメントを提供しています - context7 MCP: major 更新のみで、
resolve-library-idを使用してからquery-docsを使用して最新のドキュメントを取得します。minor/patch はスキップします。 - WebSearch フォールバック:
"[package-name] v[latest] changelog"、"[package-name] v[latest] breaking changes"、"[package-name] v[latest] migration guide"を検索します
これらのソースからの有意な情報が得られない場合は、正直に述べます — 作り話をしないでください。
パート B — コードベースの影響(割り当てられた各パッケージ):
- インポートで
Grepを実行:from ['"][package-name]とrequire\(['"][package-name] - ファイル数をカウントして主要な使用場所をリストアップします
- 見つかった各破壊的変更について:非推奨/削除された API がコードベースで使用されているかどうかを確認します
- 各注目すべき新機能について:既存のパターンを置き換える可能性があるかどうかは注記します
- 各非推奨について:
src/で非推奨 API 名を検索します - ピア依存関係の互換性を現在の
package.jsonで確認します
リターン形式(既に最終プランマークダウンです — 再フォーマットは不要):
### [package-name] (`current` → `latest`) — dependency/devDependency
**更新タイプ**: major/minor/patch | **範囲内**: yes/no | **固定**: yes/no
#### 変更内容
- **バグ修正**: [バージョン]: [何が修正されたかの具体的な説明]
- **新機能**: [バージョン]: [機能が何をするかであり、単なる名前ではない]
- **破壊的変更**: [説明 + マイグレーション手順]
- **非推奨**: [何が非推奨になったか + 代替案]
- **セキュリティ**: [CVE があれば、および重大度]
- **ピア依存関係**: [新規または変更された要件]
- **ライセンス**: [バージョン間で変更された場合のみ — 例:MIT → GPL。変更がない場合はスキップ]
- **エンジン要件**: [最小 Node.js または TypeScript バージョンが変更された場合、ENGINES データからのプロジェクトのバージョンと比較します]
- **注目すべき**: [パフォーマンス改善、バンドルサイズの変更、その他]
#### プロジェクトへの影響
- **このパッケージを使用するファイル**: X ファイル(`src/...`、...)
- **関連するバグ修正**: yes/no — [詳細]
- **使用できる新機能**: yes/no — [詳細]
- **影響を受ける非推奨事項**: yes/no — [非推奨 API を使用するファイル]
- **マイグレーションが必要な破壊的変更**: yes/no — [変更するファイル]
- **ピア依存関係の競合**: yes/no — [詳細]
- **オーバーライド競合**: yes/no — [パッケージがオーバーライドにある場合、オーバーライドがまだ必要かどうかを注記します]
#### 推奨事項
🟢 今すぐ更新 / 🟡 マイグレーション付きで更新 / 🔴 ブロック中(理由) / ⚪ スキップ(理由)
#### マイグレーション手順(🟡 または 🔴 の場合)
1. ...
パッチのみのパッケージと @types/* について、より軽い形式を使用します:
| パッケージ | 現在 | 最新 | 範囲内 | セキュリティ | 注目すべき |
|---------|------|------|--------|---------|-----------|
| 名前 | x.y.z| x.y.w| yes/no | なし/CVE | 簡潔な説明 |
ステップ 3 — プランファイルを作成
すべてのエージェントが完了後、plan-update-deps-DATE.md(1 回のみの書き込み、事前読み込みデータの今日の日付を使用)を作成します。プロジェクトが使用するいずれかのプランディレクトリに配置します(.claude/plans/、docs/、またはプロジェクトルートを確認します — 既存のディレクトリを優先します;既存がない場合はデフォルトとして .claude/plans/ を作成します)。
構造:
# 依存関係更新監査 — [DATE]
## 概要
- **パッケージマネージャー**: [検出された PM]
- **X** 個のパッケージが古いバージョン(Y major、Z minor、W patch)
- **依存関係**: [数] | **開発依存関係**: [数]
- **セキュリティアドバイザリ**: [数] 個のパッケージに既知の CVE あり
- **非推奨パッケージ**: [数]
---
## Major 更新
[上記のテンプレートを使用した各 major パッケージのエージェント出力]
---
## Minor 更新
[上記のテンプレートを使用した各 minor パッケージ/グループのエージェント出力]
---
## Patch 更新
[エージェント出力からの軽量テーブル]
---
## アクション プラン
### 🟢 今すぐ安全に更新可能
- [パッケージ]: [1 行の理由]
### 🟡 マイグレーションが必要で更新可能
- [パッケージ]: [何を変更する必要があるか]
### 🔴 ブロック中
- [パッケージ]: [ブロック理由 — ピア依存関係、破壊的変更が大きすぎるなど]
### ⚪ スキップ(利点がない / リスクが高すぎる)
- [パッケージ]: [理由]
ルール
- これは監査のみです。 install、update、add、または
package.json、ロックファイル、またはソースコードを変更するコマンドを実行しないでください。npm install、pnpm update、yarn add、bun addなどは実行しません。 - 変更ログ/リリース情報が利用できない場合は、正直に述べます — 作り話をしないでください
- 数十個のパッチリリースを持つパッケージについては、最も影響のある変更(セキュリティ、重大なバグ)に焦点を当て、すべてのパッチではありません
- プランファイルは一時的です — ユーザーが手動で更新を適用した後、それを削除します
- リンティングは不要です(コード変更なし)
- 既存のプランファイルを更新しないでください — この監査はスタンドアロンです
- 検出されたパッケージマネージャーを一貫して使用します — 異なるものに切り替えません
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- viclafouch
- ライセンス
- MIT
- 最終更新
- 2026/5/1
Source: https://github.com/viclafouch/mui-file-input / ライセンス: MIT