UI UX Pro Max Skill
Jason904/ui-skill-lab
A skill your agent uses for UI/UX design intelligence in Codex: planning, building, reviewing, improving, or implementing web/mobile interfaces, landing pages, dashboards, design systems…
A skill your agent uses for UI design and implementation work to avoid generic AI-looking interfaces.
$ npx skills add educlopez/ui-craft --skill ui-craft -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install educlopez/ui-craft ui-craft --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ui-craft .claude/skills/ui-craft && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ui-craft" agent skill from https://github.com/educlopez/ui-craft/tree/main/skills/ui-craft into .claude/skills/ui-craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ui-craft", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/educlopez/ui-craft/tree/main/skills/ui-craftType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add educlopez/ui-craft --skill ui-craft -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install educlopez/ui-craft ui-craft --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ui-craft .agents/skills/ui-craft && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ui-craft" agent skill from https://github.com/educlopez/ui-craft/tree/main/skills/ui-craft into .agents/skills/ui-craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ui-craft", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add educlopez/ui-craft --skill ui-craft -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install educlopez/ui-craft ui-craft --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ui-craft .cursor/skills/ui-craft && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ui-craft" agent skill from https://github.com/educlopez/ui-craft/tree/main/skills/ui-craft into .cursor/skills/ui-craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ui-craft", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/educlopez/ui-craft.git --path skills/ui-craft--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add educlopez/ui-craft --skill ui-craft -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install educlopez/ui-craft ui-craft --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ui-craft .gemini/skills/ui-craft && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ui-craft" agent skill from https://github.com/educlopez/ui-craft/tree/main/skills/ui-craft into .gemini/skills/ui-craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ui-craft", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install educlopez/ui-craft ui-craftInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add educlopez/ui-craft --skill ui-craft -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ui-craft .github/skills/ui-craft && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ui-craft" agent skill from https://github.com/educlopez/ui-craft/tree/main/skills/ui-craft into .github/skills/ui-craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ui-craft", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add educlopez/ui-craft --skill ui-craft -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install educlopez/ui-craft ui-craft --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ui-craft .opencode/skills/ui-craft && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ui-craft" agent skill from https://github.com/educlopez/ui-craft/tree/main/skills/ui-craft into .opencode/skills/ui-craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ui-craft", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ui-craftA skill your agent uses for UI design and implementation work to avoid generic AI-looking interfaces.
UI Craft is an agent skill from educlopez/ui-craft. Use for UI design and implementation work to avoid generic AI-looking interfaces. Provides anti-slop rules, a required discovery phase before coding, and guidance for layout, typography, color, motion, accessibility, dashboards, tables, landing pages, theming, and polish. Trigger when editing UI code or reviewing and refining components, pages, screens, layouts, animations, responsive behavior, or design systems.
Its SKILL.md is about 9.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 35 other files, including reference files (for example `references/accessibility.md`, `references/agents.md` and `references/ai-chat.md`).
It sits in Frontend & Design, covering Humanizing AI text, Design systems and UI design. The repository describes itself as: Design engineering system for AI coding agents — ship UI with craft-level quality. Install as an agent skill. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ceecc8e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
UI Craft loads about 9.5k tokens when it runs, and up to ~124k if it reads all its reference files. Until then it costs about 106 tokens; SKILL.md has 4,593 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from educlopez/ui-craft at commit ceecc8e, republished under its MIT licence (© educlopez). 4,593 words, ~9,513 tokens.
.claude/skills/ui-craft/SKILL.md (or your agent's skills folder). This skill also uses 34 other files; get the full folder from GitHub.You are a design engineer. Every decision below is one you make deliberately and can defend — never a default you inherited.
One progression, four rungs. Never describe ui-craft as "layers" or "modes" — use these rung names, and name the rung the user is on before suggesting a command.
| Rung | User wants | They do | They get | Effort |
|---|---|---|---|---|
| 0 · Ask | better UI, zero effort | ask for UI as always | taste by default: real hierarchy, system tokens, no slop | none |
| 1 · Direct | control one pass | /craft, /critique, /polish, /animate, … | a focused pass on one surface | one command |
| 2 · Persist | consistency across sessions | /brief, /tokens, /remember | durable design context every future session reads | write once |
| 3 · Enforce | it can't regress | /finalize, review agents, MCP gates, score, ui-craft-detect | gates in review/CI + a 0-100 number | wire once |
/sddesign is not a rung — it is the express lane that walks rungs 1 to 3 for one big surface. When a pass finishes, name the natural next step (/craft → /finalize, /brief → /tokens, /audit → /harden).
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). DESIGN_VARIANCE ≤4 → symmetric grids, safe product layouts. 5-7 → split heroes, alternating rows, one layout break. 8+ → display-scale drama, asymmetric marketing compositions; 9-10 only when user asks for experimental or brief demands it (craft-intent.md).
The rules that make the biggest difference between "AI-generated" and "designed by a human":
tracking-tight or -0.02em+ above 24px./craft, pick and build it in the first pass (craft-intent.md) — not only at polish.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.
If the ui-craft MCP server is connected, call route_task with the user's own words before reading anything below. It returns the ranked references, commands and tools that cover the task plus the first move, and it resolves vocabulary this table cannot: "an analytics panel" reaches recipe-dashboard.md, "pricing block" reaches recipe-landing.md. Why: a table only fires when the user's words match our filenames, and they usually don't. The table below is the fallback when no MCP is available — and it stays authoritative for what each entry is, since route_task returns pointers only.
| Intent | Pass / Reference |
|---|---|
| New here / unsure where to begin | Run /start → reads the project, reports what's available now, routes you to the right next step |
| 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 pass (rung 0/1) — this file + relevant references |
| Adding/fixing animations | Motion pass — motion.md |
| Reviewing existing UI | Review pass — review.md — ends with a Craft Report |
| Polishing existing UI | Polish pass — this file + review.md Polish Pass — ends with a Craft Report |
| 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 + coverage.md |
| "What's missing from this screen?" / completeness check on a table, settings, checkout, pricing, docs, invite, delete-confirm, onboarding | Call ux_coverage (MCP) or read coverage.md — the completeness axis, reported beside distinction, never folded into a score |
| Cut noise / simplify an over-built surface | Run /distill |
| Redesign / modernize an existing site without losing brand, IA, or SEO | Run /redesign — audit first, preserve list, refresh/reskin/rebuild scope |
| Amplify personality / "make it bolder" | Run /bolder — craft-intent.md |
| Tone down / "quieter", "more restrained" | Run /quieter — craft-intent.md |
| 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 |
| Page metadata correctness (title/description/canonical, social cards, structured data, favicons) | metadata.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 strategy to an SEO skill — UI Craft covers the correctness of metadata already being emitted (metadata.md), not keyword or ranking strategy. UI Craft is the visual and interaction layer.
Out of scope. These are surface classes the recipes do not help with. Say so, name the right tool, and still apply UI Craft to the web surfaces around them — a brief containing one of these is rarely only that.
| Not this | Use instead |
|---|---|
| Code editor surfaces (syntax, gutters, diff views) | Monaco or CodeMirror with their own theming API |
| Native mobile apps | Apple HIG or Material directly — UI Craft covers web |
| Realtime collaboration UI (presence, live cursors, conflict states) | Liveblocks, or Yjs / Automerge if you own the sync layer — the recipes assume a single actor |
| HTML email | MJML or a dedicated email framework — the CSS rules here are void in mail clients |
Refusing with a pointer beats confident bad output. Silence produces the second one.
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 (<style scoped>` 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.
Design Memory (.ui-craft/ directory). This is the project's typed design context. It replaces the single brief.md with a structured directory — all files are plain markdown, committable to git.
Always-load on every UI task (small, define project taste/tokens):
.ui-craft/brief.md — product identity, design intent, audience, voice, constraints. See references/brief.md for the format guide..ui-craft/tokens.md — the project's actual token decisions (colors, type, spacing, radius, shadows).Lazy-load only when the task needs them (growing logs — always loading bloats context unnecessarily):
.ui-craft/decisions.md — append-only date-stamped design decision log. Load when the user asks to reference prior rationale or past decisions..ui-craft/patterns.md — validated component/layout compositions. Load when the task references a known pattern or the user asks to reuse one..ui-craft/surfaces/<name>.md — per-surface notes (layout, components, edge cases). Load only the surface file matching the current task; do NOT load all surface files eagerly.If .ui-craft/ is absent: proceed without error — no design memory files are loaded. Recommend ui-craft install to scaffold the directory when the user wants to establish project-level design context.
The brief includes 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.
When building a complete surface (dashboard, landing, auth, settings shell, portfolio page) — including /craft — output the Craft Read before writing code, in exactly this form:
Craft Read: [surface kind] for [audience], [product | marketing] language, [theme/accent hint], variance [N], signature bet: [choice].
The template is here rather than only in craft-intent.md on purpose. Why: an instruction to emit a form, with the form in another file, produces the right elements in an improvised shape whenever that file is not loaded — a planning paragraph instead of the line the user can react to. A pointer to a form is not the form.
Then load the recipe for the surface before writing code, not after: dashboard → recipe-dashboard.md, landing → recipe-landing.md, auth → recipe-auth.md. Why: every numeric limit that keeps a surface from reading as a template lives in its recipe (hero subtext ≤20 words, eyebrow budget, form column width, acceptance bar). Skipping the recipe does not soften those limits — it removes them, and the build breaches them without ever seeing them. If the MCP server is connected, route_task names the recipe for you.
Pick DESIGN_VARIANCE and a signature bet in that line; full rationale, variance defaults and worked examples in craft-intent.md. The user steers in plain language ("more like X", "bolder", "quieter") — no design vocabulary required.
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 properties<div> rectangles — use a real screenshot, a real mini component, or editorial imagery; never a div mockup<span>Minor (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 — "not like that", "I don't like this", "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.
Two entries, because two is what a build actually loads. This list used to hold seven; build evals showed a passing dashboard opened one of them and a passing landing opened two, while both reached for the surface recipe that was filed a tier below. A required list that nobody reads is not a standard, it is a wish — so the list now names what carries the build, and everything else below states the trigger that pulls it in.
| Reference | When to Read |
|---|---|
| craft-intent.md | Craft Read, DESIGN_VARIANCE, signature bets, product + marketing build patterns. The one reference every full-surface build needs. |
| The surface recipe | recipe-dashboard.md · recipe-landing.md · recipe-auth.md — whichever matches what you are building. Every numeric limit that keeps a surface off template grammar lives here (hero subtext ≤20 words, eyebrow budget, form column width, acceptance bar). Skipping it does not soften those limits, it removes them. |
Same references as before, same weight when their trigger fires. Only the claim changed: these are conditional, and pretending otherwise made the whole Tier-1 label unreliable — including for the two above.
| Reference | Trigger |
|---|---|
| brief.md | .ui-craft/brief.md exists — then read it first, it anchors every decision and its learned constraints override skill defaults. Absent: run /brief or proceed from Discovery. |
| tokens.md | The project has a token system to respect or extend, or you are establishing one. With neither, themes.md gives a production preset in one step. |
| accessibility.md | Any form, any custom interactive control, any focus or keyboard work. The a11y floor in Core Rules is the minimum; this is the detail. |
| color.md | Choosing or changing a palette, building dark mode, or auditing accent budget. Not needed to apply a preset. |
| layout.md | Composing a surface from scratch, or a spacing/hierarchy pass. Not needed when a recipe already prescribes the composition. |
| inspiration.md | Highest-signal reference in the skill. Read it when the build needs an archetype or a signature detail, and whenever the result feels generic. |
What this measured, and what it did not. The evidence is greenfield builds — an empty sandbox with no brief and no tokens, so
briefandtokenscould not have been read whatever the label said. It shows the label was not causing loads. It does not show the references are unnecessary:layoutandcolorgovern craft that the deterministic scorers barely test, so a build can pass every check with mediocre spacing rhythm. Re-measure before trimming anything further, and re-measure on a project that already has a design system.
| 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. |
| Outcome recipes | Promoted to Tier 1 — see Always load. Listed there and not here so the recipe has one home; two descriptions of the same requirement is how one of them goes stale. |
| 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. |
| metadata.md | Title/description/canonical consistency, deterministic metadata, social cards, noindex on staging, structured data honesty, favicons. |
| 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. |
| coverage.md | UX coverage — the parts 12 screen archetypes need to be complete (data table, settings, search, detail view, first-run, billing, pricing, docs, checkout, onboarding, destructive confirm, invite). The completeness axis, not distinction. Load for /harden, or when asked what a screen is missing. Prefer the ux_coverage MCP tool — it returns one archetype instead of all twelve. Generated from mcp/src/coverage-data.mjs; do not edit by hand. |
| 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. |
© educlopez, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 34 other files (references) in skills/ui-craft of educlopez/ui-craft.
Open the folder on GitHubat commit ceecc8e
UI Craft next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| UI Craft this skilleduclopez/ui-craft | 371 | — | ~9.5k | Automated safety check: Pass | MIT | |
| UI UX Pro Max SkillJason904/ui-skill-lab | 144 | — | ~865 | Automated safety check: Pass | MIT | |
| Impeccablebestofjs/bestofjs | 3.1k | 27 repos | ~2.6k | Automated safety check: Pass | MIT | |
| UI UX Pro Maxsaoudi-h/solar-icons | 184 | 18 repos | ~11k | Automated safety check: Notes | Custom licence | |
| UI/UX Design System AdvisorGalaxy-Dawn/claude-scholar | 5.7k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| UI UX Pro MaxOhh-889/skyroc | 795 | 27 repos | ~3.6k | Automated safety check: Notes | MIT |
Jason904/ui-skill-lab
A skill your agent uses for UI/UX design intelligence in Codex: planning, building, reviewing, improving, or implementing web/mobile interfaces, landing pages, dashboards, design systems…
bestofjs/bestofjs
A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…
saoudi-h/solar-icons
UI/UX design intelligence for web and mobile. An agent skill from saoudi-h/solar-icons.
Galaxy-Dawn/claude-scholar
Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.
Ohh-889/skyroc
UI/UX design intelligence. An agent skill from Ohh-889/skyroc.
bryllim/bryl-minimal-design
Apply the bryl-minimal design language — a monochrome, typography-driven minimal aesthetic with halftone dot textures, pixel-font display headings, tiny uppercase monospace labels, soft large-radius…
educlopez/ui-craft
Pre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy.
educlopez/ui-craft
File contributor or agent papercuts as GitHub issues labeled friction, or investigate those issues as the daily friction-log Cloud Agent.
educlopez/ui-craft
Record a learned design constraint from a correction into the project brief.
educlopez/ui-craft
Full spec-driven pipeline — walks brief → tokens → shape (spec) → craft (build) → converge → ship in one guided run.
educlopez/ui-craft
Front door. An agent skill from educlopez/ui-craft.
educlopez/ui-craft
Audit or establish the project's 3-layer token spine. An agent skill from educlopez/ui-craft.
Categories
A skill your agent uses for UI design and implementation work to avoid generic AI-looking interfaces. UI Craft is an agent skill from educlopez/ui-craft. Use for UI design and implementation work to avoid generic AI-looking interfaces.
UI Craft fits situations like: UI design and implementation work to avoid generic AI-looking interfaces; editing UI code; reviewing and refining components; responsive behavior.
Run `npx skills add educlopez/ui-craft --skill ui-craft -a claude-code`. Or copy the skill folder (skills/ui-craft in educlopez/ui-craft) into .claude/skills/ui-craft in your project. Claude Code loads it when a task matches its description.
Run `npx skills add educlopez/ui-craft --skill ui-craft -a codex`. Or copy the skill folder (skills/ui-craft in educlopez/ui-craft) into .agents/skills/ui-craft in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add educlopez/ui-craft --skill ui-craft -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ui-craft, .gemini/skills/ui-craft, .github/skills/ui-craft and .opencode/skills/ui-craft in your project.
SKILL.md names no scripts, command-line tools or credentials: UI Craft is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
UI Craft is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.5k tokens (SKILL.md is roughly 38k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 114k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with UI Craft: UI UX Pro Max Skill (Jason904/ui-skill-lab, 144 stars), Impeccable (bestofjs/bestofjs, 3.1k stars), UI UX Pro Max (saoudi-h/solar-icons, 184 stars) and UI/UX Design System Advisor (Galaxy-Dawn/claude-scholar, 5.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
educlopez (a GitHub user) maintains it in educlopez/ui-craft, which has 371 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 3, 2026.
Source: educlopez/ui-craft on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.