AntiSlopDormant
A small Rust CLI that scans source code for signs of unfinished AI-generated work: TODO placeholders, “for now” deferrals, “should work” hedging in comments, empty stubs and placeholder data.
- What it is
- Linters, formatters and type checkers (linters)
- Type
- Open source
- Made by
- Stefan Wiest (personal project)
- License
- MIT or Apache 2.0
- Status
- Dormant. No changes by its author since January 9, 2026; only automated dependency updates since. The latest published version is 0.3.0.
- Facts checked
- 23 October 2026
What it is
AntiSlop is a one-person project published on crates.io (where docs.rs hosts its API docs) and npm. It doesn’t look for bugs or style problems, which it leaves to ESLint, Clippy and the like; it looks for code that admits it isn’t finished. Its categories are placeholders (TODO, FIXME, HACK), deferrals (“for now”, “temporary fix”), hedging (“hopefully”, “should work”), stubs (empty functions, todo!(), pass), error suppression (unwrap(), @ts-ignore) and redundant comments. Most of these are phrases in comments, so in practice it is a word-list checker for code comments plus a few syntax checks.
It matches regular expressions and, for about a dozen languages, uses tree-sitter grammars to find comments and function bodies; Kotlin, PHP, Swift and a few others are regex-only. Three profiles control how much it reports: the default core checks only placeholders and stubs, antislop-standard adds deferrals, hedging and dummy data, and antislop-strict adds nitpicks. Each run prints findings with a severity and a “sloppy score”, and --json produces machine-readable output. Custom patterns go in an antislop.toml file. The repository also includes a GitHub Action, a pre-commit hook, a Docker image and a VS Code extension.
Why teams pick it
- Catches leftover
TODOs, stubs and hedging comments that compile and pass ordinary linters - Fast, a single binary installed from Cargo, npm, Homebrew or a shell script, with no configuration needed
- Custom patterns are a few lines of TOML
Watch out for
- Mostly phrase matching: “for now” or “should work” in a legitimate comment is reported too, despite the README’s “zero false positives” claim for the default profile
- The checks find unfinished code whoever wrote it; a
TODOor a hedge is not proof that an AI was involved - A personal project (16 GitHub stars) that its author stopped changing in January 2026; the changelog lists a 1.0.0 that was never published
Alternatives
What all linters have in common →Compare side by side →CLAUDE.md or .cursor.How it fits with other technologies
A custom pattern in antislop.toml · text
file_extensions = [".py", ".rs", ".js", ".ts"]
[[patterns]]
regex = "(?i)TODO:"
severity = "medium"
message = "Placeholder comment found"
category = "placeholder"See it in a real stack
No architecture uses AntiSlop yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2025–2026
Stefan Wiest, who describes his work as AI research and multi-agent systems, created AntiSlop on December 31, 2025 and published version 0.2.1 to crates.io and npm the next day. Over the following week he added hedging patterns, filename checks for AI-generated duplicate files, the profiles and a “hygiene survey” that detects which linters, formatters and CI a project already uses, releasing 0.3.0 on January 7, 2026. After a last round of documentation changes on January 9 the project went quiet.
Why it’s built this way
- Stay out of what standard linters catch
- The README’s rule is that anything ESLint or Clippy flags by default is not AntiSlop’s job, so it can focus on unfinished intent.
- Regex plus tree-sitter, with optional languages
- Regex alone is fastest; tree-sitter grammars make comment and stub detection accurate, and Cargo features let users build in only the languages they need.
Timeline
- 2025
December 31: repository created
- 2026
January 1: 0.2.1 on crates.io and npm
- 2026
January 7: 0.3.0 with profiles
- 2026
January 9: last change by the author