uilint-eslint
v0.2.23
Published
ESLint plugin for UILint - AI-powered UI consistency checking
Downloads
5,182
Maintainers
Readme
uilint-eslint
ESLint plugin for UILint - AI-powered UI consistency checking.
Installation
pnpm add -D uilint-eslintUsage
Add to your ESLint flat config:
// eslint.config.js
import uilint from "uilint-eslint";
export default [
// Use recommended preset (static rules only)
uilint.configs.recommended,
// Or strict preset (includes LLM-powered semantic rule)
// uilint.configs.strict,
// Or configure rules individually
{
plugins: { uilint: uilint.plugin },
rules: {
"uilint/no-arbitrary-tailwind": "error",
"uilint/consistent-spacing": [
"warn",
{ scale: [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16] },
],
"uilint/no-direct-store-import": ["error", { storePattern: "use*Store" }],
"uilint/no-mixed-component-libraries": [
"error",
{ libraries: ["shadcn", "mui"] },
],
},
},
];Rules
Static Rules
| Rule | Description |
| ------------------------------ | ------------------------------------------------------- |
| no-arbitrary-tailwind | Forbid arbitrary Tailwind values like w-[123px] |
| consistent-spacing | Enforce spacing scale (no magic numbers in gap/padding) |
| no-direct-store-import | Forbid direct Zustand store imports (use hooks) |
| no-mixed-component-libraries | Forbid mixing shadcn and MUI components in same file |
LLM-Powered Rules
| Rule | Description |
| ---------- | ------------------------------------------------------ |
| semantic | LLM-powered semantic UI analysis using your styleguide |
The semantic rule reads .uilint/styleguide.md and uses Ollama to analyze your UI code for consistency violations.
Configuration
no-arbitrary-tailwind
No options. Reports any use of Tailwind arbitrary values like w-[100px], bg-[#fff], etc.
consistent-spacing
{
scale: number[] // Allowed spacing values (default: Tailwind defaults)
}no-direct-store-import
{
storePattern: string; // Glob pattern for store names (default: 'use*Store')
}no-mixed-component-libraries
{
libraries: ('shadcn' | 'mui')[] // Libraries to check (default: ['shadcn', 'mui'])
}semantic
{
model: string; // Ollama model (default: 'qwen3:8b')
styleguidePath: string; // Path to styleguide (default: '.uilint/styleguide.md')
}License
MIT
