Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Diátaxis-driven documentation for AI coding agents: write, improve, or audit tutorials, how-tos, reference, explanation, and developer docs (README, CONTRIBUTING, ADRs). Detects the docs stack; gates on the outline before writing prose; verifies every claim against the code before it ships. Triggers on "absolute docs", "write docs", "write a tutorial", "write a README", "document this", "improve this doc", "audit our docs".
.claude/skills/maddhruv-absolute-docs/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 1473% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 272% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 156% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 115% | 0% |
> Start your first response with the 📚 emoji.
Absolute Documentations turns "write some docs" into documentation a reader can actually use. Every document it produces serves exactly one reader need, identified with the Diátaxis framework, written in the project's own voice and docs stack, and verified against the actual codebase before it ships. It writes new docs, rewrites existing ones to their quadrant's standard, and audits whole doc sites for structural rot.
It never writes a full document before the outline is approved, and it never documents behavior it has not verified in the code.
Every piece of documentation answers exactly one kind of reader need. Classify before writing — a page that mixes quadrants serves nobody.
| | Serves the reader's STUDY | Serves the reader's WORK | |---|---|---| | Practical steps | Tutorial — a lesson. Guides a newcomer through a guaranteed-success experience. | How-to guide — a recipe. Helps a competent user accomplish a specific goal. | | Theoretical knowledge | Explanation — a discussion. Deepens understanding of a topic, gives context and reasons. | Reference — a dictionary. States facts about the machinery, completely and neutrally. |
To classify, ask two questions:
| Reader situation | Quadrant | |---|---| | "I'm new, show me what this is like" | Tutorial | | "I know the basics, I need to get X done" | How-to guide | | "What exactly does this option/endpoint/flag do?" | Reference | | "Why does it work this way? What's the bigger picture?" | Explanation |
The cardinal sin is mixing. A tutorial that stops to explain architecture loses the learner. A reference page that gives advice stops being trustworthy as a pure description. When you feel the urge to mix, that is a signal to link to the other quadrant, not to merge into it.
Detect the mode from the request:
| User says | Mode | |---|---| | "write a tutorial / guide / README / docs for X", "document this feature" | WRITE | | "improve / rewrite / clean up this doc", "this README is bad" | IMPROVE | | "audit our docs", "our docs are a mess", "restructure the documentation" | AUDIT |
Before asking the user anything, learn everything the repo can teach:
references/docs-stacks.md if writing site pages.
sidebar/nav structure, where each quadrant lives.
actual defaults, actual error messages. The code is the source of truth, not your memory of similar tools.
version, install command, supported runtimes.
Four things must be pinned down before any outline. Answer them from recon where possible; ask the user only what the repo cannot answer, one question at a time (use AskUserQuestion where available), always with a recommended answer:
What can you assume they already know?
Propose, before writing any prose:
STOP and wait for explicit approval. Do not write the document until the user confirms the outline. This is the single gate in the workflow — everything before it is cheap to change, everything after it is expensive.
references/ (load the matching file).references/style-and-voice.md.references/docs-stacks.md);plain Markdown when no stack is detected.
Score the draft against the rubric below. Fix anything scoring under 4 before presenting. Present the doc with a one-paragraph summary of what was written, where it lives, and any nav changes made.
For "fix this README" / "improve this page":
If it serves two masters, say so — that is usually the root problem.
concrete violations: missing sections, mixed purposes, stale claims, broken snippets, wrong audience level.
claim in the existing doc gets checked against the current code. Stale facts are the most common defect in old docs.
the project's voice into generic doc-speak.
pages, that is a restructure — propose the move map and gate on approval first.
For "our docs are a mess" / "audit the documentation":
path and title.
mixed (the most common finding), misfiled, duplicated, or orphaned from nav.
and mark what is missing. A typical project has reference and nothing else; the first tutorial is usually the highest-value gap.
(keep / rewrite / split / merge / move / delete), ordered by reader impact.
approval, then execute with redirects/link updates included.
The audit deliverable is the report and map. Executing it is a follow-up the user approves explicitly.
Read cached config first: if .absolute.config.json or ~/.absolute/config.json exists (from /absolute init), resolve the effective config (project file → global projects["<cwd>"] → global defaults) and use conventions.docs.stack + conventions.docs.dir — skip the marker-file scan and write pages under docs.dir. With no config (or no docs block), soft-suggest init and detect by checking for marker files in this order; first match wins:
| Marker | Stack | Content format | |---|---|---| | source.config.ts / fumadocs-* in package.json | Fumadocs | MDX + fumadocs-ui components | | docusaurus.config.* | Docusaurus | MDX + admonitions (:::note) | | astro.config.* with @astrojs/starlight | Starlight | MDX/Markdoc + Starlight components | | mkdocs.yml | MkDocs (often Material) | Markdown + admonitions (!!! note) | | .vitepress/config.* | VitePress | Markdown + containers (::: tip) | | mint.json / docs.json (Mintlify) | Mintlify | MDX + Mintlify components | | none of the above | Plain Markdown | GitHub-flavored Markdown, no components |
Per-stack frontmatter, component vocabulary, nav registration, and quadrant-to-component mapping live in references/docs-stacks.md — load it whenever writing pages for a detected stack. Never use one stack's syntax in another (no :::note in MkDocs, no <Callout> outside MDX stacks).
Full playbooks with templates live in references/. The non-negotiables:
| Quadrant | Must | Must not | |---|---|---| | Tutorial | Work first try, every time; concrete single path; visible result at every step; first person plural ("we") | Offer choices, explain theory in-line, assume unstated setup, branch | | How-to | Start from a real task; assume competence; state prerequisites; show the steps and only the steps | Teach basics, explain why at length, cover every edge case inline | | Reference | Be complete, accurate, and neutral; mirror the code's structure; state defaults, types, constraints | Give advice, tell stories, omit "obvious" entries, drift from the code | | Explanation | Give context, reasons, trade-offs, history; admit alternatives; connect concepts | Contain instructions, pretend to be the only valid view, duplicate reference facts |
| Developer doc | Quadrant blend | Playbook | |---|---|---| | README | Landing page: pitch + quickstart (mini-tutorial) + links out | references/developer-docs.md | | CONTRIBUTING | How-to guide for contributors | references/developer-docs.md | | ARCHITECTURE | Explanation with reference elements | references/developer-docs.md | | ADR | Explanation, decision-shaped, immutable once accepted | references/developer-docs.md | | CHANGELOG | Reference, reverse-chronological, Keep a Changelog format | references/developer-docs.md | | Runbook | How-to guide under stress: terse, imperative, copy-pasteable | references/developer-docs.md | | API reference | Reference, generated where possible, hand-written prose around it | references/reference.md |
Documentation that lies is worse than no documentation. For every draft:
API call, find that API in the source and copy its real signature. If a snippet is runnable in this environment, run it.
copied from source, never paraphrased. --dry-run and --dryrun are different products.
files at the moment of writing.
feature you cannot find in the code, stop and say so — do not write aspirational documentation.
every anchor matches a real heading.
command actually prints.
The full guide is references/style-and-voice.md. The rules that are never waived:
If it were simple, the reader wouldn't be here.
returned by the server".
"Configuration".
"config file", "settings file", and "manifest" for the same thing.
marketing) rather than the reader.
Score 1–5 on each axis before presenting. Anything under 4 gets fixed first.
| Axis | 5 looks like | |---|---| | Quadrant purity | Every section serves the page's single declared purpose; tangents are links | | Audience fit | Assumes exactly the declared knowledge — no more, no less | | Accuracy | Every snippet, name, default, and output verified against the code | | Completeness | Scope from intake fully covered; declared exclusions actually excluded | | Followability | A reader can act on it top-to-bottom without backtracking or guessing | | Voice | Indistinguishable from the project's best existing page | | Stack fitness | Frontmatter, components, and nav match the detected stack's conventions |
pick one, mention alternatives in a how-to.
explanation page and link.
pages; split and link.
Load on demand from references/:
| File | Load when | |---|---| | tutorials.md | Writing or fixing a tutorial / getting-started page | | how-to-guides.md | Writing or fixing a how-to / task guide | | reference.md | Writing or fixing reference / API docs | | explanation.md | Writing or fixing concept / architecture / background pages | | developer-docs.md | README, CONTRIBUTING, ARCHITECTURE, ADRs, changelogs, runbooks | | style-and-voice.md | Any prose-heavy writing; calibrating to project voice | | docs-stacks.md | A docs stack was detected; writing site pages |
reader's task, not the product's funnel.
work.
Sibling commands in this skill pair well with docs:
/absolute work — build the feature you are now documenting./absolute ui — design the interface a tutorial walks through./absolute simplify — tidy code before documenting it.Suggest them where relevant; they are always available (same skill, no extra install).
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,223 | 8,444 | +17% | 1 | 1 | 0% | 1,047 | 4,281 | +309% | 0 | 0 | — |
case-02 | fail→fail | 14,308 | 8,224 | -43% | 1 | 1 | 0% | 2,227 | 4,457 | +100% | 0 | 0 | — |
case-03 | fail→fail | 12,475 | 3,654 | -71% | 1 | 1 | 0% | 1,873 | 4,244 | +127% | 0 | 0 | — |
case-04 | fail→pass | 19,632 | 3,471 | -82% | 1 | 1 | 0% | 2,722 | 4,266 | +57% | 0 | 0 | — |
case-05 | fail→pass | 2,001 | 4,995 | +150% | 1 | 1 | 0% | 284 | 4,467 | +1473% | 0 | 0 | — |
case-06 | fail→pass | 8,822 | 4,749 | -46% | 1 | 1 | 0% | 1,209 | 4,494 | +272% | 0 | 0 | — |
case-07 | pass→pass | 8,439 | 5,530 | -34% | 1 | 1 | 0% | 1,185 | 4,530 | +282% | 0 | 0 | — |
case-08 | pass→pass | 8,314 | 5,771 | -31% | 1 | 1 | 0% | 1,166 | 4,574 | +292% | 0 | 0 | — |
case-09 | pass→pass | 4,446 | 4,274 | -4% | 1 | 1 | 0% | 628 | 4,332 | +590% | 0 | 0 | — |
case-10 | pass→pass | 5,731 | 4,295 | -25% | 1 | 1 | 0% | 800 | 4,366 | +446% | 0 | 0 | — |
case-11 | fail→pass | 11,918 | 3,994 | -66% | 1 | 1 | 0% | 1,674 | 4,285 | +156% | 0 | 0 | — |
case-12 | fail→pass | 14,343 | 8,702 | -39% | 1 | 1 | 0% | 2,413 | 5,186 | +115% | 0 | 0 | — |
case-13 | pass→pass | 10,292 | 7,394 | -28% | 1 | 1 | 0% | 1,647 | 4,981 | +202% | 0 | 0 | — |
case-14 | pass→pass | 4,372 | 3,209 | -27% | 1 | 1 | 0% | 630 | 4,225 | +571% | 0 | 0 | — |
case-15 | pass→pass | 4,752 | 3,409 | -28% | 1 | 1 | 0% | 699 | 4,267 | +510% | 0 | 0 | — |
case-16 | pass→pass | 9,571 | 6,491 | -32% | 1 | 1 | 0% | 1,507 | 4,672 | +210% | 0 | 0 | — |
case-17 | fail→fail | 7,941 | 4,369 | -45% | 1 | 1 | 0% | 1,217 | 4,371 | +259% | 0 | 0 | — |
case-18 | pass→pass | 9,957 | 5,244 | -47% | 1 | 1 | 0% | 1,391 | 4,573 | +229% | 0 | 0 | — |
case-19 | pass→pass | 6,625 | 4,433 | -33% | 1 | 1 | 0% | 952 | 4,331 | +355% | 0 | 0 | — |
case-20 | pass→pass | 12,047 | 5,551 | -54% | 1 | 1 | 0% | 1,767 | 4,517 | +156% | 0 | 0 | — |
case-21 | pass→pass | 7,874 | 3,883 | -51% | 1 | 1 | 0% | 1,148 | 4,311 | +276% | 0 | 0 | — |
case-22 | pass→pass | 10,375 | 7,380 | -29% | 1 | 1 | 0% | 1,636 | 4,838 | +196% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.