From kampus-pipeline
Removes boilerplate AI comments that bury code while preserving load-bearing notes; collapses duplicated rationale into ADR pointers or decision files. Use when comments feel noisy, redundant, or skipped.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kampus-pipeline:deslop-commentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A comment a reader pattern-matches as "AI boilerplate" and skips is worse than no comment: it adds visual noise that buries the code, and it rots silently because nobody reads it to notice it's wrong. This skill removes that class of comment. It is **not** anti-comment — a load-bearing note that tells the next agent something the code can't is the whole point of comments. The job is to widen th...
A comment a reader pattern-matches as "AI boilerplate" and skips is worse than no comment: it adds visual noise that buries the code, and it rots silently because nobody reads it to notice it's wrong. This skill removes that class of comment. It is not anti-comment — a load-bearing note that tells the next agent something the code can't is the whole point of comments. The job is to widen the gap between those two.
Would the next agent be wrong, slower, or surprised without this comment — in a way the code itself doesn't already tell them?
If no → it's slop, cut it. If yes → keep it (and make sure it lives in the right place). "Required for the next agent" is the bar for any inline comment. Not every if block earns one.
phoenix already has homes for the things big docblocks try to be (CLAUDE.md, "Doc surfaces"):
.decisions/ (ADRs) = the why + history, including superseded approaches..patterns/ = how the current code is shaped (evergreen).README = current state for builders.An inline comment is the surface of last resort — for a load-bearing note that has no other home and belongs at this exact line. If a docblock is re-deriving a why that has (or deserves) an ADR, it is duplication, and duplication drifts. Shrink it to a pointer or migrate it.
CUT (delete outright):
/* ---- Types ---- */, // ===== Helpers =====./** Title cap. */ over POST_TITLE_MAX, /** The user id. */ over userId: string.// loop over posts, // return the result, // guard against null./report.)COLLAPSE (shrink to a pointer):
// See ADR 0013 / // keyset order: .patterns/fate-connections.md. One line, pointing at the single source of truth.MIGRATE (extract, then pointer — see "Fork B" below):
/adr) or .patterns/ doc, then replace the docblock with a pointer.KEEP (inline, as-is or trimmed):
value is 1 | null; null retracts — up-only MVP").@ts-expect-error / // biome-ignore rationale.A header earns its place when it states what the module is + the one non-obvious thing about it, in a paragraph. It does not earn its place as a multi-section essay re-deriving the code below it — that's the wall. Trim headers to the what + the load-bearing why; push the rest into the categories above (collapse to ADR pointers, migrate orphans, cut narration).
TODO / FIXME / HACK markers. If one is stale or actionable, file it with /report and remove it; otherwise leave it.@ts-expect-error, biome-ignore, eslint-disable, @vitest-environment)..decisions/index.md for the next monotonic number (the /adr skill does this).For a whole-codebase pass, not a single file:
<prefix> is your personal branch prefix, e.g. umut/): SUF="$(date +%s)-$$"; git worktree add -b "<prefix>/decomment-$SUF" "../phoenix-decomment-$SUF" main. (A hardcoded <prefix>/decomment / ../phoenix-decomment makes the second run fail with '<prefix>/decomment' is already checked out or clobber the shared dir.) Everything — this cleanup, plus any new ADR/pattern docs — lands on that one branch as one reviewable PR.ORPHANS.md at the root of this run's worktree (../phoenix-decomment-$SUF/ORPHANS.md) — run-local because the worktree dir is per-run, so two concurrent passes never append to the same file: file path + 1-line summary of the homeless knowledge. This keeps phase 1 safe to parallelize.ORPHANS.md. Creating ADRs concurrently collides on numbering, so do this in one thread: for each real orphan, /adr (or write a .patterns/ doc), then replace the inline docblock with a pointer. Drop orphans that turn out to be slop after all.pnpm typecheck (comments-only should be a no-op, but JSDoc removal near @ts-expect-error can shift), then pnpm format to restore tabs/100-col. Report a git diff --stat for review — never auto-merge.Scale the agent count to the file count; chunk large restructures into more, smaller agents (the runtime kills a process after ~600s of no progress).
npx claudepluginhub kamp-us/phoenix --plugin kampus-pipelineGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.