docs-drift-guard

docs-drift-guard is a skill for Claude Code, Codex from onsager-ai/dev-skills. It costs 196 tokens per session (1,617 once invoked), scanned A, original, MIT.

A method for keeping written technical documentation accurate as the code changes. It covers documents such as READMEs, architecture guides, decision records, and runbooks.

In plain words
What is it for?
It helps decide which facts should be generated from code, tested through runnable examples, checked automatically, reviewed when related code changes, or kept as stable prose.
Why use it?
It makes outdated explanations easier to prevent or detect instead of allowing them to quietly mislead developers.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions CLAUDE.md.

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/onsager-ai/dev-skills/docs-drift-guard
Any agent
npx skills add onsager-ai/dev-skills --skill docs-drift-guard
Clone the repo
git clone --depth 1 https://github.com/onsager-ai/dev-skills

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for docs-drift-guard

README.md
[![agentmods](https://agentmods.dev/badge/skills/onsager-ai/dev-skills/docs-drift-guard.svg)](https://agentmods.dev/skills/onsager-ai/dev-skills/docs-drift-guard)
Your own site
<a href="https://agentmods.dev/skills/onsager-ai/dev-skills/docs-drift-guard"><img src="https://agentmods.dev/badge/skills/onsager-ai/dev-skills/docs-drift-guard.svg" alt="Measured on agentmods" height="20"></a>
Per session 196 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,617 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00196 $0.01617
Opus 5 $0.00098 $0.00809
Sonnet 5 $0.00039 $0.00323
Haiku 4.5 $0.00020 $0.00162

Measured 6d ago against content hash d308a6d76b73, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

docs-drift-guard scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

import { execFileSync } from "node:child_process";
skills/docs-drift-guard/SKILL.md · 90 lines

How it starts

The opening of the file, as written. The whole thing — 90 lines — stays where its author put it; the contents beside it link to each section on GitHub.

docs-drift-guard

Prose documentation drifts because nothing forces it to stay true: the code moves, the doc doesn't, and the rot is invisible until someone trusts a stale sentence. This skill is the methodology for making that drift either impossible (by construction) or loud (by a check), plus the ready-made floor check to drop into any repo's gate.

The principle

The more a doc is derived from or executed against code rather than hand-written about it, the less it can drift. Push every claim as far down this ladder as it will go; what's left as prose, keep at an altitude that rarely changes and guard the parts that can be checked.

Rung What it means Drift outcome
Generated the doc is a build artifact of the code (API/CLI/type reference) can't drift
Executed the doc's examples/claims run in CI (doctests, runnable snippets) drift = red test
Checked links, snippets, and structural rules verified mechanically structural drift caught
Reviewed humans/bots prompted to re-read when cited source changes drift surfaced, not blocked
Prose sentences nobody re-checks drifts freely

A doc is usually a mix: generate what you can, execute the examples, check the links and the invariants, and leave only genuine synthesis as guarded prose.

The floor: @onsager/docs-drift-check (the Checked rung, every repo)

The cheapest enforced rung: assert that every repo-relative link/path a doc cites still resolves. Deterministic, zero-dependency, no LLM, safe as a blocking gate — and it ignores links inside code fences so example snippets never trip it.

npm i -D @onsager/docs-drift-check
npx docs-drift-check 'docs/**/*.md' README.md      # exit 1 on any dead path
npx docs-drift-check --external 'docs/**/*.md'      # also HEAD-check http(s) links (opt-in)

Wire it into the repo's existing gate — whichever the repo already runs:

  • node:test repos — a thin wrapper so it runs with the suite:
    import { test } from "node:test";
    import { execFileSync } from "node:child_process";
    test("docs cite no dead paths", () =>
      // npx --no-install resolves from node_modules/.bin; a bare bin name only
      // works when PATH already has it, which plain `node --test` doesn't guarantee.
      execFileSync("npx", ["--no-install", "docs-drift-check", "docs/**/*.md", "README.md"], { stdio: "inherit" }));
    
  • any repo — a package.json script or a CI step: docs-drift-check 'docs/**/*.md' README.md.

Read the full file on GitHub · 90 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 90 lines · 196 tokens per session scan A d308a6d76b73

Subscribe to this mod's changes

docs-drift-guard is a skill published in the GitHub repository onsager-ai/dev-skills (5 stars, last pushed 25d ago), licensed MIT. It adds 196 tokens to every session and 1,617 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

chat-pet-sprite-creation

Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.

microsoft/vscode · 53 tokens

cpu-profile-analysis

Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…

microsoft/vscode · 71 tokens

insight-error-page

Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…

vercel/next.js · 83 tokens