audit-deps — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited audit-deps (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Deep audit of project dependencies beyond just vulnerabilities. Covers licenses, staleness, bloat, duplicates, and bundle impact.
$ARGUMENTS — optional flags:--fix — auto-fix: remove unused deps, update safe patches--report — save report to _local/reports/deps-audit-<YYYY-MM-DD>.md--skip-licenses — skip license compliance check--skip-outdated — skip outdated version check--skip-bundle — skip bundle size analysis| Check | How | Records |
|---|---|---|
| Node.js | package.json exists | npm/yarn/pnpm (check for lockfile type) |
| Python | requirements.txt, pyproject.toml, Pipfile | pip/poetry/pipenv |
| Go | go.mod | go modules |
| Rust | Cargo.toml | cargo |
| Lockfile | Check for package-lock.json, yarn.lock, pnpm-lock.yaml, Pipfile.lock, go.sum, Cargo.lock | Lockfile type + committed status |
If multiple package managers detected (monorepo), audit each independently.
How to run (execute the actual command):
npm audit --json (or yarn audit --json or pnpm audit --json)pip-audit --format json (if installed) or safety check --jsongovulncheck ./... (if installed)cargo audit --json (if installed)If the audit tool is not installed: Report "Tool not installed — run [install command] to enable vulnerability scanning" and mark as WARN, not FAIL. Do NOT fabricate vulnerability data.
Parse results:
Findings:
Skip if --skip-licenses flag.
How to check:
node_modules/*/package.json for license field. Or run npx license-checker --json if available.pip-licenses --format json if availablego.sum packages against known license databasescargo license if availableIf license tool not available: Read lockfile, extract package names, and check node_modules/<pkg>/package.json license field directly (Node.js). For other stacks, report "Install [tool] for license scanning."
Classify licenses:
| Category | Licenses | Risk |
|---|---|---|
| Permissive (safe) | MIT, ISC, BSD-2-Clause, BSD-3-Clause, Apache-2.0, 0BSD, Unlicense, CC0-1.0 | None |
| Weak copyleft (caution) | LGPL-2.1, LGPL-3.0, MPL-2.0, EPL-1.0 | MEDIUM — OK for most uses but review obligations |
| Strong copyleft (flag) | GPL-2.0, GPL-3.0, AGPL-3.0 | HIGH — may require open-sourcing your code |
| Unknown | No license field, UNLICENSED, custom | HIGH — legal risk, cannot determine usage rights |
| Commercial | Proprietary, paid | WARN — verify license is valid for this project |
Findings:
Skip if --skip-outdated flag.
How to check:
npm outdated --json (or yarn outdated --json)pip list --outdated --format jsongo list -u -m allcargo outdated -R --format json (if installed)If command fails or tool not installed: Report what worked and skip what didn't.
Classify staleness:
| Behind by | Severity | Risk |
|---|---|---|
| Patch (1.2.3 → 1.2.5) | LOW | Bug fixes, safe to update |
| Minor (1.2.3 → 1.4.0) | MEDIUM | New features, usually backward-compatible |
| Major (1.2.3 → 2.0.0) | HIGH | Breaking changes, needs migration |
| EOL / Deprecated | CRITICAL | No security patches, must replace |
How to detect EOL/deprecated:
npm info <pkg> deprecated for Node.js packages (only for packages flagged as outdated, not all packages)deprecated in package metadatarequest, moment (suggest date-fns or dayjs), tslint (suggest eslint), csurfFindings:
How to check (Node.js):
package.json to get list of all dependencies (both dependencies and devDependencies)import.*from\s+['"]<pkg>, require\(\s*['"]<pkg>, import\s+['"]<pkg>next.config.*, tailwind.config.*, postcss.config.*, vitest.config.*, jest.config.*, .eslintrc*, babel.config.*package.json scripts for CLI tools (e.g., tsc, eslint, vitest)Known exceptions (NOT unused even if not imported directly):
typescript — used by tsc, referenced in tsconfig@types/* — used by TypeScript compilereslint-config-*, eslint-plugin-* — referenced in eslint configprettier — used by editor/CLItailwindcss — referenced in postcss/tailwind configpostcss, autoprefixer — referenced in postcss configHow to check (Python):
requirements.txt entries with import statements across .py filesPillow → import PIL). Use pip show <pkg> to get the import name if available.Findings:
Node.js only.
How to check:
npm ls --all --json and parse for packages appearing at multiple versionspackage-lock.json and search for package names that appear with different version numbersFindings:
lodash 3.x and 4.x)Skip if --skip-bundle flag or if project is backend-only (no client-side bundle).
How to check:
next build output exists (.next/): check .next/analyze or run build with ANALYZE=true if availablemoment (suggest date-fns), lodash (suggest lodash-es or individual imports), aws-sdk (suggest @aws-sdk/client-*), firebase (suggest individual imports)next/bundle-analyzer or webpack-bundle-analyzer is configured, note its availabilityFindings:
# Dependency Audit — [Project Name]
**Date:** YYYY-MM-DD | **Stack:** [detected] | **Package Manager:** [detected]
**Total deps:** X production, Y dev
## Summary
| Check | Critical | High | Medium | Low | Status |
|-------|----------|------|--------|-----|--------|
| Vulnerabilities | X | X | X | X | [OK/WARN/FAIL] |
| Licenses | X | X | X | X | [OK/WARN/FAIL] |
| Outdated | X | X | X | X | [OK/WARN/FAIL] |
| Unused | — | — | X | X | [OK/WARN] |
| Duplicates | — | — | X | X | [OK/WARN] |
| Bundle Size | — | X | X | X | [OK/WARN] |
## Critical Actions
[all critical/high findings]
## Dependency Details
[per-dependency breakdown for flagged items]If --fix is passed:
npm uninstall <pkg> for each confirmed unused package. Run build/tests after to verify nothing breaks.npm update (updates within semver range). Run tests after.moment → dayjs is NOT 1:1, so just recommend it). Do NOT attempt complex migrations.npm audit, npm outdated, etc. produce real data. Do NOT fabricate vulnerability counts or version numbers.pip-audit would find. Report "tool not installed."license fields from package.json files. Do NOT guess licenses based on package name.import <exact-package-name> wasn't found. The import name is often different.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.