Skip to content
Back to skills

Ui Design Ckorhonen

ASecurity

Opinionated constraints for building better interfaces with agents. Use when building UI components, implementing animations, designing layouts, reviewing frontend accessibility, or working with Tailwind CSS, motion/react, or accessible primitives like Radix/Base UI.

  • 57 stars
  • 0 votes
  • 0 copies
  • 7 views
  • Added May 31, 2026
designreactexpressfrontendperformance

Security analysis

A100/100

Scanned May 31, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill ui-design-neversight --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ui Design Ckorhonen?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ui Design Ckorhonen
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-ui-design-ckorhonen/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-ui-design-ckorhonen)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ui-design
description: Opinionated constraints for building better interfaces with agents. Use when building UI components, implementing animations, designing layouts, reviewing frontend accessibility, or working with Tailwind CSS, motion/react, or accessible primitives like Radix/Base UI.
---

# UI Design

Opinionated constraints for building better interfaces with agents.

## When to Use

- Building UI components with Tailwind CSS
- Implementing animations or transitions
- Adding interactive elements with keyboard/focus behavior
- Reviewing frontend code for accessibility
- Designing layouts with proper z-index and spacing
- Working with loading states, error handling, or empty states

## Stack

| Requirement | Rule |
|-------------|------|
| Tailwind CSS | MUST use defaults (spacing, radius, shadows) before custom values |
| Animation library | MUST use `motion/react` (formerly `framer-motion`) for JS animation |
| CSS animation | SHOULD use `tw-animate-css` for entrance and micro-animations |
| Class logic | MUST use `cn` utility (`clsx` + `tailwind-merge`) |

## Components

| Requirement | Rule |
|-------------|------|
| Interactive primitives | MUST use accessible primitives (`Base UI`, `React Aria`, `Radix`) for keyboard/focus behavior |
| Existing components | MUST use project's existing primitives first |
| Consistency | NEVER mix primitive systems within the same interaction surface |
| New primitives | SHOULD prefer [`Base UI`](https://base-ui.com/react/components) if compatible with stack |
| Icon buttons | MUST add `aria-label` to icon-only buttons |
| Custom behavior | NEVER rebuild keyboard or focus behavior by hand unless explicitly requested |

## Interaction

| Requirement | Rule |
|-------------|------|
| Destructive actions | MUST use `AlertDialog` for destructive or irreversible actions |
| Loading states | SHOULD use structural skeletons |
| Viewport height | NEVER use `h-screen`, use `h-dvh` |
| Fixed elements | MUST respect `safe-area-inset` |
| Error display | MUST show errors next to where the action happens |
| Input behavior | NEVER block paste in `input` or `textarea` elements |

## Animation

| Requirement | Rule |
|-------------|------|
| Default | NEVER add animation unless explicitly requested |
| Compositor props | MUST animate only `transform`, `opacity` |
| Layout props | NEVER animate `width`, `height`, `top`, `left`, `margin`, `padding` |
| Paint props | SHOULD avoid `background`, `color` except for small, local UI (text, icons) |
| Entrance easing | SHOULD use `ease-out` on entrance |
| Feedback timing | NEVER exceed `200ms` for interaction feedback |
| Looping | MUST pause looping animations when off-screen |
| Accessibility | MUST respect `prefers-reduced-motion` |
| Custom easing | NEVER introduce custom easing curves unless explicitly requested |
| Large surfaces | SHOULD avoid animating large images or full-screen surfaces |

## Typography

| Requirement | Rule |
|-------------|------|
| Headings | MUST use `text-balance` |
| Body text | MUST use `text-pretty` for paragraphs |
| Data | MUST use `tabular-nums` |
| Dense UI | SHOULD use `truncate` or `line-clamp` |
| Letter spacing | NEVER modify `letter-spacing` (`tracking-`) unless explicitly requested |

## Layout

| Requirement | Rule |
|-------------|------|
| Z-index | MUST use a fixed scale (no arbitrary `z-x`) |
| Square elements | SHOULD use `size-x` instead of `w-x` + `h-x` |

## Performance

| Requirement | Rule |
|-------------|------|
| Blur effects | NEVER animate large `blur()` or `backdrop-filter` surfaces |
| Will-change | NEVER apply `will-change` outside an active animation |
| useEffect | NEVER use for anything expressible as render logic |

## Design

| Requirement | Rule |
|-------------|------|
| Gradients | NEVER use unless explicitly requested |
| Purple/multicolor gradients | NEVER use |
| Glow effects | NEVER use as primary affordances |
| Shadows | SHOULD use Tailwind CSS default scale unless explicitly requested |
| Empty states | MUST give one clear next action |
| Accent colors | SHOULD limit to one per view |
| Color tokens | SHOULD use existing theme or Tailwind CSS tokens before introducing new ones |

## Quick Reference

### Allowed Animation Properties
```
transform, opacity
```

### Forbidden Animation Properties
```
width, height, top, left, margin, padding, blur(), backdrop-filter
```

### Required Accessibility Patterns
```tsx
// Icon button - always add aria-label
<button aria-label="Close dialog">
  <XIcon />
</button>

// Respect reduced motion
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; }
}
```

### Class Utility Pattern
```tsx
import { clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs));
}
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.