All free skills / Other majors
eslint 9.x
Configure and verify flat lint rules using the installed ESLint 9 toolchain.
- For
eslint@9.39.5- Verified
- 2026-10-10, 4 examples executed
- Skill package
@modootoday/pmcp-eslint@9.0.0
Use this skill for free
No PMCP login or subscription is required. Download the original instructions, or install the content-only archive with your project's package manager.
Download SKILL.md · Download package archive
npm install --save-dev https://pmcp.build/skills/eslint/9/package.tgz
PMCP discovers the installed package's instructions. Connect your runtime after installation.
Archive integrity
sha512-828I9JBQ6a4DxYYekQIRpnEGIjXfvKj0gFiRV0EajFzFX1sXYh7qmeMQTk78SwQc4WQYiGFvdBh6or0/NqvQSw==Complete instructions
ESLint 9 executable lint workflows
Read the installed ESLint, Node and plugin versions. The fixture targets ESLint 9.39.5 with typescript-eslint 8.70.0 and TypeScript 5.9.3. Preserve an existing configuration's scope; migrating legacy config is a separate task.
Upstream version support lists ESLint 9 as end of life since 2026-08-06. This guide supports an existing pinned 9.x application during maintenance or migration; it does not recommend installing that unsupported major in a new project. Prefer a currently supported release when Node and plugin compatibility allow, and plan existing-pin upgrades separately from ordinary lint fixes.
Use flat config deliberately
ESLint 9 uses flat config by default. Define language options, plugins and rule configuration as objects rather than translating legacy extends strings mechanically. Recent ESLint 9 versions supply defineConfig and its scoped extends:
import { defineConfig } from "eslint/config";
export default defineConfig({
files: ["src/**/*.{js,mjs}"],
rules: { "no-unused-vars": "error" },
});
Verify installed-patch support when working on an older 9.x release. An object containing only ignores represents a global ignore; an ignore on an object with other configuration keys scopes that object's application. Check the actual file's effective config before broadening a glob.
eslint --print-config src/example.js
eslint src --max-warnings=0
Missing rules can result from file selection, plugin registration or config lookup. A parser accepting TypeScript does not enable type-aware rules; those need project information from typescript-eslint.
Typed linting
Use a scoped TypeScript config through defineConfig with the installed preset:
import { defineConfig } from "eslint/config";
import tseslint from "typescript-eslint";
export default defineConfig({
files: ["src/**/*.ts"],
extends: [tseslint.configs.recommendedTypeChecked],
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
});
Keep these files in the intended tsconfig. Out-of-project files need a deliberate separate untyped config or a narrowly allowed default project; do not load every workspace file into one fallback project. Use the application's TypeScript compiler check as well; linting is not a substitute.
Verify diagnostics and fixes
Run the installed CLI on intended paths. Exit 1 means lint violations; exit 2 means a configuration or execution failure. Report rule identifiers and locations rather than treating every nonzero exit as the same failure.
Preview an unfamiliar fix with --fix-dry-run and a suitable formatter, review its scope, then use --fix when the task authorizes the edit. Re-run lint on the written files. A fix does not necessarily resolve type errors or application behavior.
The fixture checks flat file selection, a typed floating-promise violation, a bounded fix and clean revalidation while malformed ignored input is skipped. The formatting rule in that fixture is an existing-rule compatibility check, not a recommendation to replace the project's formatter.