---
name: doc-completeness-audit
description: >-
  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.
version: 1.0.0
tags: [documentation, audit, completeness, review]
triggers:
  - audit doc completeness
  - what docs are missing
  - doc coverage gaps
  - documentation gaps
  - are docs complete
dependencies:
  skills: [doc-maintenance, doc-claim-validator]
  tools: [Grep, Glob, Read, Bash, Agent]
token_estimate: ~3500
---

# 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

| Resource | Purpose | Load when |
|----------|---------|-----------|
| `references/coverage-model.md` | Defines what "complete" means per doc type | Always (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:

```bash
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:

| Detector | What it extracts |
|----------|-----------------|
| `env_vars` | Environment variable references (`os.environ`, `process.env`, `env::var`, etc.) |
| `cli_commands` | CLI commands and flags (argparse, click, clap, cobra, commander) |
| `config_keys` | Configuration key access in config-related files |
| `http_endpoints` | HTTP route definitions (Flask, FastAPI, Express, Actix, Axum, net/http) |
| `public_exports` | Public module exports (`__init__.py`, `export`, `pub fn`, Go capitalized funcs) |
| `error_types` | Custom error/exception class definitions |
| Event types, webhooks, callbacks | Every 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

| Priority | Criteria | Example |
|----------|----------|---------|
| **P0** | User cannot accomplish a core task without this | No installation guide, undocumented required config |
| **P1** | User can work around it but wastes significant time | CLI flag exists but undocumented, error message without troubleshooting |
| **P2** | Missing docs for secondary features or advanced use cases | Plugin API undocumented, advanced config options missing |
| **P3** | Missing docs for edge cases or rarely used features | Obscure env var, deprecated feature migration path |
| **P4** | Nice to have — explanatory content, design rationale | Architecture decision records, "why" behind defaults |

### Audience Weighting

Apply a multiplier based on audience:

| Audience | Weight | Rationale |
|----------|--------|-----------|
| New users / onboarding | 1.5x | First impressions; high abandonment risk |
| Daily users | 1.0x | Core audience |
| Advanced users / contributors | 0.8x | Can read source when docs fail |
| Internal operators | 0.7x | Can 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

```markdown
# 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
