slop-check grades any repo's slop level, hands you a fun report card, and gives you copy-paste prompts to fix what's wrong. It's a skill for AI coding agents β run one command, get a verdict in chat, and open a self-contained report card at a local URL.
The roast is the headline. The receipts are the product.
It's a game on the surface β a tier ranking from Senior Engineer down to GPT-3.5,
Unsupervised β and a real code review underneath, where every point of slop cites an
actual file:line and comes with a prompt to fix it.
It's a single self-contained HTML file β no server, no build, works offline. The source
lives in examples/demo-report.html.
Your Slop Percentage β how much of the codebase reads as slop β drops you on a six-rung ladder. Lower is better. You climb toward the right.
| Slop % | Tier | |
|---|---|---|
| 0β10% | Senior Engineer | A real, competent human clearly cared about this. |
| 11β25% | Mid-Level Engineer | Genuinely fine. Also, slightly mid. |
| 26β45% | Advanced Vibe Coder | AI-assisted, but you know what good looks like. |
| 46β65% | Somehow, It Works | It runs. Don't ask how. |
| 66β85% | Zoned-Out Vibe Coder | You were on your phone for at least three of these files. |
| 86β100% | GPT-3.5, Unsupervised | Nobody read anything. Ever. |
(There's a rumored π Cracked 10x Engineer badge for sub-3% slop. It has to be earned.)
Run it and you get a verdict in chat right away:
π Slop Check: 58% slop β "Somehow, It Works"
Scanned: 312 files Β· 41,980 lines Β· 2 cycles Β· 9.4% duplication Β· 84 AI tells
Worst offenders:
β’ src/context/CartContext.tsx β 1,612-line god object imported by 47 components
β’ src/services/checkout.ts:14 β circular dependency with payment.ts
β’ src/components/ProductCard.tsx β ~140 lines duplicated across 5 card components
Most valuable fix: Break up CartContext β almost every coupling problem traces back to it.
Report: http://localhost:7331
β¦and a report card at that URL with the full breakdown: the slop dial and tier, where
you land on the scale, an itemized "receipt" of every category score, the areas of concern
with file:line receipts, and β the useful part β Fix-It Prompts you copy straight into
your coding agent.
The grade is built on real engineering heuristics, not vibes about vibes:
- It judges architecture, not style. The deletion test (would removing this module actually concentrate complexity, or is it a pointless pass-through?), shallow vs. deep modules, layering violations, god files, circular dependencies. Heuristics adapted from Matt Pocock's "real engineering, not vibe coding" skills.
- It's honest both ways. A genuinely good codebase scores low and gets told so. A rigged roast would be worthless β if your code is clean, the report says it plainly.
- No vibes-only deductions. Every point of slop points at a real line. If it can't cite the line, it isn't a finding.
Tools that build a full knowledge graph of your repo read every file with an LLM and can take hours. slop-check is a two-pass design that finishes in minutes:
- A free, deterministic scan (
scripts/slop-scan.mjsβ Node 18+, zero dependencies) covers 100% of the repo with no LLM at all. In a couple of seconds it builds the import graph and measures the countable stuff: circular dependencies, god files, dead orphan files, cross-file duplication, AI-tell comments, debug leftovers, file sizes. - A small judgment pass reads only a ~12% sample of files (the ones the scan flags as most worth a human read), across up to 6 parallel reviewers where the agent supports them, and grades what scripts can't see: shallow modules, naming, consistency. Every major finding is re-verified before it ships.
- Seven weighted categories combine into one Slop Percentage, and the report card is built and served at a local URL.
The cost is roughly one code-review conversation β flat, whether the repo is 300 files or 30,000, because the sample and reviewer count are capped.
This is the part that makes it more than a scoreboard. Each top finding comes with a ready-to-paste prompt for your coding agent β and it arrives pre-loaded with context the scan already paid for: the target file's blast radius (who imports it), what it imports, and a pointer to the full import map. So the agent you paste into starts warm instead of re-exploring your repo from scratch.
The tokens were already spent during the check β the fix prompt hands the knowledge over instead of making the next agent buy it again.
slop-check is a standard agent skill β it works with Claude Code, Codex, Cursor, Copilot,
Gemini CLI, or any agent that supports the SKILL.md standard. The only requirement is
Node 18+ (used by the bundled scripts β no npm install, ever).
Copy or symlink this folder into your agent's skills directory. For Claude Code:
ln -s "$(pwd)/slop-check" ~/.claude/skills/slop-checkThen, in any repo:
/slop-check
or just ask: "Run a slop-check on this codebase."
- Private and offline. Nothing leaves your machine. The scan is local, the report is a
local file, and the server is
localhost-only. No telemetry, no uploads. - Stateless. Each run is a fresh snapshot of the code as it is right now β it keeps no history and never compares against old runs (code changes too much between runs for that to mean anything). Re-running overwrites the previous report.
- The report is one self-contained HTML file. No CDN, no dependencies. It keeps working after the server stops, and you can share or print it.
- It fails loud, never fake. If a report ever fails to build, it shows an obvious error instead of a blank or placeholder page.
SKILL.md |
The process the agent follows |
references/HEURISTICS.md |
The smell catalog β deletion test, AI tells, naming, consistency |
references/SCORING.md |
Category weights, formulas, tier bands |
references/REPORT-SCHEMA.md |
The JSON payload the agent writes for the report |
src/*.mts |
The TypeScript source for the three scripts |
scripts/slop-scan.mjs |
Deterministic whole-repo metrics β no dependencies (compiled) |
scripts/build-report.mjs |
Validates the payload and injects it into the report template (compiled) |
scripts/serve-report.mjs |
Serves the report at a local URL β no dependencies (compiled) |
assets/report-template.html |
The report card (the agent never touches HTML) |
examples/demo-report.html |
A finished example report you can open right now |
The scripts are written in TypeScript (src/*.mts) and compiled to the scripts/*.mjs
files that ship in the repo, so end users run them with zero install β no build, no
npm install, just Node 18+. Contributors who want to change a script edit the .mts
source and run npm install && npm run build.
Grading heuristics adapted from Matt Pocock's skills. The two-pass "deterministic scan + small LLM sample" approach is the lightweight cousin of full knowledge-graph tools like Understand-Anything.
Grades are about the code, never the coder. Mostly.