From harness-claude
Manages third-party dependency risks using npm audit, lockfiles, Dependabot updates, script disabling, and vulnerability monitoring. Useful when adding dependencies, setting up CI scans, responding to CVEs, or reviewing package trees.
npx claudepluginhub intense-visions/harness-engineering --plugin harness-claudeThis skill uses the workspace's default tool permissions.
> Manage third-party dependency risks with auditing, lockfiles, automated scanning, and supply chain hardening
Audits dependencies for vulnerabilities, verifies lockfile integrity with npm/yarn/pnpm/Python/Go/Ruby, and sets up CI scanning strategies.
Audits dependency configs for supply chain risks like unpinned versions, missing lockfiles, postinstall scripts in package.json, requirements.txt, Gemfile, go.mod, Cargo.toml, pom.xml. Hardens with pinning, SBOM, signing best practices.
Checks npm dependencies for vulnerabilities using Bash tools. Provides remediation steps, best practices, and configurations for secure JavaScript projects. Activates on dependency checker phrases.
Share bugs, ideas, or general feedback.
Manage third-party dependency risks with auditing, lockfiles, automated scanning, and supply chain hardening
npm audit regularly and in CI. It checks installed packages against the npm advisory database for known vulnerabilities.# Check for vulnerabilities
npm audit
# Fix automatically where possible
npm audit fix
# Only report high and critical severity
npm audit --audit-level=high
# CI gate — fail build on high/critical vulnerabilities
npm audit --audit-level=high --production
Always commit lockfiles. package-lock.json, yarn.lock, or pnpm-lock.yaml pin exact dependency versions. Without a lockfile, npm install can silently install different (potentially compromised) versions.
Set up automated dependency updates with Dependabot or Renovate.
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 10
groups:
dev-dependencies:
dependency-type: development
update-types: [minor, patch]
production-dependencies:
dependency-type: production
update-types: [patch]
ignore:
- dependency-name: '*'
update-types: ['version-update:semver-major']
# Check package health signals
npm info <package> # Last publish date, maintainers, weekly downloads
npx is-my-dep-secure <package> # Security audit
# Manual checklist:
# - Actively maintained? (commits within last 6 months)
# - Trusted maintainer? (known individual or organization)
# - Reasonable download count? (not a typosquat of a popular package)
# - Small dependency tree? (fewer transitive deps = smaller attack surface)
# - License compatible? (MIT, Apache-2.0, ISC are safe for commercial use)
--ignore-scripts for untrusted packages. Postinstall scripts can execute arbitrary code. Disable them globally and whitelist trusted packages.# Disable all lifecycle scripts globally
npm config set ignore-scripts true
# Allow specific packages
npx allow-scripts
# Or use package.json
{
"scripts": {
"preinstall": "npx only-allow pnpm"
}
}
{
"dependencies": {
"jsonwebtoken": "9.0.2",
"bcrypt": "5.1.1",
"helmet": "7.1.0"
}
}
# GitHub Actions — run audit on every PR
- name: Security audit
run: npm audit --audit-level=high --production
depcheck to find unused packages.npx depcheck
# Lists unused dependencies, missing dependencies, and unused devDependencies
integrity attributes to verify the script has not been tampered with.<script
src="https://cdn.example.com/lib.js"
integrity="sha384-abc123..."
crossorigin="anonymous"
></script>
Supply chain attack vectors:
lodas instead of lodash — a malicious package with a similar namenpm install before you ever import the packageDependency confusion prevention: Use scoped packages (@company/utils), configure .npmrc to point to your private registry for scoped packages, and use npm-package-arg to detect resolution anomalies.
# .npmrc
@company:registry=https://npm.company.com/
SBOM (Software Bill of Materials): Generate an SBOM for compliance and audit trails. Use cyclonedx-npm or spdx-sbom-generator to produce machine-readable dependency inventories.
When to accept audit findings: Some vulnerabilities are in dev dependencies that never run in production, or in code paths your application does not exercise. Document accepted risks rather than ignoring them silently.
Common mistakes:
npm audit output because "everything still works"npm audit fix --force without reviewing breaking changesnpm install in production instead of npm ci (lockfile not respected)https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_and_Outdated_Components_Cheat_Sheet.html