Dependency Audit Skill

Audits project dependencies for security vulnerabilities, license compliance issues, outdated packages, and transitive dependency risk.

Dependency Audit Skill — The Skill Playground: pick the Executive Update skill, fill in a few notes, hit run, and watch a structured executive… (from the mohitagw15856/pm-claude-skills README)

From the mohitagw15856/pm-claude-skills README — shows the whole collection, not only this skill. · view on GitHub

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/dependency-audit, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit mohitagw15856/pm-claude-skills/skills/dependency-audit#main ~/.claude/skills/dependency-audit

For one project only, change the path to .claude/skills/dependency-audit. This skill also uses package.json, requirements.txt, CONTRIBUTING.md — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Dependency Audit Skill

Show the full text341 lines
namedescription
dependency-auditAudits project dependencies for security vulnerabilities, license compliance issues, outdated packages, and transitive dependency risk. Use when asked to audit dependencies, review package security, check license compliance, assess dependency health, or produce a vulnerability report. Produces a vulnerability findings table, license compliance matrix, update priority matrix, dependency health score, and 30-day remediation plan.

Dependency Audit Skill

Produce a complete dependency audit report for a project — covering security vulnerabilities (with CVE references), license compliance against policy, outdated packages prioritised by risk, transitive dependency risk analysis, and a concrete remediation plan with timeline. A good dependency audit gives the team a clear, prioritised action list — not a raw dump of audit output that no one acts on.

Required Inputs

Ask for these if not already provided:

  • Project language and ecosystem — npm, pip/PyPI, Maven/Gradle, Go modules, Cargo, RubyGems, NuGet, or mixed
  • Dependency list or package manifest — paste the contents of package.json, requirements.txt, go.mod, pom.xml, etc., or provide the audit tool output
  • License policy — which licenses are allowed, which are restricted (e.g. "GPL is prohibited", "MIT/Apache/BSD only", or "no policy yet — recommend one")
  • Current security tooling — Dependabot, Snyk, OWASP Dependency-Check, npm audit, pip-audit, or none

Output Format


Dependency Audit Report: [Project Name]

Ecosystem: [npm / pip / Maven / Go / etc.] Audit date: [Date] Auditor: [Name] Total direct dependencies: [N] Total transitive dependencies: [N] Audit tool(s) used: [npm audit / pip-audit / Snyk / OWASP Dependency-Check / etc.]


Executive Summary

Category Finding Risk level
Critical vulnerabilities [N] CVEs requiring immediate action [Critical / High / Low]
High vulnerabilities [N] CVEs — fix within 7 days [High / Medium]
License violations [N] packages with non-compliant licenses [High / Low]
Severely outdated packages [N] packages > 2 major versions behind [Medium]
Packages with no active maintenance [N] packages — no commits in 12+ months [Medium]
Overall dependency health score [Score]/100 [Red / Amber / Green]

Scoring methodology: Critical CVEs: −20 each. High CVEs: −10 each. License violations: −15 each. Abandoned packages: −5 each. Maximum deduction: 100. Score ≥80 = Green, 60–79 = Amber, <60 = Red.

Immediate actions required:

  1. [Most critical action — e.g. "Upgrade lodash from 4.17.11 to 4.17.21 to fix CVE-2021-23337 (Critical — prototype pollution)"]
  2. [Second action]
  3. [Third action]

1. Security Vulnerability Findings

Critical and High Severity (Act within 24–72 hours)
Package Installed version Fix version CVE Severity CVSS score Description Exploitability
[package-name] [X.Y.Z] [A.B.C] [CVE-YYYY-NNNNN] Critical [9.x] [e.g. Prototype pollution via merge function — remote code execution possible] [Known exploit / PoC available / No known exploit]
[package-name] [X.Y.Z] [A.B.C] [CVE-YYYY-NNNNN] High [7.x] [e.g. Path traversal in file serving utility] [PoC available]
[package-name] [X.Y.Z] [A.B.C] [CVE-YYYY-NNNNN] High [7.x] [e.g. Regular expression denial of service (ReDoS)] [No known exploit]
Medium Severity (Fix within 30 days)
Package Installed version Fix version CVE Severity CVSS score Description
[package-name] [X.Y.Z] [A.B.C] [CVE-YYYY-NNNNN] Medium [5.x] [Description]
[package-name] [X.Y.Z] [A.B.C] [CVE-YYYY-NNNNN] Medium [4.x] [Description]
Low Severity (Fix within 90 days or accept risk)
Package Installed version Fix version CVE Severity Description
[package-name] [X.Y.Z] [A.B.C] Low [Description]
Vulnerabilities With No Fix Available
Package CVE Severity Recommended mitigation
[package-name] [CVE-YYYY-NNNNN] [High] [e.g. "Remove this package — alternative: [replacement]"]
[package-name] [CVE-YYYY-NNNNN] [Medium] [e.g. "Vendor has a fix in progress — track issue [URL]. Mitigate by [X]"]

2. License Compliance Matrix

License Policy Reference
License Category Policy Notes
MIT Permissive Allowed Attribution required in distributed products
Apache 2.0 Permissive Allowed Attribution + NOTICE file required
BSD 2-Clause / 3-Clause Permissive Allowed Attribution required
ISC Permissive Allowed
MPL 2.0 Weak copyleft Allowed with review Source disclosure required for modified MPL files only
LGPL v2 / v3 Weak copyleft Allowed with review Dynamic linking permitted; static linking may require disclosure
GPL v2 / v3 Strong copyleft Restricted May require open-sourcing the entire codebase — legal review required
AGPL v3 Strong copyleft Restricted Network use triggers copyleft — especially risky for SaaS
SSPL Source available Prohibited Not OSI-approved — treat as proprietary
Proprietary / Commercial Commercial Requires contract Verify license covers current use case and scale
Unknown / Unlicensed — Prohibited No license = all rights reserved — cannot use legally
Findings: Packages With Compliance Issues
Package License Issue Recommendation Risk if unaddressed
[package-name] GPL v3 Copyleft — may require open-sourcing this project Replace with [alternative] or get legal sign-off Legal / IP risk
[package-name] AGPL v3 Network copyleft — SaaS use triggers disclosure Replace with [alternative] Legal / IP risk
[package-name] Proprietary License may not cover current usage tier Verify license scope with vendor Contract breach
[package-name] Unknown No license declared in package metadata Contact maintainer or replace Cannot use legally
All Licenses in Use (Full Inventory)
License Package count Compliance status
MIT [N] Compliant
Apache 2.0 [N] Compliant
BSD-3-Clause [N] Compliant
ISC [N] Compliant
MPL 2.0 [N] Review required
GPL v3 [N] Non-compliant
Unknown [N] Non-compliant

3. Outdated Package Analysis

Severely Outdated (2+ major versions behind — high upgrade effort)
Package Installed Latest stable Versions behind Last updated Breaking changes summary
[package-name] [1.x.x] [3.x.x] 2 major [Date] [e.g. "API redesign in v2; async support added in v3"]
[package-name] [0.x.x] [2.x.x] 2 major [Date] [Summary]
Moderately Outdated (1 major version behind)
Package Installed Latest stable Versions behind Security fix in newer version?
[package-name] [2.x.x] [3.x.x] 1 major [Yes — CVE-YYYY-NNNNN / No]
[package-name] [4.x.x] [5.x.x] 1 major [No]
Minor/Patch Updates Available (Low risk to update)
Package Installed Latest Contains security fix?
[package-name] [2.3.1] [2.3.9] [Yes / No]
[package-name] [1.0.0] [1.2.1] [No]

4. Dependency Graph Risk Analysis

Transitive Dependency Risk

Transitive (indirect) dependencies carry risk because they are not explicitly managed. These are the highest-risk transitive dependencies in this project:

Vulnerable transitive dep Pulled in by Installed version Fix available Action
[transitive-package] [direct-parent] [X.Y.Z] [Yes — upgrade [parent] to [version]] Upgrade direct dependency [parent]
[transitive-package] [direct-parent] [X.Y.Z] [No] Remove [parent] or use [alternative]
Dependency Concentration Risk

These packages are depended on by many other packages in the project — a vulnerability or deprecation would have cascading effects:

Package Depended on by (N packages) Actively maintained? Risk level
[package-name] [N] [Yes / No — last commit: date] [High / Medium]
[package-name] [N] [Yes] [Medium]
Abandoned / Unmaintained Packages
Package Last release Last commit Weekly downloads Recommended alternative
[package-name] [Date] [Date] [N] [alternative-package]
[package-name] [Date] [Date] [N] [Maintained fork: URL]

5. Remediation Plan

30-Day Plan

Week 1 — Critical vulnerabilities (Days 1–7)

Action Owner Package Effort Notes
Upgrade [package] [old] → [new] [Name] [package-name] [30 min] [No API changes / check breaking changes guide: URL]
Replace [package] with [alternative] [Name] [package-name] [2 hours] [No fix available — must replace]
Patch override for [transitive-dep] [Name] [transitive-dep] [15 min] [Add resolutions/overrides entry in manifest]
# Commands for Week 1 upgrades:

# npm
npm install [package]@[target-version]
npm audit fix --force  # use with caution — may introduce breaking changes

# pip
pip install --upgrade [package]==[target-version]
pip-audit --fix  # if using pip-audit

# Go
go get [module]@[version]
go mod tidy

# Maven
# Update pom.xml version property, then:
mvn versions:use-latest-releases -DallowMajorUpdates=false
mvn dependency:resolve

Week 2 — High vulnerabilities and license violations (Days 8–14)

Action Owner Package Effort Notes
Upgrade [package] [Name] [package-name] [1 hour]
Replace GPL-licensed [package] [Name] [package-name] [4 hours] [Alternative: [package]]
Legal review for [package] license Legal team [package-name] [Legal team SLA] [Submit via [process]]

Week 3 — Medium vulnerabilities and abandoned packages (Days 15–21)

Action Owner Package Effort Notes
Upgrade [package] [Name] [package-name] [30 min]
Replace abandoned [package] [Name] [package-name] [2 hours] [Maintained fork or alternative: [URL]]

Week 4 — Process improvements (Days 22–30)

Action Owner Effort Notes
Enable Dependabot / Renovate for automated PRs [Name] [2 hours] [Config in Section 6]
Add npm audit / pip-audit to CI — fail on Critical/High [Name] [1 hour] [Config in Section 6]
Document license policy in CONTRIBUTING.md [Name] [1 hour] [Based on policy in Section 2]
Schedule next quarterly audit [Name] [15 min] [Add to team calendar]

6. Policy Recommendations

Automated Vulnerability Scanning in CI

Add the following to your CI pipeline to catch vulnerabilities before they merge:

# GitHub Actions — adapt for your CI platform
dependency-audit:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3

    # npm
    - name: npm audit
      run: npm audit --audit-level=high
      # Fails build on High or Critical vulnerabilities

    # pip
    - name: pip-audit
      run: |
        pip install pip-audit
        pip-audit --requirement requirements.txt --severity high

    # Go
    - name: govulncheck
      run: |
        go install golang.org/x/vuln/cmd/govulncheck@latest
        govulncheck ./...
Dependabot / Renovate Configuration
# .github/dependabot.yml — automated dependency update PRs
version: 2
updates:
  - package-ecosystem: "[npm / pip / gomod / maven]"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
    open-pull-requests-limit: 10
    labels:
      - "dependencies"
      - "automated"
    ignore:
      # Ignore major version bumps — review these manually
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]
License Scanning
# npm — license checker
npx license-checker --onlyAllow 'MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC' \
  --failOn 'GPL;AGPL;LGPL'

# Python — pip-licenses
pip install pip-licenses
pip-licenses --allow-only="MIT;Apache Software License;BSD License;ISC License" \
  --fail-on="GNU General Public License"

# Go — go-licenses
go install github.com/google/go-licenses@latest
go-licenses check ./... --allowed_licenses=MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause

7. Dependency Health Score Detail

Category Max points Score Notes
No critical vulnerabilities 30 [N]/30 −20 per critical CVE
No high vulnerabilities 20 [N]/20 −10 per high CVE
License compliance 20 [N]/20 −15 per violation
No abandoned packages 15 [N]/15 −5 per abandoned package
Up-to-date major versions 10 [N]/10 −2 per major version behind
Automated scanning enabled 5 [N]/5 All-or-nothing
Total 100 [Score]/100 [Red / Amber / Green]

Quality Checks

  • Every Critical and High CVE has a named owner and a resolution date in the 30-day plan
  • License findings have been reviewed by legal or a named engineer with authority to accept the risk
  • Transitive dependency vulnerabilities are included — not just direct dependencies
  • Abandoned packages have a concrete replacement recommendation, not just "consider replacing"
  • CI pipeline change is included — the audit findings should be the last time these are caught manually
  • The dependency health score is calculated from actual findings, not estimated
  • Remediation plan actions are specific commands or steps, not "upgrade package X" without version targets

Anti-Patterns

  • Do not report only direct dependencies — transitive dependency vulnerabilities are often more dangerous and are the most commonly missed
  • Do not present raw audit tool output without interpretation — a table of 200 CVEs with no prioritisation is worse than no audit at all
  • Do not assign all Critical CVEs as "fix immediately" without checking whether an exploitable path exists in your usage context
  • Do not make license compliance decisions without legal input — flagging a GPL dependency without a recommendation is incomplete work
  • Do not complete the audit without including a CI/CD pipeline step — a one-time audit that leaves the door open for new vulnerabilities is not a remediation
1---
2name: dependency-audit
3description: "Audits project dependencies for security vulnerabilities, license compliance issues, outdated packages, and transitive dependency risk. Use when asked to audit dependencies, review package security, check license compliance, assess dependency health, or produce a vulnerability report. Produces a vulnerability findings table, license compliance matrix, update priority matrix, dependency health score, and 30-day remediation plan."
4---
5 
6# Dependency Audit Skill
7 
8Produce a complete dependency audit report for a project — covering security vulnerabilities (with CVE references), license compliance against policy, outdated packages prioritised by risk, transitive dependency risk analysis, and a concrete remediation plan with timeline. A good dependency audit gives the team a clear, prioritised action list — not a raw dump of audit output that no one acts on.
9 
10## Required Inputs
11 
12Ask for these if not already provided:
13- **Project language and ecosystem** — npm, pip/PyPI, Maven/Gradle, Go modules, Cargo, RubyGems, NuGet, or mixed
14- **Dependency list or package manifest** — paste the contents of `package.json`, `requirements.txt`, `go.mod`, `pom.xml`, etc., or provide the audit tool output
15- **License policy** — which licenses are allowed, which are restricted (e.g. "GPL is prohibited", "MIT/Apache/BSD only", or "no policy yet — recommend one")
16- **Current security tooling** — Dependabot, Snyk, OWASP Dependency-Check, npm audit, pip-audit, or none
17 
18## Output Format
19 
20---
21 
22# Dependency Audit Report: [Project Name]
23 
24**Ecosystem:** [npm / pip / Maven / Go / etc.]
25**Audit date:** [Date]
26**Auditor:** [Name]
27**Total direct dependencies:** [N]
28**Total transitive dependencies:** [N]
29**Audit tool(s) used:** [npm audit / pip-audit / Snyk / OWASP Dependency-Check / etc.]
30 
31---
32 
33## Executive Summary
34 
35| Category | Finding | Risk level |
36|---|---|---|
37| Critical vulnerabilities | [N] CVEs requiring immediate action | [Critical / High / Low] |
38| High vulnerabilities | [N] CVEs — fix within 7 days | [High / Medium] |
39| License violations | [N] packages with non-compliant licenses | [High / Low] |
40| Severely outdated packages | [N] packages > 2 major versions behind | [Medium] |
41| Packages with no active maintenance | [N] packages — no commits in 12+ months | [Medium] |
42| **Overall dependency health score** | **[Score]/100** | **[Red / Amber / Green]** |
43 
44**Scoring methodology:** Critical CVEs: −20 each. High CVEs: −10 each. License violations: −15 each. Abandoned packages: −5 each. Maximum deduction: 100. Score ≥80 = Green, 60–79 = Amber, <60 = Red.
45 
46**Immediate actions required:**
471. [Most critical action — e.g. "Upgrade lodash from 4.17.11 to 4.17.21 to fix CVE-2021-23337 (Critical — prototype pollution)"]
482. [Second action]
493. [Third action]
50 
51---
52 
53## 1. Security Vulnerability Findings
54 
55### Critical and High Severity (Act within 24–72 hours)
56 
57| Package | Installed version | Fix version | CVE | Severity | CVSS score | Description | Exploitability |
58|---|---|---|---|---|---|---|---|
59| [package-name] | [X.Y.Z] | [A.B.C] | [CVE-YYYY-NNNNN] | Critical | [9.x] | [e.g. Prototype pollution via `merge` function — remote code execution possible] | [Known exploit / PoC available / No known exploit] |
60| [package-name] | [X.Y.Z] | [A.B.C] | [CVE-YYYY-NNNNN] | High | [7.x] | [e.g. Path traversal in file serving utility] | [PoC available] |
61| [package-name] | [X.Y.Z] | [A.B.C] | [CVE-YYYY-NNNNN] | High | [7.x] | [e.g. Regular expression denial of service (ReDoS)] | [No known exploit] |
62 
63### Medium Severity (Fix within 30 days)
64 
65| Package | Installed version | Fix version | CVE | Severity | CVSS score | Description |
66|---|---|---|---|---|---|---|
67| [package-name] | [X.Y.Z] | [A.B.C] | [CVE-YYYY-NNNNN] | Medium | [5.x] | [Description] |
68| [package-name] | [X.Y.Z] | [A.B.C] | [CVE-YYYY-NNNNN] | Medium | [4.x] | [Description] |
69 
70### Low Severity (Fix within 90 days or accept risk)
71 
72| Package | Installed version | Fix version | CVE | Severity | Description |
73|---|---|---|---|---|---|
74| [package-name] | [X.Y.Z] | [A.B.C] | Low | [Description] |
75 
76### Vulnerabilities With No Fix Available
77 
78| Package | CVE | Severity | Recommended mitigation |
79|---|---|---|---|
80| [package-name] | [CVE-YYYY-NNNNN] | [High] | [e.g. "Remove this package — alternative: [replacement]"] |
81| [package-name] | [CVE-YYYY-NNNNN] | [Medium] | [e.g. "Vendor has a fix in progress — track issue [URL]. Mitigate by [X]"] |
82 
83---
84 
85## 2. License Compliance Matrix
86 
87### License Policy Reference
88 
89| License | Category | Policy | Notes |
90|---|---|---|---|
91| MIT | Permissive | Allowed | Attribution required in distributed products |
92| Apache 2.0 | Permissive | Allowed | Attribution + NOTICE file required |
93| BSD 2-Clause / 3-Clause | Permissive | Allowed | Attribution required |
94| ISC | Permissive | Allowed | |
95| MPL 2.0 | Weak copyleft | Allowed with review | Source disclosure required for modified MPL files only |
96| LGPL v2 / v3 | Weak copyleft | Allowed with review | Dynamic linking permitted; static linking may require disclosure |
97| GPL v2 / v3 | Strong copyleft | **Restricted** | May require open-sourcing the entire codebase — legal review required |
98| AGPL v3 | Strong copyleft | **Restricted** | Network use triggers copyleft — especially risky for SaaS |
99| SSPL | Source available | **Prohibited** | Not OSI-approved — treat as proprietary |
100| Proprietary / Commercial | Commercial | **Requires contract** | Verify license covers current use case and scale |
101| Unknown / Unlicensed | — | **Prohibited** | No license = all rights reserved — cannot use legally |
102 
103### Findings: Packages With Compliance Issues
104 
105| Package | License | Issue | Recommendation | Risk if unaddressed |
106|---|---|---|---|---|
107| [package-name] | GPL v3 | Copyleft — may require open-sourcing this project | Replace with [alternative] or get legal sign-off | Legal / IP risk |
108| [package-name] | AGPL v3 | Network copyleft — SaaS use triggers disclosure | Replace with [alternative] | Legal / IP risk |
109| [package-name] | Proprietary | License may not cover current usage tier | Verify license scope with vendor | Contract breach |
110| [package-name] | Unknown | No license declared in package metadata | Contact maintainer or replace | Cannot use legally |
111 
112### All Licenses in Use (Full Inventory)
113 
114| License | Package count | Compliance status |
115|---|---|---|
116| MIT | [N] | Compliant |
117| Apache 2.0 | [N] | Compliant |
118| BSD-3-Clause | [N] | Compliant |
119| ISC | [N] | Compliant |
120| MPL 2.0 | [N] | Review required |
121| GPL v3 | [N] | **Non-compliant** |
122| Unknown | [N] | **Non-compliant** |
123 
124---
125 
126## 3. Outdated Package Analysis
127 
128### Severely Outdated (2+ major versions behind — high upgrade effort)
129 
130| Package | Installed | Latest stable | Versions behind | Last updated | Breaking changes summary |
131|---|---|---|---|---|---|
132| [package-name] | [1.x.x] | [3.x.x] | 2 major | [Date] | [e.g. "API redesign in v2; async support added in v3"] |
133| [package-name] | [0.x.x] | [2.x.x] | 2 major | [Date] | [Summary] |
134 
135### Moderately Outdated (1 major version behind)
136 
137| Package | Installed | Latest stable | Versions behind | Security fix in newer version? |
138|---|---|---|---|---|
139| [package-name] | [2.x.x] | [3.x.x] | 1 major | [Yes — CVE-YYYY-NNNNN / No] |
140| [package-name] | [4.x.x] | [5.x.x] | 1 major | [No] |
141 
142### Minor/Patch Updates Available (Low risk to update)
143 
144| Package | Installed | Latest | Contains security fix? |
145|---|---|---|---|
146| [package-name] | [2.3.1] | [2.3.9] | [Yes / No] |
147| [package-name] | [1.0.0] | [1.2.1] | [No] |
148 
149---
150 
151## 4. Dependency Graph Risk Analysis
152 
153### Transitive Dependency Risk
154 
155Transitive (indirect) dependencies carry risk because they are not explicitly managed. These are the highest-risk transitive dependencies in this project:
156 
157| Vulnerable transitive dep | Pulled in by | Installed version | Fix available | Action |
158|---|---|---|---|---|
159| [transitive-package] | [direct-parent] | [X.Y.Z] | [Yes — upgrade [parent] to [version]] | Upgrade direct dependency [parent] |
160| [transitive-package] | [direct-parent] | [X.Y.Z] | [No] | Remove [parent] or use [alternative] |
161 
162### Dependency Concentration Risk
163 
164These packages are depended on by many other packages in the project — a vulnerability or deprecation would have cascading effects:
165 
166| Package | Depended on by (N packages) | Actively maintained? | Risk level |
167|---|---|---|---|
168| [package-name] | [N] | [Yes / No — last commit: date] | [High / Medium] |
169| [package-name] | [N] | [Yes] | [Medium] |
170 
171### Abandoned / Unmaintained Packages
172 
173| Package | Last release | Last commit | Weekly downloads | Recommended alternative |
174|---|---|---|---|---|
175| [package-name] | [Date] | [Date] | [N] | [alternative-package] |
176| [package-name] | [Date] | [Date] | [N] | [Maintained fork: URL] |
177 
178---
179 
180## 5. Remediation Plan
181 
182### 30-Day Plan
183 
184**Week 1 — Critical vulnerabilities (Days 1–7)**
185 
186| Action | Owner | Package | Effort | Notes |
187|---|---|---|---|---|
188| Upgrade [package] [old] → [new] | [Name] | [package-name] | [30 min] | [No API changes / check breaking changes guide: URL] |
189| Replace [package] with [alternative] | [Name] | [package-name] | [2 hours] | [No fix available — must replace] |
190| Patch override for [transitive-dep] | [Name] | [transitive-dep] | [15 min] | [Add resolutions/overrides entry in manifest] |
191 
192```bash
193# Commands for Week 1 upgrades:
194 
195# npm
196npm install [package]@[target-version]
197npm audit fix --force # use with caution — may introduce breaking changes
198 
199# pip
200pip install --upgrade [package]==[target-version]
201pip-audit --fix # if using pip-audit
202 
203# Go
204go get [module]@[version]
205go mod tidy
206 
207# Maven
208# Update pom.xml version property, then:
209mvn versions:use-latest-releases -DallowMajorUpdates=false
210mvn dependency:resolve
211```
212 
213**Week 2 — High vulnerabilities and license violations (Days 8–14)**
214 
215| Action | Owner | Package | Effort | Notes |
216|---|---|---|---|---|
217| Upgrade [package] | [Name] | [package-name] | [1 hour] | |
218| Replace GPL-licensed [package] | [Name] | [package-name] | [4 hours] | [Alternative: [package]] |
219| Legal review for [package] license | Legal team | [package-name] | [Legal team SLA] | [Submit via [process]] |
220 
221**Week 3 — Medium vulnerabilities and abandoned packages (Days 15–21)**
222 
223| Action | Owner | Package | Effort | Notes |
224|---|---|---|---|---|
225| Upgrade [package] | [Name] | [package-name] | [30 min] | |
226| Replace abandoned [package] | [Name] | [package-name] | [2 hours] | [Maintained fork or alternative: [URL]] |
227 
228**Week 4 — Process improvements (Days 22–30)**
229 
230| Action | Owner | Effort | Notes |
231|---|---|---|---|
232| Enable Dependabot / Renovate for automated PRs | [Name] | [2 hours] | [Config in Section 6] |
233| Add `npm audit` / `pip-audit` to CI — fail on Critical/High | [Name] | [1 hour] | [Config in Section 6] |
234| Document license policy in CONTRIBUTING.md | [Name] | [1 hour] | [Based on policy in Section 2] |
235| Schedule next quarterly audit | [Name] | [15 min] | [Add to team calendar] |
236 
237---
238 
239## 6. Policy Recommendations
240 
241### Automated Vulnerability Scanning in CI
242 
243Add the following to your CI pipeline to catch vulnerabilities before they merge:
244 
245```yaml
246# GitHub Actions — adapt for your CI platform
247dependency-audit:
248 runs-on: ubuntu-latest
249 steps:
250 - uses: actions/checkout@v3
251 
252 # npm
253 - name: npm audit
254 run: npm audit --audit-level=high
255 # Fails build on High or Critical vulnerabilities
256 
257 # pip
258 - name: pip-audit
259 run: |
260 pip install pip-audit
261 pip-audit --requirement requirements.txt --severity high
262 
263 # Go
264 - name: govulncheck
265 run: |
266 go install golang.org/x/vuln/cmd/govulncheck@latest
267 govulncheck ./...
268```
269 
270### Dependabot / Renovate Configuration
271 
272```yaml
273# .github/dependabot.yml — automated dependency update PRs
274version: 2
275updates:
276 - package-ecosystem: "[npm / pip / gomod / maven]"
277 directory: "/"
278 schedule:
279 interval: "weekly"
280 day: "monday"
281 open-pull-requests-limit: 10
282 labels:
283 - "dependencies"
284 - "automated"
285 ignore:
286 # Ignore major version bumps — review these manually
287 - dependency-name: "*"
288 update-types: ["version-update:semver-major"]
289```
290 
291### License Scanning
292 
293```bash
294# npm — license checker
295npx license-checker --onlyAllow 'MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC' \
296 --failOn 'GPL;AGPL;LGPL'
297 
298# Python — pip-licenses
299pip install pip-licenses
300pip-licenses --allow-only="MIT;Apache Software License;BSD License;ISC License" \
301 --fail-on="GNU General Public License"
302 
303# Go — go-licenses
304go install github.com/google/go-licenses@latest
305go-licenses check ./... --allowed_licenses=MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause
306```
307 
308---
309 
310## 7. Dependency Health Score Detail
311 
312| Category | Max points | Score | Notes |
313|---|---|---|---|
314| No critical vulnerabilities | 30 | [N]/30 | −20 per critical CVE |
315| No high vulnerabilities | 20 | [N]/20 | −10 per high CVE |
316| License compliance | 20 | [N]/20 | −15 per violation |
317| No abandoned packages | 15 | [N]/15 | −5 per abandoned package |
318| Up-to-date major versions | 10 | [N]/10 | −2 per major version behind |
319| Automated scanning enabled | 5 | [N]/5 | All-or-nothing |
320| **Total** | **100** | **[Score]/100** | **[Red / Amber / Green]** |
321 
322---
323 
324## Quality Checks
325 
326- [ ] Every Critical and High CVE has a named owner and a resolution date in the 30-day plan
327- [ ] License findings have been reviewed by legal or a named engineer with authority to accept the risk
328- [ ] Transitive dependency vulnerabilities are included — not just direct dependencies
329- [ ] Abandoned packages have a concrete replacement recommendation, not just "consider replacing"
330- [ ] CI pipeline change is included — the audit findings should be the last time these are caught manually
331- [ ] The dependency health score is calculated from actual findings, not estimated
332- [ ] Remediation plan actions are specific commands or steps, not "upgrade package X" without version targets
333 
334## Anti-Patterns
335 
336- [ ] Do not report only direct dependencies — transitive dependency vulnerabilities are often more dangerous and are the most commonly missed
337- [ ] Do not present raw audit tool output without interpretation — a table of 200 CVEs with no prioritisation is worse than no audit at all
338- [ ] Do not assign all Critical CVEs as "fix immediately" without checking whether an exploitable path exists in your usage context
339- [ ] Do not make license compliance decisions without legal input — flagging a GPL dependency without a recommendation is incomplete work
340- [ ] Do not complete the audit without including a CI/CD pipeline step — a one-time audit that leaves the door open for new vulnerabilities is not a remediation
341 

Discussion

Alternatives

Also in SecuritySee all 533 in Development →