Back to All Projects
Open Source Verified Architecture
anti-slop
anti‑slop is a curated collection of Oxlint rules that aggressively flag dubious TypeScript and JavaScript idioms. By treating low‑evidence patterns as errors, it forces teams to write clearer, more maintainable code without the usual “just‑works” compromises or hidden runtime bugs.
4,103 Stars 89 Forks
Core Technologies & Frameworks
TypeScript
Technical Architecture & Specifications
Most linter configurations arrive as locked npm dependencies, forcing teams to conform to someone else's release cycle. `anti-slop` takes a radically different architectural approach: it is designed explicitly to be vendored directly into your codebase. Created by dmmulroy, it provides an opinionated rule set for Oxlint targeting low-evidence and low-signal TypeScript/JavaScript patterns without attempting to serve as a universal standard.
### Architectural Model: The Vendoring Approach
Rather than publishing an official npm package, `anti-slop` provides source files that you copy straight into your target repository. This gives your engineering team full ownership of the logic. If a rule doesn't fit your exact standards, you edit or strip the source code directly instead of fighting configuration overrides.
Under the hood, `anti-slop` integrates with Oxlint's JavaScript plugin interface (`jsPlugins`). Because of this execution layer, version parity between `oxlint` and `@oxlint/plugins` must be strictly maintained at exact version matches to avoid runtime discrepancies.
### Automated Setup via Agent Skill
You can bootstrap `anti-slop` directly using its built-in agent skill:
```bash
npx skills add dmmulroy/anti-slop --skill install-anti-slop
```
If you want to inspect available skills prior to installation:
```bash
npx skills add dmmulroy/anti-slop --list
```
The installation skill copies the plugin source, resolves and installs matching versions for `oxlint` and `@oxlint/plugins`, merges the plugin into your `oxlint.config.ts`, enables generic rules, and runs a validation check. If your project directly depends on Effect, the skill automatically detects it and enables the opt-in Effect rule group.
### Manual Installation & Configuration
For manual setup, copy `src/` to a local path like `tools/oxlint/anti-slop/`. Install `@oxlint/plugins` ensuring its version exactly matches `oxlint`.
Register the entry point and rules inside `oxlint.config.ts`:
```ts
import { defineConfig } from "oxlint";
export default defineConfig({
ignorePatterns: [
".agent/",
".[cursor](https://cursor.sh/?aff=placeholder)/",
"tools/oxlint/anti-slop/**",
],
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-module-mocking": "error",
"anti-slop/no-object-parameters": "error",
"anti-slop/no-reflect-apply": "error",
"anti-slop/no-reflect-get": "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-returns": "error",
"anti-slop/no-unknown-type-aliases": "error",
"anti-slop/no-unsafe-dictionary-type": "error",
"anti-slop/no-widen-then-assert": "error",
},
});
```
### Review
By rejecting standard npm package distribution, `anti-slop` puts developers back in control of their linter rules. It provides a sharp, zero-fluff approach for teams using Oxlint who want to eliminate weak patterns—such as `no-chained-type-assertions`, `no-module-mocking`, or `no-widen-then-assert`—while keeping the rule source code fully maintainable in-repo.
Reviewed by DevTechPulse Editorial Board
All listed blueprints, repositories, and case studies are verified against public documentation and LTS container environments. For inquiries or updates, view our Editorial Policy.