A high-confidence, specific signature. Errors fail the command.
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.
Likely slop that still needs editorial judgment. Shown by default.
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.
| Flag | What it does |
|---|---|
--level info|warning|error | Choose the minimum finding level. The default is warning. |
--quiet | Show errors only. Equivalent to --level error. |
--format stylish|json|json-lines | Choose human-readable or machine-readable output. |
--ext .md,.txt,.ts | Limit the file extensions SlopSift reads. |
--ignore-pattern <glob> | Add an ignore pattern. Repeat the flag for more than one. |
--no-ignore | Do not read patterns from .gitignore. |
--max-warnings <n> | Exit 1 when the warning count is above this number. |
--exit-zero | Report findings without failing the command. Runtime failures still exit 2. |
--no-error-on-unmatched-pattern | Allow an optional glob to match no supported files. |
--model <directory> | Use an explicit SlopSift ONNX model bundle. |
--no-download | Fail 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 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 →