using-ui-stack — Claude Code skill: one design system for UI
Makes the agent build interfaces from fixed rules: an 8px grid, 60-30-10 colors, type scale, dark mode and interaction states.
npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a claude-codeWhat using-ui-stack does
The skill kicks in whenever the agent writes UI components and swaps guesswork for a rule set. Spacing stays on multiples of 8px, colors split 60-30-10 with semantic success, warning, error and info tokens, and type sizes follow a 1.25 ratio scale. Dark mode ships with token pairs: background white → slate-950, text slate-900 → slate-100, borders slate-200 → slate-800. Pure black is out.
Every interactive element gets five states: default, hover, active, focus with a visible ring, and disabled. Accessibility rules come along — contrast of at least 4.5:1 for text, touch targets of 44×44px and up, semantic HTML, and keyboard reachability. Animations run 150–300ms and respect prefers-reduced-motion. Overlays follow a z-index scale from z-10 for dropdowns to z-60 for tooltips.
The workflow starts by checking for a ui-stack config or existing design tokens in the project. If neither exists, the skill's own defaults apply. Then each component is checked against the grid, the color split and all five states, with dark mode verified by toggling the class or attribute. Bring your own design system and these defaults will fight it, so set the config up front.
What it helps with
- keep padding and gaps on one grid instead of guessing
- add dark mode without black fills and broken contrast
- give every button and input hover and focus states
- split colors into background, primary and accent shares
- check accessibility and keyboard navigation before review
Example prompts for the agent
- Build a product card following using-ui-stack rules
- Create a login form: 8px grid, five states, dark mode
- Audit this component against the design system in the skill
How to install using-ui-stack
1Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a claude-code2Manually: put the files in place
~/.claude/skills/using-ui-stack/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/using-ui-stack/
1Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a codex2Manually: put the files in place
.agents/skills/using-ui-stack/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a cursor2Manually: put the files in place
.cursor/skills/using-ui-stack/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install spencerpauly/awesome-cursor-skills using-ui-stack2Manually: put the files in place
.github/skills/using-ui-stack/SKILL.md1Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a gemini-cli2Platform CLI
gemini skills install https://github.com/spencerpauly/awesome-cursor-skills --path resources/using-ui-stackManually: put the files in place
.devin/skills/using-ui-stack/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about using-ui-stack
How do I install using-ui-stack in Claude?
Run npx skills add spencerpauly/awesome-cursor-skills --skill using-ui-stack -a claude-code. The skill lands in ~/.claude/skills/using-ui-stack/SKILL.md.
What does using-ui-stack do?
It hands the agent rules for generating UI: an 8px spacing grid, 60-30-10 colors, a type scale, dark mode, five interaction states and accessibility requirements.
What happens if my project already has a design system?
The skill first looks for a ui-stack config or the project's own tokens and follows them. Without that config, the skill's defaults apply.
Source text
SKILL.md · CC0-1.0
--- name: using-ui-stack description: Enforce a configuration-driven design system when generating UI. Ensures consistent spacing, colors, typography, dark mode, interactions, and accessibility across all AI-generated components. user-invocable: true --- # Using UI Stack Apply a structured design system to every UI component you generate. This prevents inconsistent padding, mismatched colors, and forgotten hover states. ## Design System Principles Follow these rules for **every** component you build: ### Spacing — 8px Grid Use multiples of 8 for all spacing (padding, margin, gap): - `4px` — tight internal padding only - `8px` — inline gaps, icon spacing - `16px` — standard padding, card gaps - `24px` — section padding - `32px` — large section gaps - `48px / 64px` — page-level spacing ### Color — 60-30-10 Rule - **60%** neutral/background - **30%** primary brand color - **10%** accent for CTAs and highlights - Semantic colors: success (green), warning (amber), error (red), info (blue) - Never use pure black (`#000`) for dark mode — use `slate-950` or similar ### Typography — 1.25 Ratio Scale ``` text-xs: 12px / 16px text-sm: 14px / 20px text-base: 16px / 24px text-lg: 18px / 28px text-xl: 20px / 28px text-2xl: 24px / 32px text-3xl: 30px / 36px text-4xl: 36px / 40px ``` - Headings: `font-semibold` or `font-bold` - Body: `font-normal`, line-height 1.5–1.75 - Mono: use for code, IDs, numeric data ### Dark Mode - Provide complete light/dark mappings for every color token - Background: `white` → `slate-950`, not `black` - Text: `slate-900` → `slate-100` - Borders: `slate-200` → `slate-800` ### 5-State Interactions Every interactive element must have: 1. **Default** — base appearance 2. **Hover** — subtle color shift or shadow 3. **Active/Pressed** — slightly darker or scaled down 4. **Focus** — visible ring (`ring-2 ring-offset-2`) 5. **Disabled** — reduced opacity, `cursor-not-allowed` ### Accessibility - Contrast ratio ≥ 4.5:1 for text, ≥ 3:1 for large text - Touch targets ≥ 44×44px - Semantic HTML (`button` not `div`, `nav`, `main`, etc.) - Keyboard navigable — all interactions reachable via Tab/Enter/Escape - Respect `prefers-reduced-motion` for animations ### Animations - Duration: 150–300ms for micro-interactions - Easing: `ease-out` for entrances, `ease-in` for exits - Wrap motion in `motion-safe:` or check `prefers-reduced-motion` ### Overlay Z-Index Scale ``` dropdown: z-10 sticky: z-20 overlay: z-30 modal: z-40 toast: z-50 tooltip: z-60 ``` ## Workflow 1. Before generating UI, check if the project has a `ui-stack` config or design tokens 2. If not, apply the defaults above 3. For every component, verify spacing is on the 8px grid, colors follow 60-30-10, and all 5 interaction states exist 4. Test dark mode by toggling the class/attribute and confirming all tokens map correctly ## References - [ui-stack.dev](https://ui-stack.dev) — interactive configurator and full docs - [GitHub: rashoodkhan/ui-stack](https://github.com/rashoodkhan/ui-stack) — source repo
© spencerpauly · CC0-1.0 · spencerpauly/awesome-cursor-skills