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

@sha256_nulled/oxlint-plugin-anti-slop

v0.1.0

Published

Opinionated Oxlint rules that reject low-evidence TypeScript and JavaScript patterns.

Readme

anti-slop

Evidence-first Oxlint policy for agent-written TypeScript and JavaScript.

This fork keeps the original rules from dmmulroy/anti-slop, but changes the default: mechanically strong evidence rules are enabled first; architecture and vocabulary preferences remain explicit opt-ins.

Two enforcement layers

  1. Lint facts: AST-local patterns such as chained assertions and widening a known value before asserting it back.
  2. Review judgment: Ponytail-inspired deletion, reuse, standard-library, native-platform, root-cause, and abstraction decisions that require repository context.

Do not turn judgment into a broad syntax ban. Do not satisfy lint by adding wrappers, aliases, interfaces, or comments that make the code larger without making it safer.

Install

Install the evidence-first profile with the bundled agent skill:

npx skills add Fato07/anti-slop --skill install-anti-slop

Then ask your coding agent to install anti-slop in the current repository. The skill installs the package and tested Oxlint version, merges the recommended rules into the existing configuration, and validates the result.

Install the contextual simplicity review separately:

npx skills add Fato07/anti-slop --skill review-simplicity

Then invoke $review-simplicity when reviewing or implementing a change.

To inspect both skills first:

npx skills add Fato07/anti-slop --list

Profiles

recommendedRules is the default:

| Severity | Rules | | --- | --- | | Error | no-chained-type-assertions, no-widen-then-assert | | Warning | no-unknown-type-aliases |

strictRules enables all 15 rules as errors. It is intentionally opinionated and permits typeof only inside named type predicates and assertion functions.

Manual installation

Install the plugin and its matched Oxlint version:

pnpm add --save-dev --save-exact @sha256_nulled/[email protected] [email protected]
import { defineConfig } from "oxlint";
import { recommendedRules } from "@sha256_nulled/oxlint-plugin-anti-slop";

export default defineConfig({
  ignorePatterns: [
    ".agent/**",
    ".agents/**",
    ".claude/**",
    ".codex/**",
    ".continue/**",
    ".cursor/**",
    ".gemini/**",
    ".opencode/**",
    ".pi/**",
    ".roo/**",
    ".windsurf/**",
  ],
  jsPlugins: [
    { name: "anti-slop", specifier: "@sha256_nulled/oxlint-plugin-anti-slop" },
  ],
  rules: {
    ...recommendedRules,
  },
});

Oxlint's JavaScript plugin interface is currently alpha. This fork pins oxlint and @oxlint/plugins to the same version and treats upgrades as tested changes rather than installation-time guesses. See the official JS plugin documentation.

Rule catalog

| Rule | Recommended | Purpose | | --- | --- | --- | | no-chained-type-assertions | error | Reject nested assertions that fabricate evidence. | | no-unknown-type-aliases | warn | Keep unknown visible at the parsing seam. | | no-widen-then-assert | error | Reject known to broad to asserted-back local flows. | | no-conditional-empty-object-spread | strict | Prefer explicit property construction. | | no-known-value-widening | strict | Preserve known literal and object evidence. | | no-module-mocking | strict | Require tests to replace dependencies through real seams. | | no-object-parameters | strict | Avoid the broad object input contract. | | no-reflect-apply | strict | Prefer typed function calls. | | no-reflect-get | strict | Prefer typed property access. | | no-runtime-typeof | strict | Concentrate primitive checks in named type guards. | | no-shape-in-symbol-names | strict | Enforce domain-role naming instead of structural naming. | | no-unknown-parameters | strict | Require parsed input contracts. | | no-unknown-returns | strict | Prevent unknown from escaping a function contract. | | no-unsafe-dictionary-type | strict | Require a concrete dictionary value contract. | | require-safety-comment-for-type-assertion | strict | Require assertions to carry a review marker. |

The strict-only rules are not universal correctness claims. Parsers, libraries, plugin systems, metaprogramming, and legacy tests often need narrow overrides or a locally edited policy.

Development

pnpm install
pnpm check

The package publishes compiled JavaScript and declarations. Oxlint loads the plugin through the package import specifier.

License

MIT