docstring-coveragelisted
Install: claude install-skill adnanmokhtar/refract
# docstring-coverage
## Premise
Every exported / public symbol — function, class, module, endpoint, exported type — carries a docstring that states its **contract and its WHY**: what it guarantees, what it assumes, when to reach for it, what it raises. Not a restated signature. An undocumented public API is a coverage gap, and a docstring that merely re-spells the parameter names in prose is a *zero-information* gap wearing a docstring's clothes — worse, because it green-lights the count while teaching nothing.
Cite-or-halt. Every finding cites the symbol at `<path:line>` and its category: `NO-DOC`, `EMPTY-DOC`, `SIGNATURE-RESTATE`, or `INCOMPLETE` (missing param/return/raises on a signature that has them). "This could use more docs" is a vibe. A gap without a symbol citation and a category is not reportable.
**Cross-owned with the lint toolchain — mirror, don't impose.** Docstring coverage is enforced in most ecosystems by a linter (see the adapt table). This skill **defers to the project's existing docstring linter** and its configured convention (Google vs NumPy vs reST style; which D-rules are on; the JSDoc tags required). It reads that config and reports against it. If the repo has no docstring linter wired, this skill reports raw coverage and proposes adopting the ecosystem-standard one — it does **not** invent a house convention or fight a configured one. The linter owns the rules; this skill surfaces and (optionally) gates on the coverage they imply.
## When to r