Linter and formatter config: instant feedback for AI coding agents
This check looks for a committed linter or formatter config: ESLint, Prettier, Biome, Ruff, rustfmt, Clippy, golangci-lint, RuboCop, clang-format and about twenty others.
How many repos pass
Of the 371 repos on the leaderboard, 255 pass in full (69%), 0 pass in part (0%) and 116 fail (31%).
Why agents need it
A linter turns style into something an agent can check. It runs the tool, reads the errors and fixes them, where it would otherwise copy whatever style the nearest file uses. Aider lints after every edit by default, so a repo with no config gives it nothing to lint against.
How we score it
- Full pass: a config file for a supported tool, or a
[tool.ruff],[tool.black],[tool.flake8],[tool.pylint]or[tool.mypy]section inpyproject.toml. - Fail: no config found. We do not run the linter.
The methodology has the formula that turns checks into a score.
How to pass
Pick the standard tool for your language, commit its config file, and put the lint command in AGENTS.md. A linter that only runs with default settings leaves no file for this check to find.
Which agents count it most
- Aider14% of its score
- Pi11% of its score
- Cursor10% of its score
- Kimi CLI8% of its score
- GPT-5 Codex8% of its score
- Gemini CLI8% of its score
- Claude Code8% of its score
- Devin6% of its score
- OpenHands6% of its score
Pass rate by language
Top-scoring repos that pass
- Rust · 33.1k ★
- gitlab-org/cli92.7— · 1.1k ★
- apache/superset92.2Python · 75.1k ★
- axios/axios91.9JavaScript · 109.4k ★
- aio-libs/aiohttp91.9Python · 16.6k ★
- C++ · 131k ★
- Rust · 6.7k ★
- TypeScript · 115 ★
- TypeScript · 2 ★
- Python · 46k ★
- scrapy/scrapy90.6Python · 64.8k ★
- Clojure · 49.6k ★
Popular repos that fail it
- TypeScript · 391.8k ★
- TypeScript · 213k ★
- TypeScript · 190.9k ★
- Python · 187.5k ★
- TypeScript · 150.4k ★
- Python · 147.7k ★
- golang/go31.2Go · 139.2k ★
- Go · 128.3k ★