Why it mattersA team that lets a coding agent write UI can now put design system boundaries in a lint config the agent will re-read on every save, so a wrong padding or a hardcoded colour turns into a fix suggestion in the same session rather than a code review comment later.
Shadcn, the author of the shadcn/ui component library, published @shadcn/lint on 2 September and the repository has picked up 500 stars in twelve days. It is an ESLint and Oxlint plugin for Tailwind v4 projects that lets a team write the design system's rules in a config file, and produces error messages a coding agent can read and act on. Shadcn/ui itself is not required.
What it does
A rule in @shadcn/lint covers which Tailwind classes a component may accept. The example the README uses: a Button that owns its own padding. In TypeScript, blocking padding on the style prop tells the agent that padding is refused, and stops there. @shadcn/lint returns a longer message with the same rule: padding is refused on Button, use a size such as sm or lg, or a margin on the button, or a gap on the parent. The suggestion is written from the components, variants, and theme values that already exist in the project.
Rules can be scoped per component and per part. A CardTitle can be allowed to change text size but not font weight. A CardContent can be allowed to change spacing but not typography. A separate rule, shadcn/no-arbitrary-values, keeps padding on the theme's spacing scale rather than accepting one-off values like p-[13px].
The numbers shadcn quotes
Shadcn ran the linter through more than 150 task runs across five models. In one run per model the errors dropped to zero in a single correction round: Sonnet 5 fixed 69 violations, Haiku 4.5 fixed 66, Opus 5 fixed 42, GPT 5.6 Terra fixed 117, and GPT 5.6 Sol fixed 98 across six of eight tasks. In the Claude control runs, shadcn reports that fixing violations with lint feedback cost 10 percent to 48 percent less than with the shorter rule-only errors. The evals writeup and method are in docs/evals.md in the repository.
These are the vendor's own numbers on the vendor's own benchmark. They say what a coding agent can do when the linter tells it what to use instead, not what it will do in an unrelated codebase.
The linter is MIT-licensed and requires no rewrite of an existing component library. Rules can be shipped as a shared config across projects, or applied to third-party components the team does not own without forking them.
The gap this closes on a team that uses a coding agent for UI work is the one where the agent produces syntactically correct Tailwind that quietly ignores the design system. A pull request review still catches it, but by then the same class is on ten files and the reviewer is deciding whether to send it back. A lint rule the agent re-reads on every save moves that decision to the moment the mistake is written, in a form the agent already knows how to answer.
Source
- Repository: github.com/shadcn-ui/lint
- Evaluation writeup: github.com/shadcn-ui/lint/blob/main/docs/evals.md
Source: shadcn on GitHub
This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.
Get AI News in your inbox
New developer tools, model and agent releases, and how teams are actually shipping with them. Short, and only when there is something worth reading.

