Design intelligence engine for AI coding assistants. Anti-AI-slop linter, mandatory discovery, 5-parallel-search recommender, 75+ styles, 170+ palettes, 65+ type pairs, 72 brand specs.
Project description
ux — design intelligence engine for AI coding
v2.0 — Python pivot. The strongest design intelligence engine for AI coding. A Python-backed reasoning core with 11 queryable JSON manifests: 84 styles, 170+ palettes, 70 type pairs, 148 components, 170+ industries, 110+ UX laws, 57 motion presets, 35 anti-patterns, 72 brand specs. Plus 18 slash commands and 5 sub-agents from v1. Cross-IDE — runs in 17 environments: Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini CLI, Codex, Kiro, Cline, Continue, Aider, Zed, JetBrains AI, Pieces, Tabby, Tabnine, CodeWhisperer, Roo Cline.
Live at uxskill.laithjunaidy.com · GitHub repo
What v2 is
A Python reasoning engine that runs 5 parallel searches across structured data manifests and returns a complete recommended design system for your project — with always-on anti-AI-slop guardrails.
You give it a brief (industry, audience, tone, must-haves, forbidden). It returns: the style to use, the palette, the type pair, the motion presets, the components, the brand exemplars to study, and the anti-pattern rules that must hold. The engine never asks an LLM for an opinion — it's deterministic regex + lookup over structured data. Same input always gives same output.
Then the existing 18 Claude Code commands and 5 sub-agents consume that recommendation to generate, audit, lint, and refine actual code.
The numbers
| Manifest | ux-skill v2 | UI UX Pro Max |
|---|---|---|
| Design styles | 84 | 67 |
| Color palettes | 170+ | 161 |
| Type pairings | 70 | 57 |
| Components | 148 | 0 |
| Industry rules | 170+ | 161 |
| Chart types | 35 | 25 |
| Tech stacks | 25 | 15 |
| UX laws | 110+ | 99 |
| Motion presets | 57 | 0 |
| Anti-pattern rules | 35 | 0 |
| Brand specs | 72 | 0 |
| Total entries | ~1,000+ | ~600 |
Three categories — components, motion, anti-patterns, brand specs — they don't have at all. That's our moat.
Install — pick your path
Inside Claude Code (canonical)
/plugin marketplace add Laith0003/ux-skill
/plugin install ux@ux-skill
Anywhere else (pip)
pip install uxskill
ux init # auto-detects your IDE, installs for it
No-Python wrapper (npx)
npx uxskill init # bootstraps Python via pipx automatically
The flagship: /ux-recommend
Inside Claude Code:
/ux-recommend
> Project type? landing
> Industry? fintech-neobank
> Tone? warm, editorial
> Must have? dark-mode, a11y-AA
> Forbidden? brutalism, purple-gradients
> Stack? nextjs-15-app-router
> Region? mena
Outside Claude Code:
ux recommend \
--project-type=landing \
--industry=fintech-neobank \
--tone=warm --tone=editorial \
--must-have=dark-mode --must-have=a11y-AA \
--forbidden=brutalism --forbidden=purple-gradients \
--stack=nextjs-15-app-router \
--region=mena
Returns a complete merged design system: picked style, picked palette, picked type pair, top 5 motion presets, top 12 components, top 5 brand exemplars to study, all 35 anti-pattern guardrails active, plus a rationale block explaining each pick.
Architecture
ux-skill/
├── data/ # Queryable JSON — the brain
│ ├── styles.json # 84 design styles
│ ├── palettes.json # 170+ color palettes
│ ├── type-pairs.json # 70 font pairings
│ ├── components.json # 148 components
│ ├── industries.json # 170+ industry rules
│ ├── chart-types.json # 35 chart types
│ ├── tech-stacks.json # 25 stacks
│ ├── ux-guidelines.json # 110+ named laws
│ ├── motion-presets.json # 57 motion presets
│ ├── anti-patterns.json # 35 regex rules
│ └── brands/*.json # 72 brand specs
│
├── engine/ # Python — the reasoning
│ ├── recommender/ # 5-parallel-search engine
│ ├── linter/ # Anti-slop linter (replaces ux-lint.sh)
│ ├── discovery/ # 10-field forcing protocol
│ ├── generator/ # Tokens + manifest emitter
│ ├── installer/ # 17-IDE multi-installer
│ └── cli/ # `ux` / `uxskill` entry
│
├── commands/ # 18 Claude Code slash commands (.md)
├── agents/ # 5 sub-agent definitions (.md)
├── references/ # Prose source for the data + demo pages
└── bin/uxskill.mjs # npx wrapper → Python engine
Python thinks. HTML shows. Markdown chains.
The 18 commands (v1 preserved + v2 flagship)
| Command | What it does |
|---|---|
/ux-recommend |
v2 flagship: 5-parallel-search engine → merged system |
/ux-design [brief] |
Generate frontend code from a recommendation |
/ux-audit [path] |
Run linter + LLM design review |
/ux-lint [path] |
Deterministic anti-slop linter (no LLM) |
/ux-system |
Generate a complete design system |
/ux-component [name] |
Generate one component |
/ux-dashboard |
Generate a dashboard surface |
/ux-motion |
Generate motion treatment |
/ux-copy |
Microcopy review + rewrites |
/ux-a11y |
Accessibility audit |
/ux-critique |
Pure design critique |
/ux-polish |
Fix-loop on existing code |
/ux-fix |
Apply linter findings |
/ux-frame |
Frame the problem before solving |
/ux-research |
Synthesize research inputs |
/ux-workshop |
Run a design workshop |
/ux-case-study |
Write a case study |
/ux-expert |
Get expert advice (consulting hook) |
/ux-next |
Suggest the next command |
The 5 sub-agents
frontend-engineer— production-grade React/Next/Vue/Blade/Astromotion-engineer— Framer Motion / GSAP / CSS with reduced-motion fallbackscopy-writer— microcopy in brand voiceresearch-synthesizer— digests interviews/analytics/competitors into recommendationsdesign-system-architect— tokens, components, foundations
The three moats
-
Deterministic anti-AI-slop linter — 35 regex rules, no LLM, runs in CI. Catches: Inter as display, purple-to-blue gradients, three equal cards, "John Doe", emoji in UI, 300ms default timing, generic CTAs, dark text on dark cards, and more. Wire it into pre-commit hooks for a hard floor against AI fingerprints.
-
Mandatory 10-field discovery — forcing function before any generation. The plugin asks: project type, audience, primary goal, tone, must-haves, forbidden, reference brands, stack, region, success metric. No improvisation. The brief is saved to
.ux/last-discovery.jsonso subsequent commands chain. -
72 real brand DESIGN.md specs — Apple, Stripe, Linear, Figma, Tesla, BMW, Notion, Spotify, Airbnb, Vercel, Supabase, Cursor, Raycast and 59 more. Full design languages, not generic palettes. Tell the plugin "build a landing in Stripe's style" and it reads the actual brand language. Both as prose (
references/brands/*.md) and structured JSON (data/brands/*.json).
Cross-IDE distribution
17 environments supported via ux init:
| IDE / Tool | Detection | Installed artifact |
|---|---|---|
| Claude Code | .claude/ or CLAUDE.md |
Plugin manifest at .claude-plugin/plugin.json |
| Cursor | .cursor/ or .cursorrules |
.cursorrules prompt header |
| Windsurf | .windsurf/ or .windsurfrules |
.windsurfrules |
| GitHub Copilot | .github/copilot-instructions.md or .vscode/ |
.github/copilot-instructions.md |
| Gemini CLI | GEMINI.md |
GEMINI.md |
| Codex | AGENTS.md |
AGENTS.md |
| Kiro | .kiro/ |
.kiro/instructions.md |
| Cline | .cline/ |
.cline/instructions.md |
| Continue | .continue/ |
.continue/config.json |
| Aider | .aider.conf.yml |
.aider.conf.yml + AIDER.md |
| Zed | .zed/ |
.zed/instructions.md |
| JetBrains AI | .jetbrains-ai/ or .idea/ |
.jetbrains-ai/instructions.md |
| Pieces | .pieces/ |
.pieces/instructions.md |
| Tabby | .tabby/ |
.tabby/instructions.md |
| Tabnine | .tabnine/ |
.tabnine/instructions.md |
| CodeWhisperer | .aws-codewhisperer/ |
.aws-codewhisperer/instructions.md |
| Roo Cline | .roo/ |
.roo/instructions.md |
Same Python engine. Same recommendations. Different glue per IDE.
Compatibility with v1
v1 install still works for existing users:
/plugin marketplace add Laith0003/ux-skill
/plugin install ux@ux-skill
v2 adds the Python layer underneath. When the Python engine is available, commands shell to it for the heavy lifting. When it's not (older installs), commands fall back to v1's prose-only behavior. No breaking changes.
Privacy
The plugin runs entirely on your machine. No telemetry. No analytics. No phone-home. The deterministic linter runs pure regex over local files. LLM calls (in commands that use them) go through your own AI assistant's authentication, not the plugin's. Full privacy policy: PRIVACY.md / uxskill.laithjunaidy.com/privacy.html.
Contributing
See CONTRIBUTING.md. Issues and PRs welcome. The 17 deferred anti-pattern rules and the 8 net-new component patterns flagged during v2.0 are explicit follow-ups in the issue tracker.
License
MIT. Use it, fork it, build on it. If it saves you from shipping AI slop, star the repo. It's the cheapest way to support it.
Author
Laith Aljunaidy — solo founder of Dot, a MENA-first loyalty platform. Building ux-skill so the AI-generated frontend doesn't all look the same.
- LinkedIn: linkedin.com/in/laithaljunaidy
- Email: laith.aljunaidy.laith@gmail.com
- Repo: github.com/Laith0003/ux-skill
- Site: uxskill.laithjunaidy.com
v2.0.0-alpha.1 · Built so Claude Code, Cursor, and friends output frontend code that doesn't read as AI-generated.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uxskill-2.0.0a1.tar.gz.
File metadata
- Download URL: uxskill-2.0.0a1.tar.gz
- Upload date:
- Size: 245.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f655193f6815f77e42802db8284f0301d78adec27495cdac5bb1facc61be0e0
|
|
| MD5 |
b633607e40c086642af24bdbaee8f48b
|
|
| BLAKE2b-256 |
5619151c575e1ab47850b6e8a8d573a7b1b1a14acbe298ba7883c03d65184fb4
|
File details
Details for the file uxskill-2.0.0a1-py3-none-any.whl.
File metadata
- Download URL: uxskill-2.0.0a1-py3-none-any.whl
- Upload date:
- Size: 285.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b27d5de9eb01f1a8b39df9d5c7522c4adedd772ebfb9c47c3fa24ee0f521c5e5
|
|
| MD5 |
a3c720a7fbad556f86a14ad0c9586041
|
|
| BLAKE2b-256 |
7dcb34248966b3ef88b9f28f7334b5e775abf33ea3360aa77b16025aa6d03550
|