cd /news/developer-tools/anti-slop-opinionated-oxlint-rules · home topics developer-tools article
[ARTICLE · art-93711] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

anti-slop: Opinionated Oxlint rules

Developer Dillon Mulroy released anti-slop, an open-source (MIT) plugin of opinionated Oxlint rules that reject low-evidence and low-signal TypeScript and JavaScript patterns, distributed via source and an npx skill installer. The plugin ships 10 rules including no-chained-type-assertions, no-conditional-empty-object-spread, and no-unknown-parameters, and is configured through oxlint.config.ts with jsPlugins. An npm release is planned, and the skill copies the plugin, installs current Oxlint dependencies, merges the plugin into existing lint configuration, enables every rule, and validates the result.

read2 min views1 publishedAug 12, 2026
anti-slop: Opinionated Oxlint rules
Image: source

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

The plugin is source-distributed for now. An npm release is planned; until then, use the bundled agent skill to copy and configure it in another repository.

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

Then ask your coding agent to install or configure anti-slop in the current repository. The skill copies the plugin, installs current Oxlint dependencies, merges the plugin into the existing lint configuration, enables every rule, and validates the result.

To inspect available skills first:

npx skills add dmmulroy/anti-slop --list

Copy src/

into the target repository, for example at tools/oxlint/anti-slop/

, and install matching current versions of oxlint

and @oxlint/plugins

.

Register the copied entry point in oxlint.config.ts

:

import { defineConfig } from "oxlint";

export default defineConfig({
  jsPlugins: [
    { name: "anti-slop", specifier: "./tools/oxlint/anti-slop/index.ts" },
  ],
  rules: {
    "anti-slop/no-chained-type-assertions": "error",
    "anti-slop/no-conditional-empty-object-spread": "error",
    "anti-slop/no-known-value-widening": "error",
    "anti-slop/no-object-parameters": "error",
    "anti-slop/no-runtime-typeof": "error",
    "anti-slop/no-shape-in-symbol-names": "error",
    "anti-slop/no-unknown-parameters": "error",
    "anti-slop/no-unknown-type-aliases": "error",
    "anti-slop/no-unsafe-dictionary-type": "error",
    "anti-slop/no-widen-then-assert": "error"
  }
});

The same jsPlugins

entry and rules work under lint

in a Vite+ config.

no-chained-type-assertions

— rejects nested type assertions that fabricate evidence.no-conditional-empty-object-spread

— rejects conditional spreads that use{}

to omit fields.no-known-value-widening

— rejects explicit broad target types that discard known value evidence.no-object-parameters

— rejects the broadobject

type on function inputs.no-runtime-typeof

— requires boundary parsing instead of ad hoctypeof

narrowing.no-shape-in-symbol-names

— rejectsshape

in symbol names.no-unknown-parameters

— rejectsunknown

inputs except the explicitcause

convention.no-unknown-type-aliases

— rejects aliases that merely concealunknown

.no-unsafe-dictionary-type

— rejects dictionary value contracts based onunknown

,any

,object

,{}

, and semantic equivalents.no-widen-then-assert

— rejects local flows that widen known values and later assert them back.

pnpm install
pnpm check

src/

is canonical. After changing production source, run pnpm sync:skill-assets

; CI checks that the skill's bundled copy remains identical.

MIT

── more in #developer-tools 4 stories · sorted by recency
── more on @dillon mulroy 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/anti-slop-opinionate…] indexed:0 read:2min 2026-08-12 ·