← ClaudeAtlas

maintaining-dependencieslisted

Judgment for keeping a pnpm workspace's dependencies patched and current without a person in the loop — how to fix a transitive advisory, when an override is a lie, why cooldown does not apply to security patches, how to read a red Dependabot PR by its failure signature, and what a CodeQL alert needs before it may be dismissed. Use when running /app:upgrade, fixing a dependency advisory, diagnosing a red Dependabot PR, or deciding whether a bump is safe to land unattended.
dork-labs/dorkos · ★ 10 · AI & Automation · score 75
Install: claude install-skill dork-labs/dorkos
# Maintaining Dependencies `/app:upgrade` is the procedure; this is the reasoning it leans on. Read it before the first lane, and come back to the signature table the moment a dependency PR goes red. ## Core principle: three files, one truth A pnpm workspace states its dependencies in three places, and they disagree silently: | File | What it is | Who may be lying | | --------------------- | ------------------------- | ------------------------------------------ | | every `package.json` | a **claim** about a range | any spec an override rewrites | | root `pnpm.overrides` | a **rewrite** of claims | any entry whose reason is gone | | `pnpm-lock.yaml` | the **truth** — what runs | never, but it only tells you what, not why | Plus the ledger, `contributing/dependency-overrides.md`, which is where the _why_ lives because `package.json` is strict JSON and cannot carry a comment. Every change keeps all four consistent **in one commit**. A bump that moves a spec but not the override that masks it changed nothing and now lies. An override that moves without its ledger entry outlives its reason. The override-masking check — for every touched override, every workspace spec naming that package is at or below its floor — is not optional, it is the difference between a bump and a claim. ## Direct or transitive — the first question for any advisory ```bash pnpm why <package>