cloudparts

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.

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 TODO or 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 →

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

  1. 2025

    December 31: repository created

  2. 2026

    January 1: 0.2.1 on crates.io and npm

  3. 2026

    January 7: 0.3.0 with profiles

  4. 2026

    January 9: last change by the author

Sources6 · facts checked 23 October 2026

Improve this page on GitHub