eslintlisted
Install: claude install-skill virajp/ai-plugins
# ESLint — the correctness gate
ESLint answers **"is this code wrong?"**. It carries **no formatting rules** —
dprint owns whitespace and layout, and a formatting rule here guarantees the two
tools eventually disagree on the same line with no way to satisfy both.
The default in this toolkit is `@askviraj/linter`: a self-contained ESLint CLI
that bundles ESLint and every plugin (TS, JSON/JSONC, CSS, HTML, Markdown, YAML,
TOML, Astro) behind an opinionated flat config. It is **zero-config** — a repo
using it needs no `eslint.config.*` and no plugin installs. A repo that already
has its own ESLint setup keeps it; do not migrate one uninvited.
## Flat config only
`eslint.config.js` (or `.mjs`/`.ts`), never `.eslintrc*`. The legacy format is
end-of-life, its cascade resolution is invisible, and the two formats do not
compose — a repo carrying both is running whichever one that ESLint version
happens to prefer.
An `.eslintrc*` file found in a repo is a migration to raise, not a file to
edit.
## Scope an override; never disable globally
Reach for config only when a default genuinely misfires — never to make a real
finding disappear.
- **`@askviraj/linter`** — add `.config/linter.yaml` (`--init` scaffolds it).
Prefer, in order: extra `ignores`, a per-preset `overrides` block, or a
`configs` entry targeting specific `files`. A `files`-scoped override states
*where* the rule is wrong; a global one states that nobody wanted to look.
- **Plain ESLint** — a trailing config o