Linter · design systems · agent briefs
Find the tells of generated code before your users do.
sloplint is a zero-dependency linter for the patterns AI assistants leave behind: purple gradients, swallowed errors, fallback secrets, mock data, invented proof and tests that assert nothing. It also gives each project its own design system, so agents stop converging on one look.
npx @sloplint/cli check .
Loading real output…
Live grader
Paste a component, route handler, stylesheet, test or README. It runs in your browser on the same engine as the CLI, so nothing leaves this page.
Autofix changes
A design system for every project
sloplint init writes a DESIGN.md generated from a seed and a one-line brief: a typeface trio, a palette solved for contrast, shape, motion and a layout to follow. The same input always gives the same system, and two rules keep the code on it.
npx @sloplint/cli init
Rule catalog
Each rule names a pattern, explains why it hurts, and shows the slop and the fix side by side. Select one to see its example rendered.
Four curated presets
Prefer a hand-tuned system? sloplint init --preset writes one of these to DESIGN.md instead. Each card below renders in its own preset; the switcher in the header restyles this whole page.
Command line
Node 20 or newer, no install step, no dependencies. Exit codes are designed for CI.
sloplint check [paths…]- Lints JS, TS, JSX, HTML, Vue, Svelte, CSS, Python and Markdown. Prints compiler-style frames with a fix for each finding and a weighted Slop Score, or one line per finding when piped.
--fixapplies safe autofixes,--changedchecks only what changed since the last commit,--format jsonfeeds other tools,--max-score 0fails the build on any slop. sloplint init [--brief text] [--hooks]- Generates
DESIGN.mdfor the project and syncs the rules it needs intoCLAUDE.md,GEMINI.md,AGENTS.mdand.cursor/rules/sloplint.mdc.--hooksmakes Claude Code lint every file it writes. Your own content in those files is left alone. sloplint style [--seed text]- Previews the system
initwould generate, as text, JSON or a specimen page, without writing anything else. sloplint explain [RULE]- Prints the rationale and a side-by-side slop and craft diff in the terminal. Without an argument it lists every rule.
- Suppressing a finding
- Add
sloplint-disable-next-line UI-007in a comment, or list paths in.sloplintignore. Suppressions only count inside comments.
name: sloplint
on: [push, pull_request]
jobs:
slop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npx @sloplint/cli check . --max-score 0
Brief pack for agents
Token-dense briefs you can drop into a system prompt, one per specialist. They cite the same rule IDs the linter enforces, so the reviewer and the author agree on what done means.
- rules/ui.mdVisual design, motion and UX writing for frontend agents.
UI · COPY - rules/backend.mdErrors, data access, network calls and API design.
BE - rules/security.mdSecrets, CORS, injection, server-side auth and webhooks.
SEC - rules/testing.mdAssertions, waits, focused tests and READMEs.
TEST - rules/motion.mdMotion, pacing and sound for videos written as code.
MOTION - scripts/verify-dom.spec.tsPlaywright checks against the rendered page: computed transitions, gradients, radii, layout shift and visible copy.
DOM