anti-slop Claude skill

Opinionated vendored Oxlint rules that reject low-evidence TypeScript and JavaScript patterns, installed and configured by a bundled setup skill.

Our verdict Recommended with caveats

A focused, well-documented lint ruleset, but it is explicitly one person's taste meant to be forked and maintained by you, not a universal standard.

What anti-slop does

anti-slop is primarily a set of custom Oxlint rules, not a prompt-based skill. The rules target patterns the author considers low-signal: no-conditional-empty-object-spread flags a conditional {} branch used to omit object fields without an autofix, since omission is not the same as assigning undefined; no-runtime-typeof requires boundary parsing instead of ad hoc typeof narrowing, while allowing existence checks against the literal string "undefined"; and require-safety-comment-for-type-assertion requires a nearby SAFETY-prefixed comment justifying any non-const type assertion. One comment-aware engine is vendored from ESLint Stylistic under MIT, with its license and provenance copied alongside the code. The project is explicitly meant to be vendored into your repository rather than used as a pinned npm dependency: there is no official npm package, and the single install-anti-slop skill (about 8.7 KB) copies the rule files and configuration into your repo so you own and can modify them afterward. The repo has about 37 scripts and 38 template-style fixture files supporting the rule implementations, plus CI, but the rules reflect one person's taste rather than a universal standard.

Good for

  • TypeScript/JavaScript teams who want stricter, opinionated lint rules
  • Projects willing to vendor and maintain lint rules rather than depend on a package

Not for

  • Teams wanting a drop-in, centrally updated lint package
  • Codebases not using Oxlint

What's inside depth 3/5

One 8.7 KB install skill plus about 37 implementation scripts and 38 fixture files for the vendored rules, with CI, but it is lint rules and an installer, not reference-heavy agent instructions.

Skills
1
Reference docs
24
Scripts
37
Tests / evals
0
Templates
38
Avg SKILL.md
8.5 KB

Counted from the repository file tree. How we score depth.

Dependencies and costs

  • Oxlint and the @oxlint/plugins package
  • A TypeScript/JavaScript project to vendor the rules into

How this anti-slop skill differs from writing and UI slop filters

Most results for "anti slop skill" are prompt-based. petergyang/no-ai-slop removes AI slop patterns from a piece of writing, and miqdadbadjuber/anti-slop gives a coding agent rules for filtering out generic AI-generated UI designs, text, and code. dmmulroy/anti-slop takes a different approach. Its Claude Code skill only installs and configures the project. The checks themselves are Oxlint rules that run in your lint step and CI, and they report specific TypeScript and JavaScript patterns. If you want to clean up prose or design output, use one of the prompt-based skills. If you want a linter that fails a build on unjustified type assertions or ad hoc typeof checks, this one fits.

What the install-anti-slop skill does on a fresh install

Once you have added the skill with npx skills add dmmulroy/anti-slop --skill install-anti-slop, ask your agent to install anti-slop in the current repository. According to the SKILL.md, the agent then:

  1. Reads the repository's agent instructions and git status. It identifies the package manager, any Oxlint or Vite+ configuration, and existing anti-slop entry points, including renamed or relocated copies listed in jsPlugins.
  2. Runs node <skill-directory>/scripts/install.mjs, which creates tools/oxlint/anti-slop/. You can pass a different relative destination as the first argument. The script will not overwrite an existing destination.
  3. Installs dependencies. If oxlint is already present, it installs @oxlint/plugins at exactly that version. If not, it runs npm view oxlint version and npm view @oxlint/plugins version and installs the same current version of both.
  4. Merges the plugin into your lint config, turns on every generic rule, and validates the result. In repositories that depend directly on Effect, it also turns on the opt-in Effect rule group.

To see the available skills before installing, run npx skills add dmmulroy/anti-slop --list.

Updating without losing your changes

Ask the agent to update anti-slop while preserving local customizations. You can name an upstream revision or specific fixes. The skill stages incoming source in a separate location. If the original upstream snapshot can be recovered, it uses a three-way merge. If not, it ports reviewed changes conservatively. It asks you about conflicting policy and about turning on new rules, records provenance for later updates, and never force-replaces the vendored directory. Two points to keep in mind: the copy script does not fetch or merge updates on its own, and the skill bundle you already have installed may be older than upstream. To get the latest version, ask the agent to retrieve and identify the current upstream revision.

Setup gotchas

Pin oxlint and @oxlint/plugins to exact versions, not ranges, so they upgrade together. Add the vendored plugin path and your agent directories (.claude/**, .cursor/**, .codex/** and similar) to ignorePatterns. Do not ignore every dot-directory. On Vite+, add the same patterns to fmt.ignorePatterns too, or vp check will reformat agent assets and the vendored plugin. Keep vendor/eslint-stylistic/LICENSE and UPSTREAM.md alongside the copied code. The readability rule does not need a separate Stylistic plugin.

Security review

Review before installing

A set of Oxlint lint rules (pure AST checks) plus an install skill that copies them into your repo, registers them in your Oxlint config, and installs the matching oxlint plugin package. It edits project config and dependencies but no network access, credential handling or hooks were found in the files checked. Most rule files were not opened line by line.

Worth knowing

  • Installs packages or toolsThe skill tells the agent to install oxlint (dev) and @oxlint/plugins pinned to the repo's oxlint version using the project's package manager, running npm view to find versions if oxlint is absent.skills/install-anti-slop/SKILL.md:33
  • Relies on a CLI or package we could not reviewDepends on the Oxlint CLI and @oxlint/plugins packages (not in the repo) and on the project's own lint/typecheck commands.skills/install-anti-slop/SKILL.md:47

What we checked

The repository (113 files) on Oct 29, 2026. Not a full review: we read 5 of 99 code files; it relies on code outside the repository: npm packages oxlint and @oxlint/plugins (installed into the target project); Not read: the ~90 rule, shared-helper, vendored padding-line and test files under src/ and skills/install-anti-slop/assets/ (grep shows no fs, network, child_process or env use outside install.mjs, sync-skill-assets.mjs and one test).

NVIDIA SkillSpector static scan: 3 pattern hits (MCP Rug Pull 2, Agent Snooping 1). Only three scanner hits, all MEDIUM: the README's npx skills install line (unpinned) and a README phrase about inspecting available skills. Nothing in the code reads credentials or makes network requests.

A review, not a certification. Skills change after we check them — read the files before installing.

License

MIT — commercial use allowed. The vendored ESLint Stylistic engine is also MIT; keep its LICENSE and provenance notice when copying the code.

Can it run unattended?

Not really. It is a one-time install and configuration step, then an ordinary lint rule that runs in your existing CI, not an agent task loop.

FAQ

What is anti-slop?

anti-slop is a set of opinionated Oxlint rules for TypeScript and JavaScript that reject patterns the author considers low-evidence, such as ad hoc typeof narrowing or unjustified type assertions. A bundled skill installs and configures them.

How do I install anti-slop?

Run npx skills add dmmulroy/anti-slop --skill install-anti-slop and ask your coding agent to install it, or copy src/ into your repo manually, for example at tools/oxlint/anti-slop/, and register it in oxlint.config.ts.

Is anti-slop an npm package?

No. There is no official npm package; it is meant to be vendored and maintained as part of your own repository, which the README states explicitly.

Is anti-slop a universal coding standard?

No, the README says it reflects the author's own preferences rather than a universal standard, and expects teams to change the rules to match their own.

Does anti-slop clean up AI-written prose?

No. It checks TypeScript and JavaScript code through Oxlint rules. For prose, use a writing-focused skill such as no-ai-slop.

Does anti-slop work with Vite+?

Yes. Put the same ignorePatterns, jsPlugins, and rules under lint in your Vite+ config, and add the ignore patterns to fmt.ignorePatterns as well.

Are the Effect rules enabled by default?

No. They live in a separate plugin at effect/index.ts. Register it only in repositories that use Effect. The install skill turns them on automatically when the repo depends directly on Effect.

Sources: GitHub repository (stars, license, file tree, last push Oct 14, 2026). Review based on the README and SKILL.md files as published.