athola/supply-chain-advisory
Audits dependency supply chains for bad versions, lockfile drift, and artifact integrity. Use when adding deps, handling incidents, or releasing a plugin.
npx skills add https://github.com/athola/claude-night-market --skill supply-chain-advisory
Supply chain attacks bypass traditional code review by compromising upstream
dependencies. This skill provides patterns for detecting, preventing, and
responding to compromised packages in Python ecosystems.
The blocklist is at ${CLAUDE_SKILL_DIR}/known-bad-versions.json.
It is consumed by:
versions detected
make supply-chain-scan: CI/local scanning target{
"package_name": [{
"versions": ["x.y.z"],
"date": "YYYY-MM-DD",
"description": "What the attack did",
"indicators": ["files or patterns to search for"],
"source": "advisory URL",
"severity": "critical|high|medium"
}]
}
${CLAUDE_SKILL_DIR}/known-bad-versions.json!=x.y.z) to affected pyproject.toml filesdocs/dependency-audit.md under Supply Chain Incidentsmake supply-chain-scan to verify detection works# Scan uv.lock files for a specific compromised version
grep -r "package_name.*version" --include="uv.lock" /path/to/projects
# Search for malicious artifacts
find /path/to/projects -name "suspicious_file.pth" 2>/dev/null
# Check installed versions in virtualenvs
find /path/to/projects -path "*/.venv/lib/*/PACKAGE*/METADATA" \
-exec grep "^Version:" {} +
uv.lock includes SHA256 hashes for every package. If a package is
re-published with different content under the same version, uv sync
will fail with a hash mismatch. This is your strongest automatic defense.
| Layer | Tool | Catches |
|-------|------|---------|
| Lockfile hashes | uv.lock SHA256 | Tampered re-published versions |
| Version exclusions | pyproject.toml != | Known-bad versions on fresh resolve |
| SessionStart hook | sanctum hook | Per-session warning for compromised deps |
| CI scanning | OSV, Safety | CVE database, and advisory matching |
| Artifact scanning | make supply-chain-scan | Malicious files (.pth, scripts) |
are the only automatic defense during the attack window
${CLAUDE_SKILL_DIR}/known-bad-versions.json checked againstall lockfiles in scope; any match reported with package name,
bad version, severity, and advisory URL
(!=x.y.z) added to the affected pyproject.toml, entry
documented in docs/dependency-audit.md, and
make supply-chain-scan run to confirm detection works
uv.lock SHA256 hash integrity verified; uv sync failureon hash mismatch surfaces as an explicit supply-chain warning
rather than a generic install error
.pthfiles, unexpected scripts) in virtualenv paths before the
session proceeds
Take athola/supply-chain-advisory from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.