doc-completeness-audit

Audit documentation completeness by mapping what a doc set should cover against what it actually covers. Produces a prioritized gap report by topic, not just by file. This skill should be used after shipping features, before releases, or when users report missing documentation.

Documentation Completeness Audit

Determine whether a documentation set covers everything it should by building an inventory of what needs documenting and comparing it to what exists. The output is a prioritized gap report — not new documentation.

When to Use

  • After shipping a feature — verify docs cover the new surface area
  • Before a release — ensure no undocumented public APIs, CLI flags, or config options
  • When users or new hires report "I couldn't find docs for X"
  • Periodic health check on doc coverage
  • After running doc-maintenance (structural) and doc-claim-validator (accuracy) to go wider

Quick Reference

ResourcePurposeLoad when
references/coverage-model.mdDefines what "complete" means per doc typeAlways (Phase 1)

Workflow Overview

Phase 1: Inventory   → Build the "should exist" list from code and config
Phase 2: Map         → Match inventory items to existing documentation
Phase 3: Classify    → Score each gap by audience impact
Phase 4: Report      → Produce the prioritized gap report

Phase 1: Build the Inventory

Construct a list of everything that should be documented. Use four sources, checking all of them:

Source 1: Public Code Surface

Run the bundled inventory script to extract documentable surface area deterministically:

python3 skills/doc-completeness-audit/scripts/inventory.py --root . --json > inventory.json

# Or human-readable:
python3 skills/doc-completeness-audit/scripts/inventory.py --root .

# Run specific detectors only:
python3 skills/doc-completeness-audit/scripts/inventory.py --root . --detectors env_vars,cli_commands

The script scans source files across Python, JavaScript/TypeScript, Rust, Go, Ruby, Java, and shell, extracting six categories:

DetectorWhat it extracts
env_varsEnvironment variable references (os.environ, process.env, env::var, etc.)
cli_commandsCLI commands and flags (argparse, click, clap, cobra, commander)
config_keysConfiguration key access in config-related files
http_endpointsHTTP route definitions (Flask, FastAPI, Express, Actix, Axum, net/http)
public_exportsPublic module exports (__init__.py, export, pub fn, Go capitalized funcs)
error_typesCustom error/exception class definitions
Event types, webhooks, callbacksEvery event name and payload shape

Dispatch an Explore agent to scan for these signals. Provide it with the project's primary language and entry points.

Source 2: User-Facing Features

Identify features a user interacts with:

  • TUI screens, views, keybindings
  • CLI workflows (multi-step operations)
  • Integration points (hooks, plugins, extensions)
  • Authentication/authorization flows
  • Error messages that imply user action

Source 3: Operational Surface

Identify what operators and maintainers need:

  • Installation and setup procedures
  • Upgrade and migration paths
  • Backup and restore procedures
  • Troubleshooting common errors
  • Environment requirements and dependencies
  • CI/CD integration points

Source 4: Existing Docs Cross-References

Check existing docs for promises of documentation that doesn't exist:

  • "See [link]" references to pages that don't exist
  • "Coming soon" or "TODO" markers
  • Table of contents entries without corresponding pages
  • Navigation entries without targets

Output: A structured inventory list. Each item has:

  • topic — what needs documenting
  • source — where the requirement was discovered (code path, config key, user flow)
  • audience — who needs this (end user, developer, operator)
  • type — what kind of doc it needs (reference, tutorial, guide, explanation)

Phase 2: Map to Existing Documentation

For each inventory item, search existing docs:

  1. Exact match — a dedicated section or page covers this topic
  2. Partial match — mentioned but not fully explained (e.g., a flag listed in a table but never explained, a feature referenced in a tutorial but without its own reference entry)
  3. No match — no documentation found

Search strategy:

  • Grep docs for the topic name, function name, config key, or feature name
  • Check table of contents and navigation indexes
  • Check inline code references in existing pages
  • Read surrounding context — a grep hit doesn't mean adequate coverage

Mark each item:

  • Documented — dedicated, adequate coverage exists
  • Shallow — mentioned but insufficient (missing examples, missing edge cases, incomplete reference)
  • Missing — no documentation found
  • Misplaced — documentation exists but in the wrong location (e.g., API reference in a tutorial)

Phase 3: Classify Gaps by Impact

Not all gaps are equal. Score each gap using audience impact:

Priority Framework

PriorityCriteriaExample
P0User cannot accomplish a core task without thisNo installation guide, undocumented required config
P1User can work around it but wastes significant timeCLI flag exists but undocumented, error message without troubleshooting
P2Missing docs for secondary features or advanced use casesPlugin API undocumented, advanced config options missing
P3Missing docs for edge cases or rarely used featuresObscure env var, deprecated feature migration path
P4Nice to have — explanatory content, design rationaleArchitecture decision records, "why" behind defaults

Audience Weighting

Apply a multiplier based on audience:

AudienceWeightRationale
New users / onboarding1.5xFirst impressions; high abandonment risk
Daily users1.0xCore audience
Advanced users / contributors0.8xCan read source when docs fail
Internal operators0.7xCan ask the team

A P2 gap for new users (P2 × 1.5 = 3.0) outranks a P1 gap for internal operators (P1 × 0.7 = 2.1).


Phase 4: Produce the Gap Report

Report Format

# Documentation Completeness Audit

**Audit date:** YYYY-MM-DD
**Scope:** [directories or doc sets audited]
**Inventory items:** N total
**Coverage:** N documented / N shallow / N missing / N misplaced

---

## Summary

[2-3 sentences: overall completeness assessment]

Coverage by audience:
| Audience | Documented | Shallow | Missing | Coverage % |
|----------|-----------|---------|---------|------------|
| New users | N | N | N | N% |
| Daily users | N | N | N | N% |
| Contributors | N | N | N | N% |
| Operators | N | N | N | N% |

---

## P0 Gaps — Blocking

| # | Topic | Audience | Source | Current State | What's Needed |
|---|-------|----------|--------|---------------|---------------|
| 1 | [topic] | [who] | [code path] | Missing | [what to write] |

## P1 Gaps — High Impact

| # | Topic | Audience | Source | Current State | What's Needed |
|---|-------|----------|--------|---------------|---------------|

## P2 Gaps — Moderate Impact

| # | Topic | Audience | Source | Current State | What's Needed |
|---|-------|----------|--------|---------------|---------------|

## P3-P4 Gaps — Low Priority

| # | Topic | Audience | Priority | Current State |
|---|-------|----------|----------|---------------|

---

## Shallow Coverage Details

For each Shallow item, explain what's insufficient:

### [Topic]
**Current doc:** [path and section]
**Problem:** [what's missing — examples, edge cases, complete reference, etc.]
**Recommended action:** [specific improvement]

---

## Misplaced Documentation

| Topic | Current Location | Recommended Location | Why |
|-------|-----------------|---------------------|-----|

---

## Well-Documented (No Action Needed)

[List topics with adequate coverage, grouped by audience, so the report
shows the full picture and not just the gaps]

Integration with Other Doc Skills

This skill fits into the documentation health pipeline:

doc-maintenance         →  Structural health (links, orphans, folders)
doc-claim-validator     →  Semantic accuracy (do claims match code?)
doc-completeness-audit  →  Topic coverage (is everything documented?)
doc-quality-review      →  Prose quality (is it well-written?)
doc-architecture-review →  Information architecture (is it findable?)

Route gap remediation to the appropriate producer:

  • Reference gaps → reference-documentation
  • Tutorial gaps → tutorial-design
  • Explanation gaps → documentation-production

Anti-Patterns

  • Do not count files as coverage — a file can exist and say nothing useful
  • Do not manufacture gaps to look thorough — if coverage is good, say so
  • Do not audit archived docs (docs/archive/) — they are historical
  • Do not require documentation for internal implementation details — only public surface
  • Do not treat every function as needing its own doc page — aggregate by topic
  • Do not conflate "not documented" with "needs documenting" — some things are correctly undocumented (internal helpers, deprecated code scheduled for removal)

Bundled Resources

Scripts

  • scripts/inventory.py — Extract documentable surface area from any codebase (env vars, CLI commands, config keys, HTTP endpoints, public exports, error types)

References

  • references/coverage-model.md — Defines coverage expectations per doc type and audience