No comments
Default is zero comments. Information that matters lives in names, types, tests, or structure — not prose glued to the next line.
Scope
Caller's files or diff. Else git diff main...HEAD plus the working tree.
Exceptions (keep only these)
- Legal / license headers
- Doc comments that define a public API contract callers depend on
- Non-obvious behavior forced by an external dependency, platform, vendor, or protocol we cannot reshape — cite the external constraint
prettier-ignore / equivalent formatter fences
- Issue or RFC links that encode a constraint code cannot express
Everything else dies: narration, banners, commented-out corpses, "IMPORTANT / do not remove" without a proven external keep, workaround sermons, requirement-ID citations in source, TODOs that restate the task.
Lint/TS suppressions (eslint-disable, @ts-ignore, @ts-expect-error): look up the rule. Correctness or safety rules → delete the suppression and flag the guilty symbol MUST KILL for a real fix. Style-only / faulty rules may stay.
Our-code surprises are not keep-list meat for comments — kill the comment and flag MUST KILL rename / extract / type / reshape so the code speaks.
Steps
- Spawn one read-only subagent with the brief in
comment-sicko-brief.md beside this file (verbatim + scope paths). Prefer a different model family from the parent when the harness allows.
- Triage the report. Reject application-code rewrites by the reviewer, scope escapes, and keep-claims that lack proof of an exception above. Doubt → delete.
- Apply accepted deletions and trivial in-scope fixes (dead path, unused param) yourself. Shape changes → REQUIRED SUB-SKILL: use
polish-diff or name /architect-style design work; do not widen the fence here.
- Constraint comments (
do not remove, talk to X): offer the cheapest encoding (type, test, lint, runtime assert). Wait for approval before encoding; unattended runs need caller pre-approval. Else delete and report the constraint open.
- Report: deletion count, restored keeps with proof,
MUST KILL flags, encodings offered/done, open work.
Rationalizations
| Thought |
Reality |
| "This comment documents the tricky bit" |
Then rename, type, or test until the trick is obvious — the comment is a smell |
| "IMPORTANT means keep" |
Scent, not proof. Prove an exception or delete |
| "polish-diff already covers comments" |
That pass is soft. This skill is the extreme bar the user asked for |
| "I'll leave it as reference while we fix" |
No. Delete now or encode then delete |
Red Flags
- Keeping a comment "for now" without an exception citation
- Reviewer rewriting application logic
- Restoring a kill without exact exception + proof
- Shipping with unencoded
do not remove constraints still in source
Done when
Scoped comments outside the exception list are gone; keeps cite an exception; MUST KILL flags and open encodings are listed.
1---2name: no-comments3description: Delete narrating and workaround comments in a scoped diff; keep only the narrow exception list — license, public API contracts, and constraints forced by systems we cannot change.4---56# No comments78Default is zero comments. Information that matters lives in names, types, tests, or structure — not prose glued to the next line.910<HARD-GATE>11OVERRIDE SHIP (2026-09-08): prior pack judgment preferred polish-diff's softer12comment discipline. User override required this extreme skill anyway.13</HARD-GATE>1415## Scope1617Caller's files or diff. Else `git diff main...HEAD` plus the working tree.1819## Exceptions (keep only these)2021- Legal / license headers22- Doc comments that define a **public** API contract callers depend on23- Non-obvious behavior forced by an **external** dependency, platform, vendor, or protocol we cannot reshape — cite the external constraint24- `prettier-ignore` / equivalent formatter fences25- Issue or RFC links that encode a constraint code cannot express2627Everything else dies: narration, banners, commented-out corpses, "IMPORTANT / do not remove" without a proven external keep, workaround sermons, requirement-ID citations in source, TODOs that restate the task.2829Lint/TS suppressions (`eslint-disable`, `@ts-ignore`, `@ts-expect-error`): look up the rule. Correctness or safety rules → delete the suppression and flag the guilty symbol `MUST KILL` for a real fix. Style-only / faulty rules may stay.3031Our-code surprises are not keep-list meat for comments — kill the comment and flag `MUST KILL` rename / extract / type / reshape so the code speaks.3233## Steps34351. Spawn one read-only subagent with the brief in `comment-sicko-brief.md` beside this file (verbatim + scope paths). Prefer a different model family from the parent when the harness allows.362. Triage the report. Reject application-code rewrites by the reviewer, scope escapes, and keep-claims that lack proof of an exception above. Doubt → delete.373. Apply accepted deletions and trivial in-scope fixes (dead path, unused param) yourself. Shape changes → REQUIRED SUB-SKILL: use `polish-diff` or name `/architect`-style design work; do not widen the fence here.384. Constraint comments (`do not remove`, `talk to X`): offer the cheapest encoding (type, test, lint, runtime assert). Wait for approval before encoding; unattended runs need caller pre-approval. Else delete and report the constraint open.395. Report: deletion count, restored keeps with proof, `MUST KILL` flags, encodings offered/done, open work.4041## Rationalizations4243| Thought | Reality |44|---|---|45| "This comment documents the tricky bit" | Then rename, type, or test until the trick is obvious — the comment is a smell |46| "IMPORTANT means keep" | Scent, not proof. Prove an exception or delete |47| "polish-diff already covers comments" | That pass is soft. This skill is the extreme bar the user asked for |48| "I'll leave it as reference while we fix" | No. Delete now or encode then delete |4950## Red Flags5152- Keeping a comment "for now" without an exception citation53- Reviewer rewriting application logic54- Restoring a kill without exact exception + proof55- Shipping with unencoded `do not remove` constraints still in source5657## Done when5859Scoped comments outside the exception list are gone; keeps cite an exception; `MUST KILL` flags and open encodings are listed.