skill-rot
Verifies the checkable claims inside SKILL.md files still hold against the current repo and stamps fresh ones.
skill-rot
ADLC phase: calibration (cross-phase) · Gate: every skill's verifiable claims (commands, paths, scripts) still resolve against the current repo.
What it defends against
Skills are caches, and a stale cache delivers misinformation with the authority
of an expert. That is worse than no skill at all. skill-rot walks each SKILL.md,
extracts the claims it can actually check (command names, file paths, and
npm/npx/pnpm/yarn script references), and verifies them against the
repo. Verifiable-but-failing claims are stale and fail the gate; claims it
cannot adjudicate (URLs, missing package.json) are unverifiable and never
counted against you. Skills with zero checkable claims are reported as [NO-CLAIMS] and are never stamped under --write. A skill whose claims are all unverifiable is reported as [UNVERIFIED], is not counted clean, and is never stamped. Run it weekly in CI to keep the skill corpus honest.
Usage
adlc skill-rot [path ...] [--write] [--json]Positional paths override the default search roots (.claude/skills,
.agents/skills, skills), which are searched only when they exist.
Symlinked skill directories and symlinked SKILL.md files are followed, with cycle detection preventing infinite recursion on recursive symlink graphs. Directories named node_modules or .git below a search root are skipped. A symlink resolving into one is skipped during default discovery and is an operational error (exit 1) when you pass explicit paths; name the target path to check it.
| Flag | Description |
|---|---|
--write | When every claim in a skill is ok, upsert last-verified: <YYYY-MM-DD> into its frontmatter. Skills with stale claims or zero claims are never stamped. |
--json | Machine-readable output with skills[] and a summary. |
Exit codes
SKILL.md files found, bad input, or an explicit path that cannot be fully inspected).2: gate fails. At least one skill has stale claims.Example
$ adlc skill-rot .claude/skills
SKILL OK STALE UNVERIFIABLE
----------------------------- -- ----- ------------
.claude/skills/build/SKILL.md 7 1 2
✗ 1 skill has stale claims (command `pnpm turbo` no longer resolves)
exit 2Go deeper
packages/skill-rot. See the toolkit overview for how skill freshness feeds the calibration loop.
rejection-mining
Mines human PR review objections into reusable prosecution lenses so recurring "no"s are caught pre-submit.
backlog-groom
Verifies each open issue's premise against the code at HEAD, clusters and ranks the backlog, and emits a versioned groomed set. Read-only by default; --apply writes gated, floored conclusions.