dmmulroy/anti-slop is an Oxlint ruleset for rejecting low-evidence and low-signal TypeScript and JavaScript patterns. Teams copy it into their repositories and adapt the rules to their own standards, while its catalogue skill helps install and configure the vendored files.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dmmulroy/anti-slop --skill install-anti-slopgit clone --depth 1 https://github.com/dmmulroy/anti-slopWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dmmulroy/anti-slop/install-anti-slop)<a href="https://agentmods.dev/skills/dmmulroy/anti-slop/install-anti-slop"><img src="https://agentmods.dev/badge/skills/dmmulroy/anti-slop/install-anti-slop/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dmmulroy/anti-slop/install-anti-slop"><img src="https://agentmods.dev/badge/skills/dmmulroy/anti-slop/install-anti-slop.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Socket pass
- Snyk pass
- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00048 | $0.01863 |
| Opus 5 | $0.00024 | $0.00932 |
| Sonnet 5 | $0.00010 | $0.00373 |
| Haiku 4.5 | $0.00005 | $0.00186 |
Grade A, and why
install-anti-slop scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- install-anti-slop — 91% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 128 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Install or update anti-slop
Anti-slop is vendored code: the target repository owns its rules, diagnostics, tests, and configuration. Preserve those choices when bringing in upstream changes.
Choose the path
Read the repository's agent instructions and git status. Identify its package manager, Oxlint/Vite+ configuration, and any existing anti-slop entry points, including renamed or relocated copies referenced by jsPlugins.
- Existing installation — update, upgrade, migrate, or reconfigure: read Update a vendored installation and follow that procedure instead of the fresh-install steps below.
- No installation — fresh install: follow the procedure below. If the user requested an update but no installation can be found, confirm the target before installing.
Complete when the operation and target path are established and pre-existing work is identified.
Fresh install
-
Copy the bundled plugin from this skill. Run from the target repository:
node <skill-directory>/scripts/install.mjsThis creates
tools/oxlint/anti-slop/. Pass another relative destination as the first argument when the repository has an established tooling layout. The script refuses to replace an existing destination; route existing copies through the update procedure rather than--force.Preserve the nested
vendor/eslint-stylistic/LICENSEandUPSTREAM.md; they travel with the copied rule. Readability enforcement is self-contained and requires no Stylistic plugin dependency.Complete when the files, including vendored license and provenance, exist at the agreed destination without replacing an existing copy.
-
Install current compatible dependencies rather than trusting versions remembered by the agent:
- If the repository already depends on
oxlint, read its installed version from the package manager or lockfile and install@oxlint/pluginsat exactly that version. Pin it exactly rather than by range so future upgrades move both packages together. - Only when the repository has no
oxlintdependency, querynpm view oxlint versionandnpm view @oxlint/plugins version, then install the same current version of both packages. oxlintis a development dependency. The copied source imports@oxlint/plugins, so install it as a development dependency for a local-only plugin.- Do not replace the package manager or rewrite unrelated dependency ranges.
- If the repository already depends on
What ships with it
40 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- assets/anti-slop/effect/index.ts 991 B runs code
- assets/anti-slop/effect/rules/no-manual-effect-error-tag.ts 1.3 KB runs code
- assets/anti-slop/effect/rules/no-manual-tag-comparison.ts 1.1 KB runs code
- assets/anti-slop/effect/rules/no-manual-tagged-construction.ts 995 B runs code
- assets/anti-slop/effect/rules/no-service-constructor-imports.ts 1.6 KB runs code
- assets/anti-slop/effect/rules/prefer-effect-match.ts 1.5 KB runs code
- assets/anti-slop/effect/shared/tagged-values.ts 3.0 KB runs code
- assets/anti-slop/index.ts 2.6 KB runs code
- assets/anti-slop/rules/no-array-filter-map.ts 1.4 KB runs code
- assets/anti-slop/rules/no-chained-type-assertions.ts 2.5 KB runs code
- assets/anti-slop/rules/no-conditional-empty-object-spread.ts 1.5 KB runs code
- assets/anti-slop/rules/no-known-value-widening.ts 13 KB runs code
- assets/anti-slop/rules/no-module-mocking.ts 2.7 KB runs code
- assets/anti-slop/rules/no-object-parameters.ts 2.6 KB runs code
- assets/anti-slop/rules/no-reduce-accumulator-copy.ts 4.9 KB runs code
- assets/anti-slop/rules/no-reflect-apply.ts 926 B runs code
- assets/anti-slop/rules/no-reflect-get.ts 939 B runs code
- assets/anti-slop/rules/no-runtime-typeof.ts 2.3 KB runs code
- assets/anti-slop/rules/no-shape-in-symbol-names.ts 1.6 KB runs code
- assets/anti-slop/rules/no-unknown-parameters.ts 2.5 KB runs code
- assets/anti-slop/rules/no-unknown-returns.ts 2.8 KB runs code
- assets/anti-slop/rules/no-unknown-type-aliases.ts 1.5 KB runs code
- assets/anti-slop/rules/no-unsafe-dictionary-type.ts 4.5 KB runs code
- assets/anti-slop/rules/no-widen-then-assert.ts 12 KB runs code
- assets/anti-slop/rules/require-readable-spacing.ts 1.8 KB runs code
- assets/anti-slop/rules/require-safety-comment-for-type-assertion.ts 3.9 KB runs code
- assets/anti-slop/shared/array-method.ts 3.7 KB runs code
- assets/anti-slop/shared/dictionary-types.ts 17 KB runs code
- assets/anti-slop/shared/function-parameters.ts 2.0 KB runs code
- assets/anti-slop/shared/lexical-type-parameters.ts 1.8 KB runs code
- assets/anti-slop/shared/reflect-method.ts 1.0 KB runs code
- assets/anti-slop/shared/scope.ts 501 B runs code
- assets/anti-slop/shared/type-alias-resolution.ts 7.5 KB runs code
- assets/anti-slop/vendor/eslint-stylistic/LICENSE 1.1 KB
- assets/anti-slop/vendor/eslint-stylistic/padding-line-ast.ts 2.4 KB runs code
- assets/anti-slop/vendor/eslint-stylistic/padding-line-between-statements.ts 25 KB runs code
- assets/anti-slop/vendor/eslint-stylistic/padding-line-options.d.ts 1.7 KB runs code
- assets/anti-slop/vendor/eslint-stylistic/UPSTREAM.md 3.1 KB
- references/update.md 8.5 KB
- scripts/install.mjs 937 B runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · +9 lines 2cb88a6ec0c5
- 2d ago Changed · +11 lines · -19 tokens per session 3ce06f04ca55
- 9d ago Changed c4f283bae76c
- 12d ago First seen · 108 lines · 67 tokens per session scan A 4d769c56bcaa
install-anti-slop is a skill published in the GitHub repository dmmulroy/anti-slop (4,362 stars, last pushed yesterday), licensed MIT. It adds 48 tokens to every session and 1,863 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
biome-anti-slop
Install and configure vendored Biome anti-slop GritQL rules in a local TypeScript or JavaScript repository. Use when a user asks to add, configure, update, or migrate Biome anti-slop lint rules.
biome
Biome - Fast all-in-one toolchain for web projects (linter + formatter in Rust, 100x faster than ESLint).
chronicle
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…
create-pr
Creates a GitHub PR with a Linear-ticket-prefixed title and a decision-led, narrative description for Prisma 8. Use when the user wants to create a pull request, open a PR, or submit changes for review.
no-bare-casts
Writing as in TypeScript or TSX production code, modifying a file that contains a bare as cast, silencing a type error with a cast, encountering as unknown as, or reviewing a cast site.
schema-exploration
Lists tables, describes columns and data types, identifies foreign key relationships, and maps entity relationships in a database. Use when the user asks about database schema, table structure, column types, what tables exist, ERD, foreign keys, or how entities relate.