When to use
Use this skill when you need to:
- Set up linting in a JavaScript or TypeScript project
- Use
neostandardas a Standard-like ESLint v9 flat-config baseline - Configure
eslint@9with the flat config system (eslint.config.js/eslint.config.mjs) - Migrate from
standardtoneostandardor ESLint v9 - Migrate from legacy
.eslintrc*configuration to ESLint v9 - Run linting consistently in CI and local development
Quick start: basic neostandard setup
Install dependencies and create a minimal eslint.config.js:
npm install --save-dev eslint@9 neostandard
// eslint.config.js
import neostandard from 'neostandard'
export default neostandard()
Verify the config works:
npx eslint .
Common setup workflow (new project)
- Install
eslint@9andneostandard(see Quick start above) - Create
eslint.config.jswithneostandard()as the base - Add any project-specific rule overrides on top
- Run
npx eslint .to confirm no config errors - Add a lint script to
package.json:"lint": "eslint ." - Integrate into CI with a non-fix run; use
--fixonly in local workflows
How to use
Read individual rule files for implementation details and examples:
- rules/neostandard.md - Install, configure, and extend neostandard with ESLint
- rules/eslint-v9-flat-config.md - Build ESLint v9 flat config for JS/TS projects
- rules/migration-from-standard.md - Migrate from
standardtoneostandardor ESLint v9 - rules/migration-from-legacy-eslint.md - Migrate from
.eslintrc*to flat config safely - rules/ci-and-editor-integration.md - CI scripts, pre-commit, and editor setup
Core principles
- Prefer reproducible linting with pinned major versions
- Keep config minimal and explicit
- Use flat config for ESLint v9 projects
- Treat lint failures as quality gates in CI
- Enable auto-fix for local workflows, but validate with non-fix CI runs