CtrlK
BlogDocsLog inGet started
Tessl Logo

mcollina/linting-neostandard-eslint9

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

1.25x
Quality

95%

Does it follow best practices?

Impact

97%

1.25x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

task.mdevals/scenario-3/

Upgrade ESLint Configuration for a Mixed JS/TS Project

Problem/Feature Description

An internal tools project has been using ESLint v7 with a .eslintrc.json file. The team is long overdue for an upgrade to ESLint v9 with the modern flat config system. The project is a mix of JavaScript utilities and TypeScript modules, and the old config used @typescript-eslint/eslint-plugin with some TypeScript-specific rules alongside base JavaScript rules.

The team is cautious about this migration — they've heard of projects breaking when rule behavior changes unexpectedly. They want the migration to preserve the spirit of the old config, and they want any style or rule adjustments made separately after the structural migration is stable.

Produce the updated linting setup. Document the migration in a MIGRATION.md file. Do NOT run npm install — just produce the updated config and package files. The grader will read the output files directly.

Output Specification

  • Updated package.json — with updated ESLint and plugin devDependencies for ESLint v9
  • eslint.config.js or eslint.config.mjs — the new flat config
  • MIGRATION.md — a brief description of the migration steps taken and any rule parity decisions

Input Files

The following files are provided as inputs. Extract them before beginning.

=============== FILE: package.json =============== { "name": "internal-tools", "version": "3.0.0", "type": "module", "scripts": { "lint": "eslint . --ext .js,.ts", "lint:fix": "eslint . --ext .js,.ts --fix" }, "devDependencies": { "eslint": "^7.32.0", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0" } }

=============== FILE: .eslintrc.json =============== { "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended" ], "rules": { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], "no-console": "warn" }, "overrides": [ { "files": ["*.ts"], "rules": { "@typescript-eslint/explicit-function-return-type": "warn" } } ] }

=============== FILE: src/utils.js =============== export function formatDate(date) { return date.toISOString().split('T')[0] }

=============== FILE: src/parser.ts =============== export function parseNumber(value: string): number { const n = parseInt(value, 10) if (isNaN(n)) throw new Error(Invalid number: ${value}) return n }

evals

SKILL.md

tile.json