uxskill 2.0.0a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- uxskill-2.0.0a1/LICENSE +21 -0
- uxskill-2.0.0a1/PKG-INFO +267 -0
- uxskill-2.0.0a1/README.md +229 -0
- uxskill-2.0.0a1/data/anti-patterns.json +755 -0
- uxskill-2.0.0a1/data/brands/_index.json +371 -0
- uxskill-2.0.0a1/data/brands/airbnb.json +44 -0
- uxskill-2.0.0a1/data/brands/airtable.json +47 -0
- uxskill-2.0.0a1/data/brands/apple.json +50 -0
- uxskill-2.0.0a1/data/brands/binance.json +48 -0
- uxskill-2.0.0a1/data/brands/bmw-m.json +47 -0
- uxskill-2.0.0a1/data/brands/bmw.json +48 -0
- uxskill-2.0.0a1/data/brands/bugatti.json +44 -0
- uxskill-2.0.0a1/data/brands/cal.json +49 -0
- uxskill-2.0.0a1/data/brands/claude.json +51 -0
- uxskill-2.0.0a1/data/brands/clay.json +48 -0
- uxskill-2.0.0a1/data/brands/clickhouse.json +48 -0
- uxskill-2.0.0a1/data/brands/cohere.json +49 -0
- uxskill-2.0.0a1/data/brands/coinbase.json +49 -0
- uxskill-2.0.0a1/data/brands/composio.json +50 -0
- uxskill-2.0.0a1/data/brands/cursor.json +51 -0
- uxskill-2.0.0a1/data/brands/elevenlabs.json +50 -0
- uxskill-2.0.0a1/data/brands/expo.json +51 -0
- uxskill-2.0.0a1/data/brands/ferrari.json +50 -0
- uxskill-2.0.0a1/data/brands/figma.json +49 -0
- uxskill-2.0.0a1/data/brands/framer.json +50 -0
- uxskill-2.0.0a1/data/brands/hashicorp.json +49 -0
- uxskill-2.0.0a1/data/brands/hp.json +49 -0
- uxskill-2.0.0a1/data/brands/ibm.json +48 -0
- uxskill-2.0.0a1/data/brands/intercom.json +50 -0
- uxskill-2.0.0a1/data/brands/kraken.json +38 -0
- uxskill-2.0.0a1/data/brands/lamborghini.json +39 -0
- uxskill-2.0.0a1/data/brands/linear.app.json +51 -0
- uxskill-2.0.0a1/data/brands/lovable.json +35 -0
- uxskill-2.0.0a1/data/brands/mastercard.json +36 -0
- uxskill-2.0.0a1/data/brands/meta.json +51 -0
- uxskill-2.0.0a1/data/brands/minimax.json +51 -0
- uxskill-2.0.0a1/data/brands/mintlify.json +51 -0
- uxskill-2.0.0a1/data/brands/miro.json +51 -0
- uxskill-2.0.0a1/data/brands/mistral.ai.json +51 -0
- uxskill-2.0.0a1/data/brands/mongodb.json +50 -0
- uxskill-2.0.0a1/data/brands/nike.json +47 -0
- uxskill-2.0.0a1/data/brands/notion.json +51 -0
- uxskill-2.0.0a1/data/brands/nvidia.json +46 -0
- uxskill-2.0.0a1/data/brands/ollama.json +48 -0
- uxskill-2.0.0a1/data/brands/opencode.ai.json +45 -0
- uxskill-2.0.0a1/data/brands/pinterest.json +47 -0
- uxskill-2.0.0a1/data/brands/playstation.json +47 -0
- uxskill-2.0.0a1/data/brands/posthog.json +49 -0
- uxskill-2.0.0a1/data/brands/raycast.json +49 -0
- uxskill-2.0.0a1/data/brands/renault.json +47 -0
- uxskill-2.0.0a1/data/brands/replicate.json +49 -0
- uxskill-2.0.0a1/data/brands/resend.json +50 -0
- uxskill-2.0.0a1/data/brands/revolut.json +48 -0
- uxskill-2.0.0a1/data/brands/runwayml.json +48 -0
- uxskill-2.0.0a1/data/brands/sanity.json +50 -0
- uxskill-2.0.0a1/data/brands/sentry.json +49 -0
- uxskill-2.0.0a1/data/brands/shopify.json +49 -0
- uxskill-2.0.0a1/data/brands/slack.json +49 -0
- uxskill-2.0.0a1/data/brands/spacex.json +45 -0
- uxskill-2.0.0a1/data/brands/spotify.json +40 -0
- uxskill-2.0.0a1/data/brands/starbucks.json +35 -0
- uxskill-2.0.0a1/data/brands/stripe.json +49 -0
- uxskill-2.0.0a1/data/brands/supabase.json +50 -0
- uxskill-2.0.0a1/data/brands/superhuman.json +48 -0
- uxskill-2.0.0a1/data/brands/tesla.json +41 -0
- uxskill-2.0.0a1/data/brands/theverge.json +36 -0
- uxskill-2.0.0a1/data/brands/together.ai.json +47 -0
- uxskill-2.0.0a1/data/brands/uber.json +48 -0
- uxskill-2.0.0a1/data/brands/vercel.json +52 -0
- uxskill-2.0.0a1/data/brands/vodafone.json +48 -0
- uxskill-2.0.0a1/data/brands/voltagent.json +48 -0
- uxskill-2.0.0a1/data/brands/warp.json +50 -0
- uxskill-2.0.0a1/data/brands/webflow.json +48 -0
- uxskill-2.0.0a1/data/brands/wired.json +44 -0
- uxskill-2.0.0a1/data/brands/wise.json +48 -0
- uxskill-2.0.0a1/data/brands/x.ai.json +46 -0
- uxskill-2.0.0a1/data/brands/zapier.json +46 -0
- uxskill-2.0.0a1/data/chart-types.json +536 -0
- uxskill-2.0.0a1/data/components.json +8020 -0
- uxskill-2.0.0a1/data/industries.json +2354 -0
- uxskill-2.0.0a1/data/motion-presets.json +1103 -0
- uxskill-2.0.0a1/data/palettes.json +6876 -0
- uxskill-2.0.0a1/data/styles.json +4310 -0
- uxskill-2.0.0a1/data/tech-stacks.json +336 -0
- uxskill-2.0.0a1/data/type-pairs.json +2041 -0
- uxskill-2.0.0a1/data/ux-guidelines.json +1579 -0
- uxskill-2.0.0a1/engine/__init__.py +7 -0
- uxskill-2.0.0a1/engine/cli/__init__.py +1 -0
- uxskill-2.0.0a1/engine/cli/main.py +222 -0
- uxskill-2.0.0a1/engine/data_loader.py +76 -0
- uxskill-2.0.0a1/engine/discovery/__init__.py +19 -0
- uxskill-2.0.0a1/engine/discovery/core.py +113 -0
- uxskill-2.0.0a1/engine/generator/__init__.py +3 -0
- uxskill-2.0.0a1/engine/generator/core.py +127 -0
- uxskill-2.0.0a1/engine/installer/__init__.py +8 -0
- uxskill-2.0.0a1/engine/installer/core.py +207 -0
- uxskill-2.0.0a1/engine/integration.py +187 -0
- uxskill-2.0.0a1/engine/linter/__init__.py +3 -0
- uxskill-2.0.0a1/engine/linter/core.py +175 -0
- uxskill-2.0.0a1/engine/recommender/__init__.py +3 -0
- uxskill-2.0.0a1/engine/recommender/core.py +227 -0
- uxskill-2.0.0a1/pyproject.toml +73 -0
- uxskill-2.0.0a1/setup.cfg +4 -0
- uxskill-2.0.0a1/tests/test_data_validation.py +62 -0
- uxskill-2.0.0a1/tests/test_generator.py +21 -0
- uxskill-2.0.0a1/tests/test_installer.py +35 -0
- uxskill-2.0.0a1/tests/test_linter.py +21 -0
- uxskill-2.0.0a1/tests/test_recommender.py +24 -0
- uxskill-2.0.0a1/tests/test_smoke.py +40 -0
- uxskill-2.0.0a1/uxskill.egg-info/PKG-INFO +267 -0
- uxskill-2.0.0a1/uxskill.egg-info/SOURCES.txt +113 -0
- uxskill-2.0.0a1/uxskill.egg-info/dependency_links.txt +1 -0
- uxskill-2.0.0a1/uxskill.egg-info/entry_points.txt +3 -0
- uxskill-2.0.0a1/uxskill.egg-info/requires.txt +13 -0
- uxskill-2.0.0a1/uxskill.egg-info/top_level.txt +1 -0
uxskill-2.0.0a1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Laith Aljunaidy
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
uxskill-2.0.0a1/PKG-INFO
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: uxskill
|
|
3
|
+
Version: 2.0.0a1
|
|
4
|
+
Summary: 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.
|
|
5
|
+
Author-email: Laith Aljunaidy <laith.aljunaidy.laith@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://uxskill.laithjunaidy.com
|
|
8
|
+
Project-URL: Repository, https://github.com/Laith0003/ux-skill
|
|
9
|
+
Project-URL: Issues, https://github.com/Laith0003/ux-skill/issues
|
|
10
|
+
Project-URL: Documentation, https://uxskill.laithjunaidy.com
|
|
11
|
+
Keywords: ux,ui,design-system,ai-coding,claude-code,cursor,windsurf,linter,design,frontend,anti-ai-slop
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.9
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: click>=8.1
|
|
28
|
+
Requires-Dist: rich>=13.0
|
|
29
|
+
Requires-Dist: pydantic>=2.5
|
|
30
|
+
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: pytest>=7.4; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-cov>=4.1; extra == "dev"
|
|
34
|
+
Requires-Dist: ruff>=0.1.9; extra == "dev"
|
|
35
|
+
Requires-Dist: mypy>=1.7; extra == "dev"
|
|
36
|
+
Requires-Dist: black>=23.12; extra == "dev"
|
|
37
|
+
Dynamic: license-file
|
|
38
|
+
|
|
39
|
+
# ux — design intelligence engine for AI coding
|
|
40
|
+
|
|
41
|
+
> **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.
|
|
42
|
+
|
|
43
|
+
**Live at [uxskill.laithjunaidy.com](https://uxskill.laithjunaidy.com)** · [GitHub repo](https://github.com/Laith0003/ux-skill)
|
|
44
|
+
|
|
45
|
+
[](https://github.com/Laith0003/ux-skill/releases)
|
|
46
|
+
[](https://www.python.org/downloads/)
|
|
47
|
+
[](LICENSE)
|
|
48
|
+
[](#cross-ide-distribution)
|
|
49
|
+
[](data/brands/_index.json)
|
|
50
|
+
[](data/anti-patterns.json)
|
|
51
|
+
[](https://github.com/Laith0003/ux-skill/stargazers)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## What v2 is
|
|
56
|
+
|
|
57
|
+
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.
|
|
58
|
+
|
|
59
|
+
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.
|
|
60
|
+
|
|
61
|
+
Then the existing 18 Claude Code commands and 5 sub-agents consume that recommendation to generate, audit, lint, and refine actual code.
|
|
62
|
+
|
|
63
|
+
## The numbers
|
|
64
|
+
|
|
65
|
+
| Manifest | ux-skill v2 | UI UX Pro Max |
|
|
66
|
+
|---|---:|---:|
|
|
67
|
+
| Design styles | **84** | 67 |
|
|
68
|
+
| Color palettes | **170+** | 161 |
|
|
69
|
+
| Type pairings | **70** | 57 |
|
|
70
|
+
| Components | **148** | 0 |
|
|
71
|
+
| Industry rules | **170+** | 161 |
|
|
72
|
+
| Chart types | **35** | 25 |
|
|
73
|
+
| Tech stacks | **25** | 15 |
|
|
74
|
+
| UX laws | **110+** | 99 |
|
|
75
|
+
| Motion presets | **57** | 0 |
|
|
76
|
+
| Anti-pattern rules | **35** | 0 |
|
|
77
|
+
| Brand specs | **72** | 0 |
|
|
78
|
+
| **Total entries** | **~1,000+** | **~600** |
|
|
79
|
+
|
|
80
|
+
Three categories — components, motion, anti-patterns, brand specs — they don't have at all. That's our moat.
|
|
81
|
+
|
|
82
|
+
## Install — pick your path
|
|
83
|
+
|
|
84
|
+
### Inside Claude Code (canonical)
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
/plugin marketplace add Laith0003/ux-skill
|
|
88
|
+
/plugin install ux@ux-skill
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Anywhere else (pip)
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install uxskill
|
|
95
|
+
ux init # auto-detects your IDE, installs for it
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### No-Python wrapper (npx)
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npx uxskill init # bootstraps Python via pipx automatically
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## The flagship: `/ux-recommend`
|
|
105
|
+
|
|
106
|
+
Inside Claude Code:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
/ux-recommend
|
|
110
|
+
> Project type? landing
|
|
111
|
+
> Industry? fintech-neobank
|
|
112
|
+
> Tone? warm, editorial
|
|
113
|
+
> Must have? dark-mode, a11y-AA
|
|
114
|
+
> Forbidden? brutalism, purple-gradients
|
|
115
|
+
> Stack? nextjs-15-app-router
|
|
116
|
+
> Region? mena
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Outside Claude Code:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
ux recommend \
|
|
123
|
+
--project-type=landing \
|
|
124
|
+
--industry=fintech-neobank \
|
|
125
|
+
--tone=warm --tone=editorial \
|
|
126
|
+
--must-have=dark-mode --must-have=a11y-AA \
|
|
127
|
+
--forbidden=brutalism --forbidden=purple-gradients \
|
|
128
|
+
--stack=nextjs-15-app-router \
|
|
129
|
+
--region=mena
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
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.
|
|
133
|
+
|
|
134
|
+
## Architecture
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
ux-skill/
|
|
138
|
+
├── data/ # Queryable JSON — the brain
|
|
139
|
+
│ ├── styles.json # 84 design styles
|
|
140
|
+
│ ├── palettes.json # 170+ color palettes
|
|
141
|
+
│ ├── type-pairs.json # 70 font pairings
|
|
142
|
+
│ ├── components.json # 148 components
|
|
143
|
+
│ ├── industries.json # 170+ industry rules
|
|
144
|
+
│ ├── chart-types.json # 35 chart types
|
|
145
|
+
│ ├── tech-stacks.json # 25 stacks
|
|
146
|
+
│ ├── ux-guidelines.json # 110+ named laws
|
|
147
|
+
│ ├── motion-presets.json # 57 motion presets
|
|
148
|
+
│ ├── anti-patterns.json # 35 regex rules
|
|
149
|
+
│ └── brands/*.json # 72 brand specs
|
|
150
|
+
│
|
|
151
|
+
├── engine/ # Python — the reasoning
|
|
152
|
+
│ ├── recommender/ # 5-parallel-search engine
|
|
153
|
+
│ ├── linter/ # Anti-slop linter (replaces ux-lint.sh)
|
|
154
|
+
│ ├── discovery/ # 10-field forcing protocol
|
|
155
|
+
│ ├── generator/ # Tokens + manifest emitter
|
|
156
|
+
│ ├── installer/ # 17-IDE multi-installer
|
|
157
|
+
│ └── cli/ # `ux` / `uxskill` entry
|
|
158
|
+
│
|
|
159
|
+
├── commands/ # 18 Claude Code slash commands (.md)
|
|
160
|
+
├── agents/ # 5 sub-agent definitions (.md)
|
|
161
|
+
├── references/ # Prose source for the data + demo pages
|
|
162
|
+
└── bin/uxskill.mjs # npx wrapper → Python engine
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Python thinks. HTML shows. Markdown chains.**
|
|
166
|
+
|
|
167
|
+
## The 18 commands (v1 preserved + v2 flagship)
|
|
168
|
+
|
|
169
|
+
| Command | What it does |
|
|
170
|
+
|---|---|
|
|
171
|
+
| `/ux-recommend` | **v2 flagship**: 5-parallel-search engine → merged system |
|
|
172
|
+
| `/ux-design [brief]` | Generate frontend code from a recommendation |
|
|
173
|
+
| `/ux-audit [path]` | Run linter + LLM design review |
|
|
174
|
+
| `/ux-lint [path]` | Deterministic anti-slop linter (no LLM) |
|
|
175
|
+
| `/ux-system` | Generate a complete design system |
|
|
176
|
+
| `/ux-component [name]` | Generate one component |
|
|
177
|
+
| `/ux-dashboard` | Generate a dashboard surface |
|
|
178
|
+
| `/ux-motion` | Generate motion treatment |
|
|
179
|
+
| `/ux-copy` | Microcopy review + rewrites |
|
|
180
|
+
| `/ux-a11y` | Accessibility audit |
|
|
181
|
+
| `/ux-critique` | Pure design critique |
|
|
182
|
+
| `/ux-polish` | Fix-loop on existing code |
|
|
183
|
+
| `/ux-fix` | Apply linter findings |
|
|
184
|
+
| `/ux-frame` | Frame the problem before solving |
|
|
185
|
+
| `/ux-research` | Synthesize research inputs |
|
|
186
|
+
| `/ux-workshop` | Run a design workshop |
|
|
187
|
+
| `/ux-case-study` | Write a case study |
|
|
188
|
+
| `/ux-expert` | Get expert advice (consulting hook) |
|
|
189
|
+
| `/ux-next` | Suggest the next command |
|
|
190
|
+
|
|
191
|
+
## The 5 sub-agents
|
|
192
|
+
|
|
193
|
+
- `frontend-engineer` — production-grade React/Next/Vue/Blade/Astro
|
|
194
|
+
- `motion-engineer` — Framer Motion / GSAP / CSS with reduced-motion fallbacks
|
|
195
|
+
- `copy-writer` — microcopy in brand voice
|
|
196
|
+
- `research-synthesizer` — digests interviews/analytics/competitors into recommendations
|
|
197
|
+
- `design-system-architect` — tokens, components, foundations
|
|
198
|
+
|
|
199
|
+
## The three moats
|
|
200
|
+
|
|
201
|
+
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.
|
|
202
|
+
|
|
203
|
+
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.
|
|
204
|
+
|
|
205
|
+
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`).
|
|
206
|
+
|
|
207
|
+
## Cross-IDE distribution
|
|
208
|
+
|
|
209
|
+
17 environments supported via `ux init`:
|
|
210
|
+
|
|
211
|
+
| IDE / Tool | Detection | Installed artifact |
|
|
212
|
+
|---|---|---|
|
|
213
|
+
| Claude Code | `.claude/` or `CLAUDE.md` | Plugin manifest at `.claude-plugin/plugin.json` |
|
|
214
|
+
| Cursor | `.cursor/` or `.cursorrules` | `.cursorrules` prompt header |
|
|
215
|
+
| Windsurf | `.windsurf/` or `.windsurfrules` | `.windsurfrules` |
|
|
216
|
+
| GitHub Copilot | `.github/copilot-instructions.md` or `.vscode/` | `.github/copilot-instructions.md` |
|
|
217
|
+
| Gemini CLI | `GEMINI.md` | `GEMINI.md` |
|
|
218
|
+
| Codex | `AGENTS.md` | `AGENTS.md` |
|
|
219
|
+
| Kiro | `.kiro/` | `.kiro/instructions.md` |
|
|
220
|
+
| Cline | `.cline/` | `.cline/instructions.md` |
|
|
221
|
+
| Continue | `.continue/` | `.continue/config.json` |
|
|
222
|
+
| Aider | `.aider.conf.yml` | `.aider.conf.yml` + `AIDER.md` |
|
|
223
|
+
| Zed | `.zed/` | `.zed/instructions.md` |
|
|
224
|
+
| JetBrains AI | `.jetbrains-ai/` or `.idea/` | `.jetbrains-ai/instructions.md` |
|
|
225
|
+
| Pieces | `.pieces/` | `.pieces/instructions.md` |
|
|
226
|
+
| Tabby | `.tabby/` | `.tabby/instructions.md` |
|
|
227
|
+
| Tabnine | `.tabnine/` | `.tabnine/instructions.md` |
|
|
228
|
+
| CodeWhisperer | `.aws-codewhisperer/` | `.aws-codewhisperer/instructions.md` |
|
|
229
|
+
| Roo Cline | `.roo/` | `.roo/instructions.md` |
|
|
230
|
+
|
|
231
|
+
Same Python engine. Same recommendations. Different glue per IDE.
|
|
232
|
+
|
|
233
|
+
## Compatibility with v1
|
|
234
|
+
|
|
235
|
+
v1 install still works for existing users:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
/plugin marketplace add Laith0003/ux-skill
|
|
239
|
+
/plugin install ux@ux-skill
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
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.
|
|
243
|
+
|
|
244
|
+
## Privacy
|
|
245
|
+
|
|
246
|
+
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](PRIVACY.md) / [uxskill.laithjunaidy.com/privacy.html](https://uxskill.laithjunaidy.com/privacy.html).
|
|
247
|
+
|
|
248
|
+
## Contributing
|
|
249
|
+
|
|
250
|
+
See [CONTRIBUTING.md](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.
|
|
251
|
+
|
|
252
|
+
## License
|
|
253
|
+
|
|
254
|
+
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.
|
|
255
|
+
|
|
256
|
+
## Author
|
|
257
|
+
|
|
258
|
+
**Laith Aljunaidy** — solo founder of [Dot](https://thedotwallet.com), a MENA-first loyalty platform. Building ux-skill so the AI-generated frontend doesn't all look the same.
|
|
259
|
+
|
|
260
|
+
- LinkedIn: [linkedin.com/in/laithaljunaidy](https://www.linkedin.com/in/laithaljunaidy/)
|
|
261
|
+
- Email: laith.aljunaidy.laith@gmail.com
|
|
262
|
+
- Repo: [github.com/Laith0003/ux-skill](https://github.com/Laith0003/ux-skill)
|
|
263
|
+
- Site: [uxskill.laithjunaidy.com](https://uxskill.laithjunaidy.com)
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
**v2.0.0-alpha.1** · Built so Claude Code, Cursor, and friends output frontend code that doesn't read as AI-generated.
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# ux — design intelligence engine for AI coding
|
|
2
|
+
|
|
3
|
+
> **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.
|
|
4
|
+
|
|
5
|
+
**Live at [uxskill.laithjunaidy.com](https://uxskill.laithjunaidy.com)** · [GitHub repo](https://github.com/Laith0003/ux-skill)
|
|
6
|
+
|
|
7
|
+
[](https://github.com/Laith0003/ux-skill/releases)
|
|
8
|
+
[](https://www.python.org/downloads/)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](#cross-ide-distribution)
|
|
11
|
+
[](data/brands/_index.json)
|
|
12
|
+
[](data/anti-patterns.json)
|
|
13
|
+
[](https://github.com/Laith0003/ux-skill/stargazers)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## What v2 is
|
|
18
|
+
|
|
19
|
+
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.
|
|
20
|
+
|
|
21
|
+
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.
|
|
22
|
+
|
|
23
|
+
Then the existing 18 Claude Code commands and 5 sub-agents consume that recommendation to generate, audit, lint, and refine actual code.
|
|
24
|
+
|
|
25
|
+
## The numbers
|
|
26
|
+
|
|
27
|
+
| Manifest | ux-skill v2 | UI UX Pro Max |
|
|
28
|
+
|---|---:|---:|
|
|
29
|
+
| Design styles | **84** | 67 |
|
|
30
|
+
| Color palettes | **170+** | 161 |
|
|
31
|
+
| Type pairings | **70** | 57 |
|
|
32
|
+
| Components | **148** | 0 |
|
|
33
|
+
| Industry rules | **170+** | 161 |
|
|
34
|
+
| Chart types | **35** | 25 |
|
|
35
|
+
| Tech stacks | **25** | 15 |
|
|
36
|
+
| UX laws | **110+** | 99 |
|
|
37
|
+
| Motion presets | **57** | 0 |
|
|
38
|
+
| Anti-pattern rules | **35** | 0 |
|
|
39
|
+
| Brand specs | **72** | 0 |
|
|
40
|
+
| **Total entries** | **~1,000+** | **~600** |
|
|
41
|
+
|
|
42
|
+
Three categories — components, motion, anti-patterns, brand specs — they don't have at all. That's our moat.
|
|
43
|
+
|
|
44
|
+
## Install — pick your path
|
|
45
|
+
|
|
46
|
+
### Inside Claude Code (canonical)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
/plugin marketplace add Laith0003/ux-skill
|
|
50
|
+
/plugin install ux@ux-skill
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Anywhere else (pip)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install uxskill
|
|
57
|
+
ux init # auto-detects your IDE, installs for it
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### No-Python wrapper (npx)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npx uxskill init # bootstraps Python via pipx automatically
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## The flagship: `/ux-recommend`
|
|
67
|
+
|
|
68
|
+
Inside Claude Code:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
/ux-recommend
|
|
72
|
+
> Project type? landing
|
|
73
|
+
> Industry? fintech-neobank
|
|
74
|
+
> Tone? warm, editorial
|
|
75
|
+
> Must have? dark-mode, a11y-AA
|
|
76
|
+
> Forbidden? brutalism, purple-gradients
|
|
77
|
+
> Stack? nextjs-15-app-router
|
|
78
|
+
> Region? mena
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Outside Claude Code:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
ux recommend \
|
|
85
|
+
--project-type=landing \
|
|
86
|
+
--industry=fintech-neobank \
|
|
87
|
+
--tone=warm --tone=editorial \
|
|
88
|
+
--must-have=dark-mode --must-have=a11y-AA \
|
|
89
|
+
--forbidden=brutalism --forbidden=purple-gradients \
|
|
90
|
+
--stack=nextjs-15-app-router \
|
|
91
|
+
--region=mena
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
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.
|
|
95
|
+
|
|
96
|
+
## Architecture
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
ux-skill/
|
|
100
|
+
├── data/ # Queryable JSON — the brain
|
|
101
|
+
│ ├── styles.json # 84 design styles
|
|
102
|
+
│ ├── palettes.json # 170+ color palettes
|
|
103
|
+
│ ├── type-pairs.json # 70 font pairings
|
|
104
|
+
│ ├── components.json # 148 components
|
|
105
|
+
│ ├── industries.json # 170+ industry rules
|
|
106
|
+
│ ├── chart-types.json # 35 chart types
|
|
107
|
+
│ ├── tech-stacks.json # 25 stacks
|
|
108
|
+
│ ├── ux-guidelines.json # 110+ named laws
|
|
109
|
+
│ ├── motion-presets.json # 57 motion presets
|
|
110
|
+
│ ├── anti-patterns.json # 35 regex rules
|
|
111
|
+
│ └── brands/*.json # 72 brand specs
|
|
112
|
+
│
|
|
113
|
+
├── engine/ # Python — the reasoning
|
|
114
|
+
│ ├── recommender/ # 5-parallel-search engine
|
|
115
|
+
│ ├── linter/ # Anti-slop linter (replaces ux-lint.sh)
|
|
116
|
+
│ ├── discovery/ # 10-field forcing protocol
|
|
117
|
+
│ ├── generator/ # Tokens + manifest emitter
|
|
118
|
+
│ ├── installer/ # 17-IDE multi-installer
|
|
119
|
+
│ └── cli/ # `ux` / `uxskill` entry
|
|
120
|
+
│
|
|
121
|
+
├── commands/ # 18 Claude Code slash commands (.md)
|
|
122
|
+
├── agents/ # 5 sub-agent definitions (.md)
|
|
123
|
+
├── references/ # Prose source for the data + demo pages
|
|
124
|
+
└── bin/uxskill.mjs # npx wrapper → Python engine
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Python thinks. HTML shows. Markdown chains.**
|
|
128
|
+
|
|
129
|
+
## The 18 commands (v1 preserved + v2 flagship)
|
|
130
|
+
|
|
131
|
+
| Command | What it does |
|
|
132
|
+
|---|---|
|
|
133
|
+
| `/ux-recommend` | **v2 flagship**: 5-parallel-search engine → merged system |
|
|
134
|
+
| `/ux-design [brief]` | Generate frontend code from a recommendation |
|
|
135
|
+
| `/ux-audit [path]` | Run linter + LLM design review |
|
|
136
|
+
| `/ux-lint [path]` | Deterministic anti-slop linter (no LLM) |
|
|
137
|
+
| `/ux-system` | Generate a complete design system |
|
|
138
|
+
| `/ux-component [name]` | Generate one component |
|
|
139
|
+
| `/ux-dashboard` | Generate a dashboard surface |
|
|
140
|
+
| `/ux-motion` | Generate motion treatment |
|
|
141
|
+
| `/ux-copy` | Microcopy review + rewrites |
|
|
142
|
+
| `/ux-a11y` | Accessibility audit |
|
|
143
|
+
| `/ux-critique` | Pure design critique |
|
|
144
|
+
| `/ux-polish` | Fix-loop on existing code |
|
|
145
|
+
| `/ux-fix` | Apply linter findings |
|
|
146
|
+
| `/ux-frame` | Frame the problem before solving |
|
|
147
|
+
| `/ux-research` | Synthesize research inputs |
|
|
148
|
+
| `/ux-workshop` | Run a design workshop |
|
|
149
|
+
| `/ux-case-study` | Write a case study |
|
|
150
|
+
| `/ux-expert` | Get expert advice (consulting hook) |
|
|
151
|
+
| `/ux-next` | Suggest the next command |
|
|
152
|
+
|
|
153
|
+
## The 5 sub-agents
|
|
154
|
+
|
|
155
|
+
- `frontend-engineer` — production-grade React/Next/Vue/Blade/Astro
|
|
156
|
+
- `motion-engineer` — Framer Motion / GSAP / CSS with reduced-motion fallbacks
|
|
157
|
+
- `copy-writer` — microcopy in brand voice
|
|
158
|
+
- `research-synthesizer` — digests interviews/analytics/competitors into recommendations
|
|
159
|
+
- `design-system-architect` — tokens, components, foundations
|
|
160
|
+
|
|
161
|
+
## The three moats
|
|
162
|
+
|
|
163
|
+
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.
|
|
164
|
+
|
|
165
|
+
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.
|
|
166
|
+
|
|
167
|
+
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`).
|
|
168
|
+
|
|
169
|
+
## Cross-IDE distribution
|
|
170
|
+
|
|
171
|
+
17 environments supported via `ux init`:
|
|
172
|
+
|
|
173
|
+
| IDE / Tool | Detection | Installed artifact |
|
|
174
|
+
|---|---|---|
|
|
175
|
+
| Claude Code | `.claude/` or `CLAUDE.md` | Plugin manifest at `.claude-plugin/plugin.json` |
|
|
176
|
+
| Cursor | `.cursor/` or `.cursorrules` | `.cursorrules` prompt header |
|
|
177
|
+
| Windsurf | `.windsurf/` or `.windsurfrules` | `.windsurfrules` |
|
|
178
|
+
| GitHub Copilot | `.github/copilot-instructions.md` or `.vscode/` | `.github/copilot-instructions.md` |
|
|
179
|
+
| Gemini CLI | `GEMINI.md` | `GEMINI.md` |
|
|
180
|
+
| Codex | `AGENTS.md` | `AGENTS.md` |
|
|
181
|
+
| Kiro | `.kiro/` | `.kiro/instructions.md` |
|
|
182
|
+
| Cline | `.cline/` | `.cline/instructions.md` |
|
|
183
|
+
| Continue | `.continue/` | `.continue/config.json` |
|
|
184
|
+
| Aider | `.aider.conf.yml` | `.aider.conf.yml` + `AIDER.md` |
|
|
185
|
+
| Zed | `.zed/` | `.zed/instructions.md` |
|
|
186
|
+
| JetBrains AI | `.jetbrains-ai/` or `.idea/` | `.jetbrains-ai/instructions.md` |
|
|
187
|
+
| Pieces | `.pieces/` | `.pieces/instructions.md` |
|
|
188
|
+
| Tabby | `.tabby/` | `.tabby/instructions.md` |
|
|
189
|
+
| Tabnine | `.tabnine/` | `.tabnine/instructions.md` |
|
|
190
|
+
| CodeWhisperer | `.aws-codewhisperer/` | `.aws-codewhisperer/instructions.md` |
|
|
191
|
+
| Roo Cline | `.roo/` | `.roo/instructions.md` |
|
|
192
|
+
|
|
193
|
+
Same Python engine. Same recommendations. Different glue per IDE.
|
|
194
|
+
|
|
195
|
+
## Compatibility with v1
|
|
196
|
+
|
|
197
|
+
v1 install still works for existing users:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
/plugin marketplace add Laith0003/ux-skill
|
|
201
|
+
/plugin install ux@ux-skill
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
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.
|
|
205
|
+
|
|
206
|
+
## Privacy
|
|
207
|
+
|
|
208
|
+
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](PRIVACY.md) / [uxskill.laithjunaidy.com/privacy.html](https://uxskill.laithjunaidy.com/privacy.html).
|
|
209
|
+
|
|
210
|
+
## Contributing
|
|
211
|
+
|
|
212
|
+
See [CONTRIBUTING.md](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.
|
|
213
|
+
|
|
214
|
+
## License
|
|
215
|
+
|
|
216
|
+
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.
|
|
217
|
+
|
|
218
|
+
## Author
|
|
219
|
+
|
|
220
|
+
**Laith Aljunaidy** — solo founder of [Dot](https://thedotwallet.com), a MENA-first loyalty platform. Building ux-skill so the AI-generated frontend doesn't all look the same.
|
|
221
|
+
|
|
222
|
+
- LinkedIn: [linkedin.com/in/laithaljunaidy](https://www.linkedin.com/in/laithaljunaidy/)
|
|
223
|
+
- Email: laith.aljunaidy.laith@gmail.com
|
|
224
|
+
- Repo: [github.com/Laith0003/ux-skill](https://github.com/Laith0003/ux-skill)
|
|
225
|
+
- Site: [uxskill.laithjunaidy.com](https://uxskill.laithjunaidy.com)
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
**v2.0.0-alpha.1** · Built so Claude Code, Cursor, and friends output frontend code that doesn't read as AI-generated.
|