The framing that drove it: your CLAUDE.md / AGENTS.md is guidance; your lint rules are enforcement. Archprint generates the enforcement from patterns your codebase already demonstrates, so you adopt rules you can trust instead of hand-authoring them.
It's deliberately honest about what it will enforce unattended. The mechanical families (no import cycles, production must not import tests, no console in library code, no undeclared deps, import style, public-API barrels, DB/UI-in-a-server-entry) had zero false positives across an adversarial correctness audit, so those auto-generate. The structural families (layer/role boundaries, UI/data separation) infer a "layer" or "role" from paths, which can be wrong, so they're held for human review by default. One wrong enforced rule costs more than zero rules.
It emits into the tools you already use, ESLint (including a shareable one-file preset), dependency-cruiser, and ts-arch, so it complements your stack. Framework-aware across React, Angular, Vue, Svelte, Next, Nest, SvelteKit, Nuxt, and Remix.
Before posting I ran the full CLI workflow (scan, recommend, generate, wire, eject) across 92,861 real public TypeScript repositories: it completed on every one without a single crash, and the reversible install/uninstall round-trip held.
npm install --save-dev archprint
npx archprint scan .
Docs: https://tommkruix.github.io/archprint/ · Repo: https://github.com/Tommkruix/archprintEarly (0.x). Feedback very welcome, especially on the rules it infers for your repo.