SlopSift documentation

The short
manual.

Enough to run SlopSift locally, understand what it reports, and wire it into CI. No account, API key, Python environment, or remote inference service required.

01 / Quick start

Run it where the writing lives.

The package and executable share the same name. Use Bun or npm without installing a separate binary.

bunx slopsift .
bunx slopsift "docs/**/*.md" "src/**/*.{ts,tsx}"
npx slopsift . --level info

The npm package includes the compact parser weights. After npm installs the package, SlopSift works offline and does not download a second runtime.

02 / Inputs

Prose, pages, and code comments.

  • Markdown and text: SlopSift reads the full document as prose.
  • HTML: SlopSift reads rendered text and skips scripts, styles, templates, SVG, metadata, and code blocks.
  • Source files: SlopSift extracts line and block comments, then maps each finding back to its original file location.
  • Ignored paths: SlopSift skips dependencies, generated directories, .git, and anything covered by .gitignore.

03 / Findings

Findings need a human.

error

A high-confidence, specific signature. Errors fail the command.

warning

Likely slop that still needs editorial judgment. Shown by default.

info

A low-confidence signal worth reviewing. Use --level info to include it.

Stylish output is for people. JSON follows ESLint’s numeric severity shape while retaining SlopSift’s level, confidence, exact range, word count, and findings per thousand words.

04 / CLI flags

The useful switches.

FlagWhat it does
--level info|warning|errorChoose the minimum finding level. The default is warning.
--quietShow errors only. Equivalent to --level error.
--format stylish|json|json-linesChoose human-readable or machine-readable output.
--ext .md,.txt,.tsLimit the file extensions SlopSift reads.
--ignore-pattern <glob>Add an ignore pattern. Repeat the flag for more than one.
--no-ignoreDo not read patterns from .gitignore.
--max-warnings <n>Exit 1 when the warning count is above this number.
--exit-zeroReport findings without failing the command. Runtime failures still exit 2.
--no-error-on-unmatched-patternAllow an optional glob to match no supported files.
--model <directory>Use an explicit SlopSift ONNX model bundle.
--no-downloadFail instead of using the emergency model download fallback.

Run slopsift --help for the canonical list shipped with your installed version.

05 / CI

Decide how strict the gate should be.

# High-confidence findings only
bunx slopsift . --quiet

# Fail when any warning appears
bunx slopsift . --max-warnings 0

# Machine-readable report without failing on prose
bunx slopsift . --format json --exit-zero
0 clean1 lint threshold failed2 arguments, configuration, model, or runtime failed

06 / Agent skill

Give your agent an editor.

Add the SlopSift skill with the open skills CLI. It works with Codex, Claude Code, Cursor, OpenCode, and other agents that support the Agent Skills format.

bunx skills add NikhilVerma/slopsift

The skill tells an agent to use the project's existing Bun or Node environment, run the real SlopSift CLI, inspect exact ranges, and prioritize errors over weaker signals. It does not switch runtimes just to run the linter. It also preserves the writer's voice, leaves legitimate findings alone, and rejects authorship claims based on a lint result.

07 / Model

Yes, it is a model we trained.

More precisely: SlopSift starts from a compact pretrained BERT-Mini English encoder and trains it for Universal Dependencies outputs: word-level parts of speech, syntactic heads, and dependency relations. Training combines UD English EWT supervision, structured distillation from a larger DeBERTa parser, and 50 controlled examples targeting grammatical relationships used by the linter.

We excluded separate lexicalized template families from training and reserved them for evaluation. That reduces template leakage and tests transfer to unseen variants; it does not prove broad generalization or rule out every lexical shortcut.

We quantize the selected checkpoint into an approximately 16 MiB ONNX bundle. The same weights run through ONNX Runtime Node in the CLI and ONNX Runtime Web/WASM in the browser. We used Stanza offline to label controlled examples and as an independent reference during experimentation. The runtime neither ships nor calls Stanza.

Read the full model card and reproducibility notes →