From honesty
Audit a codebase so every comment, docstring, and doc file is a TRUE and useful reflection of the code — for the next AI agent (or human) who reads it before changing anything. Finds stale, inaccurate, misleading, and missing comments (and stale README/CLAUDE.md/ARCHITECTURE/config notes), produces structured findings, and splits them into a confidence/complexity/blast-radius-gated auto-fix set vs a human-review queue. Module-by-module, high-signal, never a comment-stripper. Use when the user wants to verify comments match the code, clean up stale/misleading comments or docs, make a codebase trustworthy for AI agents, or asks to "run honesty". Triggers: honesty, comment audit, do the comments match the code, are the comments accurate, stale comments, trustworthy comments, audit the docs against the code, comment truth.
How this skill is triggered — by the user, by Claude, or both
Slash command
/honesty:honestyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Part of the **shipwright** method — see the `shipwright` skill for the work-loop this move fits into and when to invoke it.
Part of the shipwright method — see the
shipwrightskill for the work-loop this move fits into and when to invoke it.
A comment is a promise about what the code does. When it drifts, it becomes worse than no comment: the next reader — increasingly an AI agent — trusts it, builds a wrong mental model, and ships a mistake. Honesty audits every claim the codebase makes about itself and either corrects it or flags it, so the promises hold.
The organising principle:
Every claim the codebase makes about itself should be true — and present where it matters — for the next agent or human who reads it before changing the code.
This is not a doc generator (see project-docs for that) and not a style linter. It verifies the truth of what already exists, and adds a comment only where its absence would trip a future reader.
Comments live in more than // lines. Honesty covers all the places the code makes claims:
//, /* */, the per-function "why" notes.@returns null
when the function throws) causes coding mistakes, not just confusion.README, CLAUDE.md/AGENTS.md (the first thing an agent reads — a stale one
misleads on every task), ARCHITECTURE.md, DATABASE_SCHEMA.md, API docs.wrangler.jsonc, CI YAML, Dockerfiles, etc. They drift silently.Out of scope: user-facing strings (that's product behaviour, not developer-facing truth), commit messages, and pure style/wording.
scope → bundle → audit (one agent per bundle) → structured findings →
disposition (auto-fix vs review) → apply + verify → review queue → roll
templates/findings-schema.json): file, line, category,
severity, confidence, complexity, blast_radius, surface, the exact comment excerpt, the precise
problem (what the code actually does), and a concrete suggested fix.Two cues that earn their keep (from real runs):
try/catch from a wrong "throws/returns" doc, wrong API usage. Reserve
medium/low for wrong-mental-model and clarity issues.Do not flag: accurate + useful comments, harmless-obvious comments, style/wording nitpicks, or speculation. Every finding must be verifiable against the code.
Confidence alone is not enough to auto-apply: a confident fix to a contract or a doc file can still ripple. Route a finding to auto-fix only when all four hold:
| Factor | Auto-fix requires |
|---|---|
| confidence | high — certain the comment is wrong AND the fix is right |
| complexity | mechanical — a localised factual correction (count/date/enum/line-ref/name/clearly-wrong clause). NOT a rewrite that encodes judgment, NOT a gap-fill (adding new explanatory text), and NOT a correction to a code or usage example in a comment/docstring — those are substantive even when they look like a factual fix, because the replacement encodes API knowledge that must be verified against the real exports/signatures first (a "fixed" example can itself be subtly wrong) |
| blast_radius | local — an inline/block comment scoped to one function/section. NOT a contract-defining docstring many callers depend on, NOT cross-cutting |
| surface | inline/block/jsdoc-local only. Doc files (CLAUDE.md/README/ARCHITECTURE/SCHEMA) and config files are NEVER auto-fixed — high blast radius, often human-owned |
Anything failing any factor → review queue. In practice the auto-fix set is the safe mechanical class — stale counts/dates/enumerations, wrong line-refs, an obviously-wrong factual clause on a local comment, at high confidence. Gap-fills, rewrites, contract docstrings, and every doc-file change get a human's eye. Default the whole skill to findings-first on a new codebase; enable auto-fix once a calibration batch has shown the signal is clean. The auto-fix threshold is a knob, not a default-on.
quick — the high-leverage surfaces only: CLAUDE.md/README + docstrings + file headers.standard — + all inline comments, bundle by bundle, over the chosen area.thorough — + doc files + config comments, whole codebase, rolled one bundle per pass.docs/pattern.md has the heuristics). Pick the area + depth.templates/audit-prompt.md and the schema in
templates/findings-schema.json.See docs/pattern.md for why this resists the usual failure modes (noisy
reports, comment-stripping, auto-fix that ripples) and the evidence behind the rubric.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Generates daily or weekly digests of activity from connected sources (chat, email, docs, tasks, CRM), highlighting action items, decisions, mentions, and project updates.
npx claudepluginhub jezweb/honesty --plugin honesty