From code-tidying
Classify code comments for four residue shapes — history narration ("used to… now…"), plan/session references ("Task 2 replaces the old…", "in this PR"), conversational antecedents ("per your request", "as you asked"), and ticket/PR/branch back-references a future reader will never see — emitting Tier 1 (remove) and Tier 2 (review) findings with treatment guidance; read-only, no edits applied. Use when: 'comment residue', 'audit code comments', 'find stale/narrative comments', 'strip conversational comments', or before committing agent-written code — not for removing ALL comments, restating-the-code redundancy (that is /code-tidying:tidy's Beck tidyings), or markdown noise (use /audit-noise).
How this skill is triggered — by the user, by Claude, or both
Slash command
/code-tidying:audit-comment-residue [audit] [target][audit] [target]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Current branch: !`git branch --show-current 2>/dev/null || echo "unknown"`
Current branch: !git branch --show-current 2>/dev/null || echo "unknown"
Uncommitted code files: !git status --porcelain 2>/dev/null | awk '{print $NF}' | grep -Ei '\.(cs|ts|tsx|js|jsx|py|sh|ps1|go|rs|java|rb|lua|sql|c|h|cpp|hpp|yaml|yml|toml)$' | head -10 || echo "none"
Residue findings (sample): !bash "${CLAUDE_SKILL_DIR}/scripts/detect.sh" 2>/dev/null | grep -E '^(Summary total:|Finding shape:)' | head -20 || echo "none"
Code comments accumulate RESIDUE — text that only makes sense outside the code's present state: narration of what the code used to be, references to the plan/session/changeset that produced it, asides addressed to the requester, and back-references to a ticket, PR, or branch no future reader will ever open. Version control owns history; the comment describes the present. A comment that only makes sense inside the chat thread that produced it is dead. This skill is a read-only classifier: it surfaces candidates with treatment guidance; the author hand-applies every deletion.
It detects residue on the COMMENT portion of a line only, so a residue-shaped word sitting in an identifier or string literal is never flagged. The positive question — does this comment capture something the code cannot (a non-obvious why, a constraint, an interface/design-intent contract)? — is left to the author; the shapes below are the comments that fail it.
| Shape | What it looks like | Default tier | Treatment |
|---|---|---|---|
history-narration | The comment narrates the code's past: "used to…", "no longer…", "previously", "renamed from X", "we switched from…", "now returns…" | 1 | Delete — version control owns history. Keep only if the reason for the change is a load-bearing constraint, rewritten as present-tense rationale ("must stay ordered because…") |
plan-reference | References a work plan, session, or changeset rather than the code: "Task 2 replaces the old…", "as planned", "in this PR/commit/refactor" | 1 | Delete — the plan is not part of the code's meaning. Fold any surviving intent into a present-tense why-comment |
conversational-antecedent | Addresses the requester or the producing conversation: "per your request", "as you asked", "like you said", "per our discussion" | 1 | Delete — the conversation is invisible to every future reader |
ticket-pr-residue | Back-reference to a tracker/PR/branch a reader can't follow: "see PR #45", "from the feature branch", "JIRA-123" | 2 | Review — delete a bare provenance reference; a TODO(#issue) tracking real outstanding work is the sanctioned exception and is NOT flagged |
Consumers with their own comment conventions can refine these defaults in their repo's CLAUDE.md /
rules; the classifier's shapes and tiers above are the skill's built-in baseline.
| Action | Args | Behavior |
|---|---|---|
<target> (default, no action keyword) | empty → uncommitted code files from git; file path → single-file; dir path → batch | run bash "${CLAUDE_SKILL_DIR}/scripts/detect.sh" on targets; map the emitted facts to the per-file tier table using the treatments above |
audit [target] | same target rules | explicit form of the default; same behavior |
audit → audit on rest (explicit form)Edit, no Write, no mutating Bash ops. The author owns every deletion.TODO)./audit-noise's territory and is skipped; a .md target yields no findings here.TODO(#issue) is sanctioned. A TODO / FIXME marker tracking real work is never flagged as ticket residue.comment-residue-ignore on a line (or the line before it) skips it.Per target file:
<file>: N finding(s) — T1=<n>, T2=<n>
| Tier | Shape | Line | Excerpt | Treatment |
|------|-------|------|---------|-----------|
| 1 | history-narration | 42 | "// used to buffer; now flushes" | Delete — version control owns history |
| 1 | conversational-antecedent | 12 | "# as you asked, retry three times" | Delete — invisible to future readers |
| 2 | ticket-pr-residue | 88 | "// see PR #45 for rationale" | Review — delete bare provenance; keep TODO(#issue) |
Batch aggregate at end:
Total: <N> file(s) audited, <T1> Tier 1, <T2> Tier 2 findings.
shape values: history-narration, plan-reference, conversational-antecedent, ticket-pr-residue.
/code-tidying:tidy. tidy APPLIES structural tidyings (including Beck's "Delete Redundant Comment" for comments that restate the code); audit-comment-residue is a read-only CLASSIFIER for the out-of-context residue class. Different concern, different mode./audit-noise. /audit-noise owns markdown noise; this owns code-comment residue. Neither touches the other's surface.npx claudepluginhub melodic-software/claude-code-plugins --plugin code-tidyingGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.