you-might-not-need-a-comment
GitHub分析并清理冗余或自解释的内联注释,删除无效内容并将真实文档转换为 TSDoc 格式。
Trigger Scenarios
Install
npx skills add simstudioai/sim --skill you-might-not-need-a-comment -g -y
SKILL.md
Frontmatter
{
"name": "you-might-not-need-a-comment",
"description": "Analyze and fix redundant or self-explanatory inline comments — remove noise, promote genuine documentation to TSDoc",
"argument-hint": "[scope] [fix=true|false]"
}
You Might Not Need a Comment
Arguments:
- scope: what to analyze (default: your current changes). Examples: "diff to main", "PR #123", "src/components/", "whole codebase"
- fix: whether to apply fixes (default: true). Set to false to only propose changes.
User arguments: $ARGUMENTS
The one rule that matters
A comment must add information the code cannot express itself. Code says what and how; a comment earns its place only by explaining why — a non-obvious constraint, a workaround, a decision, a gotcha. If deleting the comment loses no information a competent reader wouldn't recover from the code in seconds, delete it.
This codebase's convention: TSDoc for documentation, no non-TSDoc comments, no ==== separators. Genuine documentation belongs in a /** ... */ block on the declaration; everything that survives as an inline // comment must be a real why, kept terse.
Anti-patterns to detect
- Restates the code:
// increment counterabovecounter++,// return the resultabovereturn result,// loop over items. Delete. - Narrates the obvious from names: the function is
fetchUserById, the comment says// fetches a user by id. The identifier already said it. Delete. - Section-divider / banner comments:
// ==== Helpers ====,// --- state ---,// #region. Against convention. Delete (the code's structure is the structure). - Commented-out code: dead code left as a comment. Delete — git is the history.
- Redundant type/param echo in prose comments:
// takes a string and returns a numberwhen the signature already says so. Delete. - Changelog / attribution noise:
// added by X,// TODO(2021): ...long-stale,// fix for bug. Delete unless it encodes a live, actionable constraint. - Genuine documentation written as a loose
//block on a declaration: a real explanation of what an exported function/type/const is for, but written as stacked//lines instead of TSDoc. Convert to a/** ... */TSDoc block on the declaration.
Patterns that ARE correct — do not flag
- A
//comment that explains a non-obvious why: a workaround for an upstream bug, an ordering constraint, a perf reason, a spec/edge-case the code can't self-document (// first-match wins — matches the old find() semantics). - Existing TSDoc
/** ... */blocks on declarations — leave them (only tighten if verbose). // boundary-raw-fetch:,// double-cast-allowed:,// boundary-raw-json:,// untyped-response:,// migration-safe:and other machine-read annotations — these are load-bearing, never touch them.// biome-ignore,// eslint-disable,// @ts-expect-errorand other tooling directives.// TODO/// FIXMEthat point at real, still-open work.
Bias
Prefer deletion over rewriting, and no comment over a comment when the code is already clear. When a comment is genuine documentation, prefer promoting it to terse TSDoc over leaving a loose // block. Never add new comments in this pass — this is a reduction pass. When unsure whether a comment encodes a real why, keep it.
Steps
- Analyze the specified scope for the anti-patterns listed above
- If fix=true, apply the fixes. If fix=false, propose the fixes without applying.
Version History
- ceda457 Current 2026-08-20 15:29


