Claude Code “Skills” (Agent Skills) let you package your best instructions into reusable slash commands like:
/frontend-design/baseline-ui/fixing-accessibility/fixing-motion-performance
In this article you’ll learn how to:
1) Install UI Skills (a ready-made skills pack)
2) Create your own /frontend-design skill (tailored to your stack)
3) Chain skills into a repeatable UI workflow
4) Use the same workflow in Claude Code and in Cursor/VS Code
What are Skills (and why they beat copy-pasted prompts)
A skill is a folder containing a SKILL.md file. Claude Code reads:
- YAML frontmatter (metadata like
name,description) - the instructions below
The frontmatter name becomes the slash command, and you can invoke it at any time with:
/skill-name
Skills also replaced/merged the older “custom slash commands” mechanism, so skills are the modern way to build reusable commands.
Where skills live (global vs project)
You typically have two places:
Global (available across all your projects)
~/.claude/skills/<skill-name>/SKILL.md
Project (only for the current repo)
.claude/skills/<skill-name>/SKILL.md
This is great when you want a skill that is project-specific (e.g., it knows your component library, naming conventions, and folder structure).
Install UI Skills (baseline, accessibility, motion, metadata)
UI Skills is a set of opinionated skills that help “polish” interfaces built by agents.
Install the full pack
npx skills add ibelick/ui-skills
Or install only what you need
npx ui-skills add baseline-ui
npx ui-skills add fixing-accessibility
npx ui-skills add fixing-motion-performance
npx ui-skills add fixing-metadata
Confirm they show up
In Claude Code, type / and you should see:
/baseline-ui/fixing-accessibility/fixing-motion-performance/fixing-metadata
Create your own /frontend-design skill
You can install a “frontend-design” skill via a plugin marketplace, but I prefer creating my own so it matches:
- my stack (Vue / React / Svelte…)
- my style rules (Tailwind/UnoCSS, naming, file structure)
- my aesthetic preferences (no “AI slop”)
1) Create the folder
Project-scoped (recommended for iteration):
mkdir -p .claude/skills/frontend-design
2) Create SKILL.md
Create:
.claude/skills/frontend-design/SKILL.md
Example SKILL.md (trimmed, customize freely):
---
name: frontend-design
description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications.
---
Before coding:
- Pick a clear aesthetic direction (editorial / brutalist / refined minimal / playful…)
- Define typography scale + spacing rules
- Define interaction states (hover/focus/disabled) and an a11y checklist
- Define motion rules and respect prefers-reduced-motion
Then produce production-ready code matching the user’s stack.
Avoid generic “AI slop” aesthetics.
3) Restart Claude Code (if needed)
If the command doesn’t appear immediately, restart your Claude Code session. Then type / and confirm you see:
/frontend-design
The workflow: generate with /frontend-design, then polish with UI Skills
Here’s the pattern that works extremely well in practice:
1) /frontend-design → generate design direction + real code
2) /baseline-ui → remove “agent UI slop”, improve spacing/typography/states
3) /fixing-accessibility → keyboard, labels, focus, semantics
4) /fixing-motion-performance → performance-first motion + reduced-motion compliance
Think of it like: Design → Craft → A11y → Perf.
A complete example (general topic): Habit Tracker + Focus Timer (Vue 3)
Step 1 — Ask /frontend-design to build the page
Copy/paste in Claude Code:
/frontend-design
Build a full-page “Habit Tracker + Focus Timer” screen.
Stack:
- Vue 3 SFC + <script setup lang="ts">
- TailwindCSS + dark mode
- No external UI libs
File:
@src/pages/HabitFocus.vue
UX requirements:
- Full viewport layout: w-screen h-screen
- Sticky top bar with: title, date, “Add habit” button
- Main layout (desktop):
Left: Habit list (check today, streak, small progress indicator)
Right: Focus timer card (25/5 pomodoro) + session history
- Mobile: single column, timer above list
- Internal scrolling: habit list scrolls inside its panel (no global page scroll for long lists)
- States: loading / empty / error (mock states ok)
A11y:
- Keyboard navigation (tab order makes sense)
- Visible focus rings
- Proper labels (sr-only ok)
- aria-live for “X habits completed”
Motion:
- Subtle transitions only (transition-colors, small scale on hover)
- Respect prefers-reduced-motion (motion-reduce:transition-none)
Data:
- Use local reactive state (no API)
- Habits array: name, doneToday, streak, goalPerWeek
- Timer: start/pause/reset, sessions array
Deliverables:
1) Choose a bold aesthetic direction and justify it in 3 bullets.
2) Implement the full working page code in the file.
3) Return only the final code + a short QA checklist.
Step 2 — Run the UI Skills polishing passes
Now run the skills (in this order):
/baseline-ui src/pages/HabitFocus.vue
Then:
/fixing-accessibility src/pages/HabitFocus.vue
Then:
/fixing-motion-performance src/pages/HabitFocus.vue
Optional (if this is a real “page” that needs meta/SEO):
/fixing-metadata src/pages/HabitFocus.vue
Using the same workflow in Cursor (or VS Code)
Cursor is VS Code-based, so the easiest approach is:
1) Open the integrated terminal (inside Cursor/VS Code)
2) Run Claude Code CLI:
claude
3) Use your slash commands inside that session:
/frontend-design, /baseline-ui, /fixing-accessibility, etc.
CLI vs Extension note
In VS Code, the Claude Code extension provides a graphical experience, but the CLI typically supports all commands and skills, while the extension may show only a subset (type / to see what’s available).
If you can’t see a command in the extension UI, run claude in the integrated terminal and use it there.
Troubleshooting
“My /frontend-design command doesn’t show up”
Checklist:
- The path is correct:
-
.claude/skills/frontend-design/SKILL.md(project) - OR
~/.claude/skills/frontend-design/SKILL.md(global)
-
- The file name is exactly
SKILL.md - The frontmatter includes at least
name:anddescription: - Restart Claude Code
“A skill works in CLI but not in the VS Code extension”
That’s expected sometimes: the extension can expose fewer commands than the CLI.
Use the integrated terminal + claude as your “escape hatch.”
Suggested “one-shot” prompt template
This is the reusable template I keep around:
/frontend-design
Build @src/pages/<PageName>.vue
Stack: Vue 3 + Tailwind + dark mode.
Needs: full viewport layout, sticky header, internal-scroll panel, a11y focus rings, motion-safe transitions.
After writing code:
1) /baseline-ui @src/pages/<PageName>.vue
2) /fixing-accessibility @src/pages/<PageName>.vue
3) /fixing-motion-performance @src/pages/<PageName>.vue
Apply all fixes directly in the file.
Return only the final code + a short QA checklist.
References
- Claude Code Skills docs: https://code.claude.com/docs/en/skills
- Claude Code in VS Code docs: https://code.claude.com/docs/en/vs-code
- UI Skills site: https://www.ui-skills.com/
- UI Skills repo: https://github.com/ibelick/ui-skills
Top comments (0)