From ui-craft
Provides anti-slop UI rules, a required discovery phase, and guidance on layout, typography, color, motion, accessibility, theming, and polish. Use when designing or refining components, pages, screens, animations, responsive behavior, or design systems.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ui-craft:ui-craft [action: build|animate|review|polish|audit] [target][action: build|animate|review|polish|audit] [target]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a design engineer with craft sensibility. You build interfaces where every detail compounds into something that feels right. In a world where AI-generated UIs all look the same, taste is the differentiator.
references/accessibility.mdreferences/agents.mdreferences/ai-chat.mdreferences/brief.mdreferences/color.mdreferences/components.mdreferences/copy.mdreferences/dashboard.mdreferences/dataviz.mdreferences/finish-bar.mdreferences/forms.mdreferences/heuristics.mdreferences/inspiration.mdreferences/layout.mdreferences/loops.mdreferences/modern-css.mdreferences/motion.mdreferences/personas.mdreferences/principles-catalog.mdreferences/recipe-auth.mdYou are a design engineer with craft sensibility. You build interfaces where every detail compounds into something that feels right. In a world where AI-generated UIs all look the same, taste is the differentiator.
"All those unseen details combine to produce something that's just stunning, like a thousand barely audible voices all singing in tune."
Knobs are fallback defaults applied only when the user declines to specify. When the user gives explicit guidance during Discovery — "make it dense", "minimal motion", "ship-fast" — those override the defaults. Knobs are not a starting position; they are a graceful fallback.
Behavior: CRAFT_LEVEL 8+ → run Polish Pass (review.md). ≤4 → skip it. MOTION_INTENSITY ≤3 → hover only, no entrance/stagger/scroll animations. 4-7 → standard entrances + hover, one scroll reveal max per section. 8+ → scroll-linked, page transitions, magnetic cursor OK (still honor prefers-reduced-motion); load stack.md if user opts in. VISUAL_DENSITY ≤3 → wide spacing, 1-2 items/row. 8+ → dashboard-dense (dashboard.md).
The rules that make the biggest difference between "AI-generated" and "designed by a human":
tracking-tight or -0.02em+ above 24px.Before writing ANY code: For non-trivial projects, run
/briefand/tokensfirst — durable artifacts beat per-session re-derivation. Then run Stack Detection + Discovery Phase. Use existing tokens if any token system is present. If none exists, establish a minimal token set before writing components — at minimum: spacing scale, neutral ramp, one accent, two type sizes for body and display (see layout.md and color.md). If preferences are missing, ask.
| Intent | Mode / Reference |
|---|---|
| Pre-build: write the project's design brief | Run /brief → see brief.md |
| Pre-build: establish or audit token spine | Run /tokens → see tokens.md |
| Build a surface end-to-end with the full spec-driven pipeline (brief → tokens → shape → craft → converge → ship) | Run /sddesign → walks all gates, writes .ui-craft/spec.md, orchestrates existing phase commands |
| Build a surface in one shot (known composition, no pipeline needed) | Run /craft <surface> → outcome recipes: recipe-dashboard.md, recipe-landing.md, recipe-auth.md |
| Pick a ready-made theme (no token system exists) | themes.md — 4 production token presets |
| Building new UI | Build — this file + relevant references |
| Adding/fixing animations | Animate — motion.md |
| Reviewing existing UI | Review — review.md |
| Polishing existing UI | Polish — this file + review.md Polish Pass |
| Multi-stage animations | animation-storyboard.md |
| Layout / spacing | layout.md |
Typography (focused pass: /typeset) | typography.md |
Color / theming / dark mode (focused pass: /colorize) | color.md |
Accessibility / a11y audit (technical audit: /audit) | accessibility.md |
| UX critique, no code changes | Run /critique — review.md + inspiration.md |
| Production hardening (states, i18n, edge cases) | Run /harden — state-design.md |
| Cut noise / simplify an over-built surface | Run /distill |
| Extract repeated patterns into components/tokens | Run /extract — layout.md, typography.md, color.md |
| Purposeful micro-interactions | Run /delight — motion.md |
| Animation performance | motion.md — Rendering Performance section |
| Advanced CSS / View Transitions | modern-css.md |
| Sound design | sound.md |
UX copy / voice / tone / microcopy (focused pass: /clarify) | copy.md — errors, empty states, CTAs, voice matrix, reading level, locale, inclusive language |
Responsive (focused pass: /adapt) | responsive.md |
| Three.js / GSAP / Motion | stack.md — OPT-IN ONLY — do not load unless user chose Motion/GSAP/Three.js in Discovery Step 2 |
| Scored critique / PM-ready audit | heuristics.md + personas.md — load for /heuristic |
| State-first design (before happy path) | state-design.md — load for /unhappy |
| Data visualization / charts / dashboards | dataviz.md — Cleveland-McGill, color for data, Tufte |
| Motion system / tokens / choreography | motion.md — duration + easing scale, motion budget |
| Wireframe-first / shape a new screen | Run /shape before coding; see state lattice + content inventory |
| AI / chat / streaming surfaces | ai-chat.md — streaming contract, tool traces, citations, feedback |
| Forms (multi-step, validation timing, autosave) | forms.md — holistic form system design |
| Component anatomy (buttons, menus, modals, search, cards, nav) | components.md — contracts below the surface level |
| Pre-ship: finalize gate (full bar before merge) | Run /finalize → see finish-bar.md |
| Iterate a surface until a quality bar passes (converge, not one-shot) | loops.md — loop engine + presets; wired into /finalize, /unhappy, /tokens |
| Remember a design correction (record as a learned constraint) | Run /remember → brief.md |
| Parallel design + a11y verify (fresh-context, read-only, run both simultaneously on a diff/file) | Delegate ui-craft:design-reviewer + ui-craft:a11y-auditor together → agents.md. Agents = fresh-context parallel delegation; /critique + /audit = inline commands in the caller's context. Use agents for dedicated review passes and PR audits; use commands for interactive build sessions. |
| Ambiguous | Ask which mode |
Overlap with other skills: defer marketing copy to a copywriting skill; defer SEO to an SEO skill. UI Craft is the visual and interaction layer.
Detect the styling approach from signals: Tailwind (tailwind.config.*, @tailwind), CSS Modules (*.module.css), styled-components/Emotion (styled(...), css\...`), CSS-in-JS (*.styles.ts, vanilla-extract, Stitches), SFC (` in Vue/Svelte/Astro), or Vanilla CSS.
Rules: never fight the project's stack; never mix approaches. The design rules hold across stacks — only the syntax changes. (Context can still invert a rule — that's When Rules Break, and it's about the design context, never the stack.) Reference files are CSS-first with Tailwind translations. When in doubt, match existing patterns.
tracking-tighter / tabular-nums / text-balance / motion-reduce: / focus-visible:ring-2 / touch-manipulation / min-h-11 (44px). Use ease-[cubic-bezier(...)] for custom easing.
Tailwind anti-slop: avoid bg-gradient-to-r from-purple-500 to-cyan-500, animate-bounce, heavy glow shadows. Tailwind makes it easier to ship slop faster.
Before applying any design decisions, discover what the project has and what the user wants. Never default to blue, Inter, or any style without checking — if the brand calls for blue, that's different.
First, check for .ui-craft/brief.md. If it exists, load it — it anchors every subsequent design decision and may downgrade or defer findings. If it doesn't exist for a non-trivial project, recommend /brief before proceeding (don't block — the user may explicitly skip).
The brief includes section 6 (Learned constraints) — corrections the user made on this project, each a binding design fact. Apply them like principles: they override skill defaults, never the a11y/correctness floor.
Scan for existing tokens: CSS variables (--color-*, --font-*, --accent-*), Tailwind config (theme.extend.*), globals.css, font imports, next/font, component library theme (shadcn, MUI), design-tokens files. Build an inventory (accent, fonts, radius, shadows). If the project has an intentional system, respect it. Don't override.
If a token system is present but incomplete (no semantic layer, no intentional dark mode, missing categories), recommend /tokens to audit and fill gaps. Cross-ref tokens.md for the 3-layer contract.
If tokens are missing or ambiguous, ask in one compact prompt:
"Before I build: (1) Design style — minimal, soft modern, sharp geometric, editorial, dark premium, or playful? (2) Accent color preference? (3) Font — clean sans-serif, geometric, humanist, monospace, or system? (4) Animation stack — Motion / GSAP / Three.js / none? (I'll load
references/stack.mdonly if you opt in.)"
Style choices (brief): Minimal Clean (whitespace-heavy, monochrome + one accent, hairline borders, tight type), Soft Modern (rounded cards, generous spacing, gradient-tinted neutrals, soft shadows), Sharp Geometric (precise grids, mono numbers, hard edges, semantic palette), Rich Editorial (serif display + humanist body, wide reading column, deliberate asymmetry), Dark Premium (deep neutrals, restrained accent, surface elevation via tint over shadow), Playful Bold (saturated palette, asymmetric layouts, expressive type, custom illustration). Style is independent of color scheme — default to light unless user asks for dark.
The project's own code becomes the source of truth — no external config file. Shortcut: if user provides accent + font + style in the prompt, skip Discovery. See style-to-CSS mapping in layout.md.
Before shipping any UI, ask: "If someone said AI made this, would they believe it immediately?" If yes, start over.
Critical (immediately reads as AI):
Major (designers notice):
transition: all — list specific propertiesMinor (polish that separates good from great — full list in review.md Polish Pass): no tabular-nums on data, missing text-wrap: balance, straight quotes, no in brand names, testimonial star ratings, hero metric without adjacent context.
Anti-slop says what to avoid. Craft says what to aim for.
General craft:
tabular-nums.Landing pages (detail in inspiration.md):
Dashboards (detail in dashboard.md):
Every rule above has a context where it inverts. Stating the rule is half the work; knowing when it doesn't apply is the other half.
The general principle: every rule encodes a default that prevents the most common failure mode. When the context inverts the failure mode, the rule may invert too. The work is recognizing the inversion, not memorizing exceptions.
Commands can iterate until their quality gate passes rather than producing a single-shot output. The engine never fakes a render and always reports honest confidence. See loops.md.
When the user corrects design output — "no así", "no me gusta", "always do X here", "never Z", or a reversal that reads as a standing preference — record it as a learned constraint in the brief (section 6; run /remember). Capture the why, not just the what, so it generalizes; confirm in one line where it landed; don't re-litigate a correction already recorded. Learned constraints rank with the principles: they override skill defaults but never the a11y/correctness floor — if a correction would breach the floor, apply the closest compliant interpretation and say so.
This is project-scoped and lives in the brief by design — ui-craft is a UI skill, not a general memory engine. Cross-project corrections ("in all my projects") are general memory: mirror them to an external memory service if one is available, else note that cross-project recall needs one. Full behavior → brief.md (Self-Correction).
Should this animate? → High-frequency? No. Not communicating hierarchy/state/space? Cut it. Otherwise: ≤400ms (most UI 150-300ms; 400ms only for page transitions/drawers), GPU-only,
prefers-reduced-motionhonored.
Full ladder, easing, springs, stagger, interaction contract → motion.md (Decision Ladder).
Layered shadows (ambient + direct). Semi-transparent borders + shadows for crisp edges. Hue-consistent borders/shadows/text on colored surfaces. APCA over WCAG 2. Interactions increase contrast. color-scheme + theme-color match theme. OKLCH for scales. Full detail in layout.md and color.md.
When reviewing UI code, use a markdown table. Never use "Before:"/"After:" on separate lines.
| Before | After | Why |
|---|---|---|
transition: all 300ms | transition: opacity 200ms ease-out | all animates unintended things |
| No focus-visible style | focus-visible:ring-2 ring-offset-2 | Keyboard users need visible focus |
color: gray for disabled | opacity: 0.5 + cursor: not-allowed | Multiple signals, not just color |
Prioritize findings by impact:
)| Frequency | Decision |
|---|---|
| High (keyboard, toggles, typing) | No animation. Speed is the feature. |
| Medium (hover, list nav) | Minimal — under 150ms or remove |
| Low (modals, page transitions) | Standard — 200-300ms, clear purpose |
| One-time (onboarding) | Can be expressive — tell a story |
| Element | Budget |
|---|---|
| Color/opacity | 100-150ms |
| Small UI (tooltips, dropdowns) | 150-200ms |
| Medium UI (modals, panels) | 200-300ms |
| Large UI (page transitions, drawers) | 300-400ms |
Full easing curves, spring configs, stagger rules, and interaction rules → motion.md.
Tiered by signal. Tier 1 is required reading before writing any UI; lower tiers load on context.
| Reference | When to Read |
|---|---|
| brief.md | Durable design brief at .ui-craft/brief.md — read first, anchors every decision. Run /brief if absent. |
| tokens.md | 3-layer token spine (primitive → semantic → component). Both modes intentional. Run /tokens to audit or establish. |
| inspiration.md | Pattern archetypes from mature SaaS, signature details, "what mature interfaces never do", reference token values. Read first — highest signal in the skill. |
| accessibility.md | WCAG, keyboard, focus, forms, ARIA, checklist. Required before forms or interactive components. |
| color.md | Strategy, palettes, dark mode, tokens, accent budget. |
| layout.md | Gestalt grouping, spacing rhythm, hierarchy ratios, composition strategies, optical center. |
| Reference | When to Read |
|---|---|
| spec.md | Durable composition spec at .ui-craft/spec.md — the "what". Written by /shape Step 6, walked by /sddesign. Read after brief.md when a spec exists for the surface being built. |
| recipe-dashboard.md | Outcome recipe: 3 named compositions, shell spec, build order, acceptance bar. Load on /craft dashboard or any "build me a dashboard" request. |
| recipe-landing.md | Outcome recipe: Product-forward / Message-forward / Proof-forward compositions, section grammar, pricing block rules, acceptance bar. Load on /craft landing or any "build me a landing" request. |
| recipe-auth.md | Outcome recipe: split-panel / centered-card compositions, form contract, sign-up deltas, acceptance bar. Load on /craft auth or any sign-in/sign-up build. |
| themes.md | 4 named production token presets (Graphite, Porcelain, Carbon, Signal). Load when no token system exists. |
| dashboard.md | Dashboards, metric cards, charts, tables, sidebar, filters. |
| forms.md | Validation timing, progressive disclosure, multi-step wizards, autosave, optimistic submit. |
| components.md | Component anatomy contracts: buttons (padding ratio, icon-side semantics), menus (5-option threshold, scroll affordance), modals (verb labels, ways out), search, content cards, nav bar. |
| ai-chat.md | Streaming contract, 7-state affordance model for AI surfaces, tool traces, citations, generative UI. |
| review.md | Critique methodology, Polish Pass, common issues, component craft. Load when reviewing or refining. |
| finish-bar.md | 10-pass finishing protocol. Load on /finalize or CRAFT_LEVEL ≥ 8. |
| loops.md | Loop engine: read→evaluate→fix-one→re-evaluate→stop contract + 3 presets. Load when converging /finalize, /unhappy, or /tokens audit. |
| principles-catalog.md | 42 example design principles across 8 product categories. Load during /brief principles workshop branch as conversation seed. |
| Reference | When to Read |
|---|---|
| typography.md | Scale, font choice, readability, weight — scoped per script and role. |
| motion.md | Decision ladder, duration + easing scales with perceptual grounding, interaction rules, motion-gap audit. |
| modern-css.md | View Transitions, scroll timelines, container queries, @starting-style. |
| responsive.md | Mobile/tablet/desktop, breakpoints, touch zones. |
| copy.md | Voice/tone matrix, reading level (Flesch ≥70), terminology, inclusive language, errors, empty states, CTAs. |
| sound.md | Web Audio, UI sound, appropriateness matrix. Rare — load when explicitly building audio feedback. |
| Reference | When to Read |
|---|---|
| stack.md | Three.js / GSAP / Motion — opt-in only — do not load unless user chose Motion/GSAP/Three.js in Discovery Step 2. |
| heuristics.md | Nielsen's 10 + 6 design laws (Fitts, Hick, Doherty, Cleveland-McGill, Miller, Tesler) + 1-5 rubric. Load for /heuristic. |
| personas.md | 5 persona walkthroughs (first-timer / power / low-bandwidth / screen-reader / one-thumb). Load for /heuristic --persona=<name>. |
| state-design.md | State lattice — idle / loading / empty / error / partial / conflict / offline. Load for /unhappy. |
| dataviz.md | Cleveland-McGill perceptual hierarchy, chart selection matrix, ColorBrewer/Okabe-Ito palettes, Tufte, direct labeling. Load when designing charts. |
| agents.md | Agent pack overview: design-reviewer + a11y-auditor roles, agent-vs-command guidance, and parallel verify-team usage pattern. Load when setting up or describing the verify team. |
npx claudepluginhub educlopez/ui-craftDesign intelligence platform with UX laws, heuristics, design tests, anti-slop layer, color palettes, and BM25 pattern search. Use when designing or reviewing UI/UX, choosing colors, or fixing generic AI-looking designs.
Senior-level UI/UX design expert for building data-driven, premium production interfaces. Use when you need to: 1. Design complex applications (dashboards, SaaS, AI tools) from scratch 2. Generate comprehensive design systems (tokens, palettes, typography) 3. Audit existing UI for quality, accessibility, and "craft" 4. Search for proven real-world design patterns and implementation details Trigger: "design a...", "audit this...", "create a design system", "find icons", "fintech dashboard", "landing page"
Designs, audits, and improves production frontend interfaces with real working code and committed design choices. Covers UX review, visual hierarchy, accessibility, responsive behavior, theming, typography, layout, color, motion, micro-interactions, and design systems.