{"slug": "slopsieve-a-diff-linter-for-the-ai-slop-era", "title": "slopsieve: a diff linter for the AI slop era", "summary": "A developer built slopsieve, a zero-dependency Node CLI that parses unified diffs and scores them against 12 weighted hygiene signals — such as skipped tests, leftover console.log calls, empty catch blocks, trivial dependencies and narration comments — printing file and line for each flag. The tool supports a --fail-at CI gate and --json output, and its author notes it is not an AI detector but a diff-hygiene scorer, citing a regex bug where the Laravel dump pattern dd\\s*\\( matched inside isQuantityOdd(.", "body_md": "cURL scrapped its bug bounty after getting buried in AI slop. Godot is drowning in slop PRs. GitHub floated a PR kill switch. the maintainers' complaint is consistent: the code looks fine until you read it.\n\nso i built slopsieve, a zero-dep node CLI that scores a diff or PR for the 12 signals a tired reviewer checks at 1am:\n\n``` bash\n$ npx slopsieve fixtures/slop.patch\n\nSLOP SCORE: 100/100 - ALARM\n4 files · +37 -8 lines\n\nFLAGS\n  [30] test weakening        tests/cart.test.js:24 it.skip(...)\n  [25] debug leftovers       src/cart.js:25 console.log(\"checking qty\", qty)\n  [20] empty catch/except    src/utils.js:12 } catch (e) {}\n  [20] trivial dependency    package.json:17 adds 'is-odd'\n  [15] commented-out code    3 commented-out lines\n  [10] narration comments    6 narration comments\n  [10] dead exports          'isQuantityOdd' referenced nowhere in this diff\n  [ 5] vague util sprawl     src/utils.js created\n```\n\nwhat it does: parses the unified diff, runs 12 weighted checks (it.skip, assertions removed, console.log/debugger, catch-all deps, exports nothing references, \"this function...\" comments), prints file and line for every flag. `--fail-at` makes it a CI gate, `--json` feeds tooling.\n\nthe bug that embarrassed me: my debug-leftovers regex `dd\\s*\\(` (laravel dump) matched `isQuantityOdd(` because the string \"dd(\" hides inside \"Odd(\". the tool caught nothing wrong with the fixture and everything wrong with my regex. word boundary fixed it; the test fixture keeps it fixed.\n\nwhat it is not: an AI detector. it scores diff hygiene signals. a human can write a 100/100 slop diff, an LLM can write a 0/100 clean one. the README lists where the heuristics miss: two-line catch blocks, callers outside the diff, comment patterns in other languages.\n\ngithub.com/princejain756/slopsieve - npx slopsieve owner/repo#123\n\nwhat is the one signal you wish your PR queue flagged automatically?", "url": "https://wpnews.pro/news/slopsieve-a-diff-linter-for-the-ai-slop-era", "canonical_source": "https://dev.to/princejain756/slopsieve-a-diff-linter-for-the-ai-slop-era-1a73", "published_at": "2026-10-15 12:12:00+00:00", "updated_at": "2026-10-15 12:19:26.699279+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["slopsieve", "GitHub", "Godot", "cURL", "Node.js"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/slopsieve-a-diff-linter-for-the-ai-slop-era", "markdown": "https://wpnews.pro/news/slopsieve-a-diff-linter-for-the-ai-slop-era.md", "text": "https://wpnews.pro/news/slopsieve-a-diff-linter-for-the-ai-slop-era.txt", "jsonld": "https://wpnews.pro/news/slopsieve-a-diff-linter-for-the-ai-slop-era.jsonld"}}