Writing rule
When this skill writes a durable artifact, read .claude/rules/writing-standard.md. Use the controlled technical writing profile.
/docs-audit — Documentation Completeness (Diataxis)
Deep-dive documentation analysis using the Diataxis framework. Checks that docs cover all four quadrants (tutorials, how-to guides, reference, explanation) and are not stale. Invoke when /launch-check's documentation row shows WARN or FAIL.
Diataxis Framework
| Quadrant |
Purpose |
What to look for |
| Tutorials |
Learning-oriented, guided first steps |
Getting started guide, quickstart, "Hello World" |
| How-to guides |
Goal-oriented, solving specific problems |
Deployment guide, migration guide, troubleshooting |
| Reference |
Information-oriented, accurate description |
API docs, config reference, CLI flags, environment variables |
| Explanation |
Understanding-oriented, why things work |
Architecture overview, design decisions (AgDRs), ADRs |
Process
Step 1: README quality
Check README.md for these sections (each is pass/fail):
| Section |
Present? |
Quality check |
| Project description |
|
One paragraph explaining what this is and who it's for |
| Prerequisites |
|
Language version, tools needed, accounts required |
| Quick start |
|
Copy-pasteable commands to get running locally in < 5 minutes |
| Development setup |
|
How to set up the dev environment, run tests, lint |
| Deployment |
|
How to deploy to staging and production |
| Contributing |
|
How to contribute (branch naming, PR process, code standards) |
| License |
|
License type and link |
Step 2: API documentation (if applicable)
- Check for OpenAPI / Swagger spec (
openapi.yaml, swagger.json)
- Check for auto-generated docs (Swagger UI, Redoc, tsdoc, typedoc)
- Check if endpoints in the code match the spec (any undocumented endpoints?)
- Check for example requests and responses
Step 3: Operational docs
- Deployment guide: how to deploy, what environment variables are needed
- Runbook: what to do when things go wrong (overlap with
/monitoring-audit)
- Changelog: is there a CHANGELOG.md? Are releases documented?
- Architecture overview: high-level diagram or description of components
- AgDRs/ADRs: are technical decisions documented?
Step 4: Staleness detection
- Compare
README.md last-modified date with recent code changes
- Check if API docs mention endpoints/features that no longer exist
- Check if environment variable docs list vars that are no longer used
- Flag docs that reference deprecated tools, libraries, or patterns
Step 5: Output
DOCS AUDIT — <project> @ <sha>
Diataxis coverage:
Tutorials: ✓ getting-started.md exists
How-to: ✓ deployment guide, ✗ migration guide, ✗ troubleshooting
Reference: ✓ OpenAPI spec (28 endpoints), ✗ env vars undocumented
Explanation: ✓ 3 AgDRs, ✗ no architecture overview
| # | Area | Status | Finding |
|----|------|--------|---------|
| D1 | README | WARN | Missing "Contributing" section |
| D2 | API docs | PASS | OpenAPI spec matches code (28/28 endpoints) |
| D3 | Env vars | FAIL | 12 env vars in .env.example, 0 documented in README |
| D4 | Changelog | PASS | CHANGELOG.md updated with last 5 releases |
| D5 | Staleness | WARN | README references "Express" but code migrated to Fastify 3 months ago |
Documentation readiness: PARTIAL (1 fail, 2 warnings)
Persist the run + render trend
After printing the findings table, persist via the shared audit-history lib so the docs trend across runs becomes legible. See docs/agdr/AgDR-0019-audit-artefact-persistence.md.
Resolve project name + score + verdict
<project-name> from apexyard.projects.yaml (or basename + /handover reminder if unregistered).
Score: score = max(0, 100 - 25*critical - 10*high - 3*medium - 1*low). Verdict by worst-severity: critical/high → fail, medium → conditional, low/none → pass. Legacy "Documentation readiness" three-state: PARTIAL → conditional, MISSING → fail, COMPLETE → pass.
Persist + render
source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-audit-history.sh"
# Lowercase severity in the payload — the lib expects critical/high/medium/low/info.
payload=$(mktemp); cat > "$payload" <<'EOF'
{
"schema_version": 1,
"findings": [
{"id": "D2", "severity": "high", "status": "open", "summary": "No docs/how-to/ dir; recipes scattered in Slack"},
{"id": "D3", "severity": "high", "status": "open", "summary": "Env vars not documented in README (12 in .env.example)"},
{"id": "D5", "severity": "medium", "status": "open", "summary": "README references Express; code migrated to Fastify 3 months ago"}
]
}
EOF
# Body: per templates/audits/docs-audit.md (Diataxis quadrants + README + staleness)
body=$(mktemp); cat > "$body" <<'EOF'
... (filled-in body — Diataxis groupings + README quality + staleness + Recommended priority) ...
EOF
ts=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
audit_run_persist "<project-name>" "docs-audit" "$ts" "fail" 60 "$body" < "$payload"
rm -f "$payload" "$body"
audit_render_trend "<project-name>" "docs-audit" 5
Opt-in commit
touch projects/<name>/audits/docs-audit/.audit-history-tracked
Rules
- README is the minimum. Every project needs a README with at least: description, quick start, and how to deploy. Everything else is a "should have."
- Check for staleness, not just existence. A README that exists but describes the wrong stack is worse than no README.
- Diataxis is a lens, not a checklist. Don't fail a project for missing all four quadrants — most projects start with tutorials + reference and add the rest over time.
- Auto-PASS for the ops repo itself. ApexYard's own docs are governed by its own process — this skill is for managed projects.
- Always persist via the lib. The persist step runs regardless of opt-in commit state.
- Severity vocabulary in the JSON is lowercase. The lib expects
critical/high/medium/low/info.
Part of ApexYard — multi-project SDLC framework for Claude Code · MIT.
1---2name: docs-audit3description: Diataxis docs audit — tutorials, how-to, reference, explanation; checks README, API docs, deployment guides, changelog, staleness.4---56## Writing rule78When this skill writes a durable artifact, read .claude/rules/writing-standard.md. Use the controlled technical writing profile.910# /docs-audit — Documentation Completeness (Diataxis)1112Deep-dive documentation analysis using the Diataxis framework. Checks that docs cover all four quadrants (tutorials, how-to guides, reference, explanation) and are not stale. Invoke when `/launch-check`'s documentation row shows WARN or FAIL.1314## Diataxis Framework1516| Quadrant | Purpose | What to look for |17|----------|---------|-----------------|18| **Tutorials** | Learning-oriented, guided first steps | Getting started guide, quickstart, "Hello World" |19| **How-to guides** | Goal-oriented, solving specific problems | Deployment guide, migration guide, troubleshooting |20| **Reference** | Information-oriented, accurate description | API docs, config reference, CLI flags, environment variables |21| **Explanation** | Understanding-oriented, why things work | Architecture overview, design decisions (AgDRs), ADRs |2223## Process2425### Step 1: README quality2627Check `README.md` for these sections (each is pass/fail):2829| Section | Present? | Quality check |30|---------|----------|--------------|31| Project description | | One paragraph explaining what this is and who it's for |32| Prerequisites | | Language version, tools needed, accounts required |33| Quick start | | Copy-pasteable commands to get running locally in < 5 minutes |34| Development setup | | How to set up the dev environment, run tests, lint |35| Deployment | | How to deploy to staging and production |36| Contributing | | How to contribute (branch naming, PR process, code standards) |37| License | | License type and link |3839### Step 2: API documentation (if applicable)4041- Check for OpenAPI / Swagger spec (`openapi.yaml`, `swagger.json`)42- Check for auto-generated docs (Swagger UI, Redoc, tsdoc, typedoc)43- Check if endpoints in the code match the spec (any undocumented endpoints?)44- Check for example requests and responses4546### Step 3: Operational docs4748- Deployment guide: how to deploy, what environment variables are needed49- Runbook: what to do when things go wrong (overlap with `/monitoring-audit`)50- Changelog: is there a CHANGELOG.md? Are releases documented?51- Architecture overview: high-level diagram or description of components52- AgDRs/ADRs: are technical decisions documented?5354### Step 4: Staleness detection5556- Compare `README.md` last-modified date with recent code changes57- Check if API docs mention endpoints/features that no longer exist58- Check if environment variable docs list vars that are no longer used59- Flag docs that reference deprecated tools, libraries, or patterns6061### Step 5: Output6263```64DOCS AUDIT — <project> @ <sha>6566Diataxis coverage:67 Tutorials: ✓ getting-started.md exists68 How-to: ✓ deployment guide, ✗ migration guide, ✗ troubleshooting69 Reference: ✓ OpenAPI spec (28 endpoints), ✗ env vars undocumented70 Explanation: ✓ 3 AgDRs, ✗ no architecture overview7172| # | Area | Status | Finding |73|----|------|--------|---------|74| D1 | README | WARN | Missing "Contributing" section |75| D2 | API docs | PASS | OpenAPI spec matches code (28/28 endpoints) |76| D3 | Env vars | FAIL | 12 env vars in .env.example, 0 documented in README |77| D4 | Changelog | PASS | CHANGELOG.md updated with last 5 releases |78| D5 | Staleness | WARN | README references "Express" but code migrated to Fastify 3 months ago |7980Documentation readiness: PARTIAL (1 fail, 2 warnings)81```8283## Persist the run + render trend8485After printing the findings table, persist via the shared audit-history lib so the docs trend across runs becomes legible. See `docs/agdr/AgDR-0019-audit-artefact-persistence.md`.8687### Resolve project name + score + verdict8889`<project-name>` from `apexyard.projects.yaml` (or basename + `/handover` reminder if unregistered).9091Score: `score = max(0, 100 - 25*critical - 10*high - 3*medium - 1*low)`. Verdict by worst-severity: critical/high → `fail`, medium → `conditional`, low/none → `pass`. Legacy "Documentation readiness" three-state: PARTIAL → `conditional`, MISSING → `fail`, COMPLETE → `pass`.9293### Persist + render9495```bash96source "$(git rev-parse --show-toplevel)/.claude/hooks/_lib-audit-history.sh"9798# Lowercase severity in the payload — the lib expects critical/high/medium/low/info.99payload=$(mktemp); cat > "$payload" <<'EOF'100{101 "schema_version": 1,102 "findings": [103 {"id": "D2", "severity": "high", "status": "open", "summary": "No docs/how-to/ dir; recipes scattered in Slack"},104 {"id": "D3", "severity": "high", "status": "open", "summary": "Env vars not documented in README (12 in .env.example)"},105 {"id": "D5", "severity": "medium", "status": "open", "summary": "README references Express; code migrated to Fastify 3 months ago"}106 ]107}108EOF109110# Body: per templates/audits/docs-audit.md (Diataxis quadrants + README + staleness)111body=$(mktemp); cat > "$body" <<'EOF'112... (filled-in body — Diataxis groupings + README quality + staleness + Recommended priority) ...113EOF114115ts=$(date -u +"%Y-%m-%dT%H:%M:%SZ")116audit_run_persist "<project-name>" "docs-audit" "$ts" "fail" 60 "$body" < "$payload"117rm -f "$payload" "$body"118119audit_render_trend "<project-name>" "docs-audit" 5120```121122### Opt-in commit123124```bash125touch projects/<name>/audits/docs-audit/.audit-history-tracked126```127128## Rules1291301. **README is the minimum.** Every project needs a README with at least: description, quick start, and how to deploy. Everything else is a "should have."1312. **Check for staleness, not just existence.** A README that exists but describes the wrong stack is worse than no README.1323. **Diataxis is a lens, not a checklist.** Don't fail a project for missing all four quadrants — most projects start with tutorials + reference and add the rest over time.1334. **Auto-PASS for the ops repo itself.** ApexYard's own docs are governed by its own process — this skill is for managed projects.1345. **Always persist via the lib.** The persist step runs regardless of opt-in commit state.1356. **Severity vocabulary in the JSON is lowercase.** The lib expects `critical`/`high`/`medium`/`low`/`info`.136137---138139*Part of [ApexYard](https://github.com/me2resh/apexyard) — multi-project SDLC framework for Claude Code · MIT.*