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: Dependency Updater4---5# Dependency Updater67## Overview89This 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.1011## Instructions1213### 1. Parse the Dependency File1415- Read `package.json` + lockfile (npm/yarn/pnpm), `requirements.txt`/`pyproject.toml`, or `go.mod`16- List all direct dependencies with current pinned versions17- Note version constraints (^, ~, exact, ranges)1819### 2. Check Each Package2021For each dependency:22- **Latest version**: What's available on the registry23- **Version gap**: How many major/minor/patch versions behind24- **Security**: Known CVEs from npm audit, Snyk, or GitHub Advisory Database25- **Maintenance**: Last publish date, open issues count, whether it's deprecated26- **Breaking changes**: Read CHANGELOG.md or GitHub releases for breaking change notes between current and latest2728### 3. Classify by Risk2930Group packages into four tiers:31- **Critical**: Known CVE with severity HIGH or CRITICAL — update immediately32- **Major**: Major version bump with confirmed breaking API changes — needs migration33- **Minor**: Minor/patch updates with no breaking changes — safe to batch update34- **Stale**: Package unmaintained (no release in >12 months) — consider replacement3536### 4. Scan for Impact3738For Major-tier packages:39- Read the changelog/migration guide for the new version40- Search the codebase for imports and usages of changed APIs41- List affected files with line numbers42- Estimate effort: how many patterns need changing and whether they're automatable4344### 5. Generate Upgrade Plan4546Produce an ordered plan:471. Critical (CVE fixes) first — usually patch-level, zero code changes482. Minor/patch batch — single `npm update` command493. Each Major upgrade individually, with:50 - Exact install command (`npm install package@version`)51 - Code changes needed (as diffs when possible)52 - Test commands to verify5354## Examples5556### Example 1: Node.js Project Audit5758**Input**: User provides package.json with 94 dependencies.5960**Output**:61```62Dependency Audit — 94 packages6364CRITICAL (2 packages):65 lodash 4.17.20 → 4.17.2166 CVE-2021-23337 (Command Injection, HIGH)67 Fix: npm install lodash@4.17.21 (patch, no code changes)6869 node-fetch 2.6.1 → 2.6.1370 CVE-2022-0235 (Information Exposure, MEDIUM)71 Fix: npm install node-fetch@2.6.13 (patch, no code changes)7273MAJOR (1 package):74 express 4.18.2 → 5.0.075 Breaking: req.host now returns host without port76 Breaking: app.del() removed, use app.delete()77 Affected files: src/server.ts:45 (uses req.host), src/routes/legacy.ts:12 (uses app.del)78 Migration effort: Low — 2 files, 2 line changes7980MINOR (18 packages):81 Can be batch-updated: npm update (no breaking changes detected)8283STALE (1 package):84 request 2.88.2 — DEPRECATED, last release Feb 202085 Recommended replacement: undici or node-fetch86 Used in: src/lib/http-client.ts (3 call sites)8788Upgrade Order:89 Step 1: npm install lodash@4.17.21 node-fetch@2.6.1390 Step 2: npm update91 Step 3: npm install express@5.0.0 (apply 2 code changes first)92 Step 4: Replace request with undici (separate PR recommended)93```9495### Example 2: Python Requirements9697**Input**: User provides requirements.txt with pinned versions.9899**Output**:100```101Dependency Audit — 23 packages102103CRITICAL:104 django==3.2.18 → 3.2.25105 CVE-2024-24680 (DoS via intcomma, MEDIUM)106 Fix: pip install django==3.2.25 (patch within same minor)107108MAJOR:109 django==3.2.25 → 5.0.6 (if full upgrade desired)110 Breaking: DEFAULT_AUTO_FIELD must be set explicitly111 Breaking: url() removed, use path()112 Affected: 8 files in urls/, settings.py113```114115## Guidelines116117- Never recommend upgrading all major versions at once — one at a time, with tests between each118- For monorepos, check if packages have peer dependency conflicts before recommending upgrades119- If a package is deprecated with no CVE, it's STALE not CRITICAL — don't panic the user120- Always check if the project has a test suite (`npm test`, `pytest`) and recommend running it after each step121- When generating diffs, use the project's actual code, not generic examples122- For workspaces/monorepos, note which workspace each dependency belongs to