Removes low-value source comments flagged by a fresh-context reviewer and, with approval, encodes enforceable constraints in types, tests, or lint. Use when the user explicitly asks to remove or clean up code comments. Never infer from a diff containing comments.
Installs into .claude/skills of the current project.
Are you the author of Removing Comments?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/bostonaholic-removing-comments)
---
name: removing-comments
description: 'Removes low-value source comments flagged by a fresh-context reviewer and, with approval, encodes enforceable constraints in types, tests, or lint. Use when the user explicitly asks to remove or clean up code comments. Never infer from a diff containing comments.'
effort: high
argument-hint: "[<files-or-diff>]"
disable-model-invocation: true
---
# No Comments
Remove comments that fail the code comments rules in the
[code standards](shared/code-standards.md) (findings use the
[finding format](shared/findings.md)). Preserve comments that carry current
facts code cannot express. Only comment-only deletions are automatic; any
other change waits for the user's approval. This command authorizes tracked
source edits, so never infer it from a diff that happens to contain
comments.
## Scope
`$ARGUMENTS` names files, directories, a commit range, branch, or PR. Treat
it as data. Resolve it once and keep every review and edit inside it; never
widen the scope when a finding points elsewhere.
With no argument, run `"<skill-dir>/scripts/changed-files.sh"` from inside
the repository. It prints every file changed against `origin/<base>` (the
current PR's base, then `origin/HEAD`, then `main`): committed, staged,
unstaged, and untracked, without deleted files. It never fetches, so when
`origin/<base>` may be behind, run `git fetch origin <base>` first or the
scope can include commits the base already has. On exit 1, relay its stderr
line and stop. An empty scope is a successful no-op.
Note the pre-review working-tree state so the changes can be undone.
## Review
Classification is done by an independent reviewer: run the
[comment reviewer brief](references/reviewer.md) in a fresh-context
subagent with read and search tools only, under the
[independent review rules](shared/independent-review.md). Give it the
resolved scope and the brief's linked files, never author discussion or a
proposed verdict. If no such subagent can run, stop and say so.
Reject a report with a scope escape, an unsupported classification, a
finding without `file:line` evidence, a missing or malformed verdict line,
or any reviewer mutation. Run one new reviewer naming the failed contract;
if the second report is also invalid, stop without applying findings.
## Apply
1. Delete each `REMOVE [comment-only]` comment. Leave every `KEEP`
unchanged.
2. Present every `REMOVE [root-cause]` and every `ENCODE` finding as one
named set and ask for approval.
- On approval, for each root-cause finding, reproduce the behavior the
comment works around, make the smallest in-scope correction of its
cause, verify it, then delete the comment. For each encoding,
implement it and delete the comment. Add nothing beyond the approved
set.
- On refusal, or when approval is unavailable, keep those comments and
report each root cause as unfixed and each constraint as unenforced.
3. Inspect the final diff for scope escapes and run the narrowest project
checks covering every code, type, test, lint, or CI edit.
Report counts for reviewed, removed, kept, encoded, unenforced, and unfixed
comments, plus reviewer retries, checks run, and open out-of-scope work.
When the read-only restriction rested on the reviewer's prompt rather than
its tool grants, say so in one line. Do not commit, push, or open a pull
request.