dep-audit
Scans your code projects for outdated or unsafe packages and tells you which ones to update first.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
--- name: dep-audit description: "Cross-repository dependency audit. Scans package manifests for outdated packages, security advisories, version conflicts, and license issues. Produces a prioritized update plan. Supports Node.js, Python, Rust, and Go projects." license: MIT origin: custom author: Rebecca Rae Barton author_url: https://github.com/thatrebeccarae metadata: version: 1.0.0 category: devops domain: dependencies updated: 2026-03-19 tested: 2026-03-19 tested_with: "Claude Code v2.1" --- # Dependency Audit Cross-repository dependency audit. Scans package manifests (package.json, pyproject.toml, Cargo.toml, go.mod) for outdated packages, security advisories, version conflicts between repos, and license compatibility issues. Produces a prioritized update plan. ## Install ```bash git clone https://github.com/thatrebeccarae/claude-marketing.git && cp -r claude-marketing/skills/dep-audit ~/.claude/skills/ ``` ## When to Use - **Monthly hygiene**: Run on a cadence to catch dependency drift before it compounds - **Before releases**: Verify no known vulnerabilities ship to production - **Security incidents**: When a CVE drops, quickly assess exposure across all repos - **Onboarding new repos**: Baseline the dependency health of a repo you're inheriting or adopting ## Usage - `/dep-audit [repo-path]` — audit a single repository - `/dep-audit [repo-path1] [repo-path2] ...` — cross-repo audit (enables version conflict detection) ## Procedure ### 1. Detect Package Managers Scan the target repo(s) for manifest files: | Manager | Manifest | Lock File | |---------|----------|-----------| | npm | `package.json` | `package-lock.json` | | yarn | `package.json` | `yarn.lock` | | pnpm | `package.json` | `pnpm-lock.yaml` | | pip | `requirements.txt`, `setup.py`, `setup.cfg` | `requirements.txt` (pinned) | | poetry | `pyproject.toml` (has `[tool.poetry]`) | `poetry.lock` | | uv | `pyproject.toml` (has `[tool.uv]`) | `uv.lock` | | cargo | `Cargo.toml` | `Cargo.lock` | | go mod | `go.mod` | `go.sum` | ```bash # Detect which manifests exist ls package.json pyproject.toml Cargo.toml go.mod requirements.txt 2>/dev/null # Detect lock files ls package-lock.json yarn.lock pnpm-lock.yaml poetry.lock uv.lock Cargo.lock go.sum 2>/dev/null ``` If multiple ecosystems are present (e.g., a monorepo with Node.js frontend and Go backend), audit each independently and merge results. ### 2. Parse Manifests and Lock Files Read the manifest to identify declared dependencies (direct) and the lock file for resolved versions (transitive). Distinguish between: - **Production dependencies** (`dependencies`, `[dependencies]`, main requires) - **Development dependencies** (`devDependencies`, `[dev-dependencies]`, extras) ### 3. Check for Outdated Packages Query the registry for latest versions and categorize the delta: ```bash # Node.js npm outdated --json # Python (pip) pip list --outdated --format=json # Python (poetry) poetry show --outdated # Rust cargo outdated --format json # requires cargo-outdated # Go go list -m -u all ``` Categorize each outdated package: - **Patch update** (e.g., 2.3.1 -> 2.3.4): Safe, usually bug fixes - **Minor update** (e.g., 2.3.1 -> 2.5.0): New features, should be backward-compatible - **Major update** (e.g., 2.3.1 -> 3.0.0): Breaking changes likely, needs migration review ### 4. Check for Security Advisories Run ecosystem-native audit tools: ```bash # Node.js npm audit --json # Python pip-audit --format=json # or: safety check # Rust cargo audit --json # requires cargo-audit # Go govulncheck ./... ``` Parse severity from results: - **Critical**: Remote code execution, authentication bypass, data exfiltration - **High**: Privilege escalation, significant data exposure - **Medium**: DoS potential, limited data exposure - **Low**: Information disclosure, minor issues ### 5. Cross-Repo Analysis (Multiple Repos) When auditing two or more repos, compare dependency versions: - **Version conflicts**: Same package at different versions across repos (e.g., `axios@0.27.2` in repo A, `axios@1.6.2` in repo B) - **Shared dependencies**: Packages used by multiple repos that could be aligned to a single version - **Divergent major versions**: Flag these as highest priority — they indicate repos drifting apart Present a conflict table showing package, version per repo, and recommended target version. ### 6. License Scan Check dependency licenses against compatibility rules: ```bash # Node.js npx license-checker --json # Python pip-licenses --format=json # Rust cargo license --json # requires cargo-license # Go go-licenses report ./... # requires go-licenses ``` Flag issues: - **Copyleft in permissive projects**: GPL/AGPL dependencies in MIT/Apache-licensed projects - **Unknown or missing licenses**: Dependencies with no license metadata - **Non-OSI-approved licenses**: Custom or restrictive licenses - **License conflicts**: Incompatible license combinations (e.g., GPLv2-only with Apache-2.0) ### 7. Generate Update Plan Prioritize all findings into a single ordered list: 1. **Critical security advisories** — fix immediately 2. **High security advisories** — fix this sprint 3. **License violations** — assess and remediate 4. **Major outdated (with known issues)** — plan migration 5. **Cross-repo version conflicts** — align versions 6. **Minor outdated** — batch update 7. **Patch outdated** — batch update Group related updates together: - All `@types/*` packages in one PR - All packages from the same org (e.g., `@babel/*`) - Peer dependency chains that must move together Note breaking change risks for any major update. Link to migration guides where available. ### 8. Report Produce a severity-coded summary table: | Priority | Package | Current | Latest | Type | Severity | Repos Affected | Action | |----------|---------|---------|--------|------|----------|---------------|--------| | 1 | lodash | 4.17.19 | 4.17.21 | patch | CRITICAL (CVE-2021-23337) | repo-a, repo-b | Update immediately | | 2 | express | 4.17.1 | 4.21.2 | minor | HIGH (CVE-2024-29041) | repo-a | Update this sprint | | 3 | webpack | 4.46.0 | 5.94.0 | major | MEDIUM (outdated) | repo-a | Plan migration | | ... | | | | | | | | Follow with: - Total dependency count (direct / transitive) per repo - Security summary: X critical, Y high, Z medium, W low - Outdated summary: X major, Y minor, Z patch - License summary: X flagged, Y clean - Cross-repo conflicts: X packages with version divergence ## Key Principles 1. **Never auto-update.** This skill audits and recommends. The human decides what to update and when. Automated updates can introduce breaking changes, especially for major versions. 2. **Security first.** Critical and high-severity vulnerabilities always top the priority list, regardless of how old other dependencies are. 3. **Group related updates.** Updating `react` without updating `react-dom` creates version mismatches. Always identify peer dependency chains. 4. **Context matters.** A major version bump on a dev-only dependency (e.g., `eslint`) is lower risk than a patch on a production runtime dependency with a CVE. 5. **Lock files are truth.** Always read the lock file for actual resolved versions, not just the range specifier in the manifest. 6. **Don't chase latest for its own sake.** If a dependency is working, stable, and has no advisories, "outdated" is not the same as "broken." ## How to Use This Skill Ask: - "Audit the dependencies in ~/Repos/my-app" - "Compare dependency versions across these three repos" - "Are there any security vulnerabilities in this project?" - "Check for license issues before we open-source this repo" - "Build me an update plan for everything that's behind" For command reference, license compatibility details, and false positive handling, see [REFERENCE.md](REFERENCE.md). For worked examples, see [EXAMPLES.md](EXAMPLES.md).
Ships with 3 supporting files:
- EXAMPLES.md
- LICENSE
- REFERENCE.md
Mirrored from the author's public source. Install counts from the open skills registry.