MCPcopy Index your code
hub / github.com/educlopez/ui-craft

github.com/educlopez/ui-craft @v1.0.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.6 ↗ · + Follow
1,179 symbols 4,224 edges 143 files 868 documented · 74%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

UI Craft

Ship designer-grade UI by default. A design engineering system for AI coding agents — install it as a skill or as the ui-craft CLI, and your agent starts designing like it has taste. Ask for a dashboard, get one you'd put in production. Not gradient cards and bounce animations.

Website: skills.smoothui.dev

UI Craft

Ask for a surface. Ship it.

/craft dashboard

Three questions (or none — the defaults are strong), a named composition, a production theme preset, and a build that must pass a 10-item acceptance bar before it reports done: "would a designer retouch this?" If a box fails, it isn't done.

For everything else — reviews, animations, forms, polish — the skill routes by intent: just describe what you're building.

New here? Run /start — it reads your project (framework, tokens, brief, existing UI) and tells you what ui-craft can do right now, then points you at the right next step.

What it does

UI Craft gives AI coding agents the design knowledge they're missing. Not templates. Not component libraries. Actual craft knowledge — opinionated rules about how interfaces should look, move, and feel — plus the tooling to verify the result. Stack-agnostic by design.

Every UI gets tested against a single question: "Would someone believe AI made this?" If yes, it starts over.

Three ways to use it

You don't have to learn any of it to benefit. It grows with you.

Layer You do You get
1 · Just install it Nothing — ask for UI the way you always do The agent designs with taste: real hierarchy, system tokens, no AI slop. Same prompt, shippable result.
2 · Drive it Run /start to see your options, then a slash command (/craft, /sddesign, /finalize, …) Focused passes — build a surface, run a scored critique, gate a ship. 22 commands, one lens each.
3 · Verify it Wire the agents / MCP / CLI into review or CI Independent design + a11y review, a deterministic 0-100 quality score, an anti-slop gate on every commit.

Start at Layer 1. Most people never leave it — that's the point. Layers 2 and 3 are there the day you want them.

What makes this different: the only AI design system that produces a scoreable, defensible critique — Nielsen's 10 usability heuristics × 6 classic design laws (Fitts, Hick, Doherty, Cleveland-McGill, Miller, Tesler) × 5 persona walkthroughs, with every finding tagged by business impact (blocks-conversion / adds-friction / reduces-trust / minor-polish). Paste the scorecard straight into any issue tracker.

Same prompt, different result

Without UI Craft Hero built without UI Craft With UI Craft Hero built with UI Craft
Dashboard built without UI Craft Dashboard built with UI Craft

More before/after comparisons on the landing page.

Install

CLI — recommended (cross-harness, installs the whole system)

A single static Go binary that detects your AI coding harness and wires skill+commands, MCP gates, review agents, and design-memory into its native config in one interactive pass. No Node required at install time.

macOS / Linux:

brew install --cask educlopez/tap/ui-craft

Windows (Scoop):

scoop bucket add educlopez https://github.com/educlopez/scoop-bucket
scoop install educlopez/ui-craft

Then run:

ui-craft install

ui-craft install detects Claude Code / Cursor / Codex / Gemini / OpenCode, walks you through à-la-carte component selection (interactive TUI or --yes for CI), and writes each chosen component into that harness's native config. All writes are idempotent, backed up before they happen, and rolled back automatically on any failure.

What rides which install?

Component CLI Claude Code plugin npx skills add
Skill + commands All harnesses All harnesses
MCP gates (check_anti_slop, tokens_lint, acceptance_bar, score_ui) All MCP-capable harnesses ✅ auto-wired Manual .mcp.json
Review agents (design-reviewer, a11y-auditor) Claude Code + OpenCode
Design memory (.ui-craft/) ✅ (component opt-in)

Full reference docs: skills.smoothui.dev/docs.

Claude Code plugin — alternative (skill + commands + agents + MCP, no CLI needed)

One command installs the skill, all 22 slash commands, the 2 review agents, and the MCP quality-gate server — auto-wired, no .mcp.json editing:

/plugin marketplace add educlopez/ui-craft
/plugin install ui-craft

The plugin bundles a .mcp.json (npx -y ui-craft-mcp), so the deterministic gates register automatically on install — first launch fetches the package via npx. This uses Claude Code's own plugin system, so it's not affected by the global-path issue noted below.

Agent Skills — alternative (skill + commands, any harness)

npx skills add educlopez/ui-craft

Works with any agent that supports the Agent Skills spec. Each agent gets a pre-built mirror under a dedicated folder (.codex/, .cursor/, .gemini/, .opencode/, .agents/). The main ui-craft skill lands as a peer skill; each slash command is materialized as its own sub-skill in non-Claude harnesses (other agents trigger them by intent: "audit my UI", "polish this page").

[!note] Using npx skills add -g with Claude Code? The skills CLI installs global skills to ~/.agents/skills, but Claude Code reads ~/.claude/skills (vercel-labs/skills#693). If the skill isn't picked up, use the CLI or plugin install above, install per-project (drop -g), or symlink it: bash ln -s ~/.agents/skills/ui-craft ~/.claude/skills/ui-craft

Other ways

# Clone
git clone https://github.com/educlopez/ui-craft.git ~/.skills/ui-craft
# Git submodule
git submodule add https://github.com/educlopez/ui-craft.git .skills/ui-craft

CLI

The ui-craft binary is a single static Go binary (distributed via Homebrew and Scoop). It is the lifecycle and cross-harness wiring core for the system.

Run ui-craft with no arguments to open the interactive hub — a full-screen menu with an async update check that routes into install, upgrade, backups, and uninstall. Every subcommand below also works directly for scripting/CI.

Commands

Command Does
ui-craft (no subcommand) Open the interactive TUI hub: welcome menu + update check → Start installation · Upgrade · Manage backups · Managed uninstall.
ui-craft install Detect harnesses, à-la-carte component selection, write configs.
ui-craft update [harness] Re-apply all installed components at the new embedded version.
ui-craft update [harness] --component <name> Re-apply one component only.
ui-craft uninstall [harness] Remove managed blocks and wired components.
ui-craft doctor Health check — verifies each harness install is coherent.
ui-craft backup Snapshot all harness configs without installing.
ui-craft backup list List existing snapshots.
ui-craft backup pin <id> / unpin <id> Protect or unprotect a snapshot from retention cleanup.
ui-craft rollback [harness] Restore latest backup for a harness.
ui-craft self-update Upgrade binary to latest GitHub release (or prints the correct package-manager command when installed via Homebrew/Scoop).
ui-craft version Print the binary version.
ui-craft version --check-parity Verify the Claude Code install matches the expected surface.

Key flags for install

Flag Effect
--harness <name> Target a specific harness (cursor, codex, gemini, opencode) instead of auto-detecting.
--components <list> Comma-separated components to install (skill-commands, mcp-gates, review-agents, design-memory).
--dry-run Preview all planned writes without touching any file.
--yes Non-interactive — skip TUI prompts and apply defaults.

Scripting flags (global)

Flag Effect
--json Machine-readable JSON output. Implies non-interactive.
--quiet Suppress non-essential output; print only errors and a final one-line outcome.

Safety

Every install snapshots existing configs to ~/.ui-craft/backups/ (tar.gz, SHA-256 deduped) before writing. Any mid-plan failure rolls back the whole plan. rollback [harness] restores from the latest snapshot at any time. State is persisted to ~/.ui-craft/state.json so update can replay your choices at the new version without re-prompting.

Discovery phase

Before building anything, the skill analyzes your project for existing design decisions — CSS variables, Tailwind config, font imports, component themes. If your project already has a design system, it respects it. If not, it asks 4 quick questions (style, accent color, font, optional animation stack) so it never defaults to generic blue/Inter.

Knobs

Three numeric knobs (1-10) that the skill asks about during Discovery. They change behavior, not just tone.

Knob 1 10
CRAFT_LEVEL (default 7) ships fast, skips Polish Pass pixel-perfect, compound details applied
MOTION_INTENSITY (default 5) hover states only scroll-linked, page transitions, magnetic cursor
VISUAL_DENSITY (default 5) whitespace-heavy editorial dashboard-dense

At MOTION_INTENSITY 8+ the skill loads references/stack.md only if the user opts into Motion / GSAP / Three.js during Discovery.

Style variants

Three opt-in sibling skills that pre-commit to a style and lock the knobs to matching values. Agents pick them when the user mentions a specific aesthetic or product reference.

Variant Triggers on Knobs locked Style anchors
ui-craft-minimal "minimal", "Linear-like", "Notion-like", "whitespace-heavy" CRAFT=8 / MOTION=3 / DENSITY=2 Monochrome + one accent, Inter/Geist, hairline borders
ui-craft-editorial "editorial", "magazine", "Medium-like", "Substack-like", "long-form" CRAFT=9 / MOTION=4 / DENSITY=3 Serif display + humanist body, wide reading column, OpenType
ui-craft-dense-dashboard "dashboard", "admin panel", "Bloomberg-like", "Retool-like" CRAFT=7 / MOTION=3 / DENSITY=9 IBM Plex + mono numbers, semantic palette, 4/8px grid

Each variant defers to the main ui-craft skill for base rules and references — it only overrides knob defaults and adds style-specific guidance.

Style presets

For playful and brutalist aesthetics (Clay / Gumroad / Duolingo / Arc-playful, Nothing-phone / Swiss-print / brutalist), see examples/presets/playful.md and examples/presets/brutalist.md. The main ui-craft skill applies these preset knob values + style overrides on top of the base rules when the user asks for those aesthetics.

Slash commands

Twenty single-lens passes, plus /sddesign (the pipeline that chains them) and /start (the front door).

Front door:

Command Does
/ui-craft:start Run this first. Reads the project (framework, tokens, brief, spec, existing UI) and reports what ui-craft can do right now, then routes you to the right next step. Read-only — no code changes.

Decision spine & finalize:

Command Does
/ui-craft:brief Write or update the project's durable design brief at .ui-craft/brief.md — 5 required sections + principles workshop. Run before any net-new project.
/ui-craft:tokens Audit or establish the 3-layer token spine (primitive → semantic → component). Both modes intentionally crafted, not just inverted.
/ui-craft:finalize Pre-ship gate. Runs detector + brief/token check + the 10-pass finish bar + feedback hierarchy filter. Output only — no auto-fix.

Review & ship:

Command Does
/ui-craft:heuristic Signature move. Scored critique — Nielsen 10 + 6 design laws + persona walkthroughs. Produces a Markdown scorecard with impact tags. No code changes.
/ui-craft:audit Technical — a11y, performance, responsive. Prioritized findings table.
/ui-craft:critique UX — hierarchy, clarity, anti-slop. No code changes.
/ui-craft:polish Final pass — compound details that turn "done" into "crafted".
/ui-craft:harden Production readiness — loading/empty/error states, i18n, offline, edge cases.
/ui-craft:unhappy State-first pass — design every non-happy state (idle/loading/empty/error/partial/conflict/offline) before the happy path.

Plan & transform:

Command Does
/ui-craft:sddesign Full spec-driven pipeline. brief → tokens → shape → craft → converge → ship. Writes .ui-craft/spec.md. Run when starting a net-new surface.
/ui-craft:craft One-shot surface build. Outcome recipe pipeline — 3 inputs (or silent defaults) → named composition → theme preset → build order → acceptance bar. Surfaces: dashboard, landing, auth.
/ui-craft:shape Wireframe-first. ASCII layout + content inventory + state list + open questions before any JSX. Run when starting a new screen.
/ui-craft:animate Add / fix motion. Ho

Extension points exported contracts — how you extend this code

Harness (Interface)
Harness is the port that every AI coding tool adapter must implement. Write* methods are declared here; adapters in this [10 …
cli/harness/harness.go
FileSystem (Interface)
FileSystem is the interface that wraps common filesystem operations. All path arguments are absolute or relative to the [2 …
cli/fsutil/fs.go
TemplateProvider (FuncType)
TemplateProvider is a function that returns the embedded fs.FS containing the design-memory scaffold templates. In produ
cli/core/plan.go
Clock (FuncType)
Clock is a function that returns the current time. Inject a fake in tests to produce deterministic snapshot IDs. Never c
cli/backup/store.go
LoginFormProps (Interface)
(no doc)
evals/quality/fixtures/designer/accessible-form.tsx
WriterOp (FuncType)
WriterOp is a function type that performs one file-write operation for a ComponentTarget. It returns the Change that was
cli/core/plan.go
HomeResolver (FuncType)
HomeResolver resolves the user's home directory (symlink-evaluated). Inject a fake in tests to bypass the real OS home c
cli/backup/store.go
ToastProps (Interface)
(no doc)
evals/quality/fixtures/designer/motion-safe.tsx

Core symbols most depended-on inside this repo

Update
called by 165
cli/tui/app.go
Name
called by 127
cli/harness/harness.go
String
called by 86
cli/cmd/doctor.go
MkdirAll
called by 60
cli/fsutil/memfs.go
ReadFile
called by 51
cli/fsutil/fs.go
WriteFile
called by 49
cli/fsutil/memfs.go
NewHubModel
called by 47
cli/tui/app.go
noColor
called by 46
cli/tui/styles.go

Shape

Function 808
Method 259
Struct 86
Interface 10
TypeAlias 9
FuncType 7

Languages

Go90%
TypeScript10%

Modules by API surface

scripts/detect.mjs58 symbols
cli/core/apply_test.go55 symbols
cli/backup/store.go43 symbols
cli/fsutil/memfs.go32 symbols
cli/harness/harness_test.go29 symbols
cli/tui/hub_test.go28 symbols
cli/tui/tui_test.go27 symbols
cli/tui/select.go26 symbols
cli/cmd/export_test.go25 symbols
cli/backup/store_test.go25 symbols
cli/fsutil/fs.go24 symbols
cli/harness/mcp_test.go22 symbols

For agents

$ claude mcp add ui-craft \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page