What can be checked automatically

Part of this catalog is already enforced by a lint rule, so it belongs in CI rather than in a review. The rest is multi-line behaviour spread over a file, which no linter can match and a person or an agent has to recognise. Knowing which half a migration falls into is most of deciding how to tackle it.

5 a linter already finds

Turn these on and stop reviewing them by hand. This catalog names the rule rather than reimplementing the check, the same way it points at guides rather than copying them.

All of them at once, in an eslint config:

26 shapes that need a person

No package is installed for any of these, so nothing matches in a package.json either. They are stateful and spread over a file, which is why no lint rule covers them. An agent reading the code can, which is what the skill and the MCP server are for.

  • Animating to height auto
  • Carousels
  • Focus trapping
  • Generating UUIDs
  • Modal dialogs
  • Multi-line text truncation
  • Scroll chaining and body scroll lock
  • Styled scrollbars
  • Tooltips, dropdowns and popovers
  • Visibility tracking

Not this tool's job

Three questions near this one, each better answered somewhere else. Reimplementing them here would be worse than pointing at them.

knip
Unused dependencies, exports and files. It reads npm scripts, config files and plugin names, which is what makes an "unused" claim trustworthy rather than a guess.
Biome useBaseline
The opposite direction to this catalog. It stops you using a feature before your target browsers have it, where this tells you a feature is finally old enough to replace a library.
eslint-plugin-compat
Checks calls against your browserslist. Useful alongside a finding here that reads as newly available.