- All playbooks
- Use a faster native linter without losing rules
Use a faster native linter without losing rules
Move supported lint checks to a fast native implementation and preserve coverage for rules it does not support.
Compare approaches
How companies used this technique
Read what each company changed and follow the original sources.
Run native lint without losing unsupported rules
After removing its type-information dependency, Linear moved lint work to Oxlint. Syntax-only rules are straightforward to port, and Oxlint reduced the CI runner-minutes spent on linting.
- Use it when
- A qualifying ESLint step remains on the slowest path after addressing type-aware overhead.
- Before applying it
- Retain ESLint for unsupported plugins and rules; benchmark equivalent file and rule coverage.
Lint with one fast native tool
This is a community contribution to Spotify's luigi project. Luigi's lint ran flake8 and isort, two separately configured tools. The change adds a ruff configuration to pyproject.toml, replaces the flake8 tox environment with a lint environment, points the GitHub Actions matrix at it, and applies ruff's fixes and formatting across the codebase.
- Use it when
- A lint or format step runs several Python tools that ruff replaces.
- Before applying it
- The first run rewrites files to the new rules and formatting, so land those automated fixes in commits separate from the configuration change.
Company Playbooks
- Read Anthropic’s playbookRun only affected tests
- Read DoorDash’s playbookRun build and test in parallel, sharded across CI agents
- Read Linear’s playbookBenchmark the same job on faster hardware
- Read Mastra’s playbookStarSling runners for the slowest test workflow
- Read OpenAI’s playbookRank CI fixes by the minutes they save
- Read Ramp’s playbookMove a CPU-bound test suite to a faster CPU
- Read Shopify’s playbookLet an agent iterate against one CI metric
- Read Spotify’s playbookBuild arm64 on native arm64 runners
- Read Stripe’s playbookRun only the tests a change can reach
- Read Uber’s playbookBuild the merge-queue speculations most likely to be needed