← ClaudeAtlas

no-ai-sloplisted

Strip AI slop from UI and Next.js code output. Use when generated or reviewed React, Next.js, or TypeScript code contains redundant comments that restate the code, leftover TODO and placeholder stubs, debug remnants like console.log and debugger, bloated JSDoc, decorative banner comments, or lazy type escapes like as any and ts-ignore. Trigger when the user asks to clean up generated code, remove AI comments, deslop, or tidy UI output, and run automatically as a review pass in the DO-UI pipeline.
simple11337/do-ui · ★ 0 · Web & Frontend · score 75
Install: claude install-skill simple11337/do-ui
# no-ai-slop AI-generated UI code reads like AI. The tell is not the logic, it is the noise around it: comments that narrate every line, placeholder stubs that were never filled, leftover `console.log`, JSDoc that restates the function name, banner comments made of equals signs, and `as any` sprinkled to make the types stop complaining. This skill removes that noise. The goal is code that reads like a developer wrote it on purpose, not code that reads like it was dictated by a model. It pairs with a flagger script: `scripts/no-ai-slop.mjs`. The script reports, it never edits. You decide what goes. The reason is simple and honest: a regex cannot reliably tell a useful comment from a redundant one, so automatic deletion would remove good comments too. ## The one rule for comments Comments explain why, not what. The code already says what it does. A comment earns its place only when it adds something the code cannot: a reason, a constraint, a gotcha, a link to context. Bad, restates the code: ```tsx // Set the title setTitle(value); // Map over the items and render a row for each {items.map((i) => <Row key={i.id} item={i} />)} // This component renders the header export function Header() { ... } ``` Good, explains intent or a non-obvious fact: ```tsx // Title must update before the animation starts or the measure is stale. setTitle(value); // Server sends items unsorted. Sort by rank, not id. {sorted.map((i) => <Row key={i.id} item={i} />)} ``` If you cannot write a w