Dependency Updater
Overview
This skill analyzes your project's dependency tree to find outdated packages, known vulnerabilities, and breaking API changes. It produces a prioritized upgrade plan with specific migration steps, ordered to minimize risk and maximize safety.
Instructions
1. Parse the Dependency File
- Read
package.json + lockfile (npm/yarn/pnpm), requirements.txt/pyproject.toml, or go.mod
- List all direct dependencies with current pinned versions
- Note version constraints (^, ~, exact, ranges)
2. Check Each Package
For each dependency:
- Latest version: What's available on the registry
- Version gap: How many major/minor/patch versions behind
- Security: Known CVEs from npm audit, Snyk, or GitHub Advisory Database
- Maintenance: Last publish date, open issues count, whether it's deprecated
- Breaking changes: Read CHANGELOG.md or GitHub releases for breaking change notes between current and latest
3. Classify by Risk
Group packages into four tiers:
- Critical: Known CVE with severity HIGH or CRITICAL — update immediately
- Major: Major version bump with confirmed breaking API changes — needs migration
- Minor: Minor/patch updates with no breaking changes — safe to batch update
- Stale: Package unmaintained (no release in >12 months) — consider replacement
4. Scan for Impact
For Major-tier packages:
- Read the changelog/migration guide for the new version
- Search the codebase for imports and usages of changed APIs
- List affected files with line numbers
- Estimate effort: how many patterns need changing and whether they're automatable
5. Generate Upgrade Plan
Produce an ordered plan:
- Critical (CVE fixes) first — usually patch-level, zero code changes
- Minor/patch batch — single
npm update command
- Each Major upgrade individually, with:
- Exact install command (
npm install package@version)
- Code changes needed (as diffs when possible)
- Test commands to verify
Examples
Example 1: Node.js Project Audit
Input: User provides package.json with 94 dependencies.
Output:
Dependency Audit — 94 packages
CRITICAL (2 packages):
lodash 4.17.20 → 4.17.21
CVE-2021-23337 (Command Injection, HIGH)
Fix: npm install lodash@4.17.21 (patch, no code changes)
node-fetch 2.6.1 → 2.6.13
CVE-2022-0235 (Information Exposure, MEDIUM)
Fix: npm install node-fetch@2.6.13 (patch, no code changes)
MAJOR (1 package):
express 4.18.2 → 5.0.0
Breaking: req.host now returns host without port
Breaking: app.del() removed, use app.delete()
Affected files: src/server.ts:45 (uses req.host), src/routes/legacy.ts:12 (uses app.del)
Migration effort: Low — 2 files, 2 line changes
MINOR (18 packages):
Can be batch-updated: npm update (no breaking changes detected)
STALE (1 package):
request 2.88.2 — DEPRECATED, last release Feb 2020
Recommended replacement: undici or node-fetch
Used in: src/lib/http-client.ts (3 call sites)
Upgrade Order:
Step 1: npm install lodash@4.17.21 node-fetch@2.6.13
Step 2: npm update
Step 3: npm install express@5.0.0 (apply 2 code changes first)
Step 4: Replace request with undici (separate PR recommended)
Example 2: Python Requirements
Input: User provides requirements.txt with pinned versions.
Output:
Dependency Audit — 23 packages
CRITICAL:
django==3.2.18 → 3.2.25
CVE-2024-24680 (DoS via intcomma, MEDIUM)
Fix: pip install django==3.2.25 (patch within same minor)
MAJOR:
django==3.2.25 → 5.0.6 (if full upgrade desired)
Breaking: DEFAULT_AUTO_FIELD must be set explicitly
Breaking: url() removed, use path()
Affected: 8 files in urls/, settings.py
Guidelines
- Never recommend upgrading all major versions at once — one at a time, with tests between each
- For monorepos, check if packages have peer dependency conflicts before recommending upgrades
- If a package is deprecated with no CVE, it's STALE not CRITICAL — don't panic the user
- Always check if the project has a test suite (
npm test, pytest) and recommend running it after each step
- When generating diffs, use the project's actual code, not generic examples
- For workspaces/monorepos, note which workspace each dependency belongs to
1---2name: dependency-updater3description: Audit project dependencies for outdated packages, security vulnerabilities, and breaking changes. Use when someone asks to "check for outdated packages", "audit dependencies", "find vulnerable dependencies", "plan dependency upgrades", "detect breaking changes", or "update npm packages safely". Analyzes package.json/lock files, cross-references changelogs, and produces ordered upgrade plans.4license: Apache-2.05---67# Dependency Updater89## Overview1011This skill analyzes your project's dependency tree to find outdated packages, known vulnerabilities, and breaking API changes. It produces a prioritized upgrade plan with specific migration steps, ordered to minimize risk and maximize safety.1213## Instructions1415### 1. Parse the Dependency File1617- Read `package.json` + lockfile (npm/yarn/pnpm), `requirements.txt`/`pyproject.toml`, or `go.mod`18- List all direct dependencies with current pinned versions19- Note version constraints (^, ~, exact, ranges)2021### 2. Check Each Package2223For each dependency:24- **Latest version**: What's available on the registry25- **Version gap**: How many major/minor/patch versions behind26- **Security**: Known CVEs from npm audit, Snyk, or GitHub Advisory Database27- **Maintenance**: Last publish date, open issues count, whether it's deprecated28- **Breaking changes**: Read CHANGELOG.md or GitHub releases for breaking change notes between current and latest2930### 3. Classify by Risk3132Group packages into four tiers:33- **Critical**: Known CVE with severity HIGH or CRITICAL — update immediately34- **Major**: Major version bump with confirmed breaking API changes — needs migration35- **Minor**: Minor/patch updates with no breaking changes — safe to batch update36- **Stale**: Package unmaintained (no release in >12 months) — consider replacement3738### 4. Scan for Impact3940For Major-tier packages:41- Read the changelog/migration guide for the new version42- Search the codebase for imports and usages of changed APIs43- List affected files with line numbers44- Estimate effort: how many patterns need changing and whether they're automatable4546### 5. Generate Upgrade Plan4748Produce an ordered plan:491. Critical (CVE fixes) first — usually patch-level, zero code changes502. Minor/patch batch — single `npm update` command513. Each Major upgrade individually, with:52 - Exact install command (`npm install package@version`)53 - Code changes needed (as diffs when possible)54 - Test commands to verify5556## Examples5758### Example 1: Node.js Project Audit5960**Input**: User provides package.json with 94 dependencies.6162**Output**:63```64Dependency Audit — 94 packages6566CRITICAL (2 packages):67 lodash 4.17.20 → 4.17.2168 CVE-2021-23337 (Command Injection, HIGH)69 Fix: npm install lodash@4.17.21 (patch, no code changes)7071 node-fetch 2.6.1 → 2.6.1372 CVE-2022-0235 (Information Exposure, MEDIUM)73 Fix: npm install node-fetch@2.6.13 (patch, no code changes)7475MAJOR (1 package):76 express 4.18.2 → 5.0.077 Breaking: req.host now returns host without port78 Breaking: app.del() removed, use app.delete()79 Affected files: src/server.ts:45 (uses req.host), src/routes/legacy.ts:12 (uses app.del)80 Migration effort: Low — 2 files, 2 line changes8182MINOR (18 packages):83 Can be batch-updated: npm update (no breaking changes detected)8485STALE (1 package):86 request 2.88.2 — DEPRECATED, last release Feb 202087 Recommended replacement: undici or node-fetch88 Used in: src/lib/http-client.ts (3 call sites)8990Upgrade Order:91 Step 1: npm install lodash@4.17.21 node-fetch@2.6.1392 Step 2: npm update93 Step 3: npm install express@5.0.0 (apply 2 code changes first)94 Step 4: Replace request with undici (separate PR recommended)95```9697### Example 2: Python Requirements9899**Input**: User provides requirements.txt with pinned versions.100101**Output**:102```103Dependency Audit — 23 packages104105CRITICAL:106 django==3.2.18 → 3.2.25107 CVE-2024-24680 (DoS via intcomma, MEDIUM)108 Fix: pip install django==3.2.25 (patch within same minor)109110MAJOR:111 django==3.2.25 → 5.0.6 (if full upgrade desired)112 Breaking: DEFAULT_AUTO_FIELD must be set explicitly113 Breaking: url() removed, use path()114 Affected: 8 files in urls/, settings.py115```116117## Guidelines118119- Never recommend upgrading all major versions at once — one at a time, with tests between each120- For monorepos, check if packages have peer dependency conflicts before recommending upgrades121- If a package is deprecated with no CVE, it's STALE not CRITICAL — don't panic the user122- Always check if the project has a test suite (`npm test`, `pytest`) and recommend running it after each step123- When generating diffs, use the project's actual code, not generic examples124- For workspaces/monorepos, note which workspace each dependency belongs to