oxlint

Oxlint — High-Performance JS/TS Linter

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "oxlint" with this command: npx skills add delexw/claude-code-misc/delexw-claude-code-misc-oxlint

Oxlint — High-Performance JS/TS Linter

Oxlint is 50-100x faster than ESLint. It ships with 690+ rules covering ESLint core, TypeScript, React, Jest, Unicorn, jsx-a11y, and more. It prioritizes high-signal correctness checks by default — things that are incorrect, unsafe, or useless — so teams can adopt it without drowning in false positives.

Detection

Before linting, confirm the project uses oxlint by checking for any of:

  • oxlint in package.json devDependencies/dependencies

  • An .oxlintrc.json file in the project root

  • An oxlint.config.ts file in the project root

  • An oxlint or lint script in package.json that references oxlint

If none of these exist, the project doesn't use oxlint — don't run it.

Running Oxlint

After code changes

Run oxlint to check your work. Prefer the project's npm script if one exists:

If package.json has a lint script using oxlint

npm run lint

Otherwise, run directly

npx oxlint

Fixing issues automatically

npx oxlint --fix

Use --fix for safe automatic fixes. Avoid --fix-dangerously unless the user explicitly asks for it — it can apply unsafe transformations.

Linting specific files

After editing only a few files, you can lint just those:

npx oxlint src/components/Button.tsx src/utils/helpers.ts

Interpreting output

Oxlint prints diagnostics with rule names in parentheses, e.g. (no-unused-vars) . When fixing:

  • Read the diagnostic message carefully — oxlint gives precise, actionable information

  • Fix the underlying code issue rather than suppressing the rule

  • Only add // oxlint-ignore comments as a last resort when the diagnostic is a genuine false positive

Output formats

For CI or tooling integration:

npx oxlint --format json # Machine-readable JSON npx oxlint --format github # GitHub Actions annotations npx oxlint --format unix # Simple one-line-per-error format

Configuration

Creating a config

npx oxlint --init

This generates an .oxlintrc.json starter config.

Config file format (.oxlintrc.json)

The config uses JSONC (JSON with comments). Key sections:

{ // Enable/disable individual rules with severity levels "rules": { "no-unused-vars": "error", "no-console": "warn", "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }] },

// Enable groups of related rules by category "categories": { "correctness": "error", // Definitely-wrong code "suspicious": "warn", // Probably-wrong code "pedantic": "off", // Opinionated style checks "perf": "warn", // Performance anti-patterns "style": "off", // Cosmetic preferences "restriction": "off", // Extra-strict rules (opt-in) "nursery": "off" // Unstable/experimental rules },

// Plugins to enable (setting this overwrites defaults, so list all you want) "plugins": ["typescript", "unicorn", "oxc"],

// File-specific overrides "overrides": [ { "files": ["/*.test.{ts,tsx}"], "rules": { "no-console": "off" } }, { "files": ["scripts/"], "rules": { "no-console": "off" } } ],

// Environment globals "env": { "browser": true, "node": true },

// Plugin-wide settings "settings": { "react": { "linkComponents": [{ "name": "Link", "linkAttribute": "to" }] }, "jsx-a11y": { "components": { "Link": "a", "Button": "button" } } },

// Type-aware linting (requires tsconfig) "options": { "typeAware": true } }

Rule severity levels

  • "off" / "allow" — Disable the rule

  • "warn" — Report but don't fail the build

  • "error" / "deny" — Report and exit non-zero

Unique rule names can omit plugin prefix: "no-console" = "eslint/no-console" .

Categories

Categories group rules by intent. The recommended starting point:

  • correctness: "error" — Always on. Catches real bugs.

  • suspicious: "warn" — Good signal, occasionally noisy.

  • Everything else: enable incrementally as the team is ready.

Available plugins

Enabled by default: typescript , unicorn , oxc

Opt-in (CLI flags or config):

Plugin CLI flag Purpose

react --react-plugin

React-specific rules

jsx-a11y --jsx-a11y-plugin

Accessibility rules for JSX

nextjs --nextjs-plugin

Next.js best practices

import --import-plugin

Import/export validation

jest --jest-plugin

Jest testing rules

vitest --vitest-plugin

Vitest testing rules

jsdoc --jsdoc-plugin

JSDoc documentation rules

node --node-plugin

Node.js-specific rules

promise --promise-plugin

Promise best practices

react-perf --react-perf-plugin

React performance rules

vue --vue-plugin

Vue.js rules

To disable a default plugin: --disable-typescript-plugin , --disable-unicorn-plugin , --disable-oxc-plugin .

Extending shared configs

{ "extends": ["./configs/base.json", "./configs/frontend.json"] }

Later entries override earlier ones. Paths resolve relative to the declaring config.

Monorepo support

Oxlint supports nested configs. Each directory can have its own .oxlintrc.json that overrides parent settings. Disable with --disable-nested-config if unwanted.

CLI Quick Reference

Flag What it does

-c, --config=PATH

Use a specific config file

--tsconfig=PATH

TypeScript config for path aliases

--fix

Auto-fix safe issues

--fix-suggestions

Also apply suggested fixes

-A, --allow=RULE

Suppress a rule (e.g., -A no-console )

-W, --warn=RULE

Warn on a rule

-D, --deny=RULE

Error on a rule

--quiet

Suppress warnings, show only errors

--deny-warnings

Treat warnings as errors (exit non-zero)

--max-warnings=N

Fail if more than N warnings

-f, --format=FMT

Output format: default, json, github, unix, etc.

--ignore-pattern=PAT

Exclude files matching pattern

--type-aware

Enable type-informed rules (needs tsconfig)

--print-config

Show resolved config (useful for debugging)

--rules

List all available rules

Categories can also be used with -A /-W /-D :

npx oxlint -D correctness -W suspicious -A pedantic

Suppressing rules inline

// oxlint-ignore no-console -- needed for debug logging console.log(debugInfo);

// oxlint-ignore-next-line no-unused-vars const _placeholder = computeValue();

Use oxlint-ignore (not eslint-disable ) — oxlint recognizes both, but prefer its native syntax.

Migrating from ESLint

If the project is moving from ESLint to oxlint:

Side-by-side approach — Run both linters, with eslint-plugin-oxlint disabling rules that oxlint already covers:

npm install -D eslint-plugin-oxlint

Add it as the last plugin in your ESLint config.

Full replacement — Use @oxlint/migrate to convert your ESLint config:

npx @oxlint/migrate

This generates an .oxlintrc.json from your existing ESLint configuration.

Supported file types

.js , .mjs , .cjs , .ts , .mts , .cts , .jsx , .tsx , .vue , .svelte , .astro

For .vue , .svelte , and .astro files, oxlint lints only the <script> blocks.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

figma-reader

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

forge

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

pir

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

meta-prompter

No summary provided by upstream source.

Repository SourceNeeds Review