+1 for the idea. Enforcing hard boundaries between is surprisingly helpful for AIs to reason about how to structure their changes.
We recently rolled out our own static analysis using oxc-parser and oxc-resolver, and it runs surprisingly fast (<1s for ~100K LOC). For us, it was definitely worth adding this layer of defence against The Slop.
Looks good; I'm eager to try it. Do you have any questions?
I prefer to have unused code detected during linting, but sadly, eslint has decided to kill off the APIs that support rules like `no-unused-modules`. Running a separate tool like this one or knip in place of a few lint rules just seems impractical.