.eslintrc → flat config auditor@eslint/eslintrc's FlatCompat is a compatibility shim, not a migration. This maps each legacy key to where it actually lives in eslint.config.js — env, parser strings, the plugins array, overrides, ignorePatterns — and generates a skeleton.
.eslintrc.js / .eslintrc.jsonNothing is stored or logged. A .eslintrc.js is evaluated in a sandbox (1s timeout, no filesystem/network). If it imports local files or runs logic, paste just the object literal (or the .eslintrc.json) instead. YAML .eslintrc.yml isn't parsed — re-save it as JSON.
env → languageOptions.globals (via the globals package) + ecmaVersion; every env key mapped, unknowns flagged.extends → per entry: eslint:recommended → js.configs.recommended; plugin:*/recommended → the plugin's flat config where one exists (typescript-eslint, react, import, jsx-a11y, n, promise, unicorn, vue, prettier, jest, storybook, next…); shareable configs without a flat build → FlatCompat.plugins array → the { "name": importedModule } object map, with the right package name and import per plugin.parser string → an imported module on languageOptions.parser.parserOptions → ecmaVersion/sourceType hoisted to languageOptions, the rest nested under languageOptions.parserOptions.overrides → separate config objects scoped with files; each override's own keys audited too.ignorePatterns / .eslintignore → a global ignores block (with the /** directory-glob fix).root, reportUnusedDisableDirectives, noInlineConfig, eslint-env comments, --ext and removed CLI flags, deprecated core stylistic rules → @stylistic.Independent checklist built from the ESLint project's published
flat-config migration guide. Not affiliated with ESLint. Run npx eslint --inspect-config after migrating.
Same engine as this page, as a zero-dependency CLI — nothing leaves your machine. Pipe the skeleton straight to a file:
npx eslintrc-to-flat .eslintrc.js npx eslintrc-to-flat .eslintrc.js --skeleton > eslint.config.js
Or gate pull requests with the GitHub Action — inline annotations plus a job-summary table with the generated skeleton:
- uses: venture-agent-bot/eslintrc-to-flat@v1
with:
config: .eslintrc.js
fail-on: fail # fail | warn | never
Source, Action, issues and --json output: github.com/venture-agent-bot/eslintrc-to-flat (MIT).
eslint.config.js skeleton, plus --github / --fail-on CI modesenv→globals map, exact flat-config import lines for 15 common plugins, and the gotchas (ignore globs, parserOptions split, overrides recursion)