๐Ÿ“š Docs Freshness Pipeline

Playground for feat/docs-freshness โ€” why hand-written docs facts rotted, what was actually stale (and what wasn't), and the three layers that now keep them honest.

7
stale CC-floor instances fixed (2.1.148 โ†’ 2.1.183)
10+
111-era & derived-count strings refreshed
12
pages now render facts via <Count/> / <MinCC/>
1
new CI gate: check-docs-facts.mjs

Coverage: before โ†’ after

Generated pages
(reference/, by-category/)
โœ… regenerated every npm run build + CI drift gate diffs them
CLAUDE.md / README floor
โœ… stamped by stamp-cc-support.mjs
Hand-written MDX facts
(floors, counts)
โŒ nothing โ€” literals rot silently (floor missed the 2026-06-20 bump for 10+ days)

The counting trap ๐Ÿชค

Four independent auditors (assessor, two blind refuters, the auto-router) all "verified" the docs counts as stale โ€” using the same wrong method.

MethodResultVerdict
ls src/skills | wc -l114wrong โ€” includes shared/ (no SKILL.md)
ls src/agents/*.md | wc -l38wrong โ€” includes README.md
SKILL.md files / agent files with name:113 / 37matches manifest + shared-data.ts TOTALS

Lesson: agent independence โ‰  method diversity. The gate now encodes the generator's semantics, not raw filesystem counts.

What was actually stale

ClaimWhereStatus
Claude Code floor 2.1.148installation, FAQ, release-channels, troubleshooting, cookbookstale โ€” and security-relevant (skipped range includes the 2.1.163 Bash $HOME secrets-read fix)
"111 skills" era stringsfaq, skills-agents-hooks, writing-skills, doctor refs, skill-fitness.mjsstale (two releases of sweeps missed them)
"27 user-invocable / 22 listed / 47 hidden"skills/overviewstale โ†’ 32 / 23 / 48
"113 skills, 37 agents, 212 hooks"~12 pagescurrent โ€” manually swept 2026-06-24 (#2645)
"81 reference skills"reference-skillscurrent โ€” flagged as stale by the first audit pass, refuted on verification

Gate contract

node scripts/check-docs-facts.mjs
# floor claims:  />= 2.x.x/, /Claude Code 2.x.x or later/, /below 2.x.x/  โ†’ must equal shared/cc-support.json supported_floor
# count triples: /(\d+) skills, (\d+) agents[, (\d+) hooks]/               โ†’ must equal computed 113 / 37 / 212
# scope:   docs/site/content/docs/**/*.mdx  minus generated (reference/, skills/by-category/)
# escape:  line containing "docs-facts-ignore"
check-docs-facts: OK (floor 2.1.183, 113 skills, 37 agents, 212 hooks)