NPM Dependencies Review

VerifiedCaution

Automated analysis tools and detection patterns to identify unused dependencies, dead code, and security issues in npm projects.

Sby Skills Guide Bot
DevelopmentIntermediate
3/11/2026
Claude Code
#dependencies#npm#dead-code#security-audit#bundle-size

Recommended for

Automated summary

Provides analysis commands and detection patterns for finding unused or redundant npm dependencies, dead code, and vulnerabilities.

Strengths

  • Covers the full sweep: unused dependencies, dead code, security audit, outdated versions, and bundle analysis
  • Ships concrete grep commands for spotting duplicate functionality (date libraries, HTTP clients, test frameworks)
  • Includes a severity-to-pattern mapping table to classify findings
  • Deliberately stays a detection reference and does not impose an output format

Limitations

  • Analysis scripts reference absolute paths inside a specific Claude Code plugin and will fail when that plugin is absent
  • Grep patterns are approximate: dynamic imports, re-exports, and path aliases are not detected
  • Does not explain how to fix issues or describe a complete review workflow
When to use it

Use it when auditing a package.json or reviewing the dependency health of a Node/TypeScript project.

When not to use it

Skip it for non-JavaScript projects, or when you need a formatted, prioritized review report rather than a detection toolkit.

Security analysis

Caution
Quality score80/100

The skill uses Bash to run dependency analysis scripts and npm commands for legitimate auditing purposes. There is no destructive or exfiltration behavior, but running pre-existing scripts from a specific path and package scripts introduces moderate execution risk, hence caution.

Findings
  • •Executes local bash scripts from a fixed marketplace path without verifying their contents or existence; these scripts are not defined within the skill.
  • •Runs npm audit, npm outdated, and npm run build commands, which may execute package scripts or network operations in the user's environment.
How this analysis is made

Examples

Audit du package.json
Analyse le package.json de ce projet : repère les dépendances inutilisées, celles mal placées entre dependencies et devDependencies, et les bibliothèques qui font doublon (dates, HTTP, utilitaires).
Détection de code mort
Cherche dans src/ les exports, fichiers utilitaires et types qui ne sont importés nulle part, et liste-les avec leur emplacement.
Sécurité et obsolescence
Lance npm audit et npm outdated, puis résume les vulnérabilités critiques/hautes et les montées de version majeures disponibles.

name: reviewing-dependencies description: Automated tooling and detection patterns for analyzing npm dependencies, unused packages, and dead code. Provides tool commands and what to look for—not how to structure output. allowed-tools: Bash, Read, Grep, Glob version: 1.0.0

Dependencies Review Skill

Purpose

This skill provides automated analysis commands and detection patterns for dependency issues. Use this as a reference for WHAT to check and HOW to detect issues—not for output formatting or workflow.

Automated Analysis Tools

Run these scripts to gather metrics (if tools available):

Unused Dependencies Detection

bash ~/.claude/plugins/marketplaces/claude-configs/review/scripts/review-unused-deps.sh

Returns: Unused dependencies, unused devDependencies, missing dependencies (imported but not in package.json)

Unused Code Detection

bash ~/.claude/plugins/marketplaces/claude-configs/review/scripts/review-unused-code.sh

Returns: Unused exports, unused files, unused enum/class members, unused types/interfaces

Security Audit

npm audit --json
npm audit --production --json

Outdated Dependencies Detection

npm outdated

Look for:

  • available patch/minor/major version upgrades
  • Deprecated dependencies

Bundle Analysis (if available)

npm run build -- --analyze

Returns: Bundle size breakdown, largest chunks

Manual Detection Patterns

When automated tools unavailable or for deeper analysis, use Read/Grep/Glob to detect:

Package.json Analysis

Read package.json:

cat package.json | jq '.dependencies, .devDependencies'

Check for:

  • Version pinning strategy (^, ~, exact)
  • Packages at latest/next tags
  • Incorrect categorization (prod vs dev vs peer)
  • Duplicate functionality patterns

Usage Frequency Detection

Count imports for specific package:

grep -r "from ['\"]package-name['\"]" src/ | wc -l
grep -r "require(['\"]package-name['\"])" src/ | wc -l

Find all import locations:

grep -rn "from ['\"]package-name['\"]" src/

Duplicate Functionality Detection

Multiple date libraries:

grep -E "moment|date-fns|dayjs|luxon" package.json

Multiple HTTP clients:

grep -E "axios|node-fetch|got|ky|superagent" package.json

Multiple testing frameworks:

grep -E "jest|mocha|jasmine|vitest" package.json

Uses skills tagged with review: true including reviewing-vitest-config from vitest-4 for detecting configuration deprecations and testing framework migration patterns.

Multiple utility libraries:

grep -E "lodash|underscore|ramda" package.json

Tree-Shaking Opportunities

Non-ES module imports:

grep -r "import .* from 'lodash'" src/
grep -r "import _ from" src/

Look for: Default imports that could be named imports from ES module versions

Large utility usage:

grep -rn "from 'lodash'" src/ | head -20

Look for: Single function imports that could be inlined

Dead Code Patterns

Exported but never imported:

# Find all exports
grep -rn "export (const|function|class|interface|type)" src/

# For each export, check if imported elsewhere
grep -r "import.*{ExportName}" src/

Unused utility files:

# Find utility/helper files
find src/ -name "*util*" -o -name "*helper*"

# Check if imported
grep -r "from.*utils" src/

Deprecated code markers:

grep -rn "@deprecated\|DEPRECATED\|DO NOT USE" src/

Severity Mapping

Use these criteria when classifying findings:

| Pattern | Severity | Rationale | | ------------------------------------- | -------- | --------------------------- | | Vulnerable dependency (critical/high) | critical | Security risk in production | | Unused dependency >100kb | high | Significant bundle bloat | | Multiple packages for same purpose | high | Maintenance overhead | | Vulnerable dependency (moderate) | medium | Security risk, lower impact | | Unused dependency 10-100kb | medium | Moderate bundle bloat | | Unused devDependency | medium | Maintenance overhead | | Single-use utility from large library | medium | Tree-shaking opportunity | | Unused dependency <10kb | nitpick | Minimal impact | | Loose version ranges (^, ~) | nitpick | Potential instability | | Incorrect dependency category | nitpick | Organization issue |

Common Dependency Patterns

Removal Candidates

High Confidence (Unused):

  • Found by depcheck/Knip
  • Zero imports in codebase
  • Not in ignored files (scripts, config)
  • Not peer dependency of other packages

Medium Confidence (Low Usage):

  • 1-2 imports total
  • Used only for simple operations
  • Easy to inline or replace
  • Alternative is smaller/native

Consider Alternatives:

  • Large package (>50kb) with light usage
  • Deprecated/unmaintained package
  • Duplicate functionality exists
  • Native alternative available

Size Reference (Approximate)

| Category | Examples | Typical Size | | ------------------- | ----------------------------- | ------------ | | Heavy date libs | moment | 70kb | | Light date libs | dayjs, date-fns (tree-shaken) | 2-10kb | | Heavy utilities | lodash (full) | 70kb | | Light utilities | lodash-es (per function) | 1-5kb | | HTTP clients | axios, node-fetch | 10-15kb | | Native alternatives | fetch, Intl API | 0kb |

Refactoring Patterns

Replace large utility with inline:

// Before: lodash.debounce (71kb library)
import _ from 'lodash';
_.debounce(fn, 300);

// After: inline (0kb)
const debounce = (fn, ms) => {
  let timeout;
  return (...args) => {
    clearTimeout(timeout);
    timeout = setTimeout(() => fn(...args), ms);
  };
};

Replace with tree-shakeable alternative:

// Before: full library
import moment from 'moment';
moment(date).format('YYYY-MM-DD');

// After: specific function
import { format } from 'date-fns/format';
format(date, 'yyyy-MM-dd');

Replace with native alternative:

// Before: lodash
import { isEmpty } from 'lodash';
isEmpty(obj);

// After: native
Object.keys(obj).length === 0;

Analysis Priority

  1. Run automated scripts first (if tools available)

    • review-unused-deps.sh for unused packages
    • review-unused-code.sh for dead code
    • npm audit for security issues
  2. Parse script outputs for package names and file locations

  3. Verify usage with grep for each flagged package

    • Count imports
    • Check import patterns (default vs named)
    • Identify usage locations
  4. Read package.json to check:

    • Version ranges
    • Dependency categorization
    • Duplicate functionality
  5. Cross-reference findings:

    • Unused package + large size = high priority
    • Low usage + available alternative = medium priority
    • Vulnerable package + unused = critical priority

Integration Notes

  • This skill provides detection methods and patterns only
  • Output formatting is handled by the calling agent
  • Severity classification should align with agent's schema
  • Do NOT include effort estimates, bundle size savings calculations, or success criteria
  • Do NOT provide refactoring instructions beyond pattern examples

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/npm-dependencies-review-mmlj2of7' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/npm-dependencies-review-mmlj2of7/download' --output '.skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md.part' && mv '.skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md.part' '.skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Bash, Read, Grep, Glob

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md' && test -s '.skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/reviewing-dependencies' && cp -R '.skill-downloads/npm-dependencies-review-mmlj2of7' '.claude/skills/reviewing-dependencies'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/npm-dependencies-review-mmlj2of7'

openskills read 'npm-dependencies-review-mmlj2of7'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/npm-dependencies-review-mmlj2of7/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills