uxskill
Star on GitHub
Language
English 简体中文 繁體中文 日本語 한국어 हिन्दी Bahasa Indonesia Tiếng Việt ไทย العربية Español Français Deutsch Português Русский Türkçe Italiano
v3.0.0 — THE BRAIN MIT, no telemetry

# The brain that ships
design work
that doesn't look generated.

v3.0.0 stable. 1,243 structured entries + 160 brand specs + 152 anti-pattern rules — but the catalogue is no longer templates. It's training data for a 7-axis synthesizer that produces a novel design language per brief. The recommender re-ranks from a local decisions ledger you can see. Offline. Deterministic. No LLM. No telemetry.

pip install uxskill
Read the source
1,243 entries 22 commands 145 lint rules 160 brand specs 17 IDEs
~/dot/landing — uxskill 3.0
$
02 — Brand specs · 160 catalogue · growing

## 160 design languages.
Three rails, opposite directions.

Each card is a real specimen — logo, brand colour strip, name in its own typeface. Top rail drifts left, middle drifts right, bottom drifts left. Drag any row with your finger to scrub it; release and it resumes. Tap a card to reskin the page in that brand's voice for six seconds.

160 brand DESIGN.md specs · drag any rail to scrub · tap any card to reskin the page · the catalogue keeps growing

02.5 — THE BRAIN · v3.0 architecture

## Brand specs are training data,
not templates.

The catalogue used to be the menu. Pick Stripe, get Stripe. v3.0 turns the catalogue into training data for a 7-axis synthesizer — warmth, contrast, density, geometry, formality, motion, type personality. The engine reads the brief, maps it to axis values, and compiles a fresh palette + type + spacing + radius + motion stack. Three dispatch modes decide how much of a named brand to anchor on. The output is novel every call.

Mode 01 · fastest strict_brand 100% brand · verbatim

`reference_brands=[stripe] strict=True` → 100% Stripe tokens, no axis adaptation. Fastest path. For when you know exactly what you want.

Mode 02 · the sweet spot brand_anchor 70% named · 30% axis adaptation

Anchor on a named brand, then bend it toward the brief's axis values using 4 sibling brands. For "Stripe-like but for healthcare." The default when one brand is referenced.

Mode 03 · infinity space pure_synthesis 0% brand · 100% axes

No brand named. The synthesizer picks 8 axis-matching exemplars from the catalogue, distills the shared signal, and compiles a brand-new design language. Output is novel every call.

The 7 axes · deterministic mapping

A brief lands on seven values. Same brief → same tokens. Different brief → different design language.

- warmth
- contrast
- density
- geometry
- formality
- motion
- type_personality

The brain learns from itself.

Every `/ux-design`, `/ux-lint`, and `/ux-evolve` writes to `.ux/decisions.jsonl`. After 3 lint-clean + accepted decisions in an `(industry, ui_type)` bucket, `/ux-recommend` bumps that winning combination next time. Offline. Local file. No telemetry. You can `cat` it.

03 — The reasoning engine

## Five parallel searches.
One recommendation.

Merged by industry fit, brand voice, and anti-slop risk.

Brief in Marketing site / Developer tools / dark / editorial / cinematic
forbid amber forbid coral media-first a11y AA

Style

Saturated Cinema

0.94

Palette

Media-derived (no fixed)

0.91

Type

Bricolage × Inter × JBM

0.89

Motion

Slide-up clip 480ms

0.87

Components

12 compatible

0.93
Merged recommendation
Saturated Cinema, dark canvas, scene-local palettes, Bricolage variable display, terminal-led hero.
5 lanes, 1,243 entries searched, 31ms median.
04 — The anti-slop linter

## 152 regex rules.
Run before commit.

Deterministic. JSON-queryable. The page you are reading scanned clean.

~/dot/landing — ux lint
$ ux lint docs/ --threshold high
Scanning 14 files · 152 rules active
blog/cursor-design-plugin.html:184 medium inter-as-display
about.html:53 high cormorant-garamond-leak
index.html clean 0 findings
done in 31ms
145 rules · 0 high
05 — Inside the editor

## Same engine.
Every coding agent.

One mockup. Three hosts. The same tool reads the same brief.

Cursor · landing.tsx
/ux-recommend cmd+k
Style Saturated Cinema
Type pair Bricolage × Inter × JBM
Motion Fade-up clip · 480ms
/ux-design @claude
Discovery confirmed. Loading 1,243 entries. Merging 5 lanes against your brief.
Discovery 10/10 fields locked
Anti-slop guardrails 100 active · 0 violations
Pages persisted .ux/design-system/MASTER.md
/ux-component combobox cascade
Component select-combobox
Anatomy trigger · popover · listbox · empty
Warning avoid rounded-full on input
05A — Editorial

## For the people who
actually ship the work.

Recommender returns tokens; a person turns them into a product. Five plates from the worlds ux-skill ships into — hands on a keyboard, a window-lit workspace, a portrait, an architectural lobby, a designer at the surface. Tools are nothing without the practitioner.

Plate 01 · The keyboard

### A pair of hands
at four in the morning.

The session writes the JSX. You earn the shape. ux-skill is the brief in between — so the keystrokes ship something a real person would defend in review.

Plate 02 · The workspace

### Window light, one screen,
nothing else open.

160 brand specs · 184 industries · 112 UX laws — the entire library sits in /data, indexed before you start. The room stays quiet.

Plate 03 · The maker

### The portrait
of an opinionated taste.

An anti-slop linter scans the diff before commit. It refuses the generic phrase, the placeholder palette, the missing alt text. The person stays in charge.

Plate 04 · The room

### Negative space
holds the brand.

Apple, Aesop, Patagonia-school restraint lives in the catalogue — palette, type, voice, do's-don'ts. The session pulls the whole spec, not a slogan.

Plate 05 · The surface

### Designer-grade tools,
built for the AI session.

25 slash commands, 18 MCP tools, 5 sub-agents, deterministic linter, Python recommender, 7-axis synthesizer. The AI moves; the practitioner curates.

Plate 06 · The pause

### Between calls.
The system remembers.

Every /ux-recommend writes one line to .ux/decisions.jsonl. The next call reads that file. The brain is the loop, not the model.

Plate 07 · The brief

### Seven axes.
One person's intent.

warmth · contrast · density · geometry · formality · motion · type personality. The brief compiles to all seven. The output compiles back from them. Same brief always lands the same way.

Plate 08 · The catalogue

### 160 brands.
Not templates.
Training data.

Apple, Stripe, Linear, Ferrari, Anthropic, Aesop. v3.0 distills their palettes, type stacks, and motion vocab into something new. No single brand wins. The output is yours.

Plate 09 · The verdict

### Score 91.
Ships.

/ux-evolve auto-iterates lint → polish → re-lint until composite reaches 90 or plateaus. Below 65, refuses to ship. The quality gate isn't decoration. It's the gate.

Photographs via Lorem Picsum · CC0 · sourced from contributing photographers on Unsplash. Editorial use; tinted to read on dark.

05·5 — In the editor

## Not a marketing render.
The plugin, in the editor.

One install. Recommendation in chat. Component in editor.

Cursor running `/ux-design`. The recommendation feeds the chat; the chat writes the component.
Claude Code · `/ux-recommend` → `/ux-design`
`ux lint` · 152 rules · file:line, why, fix
160 brand specs · type, palette, voice

Color is what the section is about, not what it has. Every fold takes its palette from its media. The page is a film, not a swatch.

07 — By the numbers

## The catalogue.
The surface area.

0 Structured entries
0 Anti-pattern rules
0 Brand DESIGN.md specs
0 IDE integrations
08 — The scorecard

## We measured.
We wrote it down.

50-point rubric. Built from `gh api` on 2026-05-28.

uxskill 0/50
next-best plugin 0/50
See the full 50-point scorecard
09 — Install

## Three runtimes.
One engine.

Pick the runtime that fits where you live. The Python wheel is the engine. The npm shim wraps it for Cursor and Windsurf. The Claude plugin loads it natively.

pip install 'uxskill[all]'

Includes engine, CLI, MCP server, and the full data bundle. Python 3.10+.

npx uxskill@latest init

Wraps the Python engine for editors that prefer Node. No global install required.

claude plugin install ux@ux-skill

Native install into Claude Code. Slash commands and sub-agents load on next session.
10 — MCP server

14 tools over stdio for any MCP host. Same Python wheel, no extra runtime.

Read the MCP spec