plugins/inkwell/skills/audit/SKILL.md
Audit code-documentation depth (README quality, docs coverage, staleness, internal link health) in a target codebase
npx skillsauth add acostanzo/quickstop auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit the target codebase for Code documentation and emit a v2 wire-contract envelope.
Run the orchestrator and emit its stdout verbatim:
bash "${CLAUDE_PLUGIN_ROOT}/bin/build-envelope.sh" "<REPO_ROOT>"
<REPO_ROOT> is the absolute path to the target repository — typically the working directory when /inkwell:audit was invoked.
The orchestrator runs four deterministic shell scorers, one per rubric category in the code-documentation dimension:
score-readme-quality.sh — counts answered arrival questions in README.md (project intent, audience, install, status, next-step pointers)score-docs-coverage.sh — per-language tool dispatch (interrogate / eslint-jsdoc / revive / cargo doc) for public-API docstring coveragescore-doc-staleness.sh — git log mtimes for source files vs the latest docs touch, counts files modified more than 90 days after docsscore-link-health.sh — lychee --offline over README.md and docs/, counts broken on-disk and within-document anchor linksEach scorer's output (one observation entry, or empty for empty-scope) is jq -s'd into the envelope's observations[] array. composite_score is null — the code-documentation translation rules stanza in plugins/pronto/references/rubric.md is the sole authority on dimension scoring.
Tool absence (no interrogate, no lychee) and empty-scope short-circuits (no README.md, no language detected, not a git repo) drop the affected observation rather than failing the audit. Empty observations[] triggers the translator's case-3 carve-out (passthrough back to the kernel presence check), preserving the "no scope" semantic.
The orchestrator is pure shell + grep + awk + jq — no language toolchain on PATH is required for the orchestrator itself, no network calls, no consumer-state mutation. ADR-006 §2 (no silent mutation of consumer artefacts) and §3 (vacuously satisfied: inkwell ships no hooks) hold at scorer level.
Emit the orchestrator's stdout verbatim. Do not modify the JSON, do not add commentary — the orchestrator is the source of truth for the wire envelope.
documentation
Surface (and optionally fix) doc-tree drift — duplicates, dead links, stale docs, template non-compliance, missing `## Related` blocks. Read-only by default; `--apply` does mechanical fixes; `--apply-semantic` emits diffs for human review.
documentation
Full-text search over the repo's `docs/` tree (FTS5-backed). Returns ranked hits with file paths, tags, and matching snippets.
testing
Retrieval-augmented Q&A over the repo's `docs/` tree. Returns a one-paragraph synthesis plus citations (doc path + heading anchor) and per-citation corroboration verdicts. Field shape and ordering are locked at M3; M5 populates the verdicts.
documentation
Scaffold a new doc under `docs/` from a Diátaxis template, or update an existing one and bump its `updated:` date. Suggests `## Related` candidates and refreshes the FTS5 index on write.