Skip to main content

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

Version Python License: MIT IDEs Brands Linter GitHub stars


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/Astro
  • motion-engineer — Framer Motion / GSAP / CSS with reduced-motion fallbacks
  • copy-writer — microcopy in brand voice
  • research-synthesizer — digests interviews/analytics/competitors into recommendations
  • design-system-architect — tokens, components, foundations

The three moats

  1. 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.

  2. 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.json so subsequent commands chain.

  3. 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.


v2.0.0-alpha.1 · Built so Claude Code, Cursor, and friends output frontend code that doesn't read as AI-generated.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uxskill-2.0.0a1.tar.gz (245.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uxskill-2.0.0a1-py3-none-any.whl (285.7 kB view details)

Uploaded Python 3

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

Hashes for uxskill-2.0.0a1.tar.gz
Algorithm Hash digest
SHA256 1f655193f6815f77e42802db8284f0301d78adec27495cdac5bb1facc61be0e0
MD5 b633607e40c086642af24bdbaee8f48b
BLAKE2b-256 5619151c575e1ab47850b6e8a8d573a7b1b1a14acbe298ba7883c03d65184fb4

See more details on using hashes here.

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

Hashes for uxskill-2.0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 b27d5de9eb01f1a8b39df9d5c7522c4adedd772ebfb9c47c3fa24ee0f521c5e5
MD5 a3c720a7fbad556f86a14ad0c9586041
BLAKE2b-256 7dcb34248966b3ef88b9f28f7334b5e775abf33ea3360aa77b16025aa6d03550

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page