agentleFS
gonun13gonun13/agent-skills/skills/docs-drift/SKILL.md

docs-drift

Skill0 starsChanged 2 months agoMITView on GitHub

Checks the README, spec, docs, help text, and example config against what the code actually does, and reports every place they disagree. Use when documentation may have fallen behind the code, or before a release.

  • Reads credentials

6 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

6 rules. 0 are common, 5 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 6 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run what can be run offline: every command the docs tell the reader to type, against the repo itself, where it is safe and has no side …

    line 57
  2. Distinctive:

    Check the examples: code snippets, sample requests, and sample output.

    line 61
  3. Distinctive:

    Check the links: relative paths to files that moved, anchors to headings that were renamed, and references to CI badges, issue templates, …

    line 63
  4. Distinctive:

    Read only, apart from the report file.

    line 72
  5. Very specific:

    Never read .env or other environment files.

    line 77
  6. Distinctive:

    Every command, flag, variable, config key, endpoint, and default in the documented surface has been matched against the code, every one in …

    line 86

“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Docs drift

Goal

A list of every claim the project's documentation makes that the code no longer backs up — and every behaviour the code has that the documentation never mentions — each as a path:line pair the operator can act on.

Context

Check first:

  • Where the prose lives: README, spec/, docs/, CONTRIBUTING, AGENTS.md, man pages, docstrings on the public surface, and inline --help or usage text.
  • What is history, not a claim about today: released CHANGELOG entries, decision records (spec/decisions/, docs/adr/), release notes, and upgrade guides for past versions. They describe the code as it was, so leave them out. A changelog's [Unreleased] section is the exception — it claims what the code does now.
  • Where the truth lives: the CLI or argument parser, the route table, the config loader, the environment-variable reads, the package manifest's scripts and entry points, Makefile targets, and CI workflow steps.
  • .env.example, sample configs, and docker-compose files — documentation in disguise, and the most likely to be stale.
  • git log on the docs versus the code they describe. A README last touched two years before the CLI it documents is the first place to look.

Steps

Work in order of readership: the README and quick-start, --help and usage text, the configuration and environment reference, then the rest of docs/. On a large doc set, pull claims out by search — code spans, --flags, UPPER_CASE variable names, paths, endpoints — rather than reading every page, and hand separate doc areas to subagents where the tool supports them. Whatever you did not reach goes under Not inspected.

  1. Inventory the documented surface: every command, subcommand, flag, option, environment variable, config key, endpoint, default value, exit code, file path, and version requirement that any document states. Note where each claim is made.
  2. Inventory the real surface from the code: the same categories, read from the parser, loader, router, and manifest — not from comments or docstrings, which are documentation too.
  3. Compare the two lists in both directions:
    • Documented but absent: the docs describe something the code no longer has, or never had.
    • Present but undocumented: the code accepts a flag, reads a variable, or exposes an endpoint no document mentions.
    • Both present but disagreeing: a different default, type, name, required status, or behaviour.
  4. Run what can be run offline: every command the docs tell the reader to type, against the repo itself, where it is safe and has no side effects. Install and quick-start instructions are the most-read and least-checked lines in any project.
  5. Check the examples: code snippets, sample requests, and sample output. An example that would not compile, parse, or run today is drift.
  6. Check the links: relative paths to files that moved, anchors to headings that were renamed, and references to CI badges, issue templates, or scripts that no longer exist. External URLs are noted, not fetched.
  7. Classify each finding by what a reader loses: misleading when following the docs fails or does the wrong thing, missing when a real capability is invisible, stale when the docs are merely out of date but harmless.

Constraints

  • Read only, apart from the report file. Drift has two possible fixes — change the docs or change the code — and which one is right is a product decision, not yours. Report both sides and let the operator choose.
  • Offline. Do not fetch external URLs, install anything, or run commands with side effects. A command from the docs is run only when it is plainly safe.
  • Never read .env or other environment files. .env.example and the variable names the code reads are enough.
  • Judge from the code, not from what seems likely. If the code is ambiguous, say so rather than guessing which side is right.
  • Prose quality, tone, and structure are not drift. Only report disagreement between what is written and what is true.

Done when

Every command, flag, variable, config key, endpoint, and default in the documented surface has been matched against the code, every one in the code has been matched against the docs, and every disagreement is listed with both locations. Anything not reached is listed under Not inspected.

Output

Save the report to DOCS-DRIFT.md at the repo root, replacing any earlier one.

Open with one line: how many findings, and whether any are misleading.

Then one table:

DocsCodeClaimRealityClass

Docs and Code are path:line; use — for the side that is absent. Order by class: misleading, then missing, then stale.

Close with two short lists:

  • Could not verify — claims that depend on a live service, an external URL, or an environment you could not reproduce, and what would settle each.
  • Not inspected — documents or code paths left out of scope, and why.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.