Configures ESLint v9 flat config and neostandard for JavaScript and TypeScript projects, including migrating from legacy `.eslintrc*` files or the `standard` package. Use when you need to set up or fix linting with `eslint.config.js` or `eslint.config.mjs`, troubleshoot lint errors, configure neostandard rules, migrate from `.eslintrc` to flat config, or integrate linting into CI pipelines and pre-commit hooks.
96
95%
Does it follow best practices?
Impact
97%
1.25xAverage score across 5 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent safely migrates a legacy .eslintrc config to ESLint v9 flat config, removes old config files, avoids mixing legacy and flat config, scopes TS rules correctly, and separates structural migration from rule tuning.",
"type": "weighted_checklist",
"checklist": [
{
"name": "eslint upgraded to v9",
"description": "package.json devDependencies specifies eslint at version 9.x (e.g. '^9.0.0' or '^9')",
"max_score": 8
},
{
"name": "Flat config file created",
"description": "An eslint.config.js or eslint.config.mjs file is present in the output",
"max_score": 8
},
{
"name": ".eslintrc.json removed",
"description": ".eslintrc.json is NOT present in the output (agent deleted or did not output it)",
"max_score": 10
},
{
"name": "No legacy+flat mix",
"description": "The output does NOT contain both a .eslintrc* file and an eslint.config.* file simultaneously",
"max_score": 10
},
{
"name": "TS rules scoped to TS files",
"description": "TypeScript-specific rules (e.g. @typescript-eslint/* rules) in the flat config are applied only to TS file patterns (*.ts, *.mts, *.cts), not to all files",
"max_score": 12
},
{
"name": "Base rule disabled for TS variant",
"description": "Where a TypeScript extension rule is configured (e.g. @typescript-eslint/no-unused-vars), the corresponding base JS rule (e.g. no-unused-vars) is set to 'off'",
"max_score": 12
},
{
"name": "Migration documented",
"description": "MIGRATION.md exists and describes the migration approach (not just a list of files changed — at least one sentence about choices made)",
"max_score": 8
},
{
"name": "lint script updated",
"description": "The 'lint' script in package.json no longer uses '--ext' flag (which is ESLint v7/v8 syntax, not valid in v9 flat config)",
"max_score": 10
},
{
"name": "Single root flat config",
"description": "Only one eslint.config.js (or eslint.config.mjs) file is created at the project root, not multiple per-directory configs",
"max_score": 10
},
{
"name": "Structural migration separated from rule changes",
"description": "MIGRATION.md mentions (or the commit approach implies) keeping structural migration separate from rule tuning, OR the flat config closely mirrors the original rules without aggressive cleanup",
"max_score": 12
}
]
}