.claude/skills/supply-chain-auditor/SKILL.md
# Skill: Supply Chain Auditor ## When to Load Auto-load when: adding dependencies, reviewing packages, updating versions, or discussing `requirements.txt`, `pyproject.toml`, `package.json`. Triggers on `dependency`, `install`, `package`, `CVE`, `audit`, `vulnerable` (≥2 keywords). ## Core Rules Every new dependency addition must pass this checklist before merging: 1. **Pinned** — exact version in production (`==1.2.3` for pip, `"1.2.3"` for npm, not `^` or `~`). 2. **Maintained** — last com
npx skillsauth add pyramidheadshark/ml-claude-infra .claude/skills/supply-chain-auditorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Auto-load when: adding dependencies, reviewing packages, updating versions, or discussing requirements.txt, pyproject.toml, package.json. Triggers on dependency, install, package, CVE, audit, vulnerable (≥2 keywords).
Every new dependency addition must pass this checklist before merging:
==1.2.3 for pip, "1.2.3" for npm, not ^ or ~).Before adding any new package:
[ ] Does stdlib cover this? (json, csv, pathlib, urllib, dataclasses...)
[ ] Is it already a transitive dependency we can promote?
[ ] Last release date < 12 months ago
[ ] Download count > 10k/month (ecosystem signal, not guarantee)
[ ] No open CVEs with CVSS >= 7.0 in last 2 years
[ ] Version pinned exactly in requirements.txt / pyproject.toml
[ ] Added to lockfile (uv.lock / package-lock.json / poetry.lock)
| Anti-Pattern | Risk | Required Action |
|---|---|---|
| Unpinned version (>=, ^, ~, *) in prod | Unexpected breaking update or CVE introduced silently | Pin exact version |
| pip install latest / npm install pkg without version | Non-reproducible builds | Specify version, commit lockfile |
| Package with no recent activity (> 2 years no commits) | Unpatched vulnerabilities accumulate | Find maintained alternative |
| Dependency with known CVE | Direct security risk | Upgrade to patched version or replace |
| Pulling in package only for one utility function | Bloat, supply chain surface | Inline the function (if < 20 lines) |
| curl | bash install pattern | Arbitrary code execution | Use package manager with integrity check |
Run before adding dependencies or before release:
pip-audit # Python: checks PyPI advisory DB
pip-audit --requirement requirements.txt
safety check # alternative Python auditor
npm audit # Node.js
npm audit --audit-level=high # block only high/critical
uv lock --check # verify lockfile is up to date
When this skill is active, append to dependency-related analysis:
[SupplyChain]: BLOCK|WARN|CLEAR — [specific risk] -> [action required]
Examples:
[SupplyChain]: BLOCK — requests>=2.0 is unpinned in production requirements -> pin to requests==2.32.3[SupplyChain]: WARN — last commit on package X was 18 months ago -> verify no open CVEs, consider alternative[SupplyChain]: CLEAR — evaluated: version pinned, no CVEs in advisory DB, maintained within 6 months[dev-dependencies] or requirements-dev.txt) — less strict, but still pintesting
# Design Doc Creator ## When to Load This Skill Load when: design documents, requirements, new project start. Short fixture skill for testing (optional/meta skill).
development
# Windows Developer Guide ## When to Load Automatically loaded on Windows (`platform_trigger: "win32"`). Applies to: `.py`, `.ps1`, `.bat`, `.cmd` files and any Windows-specific workflow. ## Python on Windows ### Encoding (CRITICAL) Windows defaults to `cp1251` / `cp1252` for file I/O. Always specify UTF-8 explicitly: ```python with open("file.txt", "r", encoding="utf-8") as f: content = f.read() Path("file.txt").read_text(encoding="utf-8") Path("file.txt").write_text(content, encodin
development
# Test-First Patterns ## When to Load This Skill Load when writing tests, creating `.feature` files, setting up conftest, discussing test strategy, or reviewing coverage. ## Philosophy Tests are written BEFORE code. Always. No exceptions. The order is: Design Doc → BDD Scenarios → Unit Tests → Implementation. BDD scenarios come from the design document's use cases section — they are a direct translation of business requirements into executable specifications. This makes tests the living do
development
# Skill Developer ## When to Load This Skill Load when: creating a new skill, modifying an existing skill, updating `skill-rules.json`, evaluating skill quality, or refactoring the skill library. ## Skill Anatomy Every skill follows this structure: ``` .claude/skills/{skill-name}/ ├── SKILL.md # main file — MUST be under 500 lines └── resources/ ├── topic-1.md # deep-dive subsections — under 500 lines each └── topic-2.md ``` `SKILL.md` is the entry point