dependency-checker
Skill0 starsChanged 13 months agoMITView on GitHub
Software Composition Analysis (SCA) for detecting vulnerable dependencies and license compliance
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Nikoxkx/Agent-Skillstheir own version, first seen Jun 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Nikoxkx/Agent-Skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- aws-cost-analyzerSkill
- code-reviewerSkill
- dast-scannerSkill
- database-optimizerSkill
- git-workflowSkill
- java-profilerSkill
- jira-integrationSkill
- memory-analyzerSkill
- penetration-testerSkill
- performance-monitorSkill
- python-profilerSkill
- refactoring-assistantSkill
- sast-analyzerSkill
- security-scannerSkill
- skill-validatorSkill
- tdd-workflowSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 465
Automated Scanning: Run on every commit
- Very specific: line 467
Version Pinning: Use lock files (package-lock.json, Pipfile.lock)
- Distinctive: line 469
Test Thoroughly: Run full test suite after updates
- Distinctive: line 471
License Review: Check before adding dependencies
- Distinctive: line 473
Audit New Packages: Check reputation, maintenance
- Distinctive: line 474
Document Exceptions: If can't upgrade, document why
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dependency Checker Skill
Overview
Software Composition Analysis (SCA) skill for identifying vulnerable dependencies, outdated packages, and license compliance issues across multiple package managers and languages.
Capabilities
1. Vulnerability Detection
- Known CVE detection in dependencies
- Transitive dependency analysis
- Severity assessment (Critical, High, Medium, Low)
- Exploit availability checking
- Patch availability verification
2. Dependency Management
- Outdated package identification
- Version conflict detection
- Breaking change alerts
- Update recommendations
- Lock file validation
3. License Compliance
- License compatibility checking
- GPL/LGPL contamination detection
- Commercial use restrictions
- Attribution requirements
4. Multi-Language Support
- JavaScript/TypeScript: npm, yarn, pnpm
- Python: pip, pipenv, poetry
- Java: Maven, Gradle
- Ruby: Bundler
- Go: go.mod
- .NET: NuGet
- PHP: Composer
Tools Integration
Snyk (Primary Tool)
Industry-leading SCA with AI-powered fix recommendations:
# Install Snyk
npm install -g snyk
# Authenticate
snyk auth
# Test for vulnerabilities
snyk test
# Monitor for new vulnerabilities
snyk monitor
# Fix vulnerabilities automatically
snyk fixGitHub Dependabot
Automated dependency updates:
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"npm audit (Built-in)
# Check vulnerabilities
npm audit
# Show detailed report
npm audit --json > audit-report.json
# Fix automatically
npm audit fix
# Force fix (may introduce breaking changes)
npm audit fix --forcepip-audit (Python)
# Install
pip install pip-audit
# Scan dependencies
pip-audit
# Check specific requirements file
pip-audit -r requirements.txt
# Output JSON
pip-audit --format json > pip-audit.jsonOWASP Dependency-Check
Multi-language dependency scanner:
# Download
wget https://github.com/jeremylong/DependencyCheck/releases/download/v8.0.0/dependency-check-8.0.0-release.zip
# Run scan
./dependency-check/bin/dependency-check.sh \
--project "MyProject" \
--scan ./src \
--format ALL \
--out ./reportsIntegration Scripts
dependency_scan.sh
Automated multi-language dependency scanning:
#!/bin/bash
# Comprehensive dependency vulnerability scan
REPORT_DIR="security-reports/dependencies"
mkdir -p $REPORT_DIR
echo "=== Dependency Vulnerability Scan ==="
# 1. JavaScript/Node.js
if [ -f "package.json" ]; then
echo "Scanning npm dependencies..."
npm audit --json > $REPORT_DIR/npm-audit.json || true
if command -v snyk &> /dev/null; then
echo "Running Snyk scan..."
snyk test --json > $REPORT_DIR/snyk-npm.json || true
fi
fi
# 2. Python
if [ -f "requirements.txt" ] || [ -f "Pipfile" ]; then
echo "Scanning Python dependencies..."
pip-audit --format json > $REPORT_DIR/pip-audit.json || true
if command -v snyk &> /dev/null; then
echo "Running Snyk scan (Python)..."
snyk test --file=requirements.txt --json > $REPORT_DIR/snyk-python.json || true
fi
fi
# 3. Java
if [ -f "pom.xml" ]; then
echo "Scanning Maven dependencies..."
mvn dependency:tree > $REPORT_DIR/maven-tree.txt
if command -v snyk &> /dev/null; then
echo "Running Snyk scan (Java)..."
snyk test --file=pom.xml --json > $REPORT_DIR/snyk-java.json || true
fi
fi
# 4. OWASP Dependency Check
if command -v dependency-check &> /dev/null; then
echo "Running OWASP Dependency Check..."
dependency-check --project "MyProject" --scan . --format JSON \
--out $REPORT_DIR/owasp-dependency-check.json
fi
echo "=== Scan Complete ==="
echo "Reports saved to: $REPORT_DIR/"analyze_dependencies.py
Parse and prioritize vulnerabilities:
#!/usr/bin/env python3
import json
import sys
from collections import defaultdict
def analyze_npm_audit(json_file):
"""Analyze npm audit results"""
try:
with open(json_file) as f:
data = json.load(f)
except FileNotFoundError:
print(f"⚠️ {json_file} not found")
return {}
vulnerabilities = data.get('vulnerabilities', {})
findings = defaultdict(list)
for pkg, vuln in vulnerabilities.items():
severity = vuln.get('severity', 'unknown')
findings[severity].append({
'package': pkg,
'severity': severity,
'via': vuln.get('via', []),
'range': vuln.get('range', ''),
'fix_available': vuln.get('fixAvailable', False)
})
return findings
def analyze_snyk_results(json_file):
"""Analyze Snyk results"""
try:
with open(json_file) as f:
data = json.load(f)
except FileNotFoundError:
print(f"⚠️ {json_file} not found")
return {}
vulnerabilities = data.get('vulnerabilities', [])
findings = defaultdict(list)
for vuln in vulnerabilities:
severity = vuln.get('severity', 'unknown')
findings[severity].append({
'package': vuln.get('packageName'),
'version': vuln.get('version'),
'title': vuln.get('title'),
'cve': vuln.get('identifiers', {}).get('CVE', []),
'upgrade': vuln.get('upgradePath', []),
'exploitMaturity': vuln.get('exploitMaturity', 'unknown')
})
return findings
def print_summary(npm_findings, snyk_findings):
"""Print combined summary"""
print("=== Dependency Vulnerability Summary ===\n")
all_findings = defaultdict(list)
for severity in ['critical', 'high', 'medium', 'low']:
all_findings[severity].extend(npm_findings.get(severity, []))
all_findings[severity].extend(snyk_findings.get(severity, []))
for severity in ['critical', 'high', 'medium', 'low']:
findings = all_findings.get(severity, [])
if findings:
print(f"\n{severity.upper()}: {len(findings)} vulnerabilities")
for finding in findings[:5]: # Show first 5
pkg = finding.get('package', 'Unknown')
title = finding.get('title', 'No description')
print(f" • {pkg}: {title[:60]}...")
if finding.get('fix_available'):
print(f" ✓ Fix available")
elif finding.get('upgrade'):
print(f" ✓ Upgrade to: {finding['upgrade']}")
if finding.get('cve'):
print(f" 🔗 CVE: {', '.join(finding['cve'][:2])}")
# Calculate risk score
score = (
len(all_findings['critical']) * 10 +
len(all_findings['high']) * 5 +
len(all_findings['medium']) * 2 +
len(all_findings['low']) * 1
)
print(f"\n=== Risk Score: {score} (Lower is better) ===")
if score > 50:
print("⚠️ HIGH RISK: Immediate action required")
elif score > 20:
print("⚠️ MEDIUM RISK: Address soon")
else:
print("✓ LOW RISK: Monitor and update regularly")
if __name__ == '__main__':
npm_findings = analyze_npm_audit('security-reports/dependencies/npm-audit.json')
snyk_findings = analyze_snyk_results('security-reports/dependencies/snyk-npm.json')
print_summary(npm_findings, snyk_findings)update_dependencies.sh
Automated dependency updates:
#!/bin/bash
# Update dependencies with testing
echo "=== Dependency Update Process ==="
# 1. Create backup branch
git checkout -b dependency-update-$(date +%Y%m%d)
# 2. Update npm dependencies
if [ -f "package.json" ]; then
echo "Updating npm dependencies..."
npm update
npm audit fix
# Run tests
echo "Running tests..."
npm test
if [ $? -ne 0 ]; then
echo "❌ Tests failed after npm update"
git checkout main
exit 1
fi
fi
# 3. Update Python dependencies
if [ -f "requirements.txt" ]; then
echo "Updating Python dependencies..."
pip list --outdated --format=json | \
jq -r '.[] | "\(.name)==\(.latest_version)"' > requirements.new.txt
# Test with new versions
pip install -r requirements.new.txt
pytest
if [ $? -eq 0 ]; then
mv requirements.new.txt requirements.txt
else
echo "❌ Tests failed after pip update"
rm requirements.new.txt
git checkout main
exit 1
fi
fi
# 4. Commit changes
git add package.json package-lock.json requirements.txt
git commit -m "chore: update dependencies
- Updated npm packages
- Updated Python packages
- All tests passing"
echo "✓ Dependencies updated successfully"
echo "Review changes and merge: git checkout main && git merge dependency-update-$(date +%Y%m%d)"Common Vulnerability Scenarios
1. Outdated Dependencies
{
"name": "lodash",
"version": "4.17.15", // Vulnerable
"fix": "4.17.21" // Patched
}Solution:
npm update lodash
# Or specify version
npm install lodash@4.17.212. Transitive Dependencies
app (your code)
└─ express@4.16.0
└─ qs@6.5.2 (VULNERABLE!)Solution:
# Force resolution (npm)
npm install qs@6.11.0
# Or use overrides in package.json
{
"overrides": {
"qs": "6.11.0"
}
}3. No Fix Available
⚠️ Prototype Pollution in lodash < 4.17.21
No patch available for dependency treeSolution:
- Find alternative package
- Vendor and patch manually
- Accept risk (with documentation)
- Refactor to remove dependency
CI/CD Integration
GitHub Actions with Dependabot
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
labels:
- "dependencies"
- "security"
reviewers:
- "security-team"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"Snyk Monitoring
name: Snyk Security Scan
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=highLicense Compliance
Check Licenses
# npm
npm install -g license-checker
license-checker --summary
# Python
pip install pip-licenses
pip-licenses --format=markdown > licenses.md
# Output incompatible licenses
license-checker --onlyAllow "MIT;Apache-2.0;BSD-3-Clause;ISC"Common License Issues
- GPL: Requires source code disclosure
- AGPL: Triggers on network use
- LGPL: Linking requirements
- Commercial: May require purchase
Best Practices
- Automated Scanning: Run on every commit
- Dependabot/Renovate: Enable automatic PRs
- Version Pinning: Use lock files (package-lock.json, Pipfile.lock)
- Regular Updates: Weekly dependency updates
- Test Thoroughly: Run full test suite after updates
- Security Alerts: Configure notifications
- License Review: Check before adding dependencies
- Minimal Dependencies: Fewer deps = fewer vulnerabilities
- Audit New Packages: Check reputation, maintenance
- Document Exceptions: If can't upgrade, document why
Vulnerability Remediation Priority
| Severity | CVSS Score | Exploitability | Timeline |
| Critical | 9.0-10.0 | Public exploit | Immediate (24h) |
| High | 7.0-8.9 | Proof of concept | 7 days |
| Medium | 4.0-6.9 | Theoretical | 30 days |
| Low | 0.1-3.9 | Unlikely | 90 days |
Requirements
# Snyk
npm install -g snyk
# npm audit (built-in with npm)
# Python
pip install pip-audit safety
# OWASP Dependency Check
wget https://github.com/jeremylong/DependencyCheck/releases/latest
# License checker
npm install -g license-checker
pip install pip-licensesMetrics to Track
- Known vulnerabilities: 0 critical, 0 high
- Average age of dependencies: < 6 months
- Update frequency: Weekly
- Time to patch: < 24h for critical
- Dependency count: Minimize
- License compliance: 100%
- False positive rate: < 5%
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

