| name | ui-design-brain-cursor-skill |
| description | Cursor skill that gives AI agents production-grade UI component knowledge with best practices, layout patterns, and design-system conventions for 60+ interface components |
| triggers | ["build a UI component following best practices","create a settings page with proper layout","design a dashboard with modern patterns","generate production-ready interface code","implement a data table with proper structure","build a form with accessibility standards","create a navigation component following conventions","design a modal dialog with best practices"] |
UI Design Brain Cursor Skill
Skill by ara.so — Design Skills collection.
This skill gives Cursor AI real UI component knowledge — curated best practices, proven layout patterns, and design-system conventions for 60+ interface components — so it generates production-grade UI instead of generic output.
What This Skill Provides
Component Knowledge Base: 60 production-ready component patterns sourced from component.gallery with:
- Best practices per component (accessibility, sizing, behavior)
- Common layouts — proven arrangements
- Aliases — recognizes components by any name
- Anti-patterns — specific things to avoid
- Design philosophy — modern, minimal, SaaS-quality standards
Design Directions: 5 built-in style presets:
- Modern SaaS (default) — clean, spacious, professional
- Apple-level Minimal — ultra-clean with generous whitespace
- Enterprise/Corporate — information-dense, keyboard-navigable
- Creative/Portfolio — bold, expressive, editorial
- Data Dashboard — optimized for scannability
Installation
Option A: Personal Skill (All Projects)
git clone https://github.com/carmahhawwari/ui-design-brain.git \
~/.cursor/skills/ui-design-brain
Option B: Project Skill (Shared with Team)
git clone https://github.com/carmahhawwari/ui-design-brain.git \
.cursor/skills/ui-design-brain
Option C: Manual Installation
Copy SKILL.md and components.md into:
~/.cursor/skills/ui-design-brain/ (personal), or
.cursor/skills/ui-design-brain/ (project)
How to Use
Once installed, the skill activates automatically when you ask Cursor to build UI. No explicit reference needed.
Basic Usage
Ask naturally — the skill identifies components and applies best practices:
Build a settings page with sidebar navigation, toggle preferences, and profile section
Create a data table with search, filters, sortable columns, and pagination
Design a SaaS dashboard with KPI cards, chart area, and activity feed
Requesting Specific Design Directions
Build a pricing page with Apple-minimal aesthetic
Create an enterprise dashboard with dense information layout
Design a creative portfolio hero section
Component Coverage (60 Components)
| Category | Components |
|---|
| Input | Button, Checkbox, Radio button, Text input, Textarea, Select, Combobox, Date input, Datepicker, File upload, Search input, Slider, Toggle, Color picker, Rich text editor |
| Navigation | Navigation, Breadcrumbs, Tabs, Pagination, Stepper, Skip link, Tree view |
| Layout | Card, Stack, Separator, Header, Footer, Drawer, Modal, Popover |
| Content | Heading, Image, Video, Quote, List, Table, Hero |
| Feedback | Alert, Toast, Progress bar, Progress indicator, Spinner, Skeleton, Empty state, Tooltip |
| Data | Badge, Avatar, Rating, Icon |
| Forms | Form, Fieldset, Label, Button group, Segmented control |
| Advanced | Accordion, Carousel, Dropdown menu, Visually hidden |
Key Patterns & Best Practices
Accessibility-First Approach
The skill enforces:
function Modal({ isOpen, onClose, children }) {
const firstFocusableRef = useRef(null);
useEffect(() => {
if (isOpen) {
firstFocusableRef.current?.focus();
document.body.style.overflow = 'hidden';
}
return () => {
document.body.style.overflow = '';
};
}, [isOpen]);
return (
<div
role="dialog"
aria-modal="true"
className={isOpen ? 'modal-open' : 'modal-closed'}
>
<button ref={firstFocusableRef} onClick={onClose} aria-label="Close">
×
</button>
{children}
</div>
);
}
<button
type="button"
disabled={isLoading}
aria-busy={isLoading}
aria-label={isLoading ? 'Loading...' : 'Submit'}
className="btn-primary"
>
{isLoading ? <Spinner /> : 'Submit'}
</button>
Component Composition Patterns
Data Table with Full Features:
function DataTable({ data, columns }) {
const [sortConfig, setSortConfig] = useState({ key: null, direction: 'asc' });
const [filters, setFilters] = useState({});
const [page, setPage] = useState(1);
const [searchQuery, setSearchQuery] = useState('');
const filteredData = useMemo(() => {
return data
.filter(row =>
Object.entries(filters).every(([key, value]) =>
!value || row[key] === value
)
)
.filter(row =>
!searchQuery ||
Object.values(row).some(val =>
String(val).toLowerCase().includes(searchQuery.toLowerCase())
)
);
}, [data, filters, searchQuery]);
const sortedData = useMemo(() => {
if (!sortConfig.key) return filteredData;
return [...filteredData].( {
(a[sortConfig.] < b[sortConfig.]) {
sortConfig. === ? - : ;
}
(a[sortConfig.] > b[sortConfig.]) {
sortConfig. === ? : -;
}
;
});
}, [filteredData, sortConfig]);
paginatedData = sortedData.(
(page - ) * ,
page *
);
(
);
}
Settings Page Layout:
function SettingsPage() {
return (
<div className="settings-layout">
<aside className="settings-sidebar">
<nav aria-label="Settings navigation">
<a href="#profile" className="active">Profile</a>
<a href="#security">Security</a>
<a href="#notifications">Notifications</a>
<a href="#billing">Billing</a>
</nav>
</aside>
<main className="settings-content">
<section id="profile">
<Heading level={2}>Profile Settings</Heading>
Full Name
Email
Profile Picture
Save Changes
);
}
Dashboard with KPIs:
function Dashboard() {
return (
<div className="dashboard-grid">
<header className="dashboard-header">
<Heading level={1}>Analytics Dashboard</Heading>
<DateRangePicker onChange={handleDateChange} />
</header>
<section className="kpi-cards">
<Card>
<div className="kpi-value">$24,532</div>
<div className="kpi-label">Revenue</div>
<div className="kpi-change positive">+12.5%</div>
</Card>
<Card>
<div className="kpi-value">1,243</div>
< =>New Users
+8.2%
89.2%
Conversion Rate
-2.1%
Revenue Trend
Recent Activity
{activities.map(activity => (
{activity.text}
{activity.timestamp}
))}
);
}
Anti-Patterns to Avoid
The skill enforces avoidance of:
- Generic div soup — Use semantic HTML (
<nav>, <main>, <article>)
- Missing ARIA labels — All interactive elements must be labeled
- Non-keyboard-accessible custom controls — Handle Enter, Space, Arrow keys
- Hardcoded breakpoints without mobile-first — Use responsive design
- Loading states without feedback — Always show spinners/skeletons
- Forms without validation feedback — Show errors inline
- Modals without focus management — Trap and restore focus
- Tables without sortable headers — Data tables should be interactive
- Missing empty states — Handle zero-data scenarios gracefully
- Inconsistent spacing — Use design token system
Design System Tokens
The skill assumes you have CSS variables or a token system:
--space-xs: 0.25rem;
--space-sm: 0.5rem;
--space-md: 1rem;
--space-lg: 1.5rem;
--space-xl: 2rem;
--space-2xl: 3rem;
--text-xs: 0.75rem;
--text-sm: 0.875rem;
--text-base: 1rem;
--text-lg: 1.125rem;
--text-xl: 1.25rem;
--text-2xl: 1.5rem;
--text-3xl: 1.875rem;
--color-primary: #3b82f6;
--color-success: #10b981;
--color-warning: #f59e0b;
--color-error: #ef4444;
--color-neutral-50: #f9fafb;
--color-neutral-900: #111827;
: ;
: ;
: ;
: ;
Troubleshooting
Skill Not Activating
-
Check installation path:
ls ~/.cursor/skills/ui-design-brain/
-
Restart Cursor after installation
-
Verify skill is loaded — check Cursor's skill settings
Generic Output Still Generated
Be explicit in your request:
Build a production-ready settings page with proper accessibility
Instead of:
Make a settings page
Missing Component Knowledge
If a component isn't covered, reference it explicitly:
Build a notification center using toast patterns and empty state best practices
Style Conflicts
If generated styles conflict with your design system:
Build this form using our existing Tailwind classes and design tokens
Advanced Usage
Custom Component Extensions
Ask the agent to extend existing patterns:
Create a multi-step wizard using stepper, form, and button group patterns with validation
Build a kanban board using card, drag-and-drop, and empty state patterns
Framework-Specific Generation
Specify your stack:
Build a Next.js server component data table with React Server Actions for mutations
Create a Vue 3 composition API modal with TypeScript and proper teleport usage
Performance Optimization
Generate a virtualized table for 10,000+ rows using windowing techniques
Create a lazy-loaded image gallery with progressive enhancement
File Structure
ui-design-brain/
├── SKILL.md # Main AI agent instructions
├── components.md # 60-component reference
├── LICENSE.txt # MIT license
└── README.md # Human documentation
Contributing
To extend component coverage:
-
Edit components.md following existing format:
- Component name
- Aliases
- Description
- Best practices (bullet list)
- Common layouts (with code examples)
-
Add to quick reference in SKILL.md if commonly used
-
Keep total lines under 500 in SKILL.md
License
MIT — See LICENSE.txt
Component data sourced from component.gallery
Quick Reference Card
| Task | Natural Prompt |
|---|
| Settings page | "Build settings page with sidebar nav and toggles" |
| Data table | "Create sortable table with search and filters" |
| Dashboard | "Design SaaS dashboard with KPIs and chart area" |
| Form | "Build multi-step form with validation" |
| Modal | "Create accessible modal dialog" |
| Navigation | "Build responsive header with dropdown menu" |