Assists with UI development, ensuring correct usage of the project's design system components.
Install
mkdir -p .claude/skills/ui-trycompai && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17311" && unzip -o skill.zip -d .claude/skills/ui-trycompai && rm skill.zipInstalls to .claude/skills/ui-trycompai
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when building or editing frontend UI components, layouts, styling, design system usage, colors, dark mode, or icons.Key capabilities
- →Prioritize design system components for UI development
- →Enforce correct usage of design system component variants and props
- →Guide layout implementation using wrapper divs and Stack components
- →Promote componentization of repeated UI patterns
- →Ensure use of semantic colors and dark mode support
- →Enforce use of design system icons
How it works
The skill guides UI development by prioritizing specific design system libraries, enforcing component usage rules, and promoting best practices for layout, styling, and reusability. It also identifies and prevents anti-patterns.
Inputs & outputs
When to use ui
- →Building UI components
- →Styling layouts
- →Implementing design system patterns
About this skill
Source Cursor rule: .cursor/rules/ui.mdc.
Original Cursor alwaysApply: true.
UI Components
Design System Priority
- First choice:
@trycompai/design-system - Fallback:
@trycompai/uionly if DS doesn't have the component
// ✅ Design system
import { Button, Card, Input, Sheet, Badge } from '@trycompai/design-system';
import { Add, Close, ArrowRight } from '@trycompai/design-system/icons';
// ❌ Don't use when DS has it
import { Button } from '@trycompai/ui/button';
import { Plus } from 'lucide-react';
No className on DS Components
DS components don't accept className. Use variants and props only.
// ✅ Use variants
<Button variant="destructive" size="sm" loading={isLoading}>Delete</Button>
<Button type="submit" iconRight={<ArrowRight size={16} />}>Continue</Button>
<Badge variant="outline">Active</Badge>
// ❌ TypeScript will error
<Button className="bg-red-500">Delete</Button>
Layout with Wrapper Divs
For layout concerns, wrap DS components:
// ✅ Wrapper for width
<div className="w-full">
<Button>Full Width</Button>
</div>
// ✅ Use Stack for spacing
<Stack gap="4" direction="row">
<Button>First</Button>
<Button>Second</Button>
</Stack>
Componentize Repeated Patterns
If a pattern appears 2+ times, extract it:
// Repeated? Make a component
<div className="flex items-center gap-2">
<div className="w-2 h-2 rounded-full bg-green-500" />
<span className="text-sm">Active</span>
</div>
// → Create <StatusDot status="active" />
Extension Strategy
When you need new styling:
- Check existing variants - component may already support it
- Add a variant to the component's
cvadefinition - Create a new component if it's a genuinely new pattern
// Adding a variant
const badgeVariants = cva("...", {
variants: {
variant: {
// existing...
counter: "bg-muted text-muted-foreground tabular-nums font-mono",
},
},
});
Semantic Colors
Use CSS variables, not hardcoded colors:
// ✅ Semantic tokens
<div className="bg-background text-foreground border-border">
<div className="bg-muted text-muted-foreground">
<div className="bg-destructive/10 text-destructive">
// ❌ Hardcoded
<div className="bg-white text-black">
<div className="bg-[#059669]">
Dark Mode
Always support both modes:
// Status colors with dark variants
<div className="bg-green-50 dark:bg-green-950/20 text-green-600 dark:text-green-400">
<div className="bg-red-50 dark:bg-red-950/20 text-red-600 dark:text-red-400">
Icons
Carbon icons from DS, not lucide:
// ✅ Design system icons with size prop
import { Add, Close, ChevronDown } from '@trycompai/design-system/icons';
<Add size={16} />
// ❌ Don't use lucide
import { Plus, X } from 'lucide-react';
<Plus className="h-4 w-4" />
Anti-Patterns
// ❌ Never do these
<div style={{ display: 'flex' }}> // Inline styles
<Button className="bg-red-500"> // className on DS
<div className="bg-[#059669]"> // Hardcoded colors
<div className="w-[847px]"> // Arbitrary values
Responsive (MANDATORY — read the responsive-ui skill)
Every UI change must work on mobile (375px), tablet (768px), desktop (1280px), and
large desktop (1920px) by default — nobody has to ask. Tailwind is mobile-first:
write the base (mobile) layout, widen with sm:/md:/lg:/xl:. No fixed widths
without a responsive strategy (hidden sm:block, w-full md:max-w-xs, or a wrapping
parent). All the rules above still apply: breakpoint classes go on wrapper divs, never
on DS components, and arbitrary pixel values remain an anti-pattern. Wide tables scroll
inside the DS Table (overflow-x-auto), never the page. Full rules + repo patterns +
checklist: .claude/skills/responsive-ui/SKILL.md.
When not to use it
- →When working on non-UI related code
- →When the project does not use `@trycompai/design-system` or `@trycompai/ui`
- →When implementing custom styling that cannot be achieved with existing variants
Limitations
- →The skill is specific to `@trycompai/design-system` and `@trycompai/ui` components
- →The skill does not allow `className` on design system components
- →The skill prohibits hardcoded colors and arbitrary pixel values in styling
How it compares
This skill automates the application of specific design system rules and UI best practices, preventing common errors and inconsistencies that might occur with manual implementation.
Compared to similar skills
ui side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| ui (this skill) | 0 | 25d | No flags | Beginner |
| scroll-experience | 101 | 6mo | No flags | Intermediate |
| anthropic-frontend-design | 12 | 6mo | No flags | Intermediate |
| infographic-structure-creator | 1 | 5mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
scroll-experience
davila7
Expert in building immersive scroll-driven experiences - parallax storytelling, scroll animations, interactive narratives, and cinematic web experiences. Like NY Times interactives, Apple product pages, and award-winning web experiences. Makes websites feel like experiences, not just pages. Use when: scroll animation, parallax, scroll storytelling, interactive story, cinematic website.
anthropic-frontend-design
chaibuilder
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
infographic-structure-creator
antvis
Generate or update infographic Structure components for this repo (TypeScript/TSX in src/designs/structures). Use when asked to design, implement, or modify structure layouts (list/compare/sequence/hierarchy/relation/geo/chart), including layout logic, component composition, and registration.
logo-with-variants
crafter-station
Create logo components with multiple variants (icon, wordmark, logo) and light/dark modes. Use when the user provides logo SVG files and wants to create a variant-based logo component following the Clerk pattern in the Elements project.
design-context
WellApp-ai
Refresh UI/UX context from design system, Storybook, and codebase
add-template
TonnyWong1052
Add new UI style template to the ui-style-react project. This skill should be used when users want to add a new style template with HTML/CSS code, create a new preview page, or register a template in the system. Triggers include "add template", "create new style", "add new template", or when users provide HTML code for a new UI style.