docs-fresh
Skill2 starsChanged 11 days agoMITView on GitHub
Docs freshness pass for one repo. Lists every doc surface (README, CHANGELOG, docs/, CLAUDE.md, .env.example), checks each documented claim (commands, paths, env var names, counts) against current code, prints the drift table, then fixes in place in the repo's own voice and CHANGELOG convention. Use when the user says "update all docs md files as well", "all docs up to date? changelog, readme and docs folder", "also remember to update docs, changelog, readme if required", or "also update readme, claude md and changelog". Never edits generated docs output, release-please changelogs, or marker-fenced README blocks, or documents a feature the code lacks.
- Reads credentials
In this repository16 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- aws-opsSkill
- db-opsSkill
- fix-allSkill
- gh-actionsSkill
- harness-auditSkill
- ideateSkill
- memory-routerSkill
- ossSkill
- parallelSkill
- prod-checkSkill
- repo-auditSkill
- save-sessionSkill
- shipSkill
- sonar-sweepSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 5 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 67
Verify by re-running step 3 on every edited file: each claim resolves, each link and path exists, git diff --stat lists only the files in …
- Very specific: line 69
Leave the edits uncommitted unless the same message asked to push.
- Very specific: line 89
Never edit generated output: a built docs/ site, anything between <!-- ...:START --> and <!-- ...:END --> markers in a README, metrics/, or …
- Distinctive: line 92
Never invent a version heading, a date, or a feature.
- Distinctive: line 94
Never turn a README into marketing copy or add badges, emoji, or dash characters.
- Very specific: line 96
Never sed -i or rewrite a whole file.
- Distinctive: line 98
Never remove existing content (footers, credits, licence lines, contributor tables) while refreshing.
- Very specific: line 100
Never commit; the ask was to update, and ship commits when asked.
- Distinctive: line 101
Never chain commands with a double ampersand.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
docs-fresh
Usually appended to a feature turn ("update all docs md files as well"), or the audit form ("all docs up to date? changelog, readme and docs folder"). Diagram tools draw and graph tools explain; nothing checks prose against code. This does: claims in, evidence out, then edits.
Read first
- Your always-on rules, if you keep them (editing files: Edit tool, CRLF; output style)
- Any writing-voice notes in the brain (
brain recall voice): honest over marketing, specific over general, chat typos never propagate into a doc - The repo's
CLAUDE.md: it names generated dirs (for example adocs/folder that is the Pages build output, never hand-edited) and the changelog owner (for example release-please) - The head of the repo's own
CHANGELOG.mdbefore writing one line into it
Procedure
- Enumerate the surfaces and print the count:
git ls-files '*.md' 'docs/**' '.env.example' 'CHANGELOG*'plus any file theCLAUDE.mdcalls documentation, minus what it marks generated. - Find the drift window per file:
git log -1 --format=%cI -- README.mdis the doc's last touch;git diff --stat <that-commit>..HEAD -- . ':!*.md'is the code that moved since. Older than its code makes a doc a candidate, not yet a finding. - Extract every checkable claim from each doc and test it against the tree:
| Claim type | Check |
command or script (pnpm run check, uv run pytest) | exists in package.json scripts, pyproject.toml, Makefile; run the harmless ones (--help, --version) |
| path or file mentioned | ls it; renamed dirs are the most common drift |
| env var | every prefixed name the code reads (grep -rhoE 'APP_[A-Z_]+' backend/ | sort -u, with the repo's own prefix) appears in .env.example and the docs table; names only, never values |
| count ("26 protected pages", "15 read-only tools") | count in code (grep -c, ls pages) and compare |
| version or dependency claim | package.json, pyproject.toml, the lockfile |
| badge, link, anchor | target file or heading exists; external URL answers 200 to curl -sI |
| screenshot or diagram | the UI or module it shows still exists; a stale image is a finding, the redraw is a diagram task |
- Print the drift table before editing (shape below). Zero drift is a valid result: say so with the counts and stop.
- Edit each finding in place with the Edit tool, matching the file's heading levels, table style, and register. Numbers come from step 3, never from memory.
- CHANGELOG, only when the repo keeps one and the convention is read from its
head: Keep-a-Changelog repos (
## Unreleased, thenAdded,Changed,Fixed,Security) get the entry underUnreleased; versioned repos (## [2.3.4] - <YYYY-MM-DD>, matchingversionin the manifest) get the entry under the heading for the manifest version, and a new heading only if this work bumped it; release-please repos get nothing by hand. - Verify by re-running step 3 on every edited file: each claim resolves, each
link and path exists,
git diff --statlists only the files in the table. - Leave the edits uncommitted unless the same message asked to push; then
ship.
Output
surfaces: 14 files (README, CHANGELOG, docs/ x9, CLAUDE.md, AGENTS.md, .env.example)
drift window: README last touched <YYYY-MM-DD>, 61 code files changed since
| file | claim | in doc | in code | action |
| README.md | backend port | 5000 | 8000 (`vite.config.ts` proxy) | fixed |
| docs/PAGES.md | protected routes | 24 | 26 (`App.tsx`) | fixed |
| .env.example | APP_DAILY_MESSAGE_LIMIT | missing | read in settings.py:88 | added (name only) |
| docs/architecture.md | OAuth diagram | v1 flow | PKCE v2 | flagged for redraw |
fixed 11/12 | flagged 1 | changelog: Unreleased/Changed +1 line | commit: not askedMust not
- Never edit generated output: a built
docs/site, anything between<!-- ...:START -->and<!-- ...:END -->markers in a README,metrics/, or a release-please changelog. - Never invent a version heading, a date, or a feature; if the code does not do it, the doc does not say it.
- Never turn a README into marketing copy or add badges, emoji, or dash characters; match the file that is there.
- Never
sed -ior rewrite a whole file; CRLF repos turn that into a full-file diff. - Never remove existing content (footers, credits, licence lines, contributor tables) while refreshing.
- Never commit; the ask was to update, and
shipcommits when asked. - Never chain commands with a double ampersand; one per line.
Non-goals
Diagrams (a diagram skill, if installed), code changes the docs reveal as
missing (repo-audit finding, then fix-all), memory files and STATUS.md
(save-session, memory-router).
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
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.

