evo-software-dependency-audit
SkillFiles & storageSecurity audit skill for scanning dependency files (e.g., package-lock.json) using Trivy offline scanner to identify HIGH/CRITICAL vulnerabilities and produce CSV reports.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the evo-software-dependency-audit skill
What this skill tells your AI
The instructions your AI receives, as published by openlair/openskill in tasks-evolved/software-dependency-audit/environment/skills/evo-software-dependency-audit/SKILL.md and read by ahel’s review.
CRITICAL: You MUST Use Trivy (Not npm audit)
DO NOT use npm audit, yarn audit, snyk, or any other tool. The ONLY correct tool for this task is Trivy with its pre-built offline vulnerability database. Using any other tool will produce incorrect results because different tools use different vulnerability databases with different CVE mappings, CVSS scores, and fixed version information.
Trivy is already installed and its offline database is pre-loaded. You do not need internet access.
Quickest Path to Solution
A complete, ready-to-run Python script is provided. Simply execute it:
python3 /root/.claude/skills/evo-software-dependency-audit/scripts/run_audit.py
This will:
- Run Trivy offline scan on
/root/package-lock.json - Parse the JSON output
- Extract HIGH and CRITICAL vulnerabilities
- Write
/root/security_audit.csvwith the correct format
That single command is all you need. Do not modify the script. Do not use npm audit. Do not try alternative approaches.
Alternative: Use as a Python Library
import sys
sys.path.insert(0, '/root/.claude/skills/evo-software-dependency-audit/scripts')
from utils import full_audit
vulns = full_audit('/root/package-lock.json', '/root/security_audit.csv')
print(f"Found {len(vulns)} vulnerabilities")
Why Trivy and Not npm audit
npm audituses GitHub's live advisory database (GHSA IDs, different CVSS scores, different fixed versions)- Trivy's offline DB uses NVD as primary source with specific CVE IDs, NVD CVSS scores, and comprehensive fixed version lists
- The expected output format requires Trivy-specific data (e.g., comma-separated fixed versions like "7.5.2, 6.3.1, 5.7.2")
npm auditreports many more vulnerabilities than the offline Trivy DB for the same lockfile
Technical Details
Trivy Offline Scanning Flags
All four flags are required for air-gapped operation:
--skip-db-update— prevents fetching primary vuln DB--skip-java-db-update— prevents fetching Java artifact index--skip-check-update— prevents fetching misconfiguration policies--offline-scan— suppresses any remaining outbound API calls
CVSS Score Extraction Priority
For extracting CVSS scores from Trivy's nested CVSS object, use this vendor precedence:
- NVD V3Score — governmental authority, standard reference (matches ground truth)
- GHSA V3Score — GitHub Security Advisory
- RedHat V3Score — general fallback
- Any other vendor V3Score
- V2Score with same priority cascade (legacy)
CSV Output Format
Columns: Package,Version,CVE_ID,Severity,CVSS_Score,Fixed_Version,Title,Url
- Fixed_Version: Use "N/A" when no fix is available
- CVSS_Score: Numeric float (e.g., 7.5, 9.8)
- Title: From Trivy's Title field
- Url: PrimaryURL from Trivy (typically avd.aquasec.com)
FixedVersion Handling
- Trivy omits the FixedVersion key entirely when no fix exists (Go's
json:",omitempty") - Must use
dict.get('FixedVersion', '')to avoid KeyError - Map missing/empty to "N/A" in CSV output
Deduplication
- Deduplicate by
(PkgName, VulnerabilityID)tuple - Same CVE can appear multiple times due to transitive dependency resolution
Functions in scripts/utils.py
find_trivy_cache_dir()- Locate Trivy cache directoryrun_trivy_scan(lockfile_path, output_json_path, ...)- Run trivy offline scanload_trivy_json(filepath)- Load trivy JSON outputextract_cvss_score(cvss_data)- Extract best CVSS score with NVD>GHSA>RedHat priorityextract_vulnerabilities(trivy_data, severities)- Parse and deduplicate vulnerabilitieswrite_csv(vulnerabilities, output_path)- Write CSV reportfull_audit(lockfile_path, output_csv_path)- Complete end-to-end pipeline
Signals
- GitHub stars
- 91
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
evo-software-dependency-audit- Source
- github.com/openlair/openskill