supply-chain-audit
Skill1 starsChanged 13 days agoMITView on GitHub
Audit third-party dependencies (npm, PyPI, Go modules, Maven, Rubygems, crates) for version-matched known vulnerabilities, abandoned upstreams, install-script malware, publisher/typosquat risk, and license exposure. Use in any engagement with source or manifest access: package.json, requirements.txt, go.mod, pom.xml, Gemfile, Cargo.toml, lockfiles. Keywords: SCA, dependency audit, supply chain, osv-scanner, grype, npm audit, pip-audit, govulncheck, typosquat, install scripts, lockfile, SBOM, EPSS, KEV. Do NOT use for first-party code review (use code-review / static-analysis-toolkit).
9 other projects use a version of this.
Adopted by
Most recently taken up by
- HetCreep/CoalMinetheir own version, first seen Nov 8, 2026
- TheColliery/CoalMinetheir own version, first seen Nov 8, 2026
- michaelalber/ai-toolkittheir own version, first seen Nov 1, 2026
- mtarcure/claude-vibe-squadtheir own version, first seen Oct 28, 2026
- imarpanpatra/portcullistheir own version, first seen Oct 13, 2026
- ulises-jeremias/agent-toolkittheir own version, first seen Aug 31, 2026
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- mtarcure/claude-vibe-squad★ 220same name
- crafter-station/skills★ 111same name
- ulises-jeremias/agent-toolkit★ 19same name
- HetCreep/CoalMine★ 15same name
- TheColliery/CoalMine★ 15same name
- Montimage/skills★ 9same name
- michaelalber/ai-toolkit★ 3same name
- IsaacGemal/claude-skills★ 2same name
- imarpanpatra/portcullis★ 0same 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 repository124 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ai-agent-reconSkill
- ai-supply-chainSkill
- exfiltration-via-aiSkill
- indirect-injectionSkill
- llm-fuzzingSkill
- prompt-injectionSkill
- rag-poisoningSkill
- tool-abuseSkill
- chain-analysisSkill
- chain-auth-to-takeoverSkill
- chain-customSkill
- chain-graph-walkSkill
- chain-idor-to-mass-dataSkill
- chain-info-to-exploitSkill
- chain-multi-appSkill
- chain-ssrf-to-cloudSkill
- chain-web-to-rceSkill
- chain-xss-to-account-takeoverSkill
- email-securitySkill
- engagement-flowSkill
- finding-disciplineSkill
- http-headers-securitySkill
- oob-interactionsSkill
- opsec-disciplineSkill
- research-firstSkill
- scope-disciplineSkill
- scope-importSkill
- session-contextSkill
- 2fa-bypassSkill
- api-abuseSkill
- auth-bypassSkill
- broken-access-controlSkill
- business-logicSkill
- cache-poisoningSkill
- clickjackingSkill
- corsSkill
- credential-testingSkill
- crlf-injectionSkill
- cryptographic-oracleSkill
- csrfSkill
- css-injectionSkill
- data-exfiltration-testSkill
- deserializationSkill
- email-injectionSkill
- file-uploadSkill
- fuzzingSkill
- graphqlSkill
- grpcSkill
- host-headerSkill
- http-smugglingSkill
- idorSkill
- info-disclosureSkill
- jwtSkill
- lateral-movementSkill
- lfi-rfiSkill
- mass-assignmentSkill
- oauthSkill
- open-redirectSkill
- parameter-pollutionSkill
- The first 60 shown.
The file
Files
Purpose
First-party SAST covers code the client wrote. Most real exposure ships in code they imported. This skill produces version-matched, reachability-noted dependency findings — NOT raw scanner dumps. A dependency finding without a demonstrated or credible reachability path follows the same anti-fabrication rules as everything else.
Methodology
- Enumerate manifests AND lockfiles. Lockfiles are ground truth —
package.jsonsays^4.17.0,package-lock.jsonsays what is actually deployed. Missing lockfile in a repo that should have one is itself a process finding (info). - Scan with an advisory DB, version-matched:
osv-scanner -r . # multi-ecosystem, OSV database grype dir:. # SBOM-driven, grype + syft pip-audit -r requirements.txt # Python govulncheck ./... # Go — includes reachability analysis npm audit --package-lock-only # npm without touching node_modules - Enrich with exploitation intelligence (references/cvss4-epss-kev.md): for each CVE/GHSA hit, pull EPSS score and CISA KEV membership. A critical-CVSS dependency bug with EPSS 0.1% ranks below a medium with KEV listing. Record both in the finding metadata.
- Reachability triage — the step that separates audit from scanner dump.
For each vulnerable dependency: is the vulnerable FUNCTION actually called
by first-party code? (
govulncheckdoes this for Go automatically; for others, grep imports + call sites via the static-analysis-toolkit.) Tag each finding:reachable(treat like a real vuln — try to demonstrate via the relevant hunt skill),present-not-reachable(report as hardening, lower severity),unknown(state it). - Abandonment and publisher risk:
- Last release / last commit age; maintainer count; open security issues.
- Install scripts (
preinstall/postinstallin npm,setup.pyexec in legacy Python) — enumerate and read them; they run with build privileges. - Typosquat/dependency-confusion check: internal-looking package names resolved from PUBLIC registries = dependency confusion finding (high).
- Transitive depth: a vuln 6 levels deep in a dev-only tree ≠ same risk as a direct production dependency. Record the dependency path.
- Demonstrate where possible. A reachable, exploitable dependency vuln in a RUNNING target (e.g., known CVE in an exposed endpoint's library) should be triggered against the live app per the CVE's PoC — that promotes it from "dependency audit note" to a Demonstrated finding. Version-only matching without trigger caps at Inferred (anti-fabrication rules).
Validation Gate (minimum proof)
- Scanner output alone is a lead. Minimum for a reported finding: affected version confirmed in the LOCKFILE + advisory ID + reachability tag (reachable / not-reachable / unknown) + EPSS/KEV enrichment.
Demonstratedrequires the live trigger (exploit fired against the running target within scope) — same bar as any other class.
Gotchas
- npm audit false confidence:
npm audit fixsuggestions can be breaking; never run fix commands against a client repo without a gate. - Transitive ≠ unimportant, but rank it: report direct-production first, transitive with EPSS/KEV second, dev-only last.
- Private registries: internal mirrors may serve stale metadata — verify the resolved version from the lockfile/artifact, not the registry listing.
- License findings (GPL in proprietary SaaS) belong in the report's process/observations section, not as security vulnerabilities.
- Batch-dumping 200 transitive advisories into a report is scanner theater — dedupe, group by package, and gate by severity mode (findings.py HUNT_MODE_SEVERITY_GATES).
Chain Anchors
- Reachable RCE-class dependency vuln → attempt live trigger → chains to rce.
- Dependency confusion (internal name on public registry) → can YOU register it? (Do NOT register without an operator gate — but document the exposure.)
- Vulnerable auth/crypto library → feed the affected function list to the relevant hunt skill (jwt, session-management) for live testing.
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.

