--- name: clean-comments description: Use when writing, fixing, editing, or reviewing TypeScript comments and TSDoc. Enforces Clean Code principles—no metadata, no redundancy, no commented-out code. when_to_use: | Also trigger on: commented-out code blocks, TODO/FIXME banners, author/ticket/date metadata in comments or TSDoc, TSDoc that no longer matches the code, redundant comments that restate the code (e.g. `i += 1; // increment i`), or asks like "is this comment useful", "why is this block commented". --- # Clean Comments ## C1: No Inappropriate Information Comments shouldn't hold metadata. Use Git for author names, change history, ticket numbers, and dates. Comments are for technical notes about code only. ## C2: Delete Obsolete Comments If a comment describes code that no longer exists or works differently, delete it immediately. Stale comments become "floating islands of irrelevance and misdirection." ## C3: No Redundant Comments ```ts // Bad - the code already says this i += 1; // increment i user.save(); // save the user // Good - explains WHY, not WHAT i += 1; // compensate for zero-indexing in display ``` ## C4: Write Comments Well If a comment is worth writing, write it well: - Choose words carefully - Use correct grammar - Don't ramble or state the obvious - Be brief ## C5: Never Commit Commented-Out Code ```ts // DELETE THIS - it's an abomination // function oldCalculateTax(income: number): number { // return income * 0.15; // } ``` Who knows how old it is? Who knows if it's meaningful? Delete it. Git remembers everything. ## The Goal The best comment is the code itself. If you need a comment to explain what code does, refactor first, comment last.