Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Validates animation durations, enforces typography scale, checks component accessibility, and prevents layout anti-patterns in Tailwind CSS projects. Use when building UI components, reviewing CSS utilities, styling React views, or enforcing design consistency.
.claude/skills/baseline-ui/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 55% | 0% |
Use this skill when you need quickly deslop UI code by fixing spacing, hierarchy, typography, and small layout issues. Use when the interface needs a fast cleanup or polish pass.
Enforces an opinionated UI baseline to prevent AI-generated interface slop.
/baseline-uiApply these constraints to any UI work in this conversation.
/baseline-ui <file>Review the file against all constraints below and output:
motion/react (formerly framer-motion) when JavaScript animation is requiredtw-animate-css for entrance and micro-animations in Tailwind CSScn utility (clsx + tailwind-merge) for class logicBase UI, React Aria, Radix)Base UI for new primitives if compatible with the stackaria-label to icon-only buttonsAlertDialog for destructive or irreversible actionsh-screen, use h-dvhsafe-area-inset for fixed elementsinput or textarea elementstransform, opacity)width, height, top, left, margin, padding)background, color) except for small, local UI (text, icons)ease-out on entrance200ms for interaction feedbackprefers-reduced-motiontext-balance for headings and text-pretty for body/paragraphstabular-nums for datatruncate or line-clamp for dense UIletter-spacing (tracking-*) unless explicitly requestedz-index scale (no arbitrary z-*)size-* for square elements instead of w-* + h-*blur() or backdrop-filter surfaceswill-change outside an active animationuseEffect for anything that can be expressed as render logicUser request:
> Review this interface with @baseline-ui, identify the highest-impact design problems, and propose an implementation-ready improvement.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 15,674 | 16,823 | +7% | 1 | 1 | 0% | 3,662 | 4,940 | +35% | 0 | 0 | — |
case-02 | pass→pass | 11,596 | 6,732 | -42% | 1 | 1 | 0% | 2,070 | 2,155 | +4% | 0 | 0 | — |
case-03 | fail→fail | 45,558 | 27,070 | -41% | 1 | 1 | 0% | 5,010 | 7,024 | +40% | 0 | 0 | — |
case-04 | pass→pass | 20,885 | 26,050 | +25% | 1 | 1 | 0% | 3,386 | 5,003 | +48% | 0 | 0 | — |
case-05 | pass→pass | 12,130 | 7,012 | -42% | 1 | 1 | 0% | 2,401 | 1,955 | -19% | 0 | 0 | — |
case-06 | pass→pass | 11,292 | 11,580 | +3% | 1 | 1 | 0% | 2,565 | 3,100 | +21% | 0 | 0 | — |
case-07 | fail→pass | 19,427 | 42,672 | +120% | 1 | 1 | 0% | 4,086 | 5,436 | +33% | 0 | 0 | — |
case-08 | fail→pass | 16,423 | 16,367 | -0% | 1 | 1 | 0% | 3,737 | 4,511 | +21% | 0 | 0 | — |
case-09 | fail→pass | 12,728 | 11,651 | -8% | 1 | 1 | 0% | 2,574 | 3,206 | +25% | 0 | 0 | — |
case-10 | fail→fail | 19,816 | 15,062 | -24% | 1 | 1 | 0% | 3,391 | 4,079 | +20% | 0 | 0 | — |
case-11 | fail→fail | 11,702 | 16,101 | +38% | 1 | 1 | 0% | 2,196 | 3,989 | +82% | 0 | 0 | — |
case-12 | fail→pass | 7,833 | 7,847 | +0% | 1 | 1 | 0% | 1,640 | 2,540 | +55% | 0 | 0 | — |
case-13 | fail→fail | 16,947 | 14,006 | -17% | 1 | 1 | 0% | 3,335 | 3,921 | +18% | 0 | 0 | — |
case-14 | fail→fail | 18,006 | 12,389 | -31% | 1 | 1 | 0% | 4,530 | 2,924 | -35% | 0 | 0 | — |
case-15 | fail→pass | 12,170 | 5,494 | -55% | 1 | 1 | 0% | 2,375 | 1,871 | -21% | 0 | 0 | — |
case-16 | fail→pass | 15,502 | 12,652 | -18% | 1 | 1 | 0% | 3,503 | 3,745 | +7% | 0 | 0 | — |
case-17 | fail→pass | 12,436 | 5,790 | -53% | 1 | 1 | 0% | 2,543 | 1,919 | -25% | 0 | 0 | — |
case-18 | fail→pass | 12,410 | 6,655 | -46% | 1 | 1 | 0% | 2,520 | 2,215 | -12% | 0 | 0 | — |
case-19 | pass→pass | 11,501 | 6,478 | -44% | 1 | 1 | 0% | 2,251 | 2,009 | -11% | 0 | 0 | — |
case-20 | pass→pass | 14,399 | 6,917 | -52% | 1 | 1 | 0% | 2,822 | 2,015 | -29% | 0 | 0 | — |
case-21 | pass→pass | 5,576 | 40,624 | +629% | 1 | 1 | 0% | 1,056 | 1,997 | +89% | 0 | 0 | — |
case-22 | pass→pass | 10,418 | 8,843 | -15% | 1 | 1 | 0% | 2,517 | 2,765 | +10% | 0 | 0 | — |
case-23 | pass→pass | 13,831 | 8,574 | -38% | 1 | 1 | 0% | 2,942 | 2,619 | -11% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +39 percentage points is the difference between those two pass rates over the 23 comparable cases.
The publisher has shipped newer versions since this run, so these numbers describe v2, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/28/2026 | +29% |
Other measured skills in the registry, with their headline benchmark lift.