npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

slopsift

v0.11.0

Published

Lint Markdown, prose, and source-code comments for AI writing slop.

Downloads

2,472

Readme

SlopSift

An opinionated CLI that checks prose and source-code comments against selectable writing policies. It is a separate product built on the WritingLint engine; the AI-style rulepack remains its zero-configuration default.

npm version CI GitHub stars Code license: MIT Model license: CC BY-SA 4.0

Website · Documentation · Rules · GitHub Actions · Agent Skill · GitHub · npm

Let your coding agent fix its own writing

The Claude Code and Codex plugin checks each completed response automatically. Warnings and errors go back to the agent for a bounded rewrite; informational findings never interrupt the turn.

npx [email protected] agent doctor --host claude-code
npx [email protected] agent doctor --host codex
npx [email protected] agent demo

The doctor checks the installed client and plugin, then exercises the real reject-then-accept decision with a known-bad draft and a clean rewrite. See AGENT-HOOKS.md for installation and the live agent test.

Lint files yourself

bunx slopsift .
bunx slopsift "docs/**/*.md" "src/**/*.{ts,tsx}"
bunx slopsift . --format compact
bunx slopsift . --format brief
bunx slopsift . --format json
bunx slopsift . --format github
bunx slopsift . --level info
bunx slopsift . --exit-zero

Select a rulepack when you need a different writing policy. The option is repeatable, so AI-style and reader-first checks can run together:

slopsift manual.md --rulepack reader-first
slopsift docs/ --rulepack ai-style --rulepack reader-first

The reader-first pack applies general simplified-technical-writing techniques: introduce terms before relying on them, show relationships between nouns, keep one main point visible, and remove ornament that does not help the reader. It does not include an external controlled dictionary or claim compliance with an external standard.

The slopsift package and executable deliberately share a name, so both bunx slopsift . and npx slopsift . work without a package override. CI installs its packed tarball into an isolated non-workspace project before every release and repeats the smoke test against the public registry afterward.

The optional dirty-tree and transcript checks let the agent fix documentation in changed files and use prose stored during the active turn as correction context. Pi can queue the same findings as an automatic follow-up turn. The agent guide documents those modes, privacy boundaries, and tests.

SlopSift grades every finding by detector confidence:

  • error / high confidence: a strong, specific slop signature; exits non-zero.
  • warning / medium confidence: likely slop that still needs editorial judgment.
  • info / low confidence: a possible signal to review; never fails a run by itself.

The default --level warning reports errors and warnings. Use --level info for the strict editorial view, --level error (or --quiet) for high-confidence CI, and --max-warnings 0 when warnings should fail CI. JSON format uses ESLint's numeric severities (2, 1, 0), retains level plus confidence, and adds ruleUrl, wordCount, findingsPerThousandWords, and rulesetVersion for length-aware and release-stable comparison. Rules may also expose candidate positional anchors and numeric magnitude.metrics in structured output. The github formatter emits native GitHub Actions annotations. The compact formatter groups all findings by rule, removes source locations, and keeps only short examples. Use it when an agent needs the full result in a small response. --feedback compact is an alias for --format compact. The brief formatter emits plain-language habit notes and excerpts without product names, rule IDs, file paths, or source locations for safe use as model-facing feedback. Raw finding totals are not comparable across documents of different lengths.

Machine-readable consumers can use the versioned JSON output schema and rule catalogue. Both also ship in the npm package as slopsift/schema/result-v1.json and slopsift/rules.

Use --exit-zero for report-only pipelines: lint findings remain visible but do not fail the command. Configuration and runtime failures still exit 2. Unmatched patterns fail with 2 by default so a typo cannot silently pass CI; --no-error-on-unmatched-pattern makes deliberately optional globs exit 0. Per-file runtime failures are included in structured output as slopsift/runtime-error; SlopSift continues with the remaining files before it exits 2. An explicitly named supported file with no extractable prose receives an informational slopsift/no-extractable-prose diagnostic instead of a silent zero-word clean result.

SlopSift is not limited to isolated sentences. The parser-backed document model preserves paragraphs, document-level rules measure repetition and structure, and independent low-confidence signals can combine into a paragraph-level warning or error. A single passive or absolute stays informational; a dense cluster of different tells can become strong evidence of sloppy prose. The document rules also find repeated dependency frames, arguments restated without new support, recurring transitions, paragraph templates with the same cadence, and dense stacks of outcome claims without evidence. Measurements, sources, examples, mechanisms, polarity changes, and procedural lists act as negative evidence rather than being treated as more slop.

Markdown and text files are linted as prose. Markdown table cells and rows are kept as separate parse spans, and any remaining overlength span is chunked without dropping text. HTML files are linted as rendered text, excluding metadata, scripts, styles, templates, SVG, and code blocks. Astro files include visible page copy plus static titles, descriptions, and accessibility labels while excluding frontmatter and template expressions. JavaScript and TypeScript include line and block comments plus substantial multiline prose templates, such as text routes. Other source files extract comments and report findings at their original locations. Technical comments use a narrower profile that does not flag diagram symbols as emoji or demand actors for implementation passives. Generated directories, dependencies, .git, and paths in .gitignore are ignored by default.

The compact ~16 MB parser ships in the writinglint-parser-node dependency, so the CLI works offline immediately after installation. Every artifact is checked against the pinned release manifest before inference. Set SLOPSIFT_MODEL or pass --model to override it; the versioned cache is an emergency fallback.

See MODEL.md for model provenance, training, evaluation, quantization, artifact release, licensing boundaries, and the reproducibility runbook.

SlopSift's source code is MIT licensed. The ONNX graphs bundled by its writinglint-parser-node dependency are distributed under CC BY-SA 4.0; the tokenizer retains its Apache 2.0 lineage. See the parser's model license and attribution.

SlopSift has independent versioning and product ergonomics even while developed in this monorepo. See RELEASING.md for its release boundary and checklist, and CALIBRATION.md for the real-prose precision method and current regression results. AUDIT.md records the blind corpus review, newly covered families, and the semantic-model boundary.