npx skills add ...
npx skills add trailofbits/skills --skill supply-chain-risk-auditor
Audits a project's dependencies for supply-chain risk: version-matched advisories for direct dependencies and the full lockfile tree, abandoned or archived upstreams, npm publisher concentration, and install-time script execution. Use when asked to audit dependencies, assess supply-chain or third-party package risk, or review a dependency tree before an engagement.
npx skills add trailofbits/skills --skill supply-chain-risk-auditor
Generates a supply-chain risk report for a project's direct dependencies (npm, PyPI, Go), plus an advisory sweep of everything its lockfile resolves. Two deterministic scripts do the measuring; your job is the judgment they refuse to automate.
Every figure in this report is a claim about somebody else's project, and hand-collected
figures were measured wrong before this skill was rebuilt around scripts: GitHub
contributor counts said five-plus people maintain lodash where npm's ACL says one, and
gh saw zero downloads for a package that moves 164 million a week. Do not estimate
maintainer counts, downloads, staleness, or CVE history from gh, web search, or
memory — run the collector, and quote what it measured.
The scripts enforce two rules worth knowing before you read their output:
Confirm the target directory has manifests: package.json, pyproject.toml,
requirements*.txt, or go.mod. If none exist, say so and stop — do not audit an
ecosystem this collector does not parse by hand. Lockfiles read for exact versions
and the transitive sweep: package-lock.json/npm-shrinkwrap.json, uv.lock, and
a go 1.17+ go.mod. yarn.lock, pnpm-lock.yaml, and poetry.lock are not read —
the report says so when they are present, and versions fall back to pins or the
latest release.
Check gh auth status. Unauthenticated GitHub allows 60 requests/hour against 5,000,
and the collector makes several per dependency; expect repository criteria to come
back unassessable without it. Say so rather than fixing it silently.
Collect, then render. Put outputs somewhere outside the audited repository unless asked otherwise:
Expect a few minutes for ~50 dependencies — several HTTP requests per dependency,
more with many Go modules, and slower without authenticated gh. If collect.py
exits non-zero, it is refusing to report — relay its message verbatim instead of
retrying or working around it.
Read report.md and findings.json. The report is the deliverable; the JSON carries
the datum behind every verdict when you need to cite one.
Add what the collector cannot, clearly separated from what it measured:
npm ci --ignore-scripts is viable for this
project's build.Write added prose the way a security report reads, and apply the same register to the report addendum and the final reply alike — replies get pasted into tickets and reports verbatim. State the finding, the datum behind it, and the action.
If the report-writing:writing-style skill is available in the session, follow it —
it is the full version of this register.
The rendered report carries facts only. The interpretive rules below are instructions to you, not content for the reader — do not copy them into the deliverable as caveats or framing.
gh can give me maintainer counts faster than the collector." Measured wrong — repo
contributors and registry publish rights are different populations.