agentleFS
thejefflarsonthejefflarson/soundcheck/.claude/skills/supply-chain/SKILL.md

supply-chain

Skill20 starsChanged 4 months agoMITView on GitHub

Detects supply-chain risks in dependency manifests, lockfiles, install

  • Pipes a download into a shell
  • Installs packages

8 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 8 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No lockfile committed alongside the manifest — builds aren't reproducible and you can't tell when a dependency moved

    line 27
  2. Distinctive:

    No automated dependency-update bot, or one that doesn't auto-merge passing PRs — sitting on known-vulnerable versions

    line 29
  3. Distinctive:

    No vulnerability scanner in CI, or a scanner whose findings do not fail the build

    line 30

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Supply Chain Security Check (A03:2025)

What this checks

Most exploited supply-chain incidents come from not updating fast enough (sitting on known-CVE versions) and from unverified installs (curl-to-shell, typosquats, install hooks). Aggressive exact-pinning is no longer the right default — it traps you on vulnerable releases. Lockfiles + scanners + auto-merge of patches is.

Auto-merging dependency-update PRs (Dependabot, Renovate) that clear CI — tests plus a vulnerability scanner — is the recommended posture for patch and minor bumps, not a finding. Do not report it as a risk. The reportable condition is the absence of that automation, which leaves known-CVE versions sitting unmerged.

Vulnerable patterns

  • No lockfile committed alongside the manifest — builds aren't reproducible and you can't tell when a dependency moved
  • CI install command silently re-resolves instead of failing on lockfile drift (npm install vs npm ci, pip install vs pip install --require-hashes, bundle install vs bundle install --frozen)
  • No automated dependency-update bot, or one that doesn't auto-merge passing PRs — sitting on known-vulnerable versions
  • No vulnerability scanner in CI, or a scanner whose findings do not fail the build
  • Direct dependencies pinned to exact versions with no auto-update path — strands you on known-CVE releases
  • Installs from arbitrary git refs, tarball URLs, or local paths with no integrity guarantee
  • Install hooks, build scripts, or CI steps that pipe remote content into a shell — curl | bash, wget | sh, iwr | iex
  • AI-generated manifests with hallucinated package names attackers can claim (slopsquatting)

Fix immediately

Flag the issue, explain the risk, and suggest a fix. Translate to the package manager and CI system of the audited file.

  1. Direct dependencies use a range that accepts patches and minors automatically (npm caret, Python ~=, Ruby ~>, Cargo's default caret). Patches are nearly always security fixes; an exact pin means a CVE sits in your build until someone clicks "bump." Exact pins only for documented known-incompatibility cases.
  2. A lockfile is committed that records resolved transitive versions with content hashes. Reproducibility lives here, not in the manifest.
  3. CI installs with a frozen-lockfile command that fails on lockfile-manifest drift.
  4. A dependency-update bot runs on a schedule (Renovate, Dependabot), opens PRs for patches and minors, and auto-merges after tests + scanner pass. This is how patches reach production fast enough to matter.
  5. A vulnerability scanner runs in CI and fails the build on high-severity findings. Advisory-only scanners do not gate.
  6. No install hook, build script, or CI step pipes remote content into a shell.
  7. AI-suggested or unrecognized package names are verified in the registry before install — slopsquatted typosquats are a growing vector in AI-generated manifests.

Verification

  • Direct dependencies use a range that auto-accepts patches and minors; exact pins only for documented known-incompatibility cases
  • A lockfile is committed with resolved transitive versions and content hashes
  • CI installs with a frozen-lockfile command that fails on drift
  • A dependency-update bot is configured and auto-merges patches and minors after tests and scanner pass
  • A vulnerability scanner runs in CI and fails the build on high-severity findings
  • No install hooks, build scripts, or CI steps pipe remote content into a shell
  • Any AI-generated or unrecognized package names are flagged for registry verification before install

References

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.