Skip to content
Zap Studio
oxlint
Esc
navigateopen⌘Jpreview
On this page

Anti-Slop Plugin

The bundled anti-slop plugin — original rules for patterns that don't fit any upstream ESLint plugin.

anti-slop is bundled directly in oxlint, not wrapped from an upstream ESLint plugin. It’s included in base — and therefore every preset built on it — and catches patterns that lose type evidence or swap a real implementation for something that only looks like one.

Rules

Rule Catches
no-chained-type-assertions Nested type assertions, while still permitting chains made only of const assertions
no-conditional-empty-object-spread Conditional empty-object spreads that change omission semantics
no-known-value-widening Syntactic cases where a known value is explicitly widened and loses evidence
no-module-mocking Test-framework module mocking, in favor of real dependency seams
no-object-parameters The broad object type on function inputs, including local aliases to it
no-reflect-apply Reflect.apply, which bypasses ordinary typed function calls
no-reflect-get Reflect.get, which bypasses ordinary property access and useful type evidence
no-shape-in-symbol-names The case-insensitive substring “shape” in any JS/TS symbol name
no-unknown-parameters Unknown-typed inputs, except explicitly named error-cause enrichment
no-unknown-returns Function contracts that return unknown instead of a parsed domain type
no-unknown-type-aliases Named aliases that merely conceal TypeScript’s unknown top type
no-unsafe-dictionary-type Object-dictionary contracts whose direct value type is an unsafe escape hatch
no-widen-then-assert Immutable local bindings that erase a known type, later asserted back to a narrower type
require-safety-comment-for-type-assertion Non-const type assertions missing a comment stating the invariant TypeScript can’t express

License

anti-slop ships under its own MIT license, bundled at src/anti-slop/LICENSE inside the package.

Last updated on September 21, 2026

Was this page helpful?