{"data":{"slug":"shadcn-lint","name":"@shadcn/lint","tagline":"MIT agent-first linter for Tailwind v4 design systems — ESLint or Oxlint","category":"design","categoryName":"Design","url":"https://github.com/shadcn-ui/lint","github":"https://github.com/shadcn-ui/lint","pricing":"open-source","hook":"@shadcn/lint turns design-system rules into lint errors that tell a coding agent how to fix them: instead of “padding not allowed”, it says the Button owns its spacing and lists the sizes it does offer — suggestions drawn from your own components, variants, and theme.","whatsGood":"MIT (shadcn-ui/lint), npm `@shadcn/lint` 0.2.0. Plugin for ESLint 9.30+ or Oxlint 1.80+, on React, Vue, and Svelte; shadcn/ui is not required, though `components.json` projects get automatic component and theme discovery. Six rules: no-restyle (per-component contracts), no-raw-colors, no-arbitrary-values, no-inline-styles, no-unknown-classes, require-static-classes. Custom messages with placeholders like `{{sizes}}` and `{{file}}`. Setup can be handed to the agent via SETUP.md. ★~3.1k.","theCatch":"Tailwind v4 only, and pre-1.0 (0.2.0), so expect rule and option churn. The “almost every task reached zero violations” results are the authors’ own evals. Under Oxlint, Vue and Svelte files are read only in their script blocks, not the template, and `<style>` blocks in .vue/.svelte are not linted at all — use a CSS linter. You still have to write the contracts; the defaults do not know your design system. Vs shadcn-ui (the component source it pairs with): this is the guardrail, not the components.","verdict":"MIT design-system linter when agents keep restyling your Tailwind components — errors that teach the fix; Tailwind v4 and early versions only.","addedAt":"2026-10-08","featured":false,"domain":"Design","subSpecialty":"Tooling","subcategory":"Tooling","tags":["self-host","permissive","coding-agents","active","young-repo"],"capabilities":["lint","tailwind","design-system"],"surfaces":["Self-host"],"ecosystem":["Node.js"],"licenseModel":"OSS/MIT","githubStars":3224,"starsPerWeek":474,"access":"free","archived":false,"repo":{"createdAt":"2026-09-02","pushedAt":"2026-10-19","license":"MIT","archived":false,"checkedAt":"2026-10-19"}},"related":[{"slug":"tailwindcss","name":"Tailwind CSS","tagline":"Utility-first CSS that developers love"},{"slug":"shadcn-ui","name":"shadcn/ui","tagline":"Copy-paste components built on Radix"},{"slug":"radix-ui","name":"Radix UI","tagline":"Unstyled, accessible React components"},{"slug":"framer-motion","name":"Framer Motion","tagline":"Production-ready React animations"},{"slug":"figma","name":"Figma","tagline":"Collaborative design tool in the browser"}],"links":{"self":"/api/gems/shadcn-lint","html":"/gems/shadcn-lint","markdown":"/gems/shadcn-lint.md","category":"/api/gems?category=design","categoryPage":"/stacks/design"}}