oxycode-skills 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +143 -0
- package/index.js +17 -0
- package/package.json +49 -0
- package/skills/anti-slop/README.md +106 -0
- package/skills/anti-slop/SKILL.md +311 -0
- package/skills/anti-slop/examples/before-after.md +380 -0
- package/skills/anti-slop/references/quality-rubric.md +313 -0
- package/skills/anti-slop/references/slop-patterns.md +433 -0
- package/skills/component-architect/README.md +186 -0
- package/skills/component-architect/SKILL.md +644 -0
- package/skills/component-architect/examples/component-patterns.md +569 -0
- package/skills/component-architect/references/atomic-design.md +516 -0
- package/skills/design-audit/README.md +114 -0
- package/skills/design-audit/SKILL.md +305 -0
- package/skills/design-audit/examples/audit-report.md +424 -0
- package/skills/design-audit/references/scoring-rubric.md +498 -0
- package/skills/design-md/README.md +106 -0
- package/skills/design-md/SKILL.md +262 -0
- package/skills/design-md/examples/bad-design.md +195 -0
- package/skills/design-md/examples/good-design.md +250 -0
- package/skills/design-md/references/design-md-spec.md +267 -0
- package/skills/design-md/scripts/validate.sh +134 -0
- package/skills/ui-builder/README.md +169 -0
- package/skills/ui-builder/SKILL.md +357 -0
- package/skills/ui-builder/examples/dashboard.md +323 -0
- package/skills/ui-builder/examples/landing-page.md +396 -0
- package/skills/ui-builder/references/component-patterns.md +396 -0
- package/skills/ui-builder/references/layout-system.md +423 -0
- package/skills/ui-builder/references/polish-checklist.md +221 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
# Before & After: AI Slop vs Vercel-Quality
|
|
2
|
+
|
|
3
|
+
## Example 1: Hero Section
|
|
4
|
+
|
|
5
|
+
### ❌ Before (AI Slop)
|
|
6
|
+
```tsx
|
|
7
|
+
<div className="min-h-screen bg-gradient-to-br from-purple-900 via-blue-900 to-indigo-900 flex items-center justify-center p-8">
|
|
8
|
+
<div className="bg-white/10 backdrop-blur-lg rounded-3xl p-8 text-center max-w-md border border-white/20">
|
|
9
|
+
<div className="w-20 h-20 bg-gradient-to-br from-purple-500 to-blue-500 rounded-full flex items-center justify-center mx-auto mb-6">
|
|
10
|
+
<Star className="w-10 h-10 text-white" />
|
|
11
|
+
</div>
|
|
12
|
+
<h1 className="text-4xl font-bold text-white mb-4 tracking-tight">
|
|
13
|
+
Welcome to the Future
|
|
14
|
+
</h1>
|
|
15
|
+
<p className="text-purple-200 mb-8 leading-relaxed">
|
|
16
|
+
Experience the next generation of innovation
|
|
17
|
+
</p>
|
|
18
|
+
<button className="bg-gradient-to-r from-purple-500 to-blue-500 text-white px-8 py-4 rounded-full text-lg font-semibold hover:scale-110 transition-transform duration-500 shadow-xl hover:shadow-2xl">
|
|
19
|
+
Get Started Free
|
|
20
|
+
</button>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Issues:**
|
|
26
|
+
- ❌ Purple/blue gradient background
|
|
27
|
+
- ❌ Backdrop blur glassmorphism
|
|
28
|
+
- ❌ Centered everything
|
|
29
|
+
- ❌ Rainbow gradient button
|
|
30
|
+
- ❌ Hover scale animation
|
|
31
|
+
- ❌ Oversized border radius (3xl, full)
|
|
32
|
+
- ❌ Generic "Welcome to the Future"
|
|
33
|
+
|
|
34
|
+
### ✅ After (Vercel-Quality)
|
|
35
|
+
```tsx
|
|
36
|
+
<div className="min-h-screen bg-zinc-950 flex items-center justify-center px-6">
|
|
37
|
+
<div className="max-w-2xl">
|
|
38
|
+
<div className="inline-flex items-center gap-2 px-3 py-1 bg-zinc-900 border border-zinc-800 rounded-full text-sm text-zinc-400 mb-6">
|
|
39
|
+
<span className="w-2 h-2 bg-green-500 rounded-full animate-pulse" />
|
|
40
|
+
Now in public beta
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<h1 className="text-4xl sm:text-5xl font-semibold text-zinc-100 tracking-tight">
|
|
44
|
+
Build faster with modern tools
|
|
45
|
+
</h1>
|
|
46
|
+
|
|
47
|
+
<p className="mt-6 text-lg text-zinc-400 max-w-xl">
|
|
48
|
+
The all-in-one platform that helps teams ship products faster.
|
|
49
|
+
Automate your workflow and focus on what matters.
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
<div className="mt-10 flex flex-col sm:flex-row items-start gap-4">
|
|
53
|
+
<button className="px-6 py-3 text-sm font-medium text-zinc-900 bg-zinc-100 rounded-lg hover:bg-white transition-colors">
|
|
54
|
+
Start for free
|
|
55
|
+
</button>
|
|
56
|
+
<button className="px-6 py-3 text-sm font-medium text-zinc-400 hover:text-zinc-100 transition-colors">
|
|
57
|
+
Learn more →
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<p className="mt-4 text-sm text-zinc-500">
|
|
62
|
+
No credit card required • 14-day free trial
|
|
63
|
+
</p>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Improvements:**
|
|
69
|
+
- ✅ Solid zinc background
|
|
70
|
+
- ✅ No glassmorphism
|
|
71
|
+
- ✅ Left-aligned text
|
|
72
|
+
- ✅ Solid color button
|
|
73
|
+
- ✅ Subtle hover effect
|
|
74
|
+
- ✅ Appropriate border radius
|
|
75
|
+
- ✅ Realistic content
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Example 2: Card Component
|
|
80
|
+
|
|
81
|
+
### ❌ Before (AI Slop)
|
|
82
|
+
```tsx
|
|
83
|
+
<div className="bg-gradient-to-br from-white to-gray-50 p-8 rounded-3xl shadow-2xl hover:shadow-3xl hover:scale-105 transition-all duration-500 border border-gray-100">
|
|
84
|
+
<div className="w-16 h-16 bg-gradient-to-br from-purple-500 to-blue-500 rounded-2xl flex items-center justify-center mb-6">
|
|
85
|
+
<Zap className="w-8 h-8 text-white" />
|
|
86
|
+
</div>
|
|
87
|
+
<h3 className="text-2xl font-bold text-gray-900 mb-3 text-center">
|
|
88
|
+
Lightning Fast
|
|
89
|
+
</h3>
|
|
90
|
+
<p className="text-gray-500 text-center leading-relaxed mb-6">
|
|
91
|
+
Built for speed with modern technologies
|
|
92
|
+
</p>
|
|
93
|
+
<button className="w-full bg-gradient-to-r from-purple-500 to-blue-500 text-white py-3 rounded-xl font-medium hover:from-purple-600 hover:to-blue-600 transition-all">
|
|
94
|
+
Learn More
|
|
95
|
+
</button>
|
|
96
|
+
</div>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Issues:**
|
|
100
|
+
- ❌ Gradient background
|
|
101
|
+
- ❌ Shadow overload (2xl, 3xl)
|
|
102
|
+
- ❌ Hover scale + shadow
|
|
103
|
+
- ❌ Gradient icon background
|
|
104
|
+
- ❌ Gradient button
|
|
105
|
+
- ❌ Centered text
|
|
106
|
+
- ❌ Oversized radius (3xl, 2xl, xl)
|
|
107
|
+
|
|
108
|
+
### ✅ After (Vercel-Quality)
|
|
109
|
+
```tsx
|
|
110
|
+
<div className="bg-white border border-zinc-200 rounded-lg p-6">
|
|
111
|
+
<div className="w-10 h-10 bg-zinc-900 rounded-lg flex items-center justify-center">
|
|
112
|
+
<Zap className="w-5 h-5 text-white" />
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<h3 className="mt-4 text-lg font-semibold text-zinc-900">
|
|
116
|
+
Lightning Fast
|
|
117
|
+
</h3>
|
|
118
|
+
|
|
119
|
+
<p className="mt-2 text-sm text-zinc-500">
|
|
120
|
+
Built for speed with modern technologies
|
|
121
|
+
</p>
|
|
122
|
+
|
|
123
|
+
<button className="mt-4 w-full px-4 py-2 text-sm font-medium text-white bg-zinc-900 rounded-lg hover:bg-zinc-800 transition-colors">
|
|
124
|
+
Learn More
|
|
125
|
+
</button>
|
|
126
|
+
</div>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Improvements:**
|
|
130
|
+
- ✅ Solid background
|
|
131
|
+
- ✅ Border instead of shadow
|
|
132
|
+
- ✅ No hover transform
|
|
133
|
+
- ✅ Solid icon background
|
|
134
|
+
- ✅ Solid button
|
|
135
|
+
- ✅ Left-aligned text
|
|
136
|
+
- ✅ Appropriate radius (lg)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Example 3: Navigation
|
|
141
|
+
|
|
142
|
+
### ❌ Before (AI Slop)
|
|
143
|
+
```tsx
|
|
144
|
+
<nav className="bg-white/80 backdrop-blur-xl border-b border-gray-100 sticky top-0 z-50">
|
|
145
|
+
<div className="max-w-7xl mx-auto px-8 py-4 flex items-center justify-between">
|
|
146
|
+
<div className="flex items-center gap-3">
|
|
147
|
+
<div className="w-10 h-10 bg-gradient-to-br from-purple-500 to-blue-500 rounded-xl flex items-center justify-center">
|
|
148
|
+
<span className="text-white font-bold">A</span>
|
|
149
|
+
</div>
|
|
150
|
+
<span className="text-2xl font-bold bg-gradient-to-r from-purple-600 to-blue-600 bg-clip-text text-transparent">
|
|
151
|
+
AppName
|
|
152
|
+
</span>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
<div className="hidden md:flex items-center gap-8">
|
|
156
|
+
<a href="#" className="text-gray-600 hover:text-purple-600 transition-colors font-medium">
|
|
157
|
+
Features
|
|
158
|
+
</a>
|
|
159
|
+
<a href="#" className="text-gray-600 hover:text-purple-600 transition-colors font-medium">
|
|
160
|
+
Pricing
|
|
161
|
+
</a>
|
|
162
|
+
<a href="#" className="text-gray-600 hover:text-purple-600 transition-colors font-medium">
|
|
163
|
+
About
|
|
164
|
+
</a>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<button className="bg-gradient-to-r from-purple-500 to-blue-500 text-white px-6 py-2 rounded-full font-medium hover:scale-105 transition-transform">
|
|
168
|
+
Sign Up
|
|
169
|
+
</button>
|
|
170
|
+
</div>
|
|
171
|
+
</nav>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Issues:**
|
|
175
|
+
- ❌ Backdrop blur
|
|
176
|
+
- ❌ Gradient logo
|
|
177
|
+
- ❌ Gradient text
|
|
178
|
+
- ❌ Gradient button
|
|
179
|
+
- ❌ Hover scale
|
|
180
|
+
- ❌ Purple hover colors
|
|
181
|
+
- ❌ Oversized radius (xl, full)
|
|
182
|
+
|
|
183
|
+
### ✅ After (Vercel-Quality)
|
|
184
|
+
```tsx
|
|
185
|
+
<nav className="sticky top-0 z-50 border-b border-zinc-200 bg-white">
|
|
186
|
+
<div className="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
|
|
187
|
+
<div className="flex items-center gap-2">
|
|
188
|
+
<div className="w-8 h-8 bg-zinc-900 rounded-lg flex items-center justify-center">
|
|
189
|
+
<span className="text-white text-sm font-bold">A</span>
|
|
190
|
+
</div>
|
|
191
|
+
<span className="text-xl font-bold text-zinc-900">AppName</span>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<div className="hidden md:flex items-center gap-8">
|
|
195
|
+
<a href="#" className="text-sm text-zinc-600 hover:text-zinc-900 transition-colors">
|
|
196
|
+
Features
|
|
197
|
+
</a>
|
|
198
|
+
<a href="#" className="text-sm text-zinc-600 hover:text-zinc-900 transition-colors">
|
|
199
|
+
Pricing
|
|
200
|
+
</a>
|
|
201
|
+
<a href="#" className="text-sm text-zinc-600 hover:text-zinc-900 transition-colors">
|
|
202
|
+
About
|
|
203
|
+
</a>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<button className="px-4 py-2 text-sm font-medium text-white bg-zinc-900 rounded-lg hover:bg-zinc-800 transition-colors">
|
|
207
|
+
Sign Up
|
|
208
|
+
</button>
|
|
209
|
+
</div>
|
|
210
|
+
</nav>
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Improvements:**
|
|
214
|
+
- ✅ No backdrop blur
|
|
215
|
+
- ✅ Solid logo
|
|
216
|
+
- ✅ Regular text
|
|
217
|
+
- ✅ Solid button
|
|
218
|
+
- ✅ Subtle hover
|
|
219
|
+
- ✅ Zinc hover colors
|
|
220
|
+
- ✅ Appropriate radius (lg)
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Example 4: Pricing Card
|
|
225
|
+
|
|
226
|
+
### ❌ Before (AI Slop)
|
|
227
|
+
```tsx
|
|
228
|
+
<div className="bg-gradient-to-br from-purple-600 to-blue-600 p-8 rounded-3xl text-white relative overflow-hidden">
|
|
229
|
+
<div className="absolute top-0 right-0 w-32 h-32 bg-white/10 rounded-full -mr-16 -mt-16" />
|
|
230
|
+
<div className="absolute bottom-0 left-0 w-24 h-24 bg-white/10 rounded-full -ml-12 -mb-12" />
|
|
231
|
+
|
|
232
|
+
<span className="inline-block px-4 py-1 bg-white/20 rounded-full text-sm font-medium mb-4">
|
|
233
|
+
Most Popular
|
|
234
|
+
</span>
|
|
235
|
+
|
|
236
|
+
<h3 className="text-2xl font-bold mb-2">Pro Plan</h3>
|
|
237
|
+
<p className="text-purple-100 mb-6">Perfect for growing teams</p>
|
|
238
|
+
|
|
239
|
+
<div className="mb-6">
|
|
240
|
+
<span className="text-5xl font-bold">$29</span>
|
|
241
|
+
<span className="text-purple-200">/month</span>
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
<ul className="space-y-3 mb-8">
|
|
245
|
+
<li className="flex items-center gap-3">
|
|
246
|
+
<Check className="w-5 h-5 text-green-300" />
|
|
247
|
+
<span>10,000 API calls</span>
|
|
248
|
+
</li>
|
|
249
|
+
<li className="flex items-center gap-3">
|
|
250
|
+
<Check className="w-5 h-5 text-green-300" />
|
|
251
|
+
<span>Advanced analytics</span>
|
|
252
|
+
</li>
|
|
253
|
+
</ul>
|
|
254
|
+
|
|
255
|
+
<button className="w-full bg-white text-purple-600 py-3 rounded-xl font-semibold hover:scale-105 transition-transform">
|
|
256
|
+
Get Started
|
|
257
|
+
</button>
|
|
258
|
+
</div>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Issues:**
|
|
262
|
+
- ❌ Gradient background
|
|
263
|
+
- ❌ Decorative circles (fake depth)
|
|
264
|
+
- ❌ Gradient text
|
|
265
|
+
- ❌ Hover scale
|
|
266
|
+
- ❌ Oversized radius (3xl, xl)
|
|
267
|
+
- ❌ Too many visual effects
|
|
268
|
+
|
|
269
|
+
### ✅ After (Vercel-Quality)
|
|
270
|
+
```tsx
|
|
271
|
+
<div className="bg-zinc-900 p-8 rounded-xl text-white relative">
|
|
272
|
+
<div className="absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 bg-zinc-900 text-white text-xs font-medium rounded-full border border-zinc-700">
|
|
273
|
+
Most popular
|
|
274
|
+
</div>
|
|
275
|
+
|
|
276
|
+
<h3 className="text-lg font-semibold">Pro Plan</h3>
|
|
277
|
+
<p className="mt-2 text-sm text-zinc-400">For growing teams</p>
|
|
278
|
+
|
|
279
|
+
<div className="mt-6">
|
|
280
|
+
<span className="text-4xl font-bold">$29</span>
|
|
281
|
+
<span className="text-zinc-400">/month</span>
|
|
282
|
+
</div>
|
|
283
|
+
|
|
284
|
+
<ul className="mt-8 space-y-4">
|
|
285
|
+
<li className="flex items-center gap-3 text-sm text-zinc-300">
|
|
286
|
+
<Check className="w-5 h-5 text-green-400" />
|
|
287
|
+
10,000 API calls
|
|
288
|
+
</li>
|
|
289
|
+
<li className="flex items-center gap-3 text-sm text-zinc-300">
|
|
290
|
+
<Check className="w-5 h-5 text-green-400" />
|
|
291
|
+
Advanced analytics
|
|
292
|
+
</li>
|
|
293
|
+
</ul>
|
|
294
|
+
|
|
295
|
+
<button className="mt-8 w-full py-2 text-sm font-medium text-zinc-900 bg-white rounded-lg hover:bg-zinc-100 transition-colors">
|
|
296
|
+
Get started
|
|
297
|
+
</button>
|
|
298
|
+
</div>
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**Improvements:**
|
|
302
|
+
- ✅ Solid background
|
|
303
|
+
- ✅ No decorative elements
|
|
304
|
+
- ✅ Regular text
|
|
305
|
+
- ✅ Subtle hover
|
|
306
|
+
- ✅ Appropriate radius (xl, lg)
|
|
307
|
+
- ✅ Clean, minimal design
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Example 5: Stats Card
|
|
312
|
+
|
|
313
|
+
### ❌ Before (AI Slop)
|
|
314
|
+
```tsx
|
|
315
|
+
<div className="bg-gradient-to-br from-white to-gray-50 p-6 rounded-2xl shadow-xl border border-gray-100">
|
|
316
|
+
<div className="flex items-center justify-between mb-4">
|
|
317
|
+
<div className="w-12 h-12 bg-gradient-to-br from-green-400 to-emerald-500 rounded-xl flex items-center justify-center">
|
|
318
|
+
<TrendingUp className="w-6 h-6 text-white" />
|
|
319
|
+
</div>
|
|
320
|
+
<span className="text-green-500 font-semibold text-sm bg-green-50 px-3 py-1 rounded-full">
|
|
321
|
+
+12%
|
|
322
|
+
</span>
|
|
323
|
+
</div>
|
|
324
|
+
<h4 className="text-gray-500 text-sm font-medium mb-1">Total Revenue</h4>
|
|
325
|
+
<p className="text-3xl font-bold text-gray-900">$45,678</p>
|
|
326
|
+
</div>
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Issues:**
|
|
330
|
+
- ❌ Gradient background
|
|
331
|
+
- ❌ Shadow overload
|
|
332
|
+
- ❌ Gradient icon
|
|
333
|
+
- ❌ Oversized radius (2xl, xl)
|
|
334
|
+
- ❌ Centered layout
|
|
335
|
+
|
|
336
|
+
### ✅ After (Vercel-Quality)
|
|
337
|
+
```tsx
|
|
338
|
+
<div className="bg-white border border-zinc-200 rounded-lg p-6">
|
|
339
|
+
<div className="flex items-center justify-between">
|
|
340
|
+
<p className="text-sm font-medium text-zinc-500">Total Revenue</p>
|
|
341
|
+
<span className="text-xs font-medium text-green-700 bg-green-100 px-2 py-1 rounded-full">
|
|
342
|
+
+12%
|
|
343
|
+
</span>
|
|
344
|
+
</div>
|
|
345
|
+
<p className="mt-2 text-3xl font-bold text-zinc-900">$45,678</p>
|
|
346
|
+
</div>
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Improvements:**
|
|
350
|
+
- ✅ Solid background
|
|
351
|
+
- ✅ Border instead of shadow
|
|
352
|
+
- ✅ No gradient icon
|
|
353
|
+
- ✅ Appropriate radius (lg)
|
|
354
|
+
- ✅ Left-aligned content
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Summary
|
|
359
|
+
|
|
360
|
+
### Key Differences
|
|
361
|
+
|
|
362
|
+
| Aspect | AI Slop | Vercel-Quality |
|
|
363
|
+
|--------|---------|----------------|
|
|
364
|
+
| Background | Gradients | Solid colors |
|
|
365
|
+
| Shadows | Heavy (xl, 2xl) | None or subtle |
|
|
366
|
+
| Radius | 3xl, 2xl | lg, xl |
|
|
367
|
+
| Hover | scale, heavy transition | colors, subtle |
|
|
368
|
+
| Colors | Purple, blue, rainbow | Zinc, semantic |
|
|
369
|
+
| Text | Centered | Left-aligned |
|
|
370
|
+
| Content | Generic | Realistic |
|
|
371
|
+
|
|
372
|
+
### Rules to Remember
|
|
373
|
+
|
|
374
|
+
1. **No gradients** — Use solid colors
|
|
375
|
+
2. **No heavy shadows** — Use borders
|
|
376
|
+
3. **No oversized radius** — Use lg or xl
|
|
377
|
+
4. **No hover transforms** — Use color changes
|
|
378
|
+
5. **No rainbow colors** — Use zinc palette
|
|
379
|
+
6. **No centered everything** — Use left alignment
|
|
380
|
+
7. **No generic content** — Use realistic data
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
# Quality Rubric
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This rubric defines the criteria for evaluating UI code quality. Use this to score UI components and identify areas for improvement.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Scoring Dimensions
|
|
10
|
+
|
|
11
|
+
### 1. Visual Design (25 points)
|
|
12
|
+
|
|
13
|
+
| Criteria | Points | Description |
|
|
14
|
+
|----------|--------|-------------|
|
|
15
|
+
| Color System | 5 | Uses design tokens, proper hierarchy, no random colors |
|
|
16
|
+
| Typography | 5 | Consistent scale, proper weights, readable |
|
|
17
|
+
| Spacing | 5 | Consistent scale, proper padding/margins |
|
|
18
|
+
| Layout | 5 | Grid/flex used correctly, responsive |
|
|
19
|
+
| Visual Hierarchy | 5 | Clear focal points, proper size/weight contrast |
|
|
20
|
+
|
|
21
|
+
### 2. Code Quality (25 points)
|
|
22
|
+
|
|
23
|
+
| Criteria | Points | Description |
|
|
24
|
+
|----------|--------|-------------|
|
|
25
|
+
| TypeScript | 5 | Proper types, no `any` |
|
|
26
|
+
| Component Structure | 5 | Single responsibility, reusable |
|
|
27
|
+
| Naming | 5 | Clear, descriptive names |
|
|
28
|
+
| Imports | 5 | Organized, no unused imports |
|
|
29
|
+
| Comments | 5 | Useful comments where needed |
|
|
30
|
+
|
|
31
|
+
### 3. Accessibility (25 points)
|
|
32
|
+
|
|
33
|
+
| Criteria | Points | Description |
|
|
34
|
+
|----------|--------|-------------|
|
|
35
|
+
| Semantic HTML | 5 | Proper elements (nav, section, article) |
|
|
36
|
+
| ARIA Attributes | 5 | Labels, roles, states |
|
|
37
|
+
| Keyboard Navigation | 5 | Focusable, logical tab order |
|
|
38
|
+
| Color Contrast | 5 | 4.5:1 for text, 3:1 for UI |
|
|
39
|
+
| Screen Reader | 5 | Readable by assistive technology |
|
|
40
|
+
|
|
41
|
+
### 4. Performance (25 points)
|
|
42
|
+
|
|
43
|
+
| Criteria | Points | Description |
|
|
44
|
+
|----------|--------|-------------|
|
|
45
|
+
| Bundle Size | 5 | No unnecessary imports |
|
|
46
|
+
| Rendering | 5 | No layout shifts |
|
|
47
|
+
| Images | 5 | Optimized, lazy loaded |
|
|
48
|
+
| Code Splitting | 5 | Dynamic imports where needed |
|
|
49
|
+
| Caching | 5 | Proper cache headers |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Scoring Guide
|
|
54
|
+
|
|
55
|
+
### 90-100: Excellent (Vercel-Quality)
|
|
56
|
+
- Production-ready code
|
|
57
|
+
- No AI slop patterns
|
|
58
|
+
- Excellent accessibility
|
|
59
|
+
- Optimized performance
|
|
60
|
+
- Clean, maintainable code
|
|
61
|
+
|
|
62
|
+
### 70-89: Good
|
|
63
|
+
- Minor improvements needed
|
|
64
|
+
- Mostly follows best practices
|
|
65
|
+
- Good accessibility
|
|
66
|
+
- Acceptable performance
|
|
67
|
+
|
|
68
|
+
### 50-69: Average
|
|
69
|
+
- Several issues to fix
|
|
70
|
+
- Some AI slop patterns
|
|
71
|
+
- Accessibility issues
|
|
72
|
+
- Performance concerns
|
|
73
|
+
|
|
74
|
+
### 30-49: Poor
|
|
75
|
+
- Many issues to fix
|
|
76
|
+
- Significant AI slop
|
|
77
|
+
- Poor accessibility
|
|
78
|
+
- Performance problems
|
|
79
|
+
|
|
80
|
+
### 0-29: Terrible
|
|
81
|
+
- Complete rewrite needed
|
|
82
|
+
- Pure AI slop
|
|
83
|
+
- No accessibility
|
|
84
|
+
- Major performance issues
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Detailed Criteria
|
|
89
|
+
|
|
90
|
+
### Visual Design
|
|
91
|
+
|
|
92
|
+
#### Color System (5 points)
|
|
93
|
+
- **5**: Uses design tokens, proper hierarchy, semantic colors only
|
|
94
|
+
- **4**: Mostly uses tokens, minor inconsistencies
|
|
95
|
+
- **3**: Some hardcoded values, inconsistent hierarchy
|
|
96
|
+
- **2**: Many hardcoded values, random colors
|
|
97
|
+
- **1**: Pure AI slop (purple gradients, rainbow colors)
|
|
98
|
+
|
|
99
|
+
#### Typography (5 points)
|
|
100
|
+
- **5**: Consistent scale, proper weights, readable line heights
|
|
101
|
+
- **4**: Mostly consistent, minor issues
|
|
102
|
+
- **3**: Inconsistent sizes/weights
|
|
103
|
+
- **2**: Poor readability
|
|
104
|
+
- **1**: Random sizes, no hierarchy
|
|
105
|
+
|
|
106
|
+
#### Spacing (5 points)
|
|
107
|
+
- **5**: Consistent scale (4, 8, 16, 24, 32)
|
|
108
|
+
- **4**: Mostly consistent
|
|
109
|
+
- **3**: Some inconsistent spacing
|
|
110
|
+
- **2**: Random spacing values
|
|
111
|
+
- **1**: No spacing system
|
|
112
|
+
|
|
113
|
+
#### Layout (5 points)
|
|
114
|
+
- **5**: Proper grid/flex, responsive, clean
|
|
115
|
+
- **4**: Mostly correct, minor issues
|
|
116
|
+
- **3**: Some layout problems
|
|
117
|
+
- **2**: Broken on mobile
|
|
118
|
+
- **1**: Complete layout chaos
|
|
119
|
+
|
|
120
|
+
#### Visual Hierarchy (5 points)
|
|
121
|
+
- **5**: Clear focal points, proper contrast
|
|
122
|
+
- **4**: Good hierarchy, minor issues
|
|
123
|
+
- **3**: Some confusion in hierarchy
|
|
124
|
+
- **2**: Poor hierarchy
|
|
125
|
+
- **1**: No visual hierarchy
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### Code Quality
|
|
130
|
+
|
|
131
|
+
#### TypeScript (5 points)
|
|
132
|
+
- **5**: Proper types, no `any`, interfaces defined
|
|
133
|
+
- **4**: Mostly typed, minor issues
|
|
134
|
+
- **3**: Some `any` types
|
|
135
|
+
- **2**: Many untyped values
|
|
136
|
+
- **1**: No TypeScript usage
|
|
137
|
+
|
|
138
|
+
#### Component Structure (5 points)
|
|
139
|
+
- **5**: Single responsibility, reusable, composable
|
|
140
|
+
- **4**: Mostly well-structured
|
|
141
|
+
- **3**: Some monolithic components
|
|
142
|
+
- **2**: Poor structure
|
|
143
|
+
- **1**: One giant component
|
|
144
|
+
|
|
145
|
+
#### Naming (5 points)
|
|
146
|
+
- **5**: Clear, descriptive, follows conventions
|
|
147
|
+
- **4**: Mostly clear
|
|
148
|
+
- **3**: Some unclear names
|
|
149
|
+
- **2**: Poor naming
|
|
150
|
+
- **1**: Cryptic names
|
|
151
|
+
|
|
152
|
+
#### Imports (5 points)
|
|
153
|
+
- **5**: Organized, no unused, proper aliases
|
|
154
|
+
- **4**: Mostly organized
|
|
155
|
+
- **3**: Some messiness
|
|
156
|
+
- **2**: Many unused imports
|
|
157
|
+
- **1**: Complete chaos
|
|
158
|
+
|
|
159
|
+
#### Comments (5 points)
|
|
160
|
+
- **5**: Useful comments where needed
|
|
161
|
+
- **4**: Mostly helpful
|
|
162
|
+
- **3**: Some unnecessary comments
|
|
163
|
+
- **2**: Missing important comments
|
|
164
|
+
- **1**: No comments or spam comments
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### Accessibility
|
|
169
|
+
|
|
170
|
+
#### Semantic HTML (5 points)
|
|
171
|
+
- **5**: Proper elements (nav, section, article, main)
|
|
172
|
+
- **4**: Mostly semantic
|
|
173
|
+
- **3**: Some divs where elements needed
|
|
174
|
+
- **2**: Many accessibility issues
|
|
175
|
+
- **1**: All divs, no semantics
|
|
176
|
+
|
|
177
|
+
#### ARIA Attributes (5 points)
|
|
178
|
+
- **5**: Proper labels, roles, states
|
|
179
|
+
- **4**: Mostly complete
|
|
180
|
+
- **3**: Some missing attributes
|
|
181
|
+
- **2**: Many missing attributes
|
|
182
|
+
- **1**: No ARIA usage
|
|
183
|
+
|
|
184
|
+
#### Keyboard Navigation (5 points)
|
|
185
|
+
- **5**: All interactive elements focusable, logical order
|
|
186
|
+
- **4**: Mostly keyboard accessible
|
|
187
|
+
- **3**: Some issues
|
|
188
|
+
- **2**: Many keyboard traps
|
|
189
|
+
- **1**: Not keyboard accessible
|
|
190
|
+
|
|
191
|
+
#### Color Contrast (5 points)
|
|
192
|
+
- **5**: All text 4.5:1, UI 3:1
|
|
193
|
+
- **4**: Mostly compliant
|
|
194
|
+
- **3**: Some contrast issues
|
|
195
|
+
- **2**: Many contrast issues
|
|
196
|
+
- **1**: Poor contrast
|
|
197
|
+
|
|
198
|
+
#### Screen Reader (5 points)
|
|
199
|
+
- **5**: Readable by assistive technology
|
|
200
|
+
- **4**: Mostly readable
|
|
201
|
+
- **3**: Some issues
|
|
202
|
+
- **2**: Many issues
|
|
203
|
+
- **1**: Not screen reader accessible
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### Performance
|
|
208
|
+
|
|
209
|
+
#### Bundle Size (5 points)
|
|
210
|
+
- **5**: No unnecessary imports, tree shaking
|
|
211
|
+
- **4**: Mostly optimized
|
|
212
|
+
- **3**: Some large imports
|
|
213
|
+
- **2**: Many unnecessary imports
|
|
214
|
+
- **1**: Huge bundle
|
|
215
|
+
|
|
216
|
+
#### Rendering (5 points)
|
|
217
|
+
- **5**: No layout shifts, proper loading
|
|
218
|
+
- **4**: Mostly stable
|
|
219
|
+
- **3**: Some layout shifts
|
|
220
|
+
- **2**: Many layout shifts
|
|
221
|
+
- **1**: Constant layout shifts
|
|
222
|
+
|
|
223
|
+
#### Images (5 points)
|
|
224
|
+
- **5**: Optimized, lazy loaded, responsive
|
|
225
|
+
- **4**: Mostly optimized
|
|
226
|
+
- **3**: Some issues
|
|
227
|
+
- **2**: Many issues
|
|
228
|
+
- **1**: Unoptimized images
|
|
229
|
+
|
|
230
|
+
#### Code Splitting (5 points)
|
|
231
|
+
- **5**: Dynamic imports where needed
|
|
232
|
+
- **4**: Mostly split
|
|
233
|
+
- **3**: Some large chunks
|
|
234
|
+
- **2**: No code splitting
|
|
235
|
+
- **1**: One giant bundle
|
|
236
|
+
|
|
237
|
+
#### Caching (5 points)
|
|
238
|
+
- **5**: Proper cache headers
|
|
239
|
+
- **4**: Mostly cached
|
|
240
|
+
- **3**: Some caching issues
|
|
241
|
+
- **2**: No caching
|
|
242
|
+
- **1**: Cache busting issues
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Usage
|
|
247
|
+
|
|
248
|
+
### Step 1: Score Each Dimension
|
|
249
|
+
Rate the UI code on each of the 4 dimensions (Visual Design, Code Quality, Accessibility, Performance).
|
|
250
|
+
|
|
251
|
+
### Step 2: Calculate Total
|
|
252
|
+
Add up all scores to get a total out of 100.
|
|
253
|
+
|
|
254
|
+
### Step 3: Identify Issues
|
|
255
|
+
Note specific issues in each dimension.
|
|
256
|
+
|
|
257
|
+
### Step 4: Prioritize Fixes
|
|
258
|
+
Fix high-impact issues first:
|
|
259
|
+
1. Accessibility issues (legal risk)
|
|
260
|
+
2. Visual design issues (user experience)
|
|
261
|
+
3. Code quality issues (maintainability)
|
|
262
|
+
4. Performance issues (user experience)
|
|
263
|
+
|
|
264
|
+
### Step 5: Re-score
|
|
265
|
+
After fixes, re-score to verify improvement.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Example Scoring
|
|
270
|
+
|
|
271
|
+
### Component: Stats Card
|
|
272
|
+
|
|
273
|
+
**Visual Design: 22/25**
|
|
274
|
+
- Color System: 5/5 (uses design tokens)
|
|
275
|
+
- Typography: 4/5 (slight inconsistency)
|
|
276
|
+
- Spacing: 5/5 (consistent scale)
|
|
277
|
+
- Layout: 4/5 (minor responsive issue)
|
|
278
|
+
- Visual Hierarchy: 4/5 (good but could be better)
|
|
279
|
+
|
|
280
|
+
**Code Quality: 23/25**
|
|
281
|
+
- TypeScript: 5/5 (proper types)
|
|
282
|
+
- Component Structure: 5/5 (single responsibility)
|
|
283
|
+
- Naming: 4/5 (mostly clear)
|
|
284
|
+
- Imports: 5/5 (organized)
|
|
285
|
+
- Comments: 4/5 (useful but sparse)
|
|
286
|
+
|
|
287
|
+
**Accessibility: 20/25**
|
|
288
|
+
- Semantic HTML: 4/5 (mostly semantic)
|
|
289
|
+
- ARIA Attributes: 4/5 (some missing)
|
|
290
|
+
- Keyboard Navigation: 4/5 (mostly accessible)
|
|
291
|
+
- Color Contrast: 4/5 (mostly compliant)
|
|
292
|
+
- Screen Reader: 4/5 (mostly readable)
|
|
293
|
+
|
|
294
|
+
**Performance: 22/25**
|
|
295
|
+
- Bundle Size: 5/5 (optimized)
|
|
296
|
+
- Rendering: 4/5 (minor issues)
|
|
297
|
+
- Images: 5/5 (optimized)
|
|
298
|
+
- Code Splitting: 4/5 (mostly split)
|
|
299
|
+
- Caching: 4/5 (mostly cached)
|
|
300
|
+
|
|
301
|
+
**Total: 87/100 (Good)**
|
|
302
|
+
|
|
303
|
+
**Issues to Fix:**
|
|
304
|
+
1. Typography inconsistency
|
|
305
|
+
2. Minor responsive issue
|
|
306
|
+
3. Missing ARIA attributes
|
|
307
|
+
4. Screen reader improvements
|
|
308
|
+
|
|
309
|
+
**Priority:**
|
|
310
|
+
1. Fix ARIA attributes (accessibility)
|
|
311
|
+
2. Fix responsive issue (visual)
|
|
312
|
+
3. Fix typography (visual)
|
|
313
|
+
4. Improve screen reader (accessibility)
|