mcp-probe-kit 3.0.15 → 3.0.16

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.
Files changed (39) hide show
  1. package/README.md +17 -11
  2. package/build/lib/skill-bridge.d.ts +31 -0
  3. package/build/lib/skill-bridge.js +100 -0
  4. package/build/resources/ui-ux-data/charts.json +302 -0
  5. package/build/resources/ui-ux-data/colors.json +1058 -0
  6. package/build/resources/ui-ux-data/icons.json +1102 -0
  7. package/build/resources/ui-ux-data/landing.json +262 -0
  8. package/build/resources/ui-ux-data/metadata.json +6 -0
  9. package/build/resources/ui-ux-data/products.json +1058 -0
  10. package/build/resources/ui-ux-data/react-performance.json +574 -0
  11. package/build/resources/ui-ux-data/stacks/astro.json +266 -0
  12. package/build/resources/ui-ux-data/stacks/flutter.json +626 -0
  13. package/build/resources/ui-ux-data/stacks/html-tailwind.json +662 -0
  14. package/build/resources/ui-ux-data/stacks/jetpack-compose.json +626 -0
  15. package/build/resources/ui-ux-data/stacks/nextjs.json +218 -0
  16. package/build/resources/ui-ux-data/stacks/nuxt-ui.json +14 -0
  17. package/build/resources/ui-ux-data/stacks/nuxtjs.json +182 -0
  18. package/build/resources/ui-ux-data/stacks/react-native.json +350 -0
  19. package/build/resources/ui-ux-data/stacks/react.json +530 -0
  20. package/build/resources/ui-ux-data/stacks/shadcn.json +566 -0
  21. package/build/resources/ui-ux-data/stacks/svelte.json +134 -0
  22. package/build/resources/ui-ux-data/stacks/swiftui.json +26 -0
  23. package/build/resources/ui-ux-data/stacks/vue.json +170 -0
  24. package/build/resources/ui-ux-data/styles.json +1610 -0
  25. package/build/resources/ui-ux-data/typography.json +743 -0
  26. package/build/resources/ui-ux-data/ui-reasoning.json +1431 -0
  27. package/build/resources/ui-ux-data/ux-guidelines.json +1190 -0
  28. package/build/resources/ui-ux-data/web-interface.json +389 -0
  29. package/build/schemas/ui-ux-schemas.js +1 -1
  30. package/build/tools/start_product.js +8 -1
  31. package/build/tools/start_ui.js +14 -3
  32. package/build/tools/ui-ux-tools.js +21 -17
  33. package/build/utils/ui-data-loader.d.ts +18 -2
  34. package/build/utils/ui-data-loader.js +74 -12
  35. package/docs/i18n/en.json +2 -2
  36. package/docs/i18n/ja.json +2 -2
  37. package/docs/i18n/ko.json +2 -2
  38. package/docs/i18n/zh-CN.json +2 -2
  39. package/package.json +2 -1
@@ -0,0 +1,662 @@
1
+ [
2
+ {
3
+ "No": "1",
4
+ "Category": "Animation",
5
+ "Guideline": "Use Tailwind animate utilities",
6
+ "Description": "Built-in animations are optimized and respect reduced-motion",
7
+ "Do": "Use animate-pulse animate-spin animate-ping",
8
+ "Don't": "Custom @keyframes for simple effects",
9
+ "Code Good": "animate-pulse",
10
+ "Code Bad": "@keyframes pulse {...}",
11
+ "Severity": "Medium",
12
+ "Docs URL": "https://tailwindcss.com/docs/animation"
13
+ },
14
+ {
15
+ "No": "2",
16
+ "Category": "Animation",
17
+ "Guideline": "Limit bounce animations",
18
+ "Description": "Continuous bounce is distracting and causes motion sickness",
19
+ "Do": "Use animate-bounce sparingly on CTAs only",
20
+ "Don't": "Multiple bounce animations on page",
21
+ "Code Good": "Single CTA with animate-bounce",
22
+ "Code Bad": "5+ elements with animate-bounce",
23
+ "Severity": "High",
24
+ "Docs URL": ""
25
+ },
26
+ {
27
+ "No": "3",
28
+ "Category": "Animation",
29
+ "Guideline": "Transition duration",
30
+ "Description": "Use appropriate transition speeds for UI feedback",
31
+ "Do": "duration-150 to duration-300 for UI",
32
+ "Don't": "duration-1000 or longer for UI elements",
33
+ "Code Good": "transition-all duration-200",
34
+ "Code Bad": "transition-all duration-1000",
35
+ "Severity": "Medium",
36
+ "Docs URL": "https://tailwindcss.com/docs/transition-duration"
37
+ },
38
+ {
39
+ "No": "4",
40
+ "Category": "Animation",
41
+ "Guideline": "Hover transitions",
42
+ "Description": "Add smooth transitions on hover state changes",
43
+ "Do": "Add transition class with hover states",
44
+ "Don't": "Instant hover changes without transition",
45
+ "Code Good": "hover:bg-gray-100 transition-colors",
46
+ "Code Bad": "hover:bg-gray-100 (no transition)",
47
+ "Severity": "Low",
48
+ "Docs URL": ""
49
+ },
50
+ {
51
+ "No": "5",
52
+ "Category": "Z-Index",
53
+ "Guideline": "Use Tailwind z-* scale",
54
+ "Description": "Consistent stacking context with predefined scale",
55
+ "Do": "z-0 z-10 z-20 z-30 z-40 z-50",
56
+ "Don't": "Arbitrary z-index values",
57
+ "Code Good": "z-50 for modals",
58
+ "Code Bad": "z-[9999]",
59
+ "Severity": "Medium",
60
+ "Docs URL": "https://tailwindcss.com/docs/z-index"
61
+ },
62
+ {
63
+ "No": "6",
64
+ "Category": "Z-Index",
65
+ "Guideline": "Fixed elements z-index",
66
+ "Description": "Fixed navigation and modals need explicit z-index",
67
+ "Do": "z-50 for nav z-40 for dropdowns",
68
+ "Don't": "Relying on DOM order for stacking",
69
+ "Code Good": "fixed top-0 z-50",
70
+ "Code Bad": "fixed top-0 (no z-index)",
71
+ "Severity": "High",
72
+ "Docs URL": ""
73
+ },
74
+ {
75
+ "No": "7",
76
+ "Category": "Z-Index",
77
+ "Guideline": "Negative z-index for backgrounds",
78
+ "Description": "Use negative z-index for decorative backgrounds",
79
+ "Do": "z-[-1] for background elements",
80
+ "Don't": "Positive z-index for backgrounds",
81
+ "Code Good": "-z-10 for decorative",
82
+ "Code Bad": "z-10 for background",
83
+ "Severity": "Low",
84
+ "Docs URL": ""
85
+ },
86
+ {
87
+ "No": "8",
88
+ "Category": "Layout",
89
+ "Guideline": "Container max-width",
90
+ "Description": "Limit content width for readability",
91
+ "Do": "max-w-7xl mx-auto for main content",
92
+ "Don't": "Full-width content on large screens",
93
+ "Code Good": "max-w-7xl mx-auto px-4",
94
+ "Code Bad": "w-full (no max-width)",
95
+ "Severity": "Medium",
96
+ "Docs URL": "https://tailwindcss.com/docs/container"
97
+ },
98
+ {
99
+ "No": "9",
100
+ "Category": "Layout",
101
+ "Guideline": "Responsive padding",
102
+ "Description": "Adjust padding for different screen sizes",
103
+ "Do": "px-4 md:px-6 lg:px-8",
104
+ "Don't": "Same padding all sizes",
105
+ "Code Good": "px-4 sm:px-6 lg:px-8",
106
+ "Code Bad": "px-8 (same all sizes)",
107
+ "Severity": "Medium",
108
+ "Docs URL": ""
109
+ },
110
+ {
111
+ "No": "10",
112
+ "Category": "Layout",
113
+ "Guideline": "Grid gaps",
114
+ "Description": "Use consistent gap utilities for spacing",
115
+ "Do": "gap-4 gap-6 gap-8",
116
+ "Don't": "Margins on individual items",
117
+ "Code Good": "grid gap-6",
118
+ "Code Bad": "grid with mb-4 on each item",
119
+ "Severity": "Medium",
120
+ "Docs URL": "https://tailwindcss.com/docs/gap"
121
+ },
122
+ {
123
+ "No": "11",
124
+ "Category": "Layout",
125
+ "Guideline": "Flexbox alignment",
126
+ "Description": "Use flex utilities for alignment",
127
+ "Do": "items-center justify-between",
128
+ "Don't": "Multiple nested wrappers",
129
+ "Code Good": "flex items-center justify-between",
130
+ "Code Bad": "Nested divs for alignment",
131
+ "Severity": "Low",
132
+ "Docs URL": ""
133
+ },
134
+ {
135
+ "No": "12",
136
+ "Category": "Images",
137
+ "Guideline": "Aspect ratio",
138
+ "Description": "Maintain consistent image aspect ratios",
139
+ "Do": "aspect-video aspect-square",
140
+ "Don't": "No aspect ratio on containers",
141
+ "Code Good": "aspect-video rounded-lg",
142
+ "Code Bad": "No aspect control",
143
+ "Severity": "Medium",
144
+ "Docs URL": "https://tailwindcss.com/docs/aspect-ratio"
145
+ },
146
+ {
147
+ "No": "13",
148
+ "Category": "Images",
149
+ "Guideline": "Object fit",
150
+ "Description": "Control image scaling within containers",
151
+ "Do": "object-cover object-contain",
152
+ "Don't": "Stretched distorted images",
153
+ "Code Good": "object-cover w-full h-full",
154
+ "Code Bad": "No object-fit",
155
+ "Severity": "Medium",
156
+ "Docs URL": "https://tailwindcss.com/docs/object-fit"
157
+ },
158
+ {
159
+ "No": "14",
160
+ "Category": "Images",
161
+ "Guideline": "Lazy loading",
162
+ "Description": "Defer loading of off-screen images",
163
+ "Do": "loading='lazy' on images",
164
+ "Don't": "All images eager load",
165
+ "Code Good": "<img loading='lazy'>",
166
+ "Code Bad": "<img> without lazy",
167
+ "Severity": "High",
168
+ "Docs URL": ""
169
+ },
170
+ {
171
+ "No": "15",
172
+ "Category": "Images",
173
+ "Guideline": "Responsive images",
174
+ "Description": "Serve appropriate image sizes",
175
+ "Do": "srcset and sizes attributes",
176
+ "Don't": "Same large image all devices",
177
+ "Code Good": "srcset with multiple sizes",
178
+ "Code Bad": "4000px image everywhere",
179
+ "Severity": "High",
180
+ "Docs URL": ""
181
+ },
182
+ {
183
+ "No": "16",
184
+ "Category": "Typography",
185
+ "Guideline": "Prose plugin",
186
+ "Description": "Use @tailwindcss/typography for rich text",
187
+ "Do": "prose prose-lg for article content",
188
+ "Don't": "Custom styles for markdown",
189
+ "Code Good": "prose prose-lg max-w-none",
190
+ "Code Bad": "Custom text styling",
191
+ "Severity": "Medium",
192
+ "Docs URL": "https://tailwindcss.com/docs/typography-plugin"
193
+ },
194
+ {
195
+ "No": "17",
196
+ "Category": "Typography",
197
+ "Guideline": "Line height",
198
+ "Description": "Use appropriate line height for readability",
199
+ "Do": "leading-relaxed for body text",
200
+ "Don't": "Default tight line height",
201
+ "Code Good": "leading-relaxed (1.625)",
202
+ "Code Bad": "leading-none or leading-tight",
203
+ "Severity": "Medium",
204
+ "Docs URL": "https://tailwindcss.com/docs/line-height"
205
+ },
206
+ {
207
+ "No": "18",
208
+ "Category": "Typography",
209
+ "Guideline": "Font size scale",
210
+ "Description": "Use consistent text size scale",
211
+ "Do": "text-sm text-base text-lg text-xl",
212
+ "Don't": "Arbitrary font sizes",
213
+ "Code Good": "text-lg",
214
+ "Code Bad": "text-[17px]",
215
+ "Severity": "Low",
216
+ "Docs URL": "https://tailwindcss.com/docs/font-size"
217
+ },
218
+ {
219
+ "No": "19",
220
+ "Category": "Typography",
221
+ "Guideline": "Text truncation",
222
+ "Description": "Handle long text gracefully",
223
+ "Do": "truncate or line-clamp-*",
224
+ "Don't": "Overflow breaking layout",
225
+ "Code Good": "line-clamp-2",
226
+ "Code Bad": "No overflow handling",
227
+ "Severity": "Medium",
228
+ "Docs URL": "https://tailwindcss.com/docs/text-overflow"
229
+ },
230
+ {
231
+ "No": "20",
232
+ "Category": "Colors",
233
+ "Guideline": "Opacity utilities",
234
+ "Description": "Use color opacity utilities",
235
+ "Do": "bg-black/50 text-white/80",
236
+ "Don't": "Separate opacity class",
237
+ "Code Good": "bg-black/50",
238
+ "Code Bad": "bg-black opacity-50",
239
+ "Severity": "Low",
240
+ "Docs URL": "https://tailwindcss.com/docs/background-color"
241
+ },
242
+ {
243
+ "No": "21",
244
+ "Category": "Colors",
245
+ "Guideline": "Dark mode",
246
+ "Description": "Support dark mode with dark: prefix",
247
+ "Do": "dark:bg-gray-900 dark:text-white",
248
+ "Don't": "No dark mode support",
249
+ "Code Good": "dark:bg-gray-900",
250
+ "Code Bad": "Only light theme",
251
+ "Severity": "Medium",
252
+ "Docs URL": "https://tailwindcss.com/docs/dark-mode"
253
+ },
254
+ {
255
+ "No": "22",
256
+ "Category": "Colors",
257
+ "Guideline": "Semantic colors",
258
+ "Description": "Use semantic color naming in config",
259
+ "Do": "primary secondary danger success",
260
+ "Don't": "Generic color names in components",
261
+ "Code Good": "bg-primary",
262
+ "Code Bad": "bg-blue-500 everywhere",
263
+ "Severity": "Medium",
264
+ "Docs URL": ""
265
+ },
266
+ {
267
+ "No": "23",
268
+ "Category": "Spacing",
269
+ "Guideline": "Consistent spacing scale",
270
+ "Description": "Use Tailwind spacing scale consistently",
271
+ "Do": "p-4 m-6 gap-8",
272
+ "Don't": "Arbitrary pixel values",
273
+ "Code Good": "p-4 (1rem)",
274
+ "Code Bad": "p-[15px]",
275
+ "Severity": "Low",
276
+ "Docs URL": "https://tailwindcss.com/docs/customizing-spacing"
277
+ },
278
+ {
279
+ "No": "24",
280
+ "Category": "Spacing",
281
+ "Guideline": "Negative margins",
282
+ "Description": "Use sparingly for overlapping effects",
283
+ "Do": "-mt-4 for overlapping elements",
284
+ "Don't": "Negative margins for layout fixing",
285
+ "Code Good": "-mt-8 for card overlap",
286
+ "Code Bad": "-m-2 to fix spacing issues",
287
+ "Severity": "Medium",
288
+ "Docs URL": ""
289
+ },
290
+ {
291
+ "No": "25",
292
+ "Category": "Spacing",
293
+ "Guideline": "Space between",
294
+ "Description": "Use space-y-* for vertical lists",
295
+ "Do": "space-y-4 on flex/grid column",
296
+ "Don't": "Margin on each child",
297
+ "Code Good": "space-y-4",
298
+ "Code Bad": "Each child has mb-4",
299
+ "Severity": "Low",
300
+ "Docs URL": "https://tailwindcss.com/docs/space"
301
+ },
302
+ {
303
+ "No": "26",
304
+ "Category": "Forms",
305
+ "Guideline": "Focus states",
306
+ "Description": "Always show focus indicators",
307
+ "Do": "focus:ring-2 focus:ring-blue-500",
308
+ "Don't": "Remove focus outline",
309
+ "Code Good": "focus:ring-2 focus:ring-offset-2",
310
+ "Code Bad": "focus:outline-none (no replacement)",
311
+ "Severity": "High",
312
+ "Docs URL": ""
313
+ },
314
+ {
315
+ "No": "27",
316
+ "Category": "Forms",
317
+ "Guideline": "Input sizing",
318
+ "Description": "Consistent input dimensions",
319
+ "Do": "h-10 px-3 for inputs",
320
+ "Don't": "Inconsistent input heights",
321
+ "Code Good": "h-10 w-full px-3",
322
+ "Code Bad": "Various heights per input",
323
+ "Severity": "Medium",
324
+ "Docs URL": ""
325
+ },
326
+ {
327
+ "No": "28",
328
+ "Category": "Forms",
329
+ "Guideline": "Disabled states",
330
+ "Description": "Clear disabled styling",
331
+ "Do": "disabled:opacity-50 disabled:cursor-not-allowed",
332
+ "Don't": "No disabled indication",
333
+ "Code Good": "disabled:opacity-50",
334
+ "Code Bad": "Same style as enabled",
335
+ "Severity": "Medium",
336
+ "Docs URL": ""
337
+ },
338
+ {
339
+ "No": "29",
340
+ "Category": "Forms",
341
+ "Guideline": "Placeholder styling",
342
+ "Description": "Style placeholder text appropriately",
343
+ "Do": "placeholder:text-gray-400",
344
+ "Don't": "Dark placeholder text",
345
+ "Code Good": "placeholder:text-gray-400",
346
+ "Code Bad": "Default dark placeholder",
347
+ "Severity": "Low",
348
+ "Docs URL": ""
349
+ },
350
+ {
351
+ "No": "30",
352
+ "Category": "Responsive",
353
+ "Guideline": "Mobile-first approach",
354
+ "Description": "Start with mobile styles and add breakpoints",
355
+ "Do": "Default mobile + md: lg: xl:",
356
+ "Don't": "Desktop-first approach",
357
+ "Code Good": "text-sm md:text-base",
358
+ "Code Bad": "text-base max-md:text-sm",
359
+ "Severity": "Medium",
360
+ "Docs URL": "https://tailwindcss.com/docs/responsive-design"
361
+ },
362
+ {
363
+ "No": "31",
364
+ "Category": "Responsive",
365
+ "Guideline": "Breakpoint testing",
366
+ "Description": "Test at standard breakpoints",
367
+ "Do": "320 375 768 1024 1280 1536",
368
+ "Don't": "Only test on development device",
369
+ "Code Good": "Test all breakpoints",
370
+ "Code Bad": "Single device testing",
371
+ "Severity": "High",
372
+ "Docs URL": ""
373
+ },
374
+ {
375
+ "No": "32",
376
+ "Category": "Responsive",
377
+ "Guideline": "Hidden/shown utilities",
378
+ "Description": "Control visibility per breakpoint",
379
+ "Do": "hidden md:block",
380
+ "Don't": "Different content per breakpoint",
381
+ "Code Good": "hidden md:flex",
382
+ "Code Bad": "Separate mobile/desktop components",
383
+ "Severity": "Low",
384
+ "Docs URL": "https://tailwindcss.com/docs/display"
385
+ },
386
+ {
387
+ "No": "33",
388
+ "Category": "Buttons",
389
+ "Guideline": "Button sizing",
390
+ "Description": "Consistent button dimensions",
391
+ "Do": "px-4 py-2 or px-6 py-3",
392
+ "Don't": "Inconsistent button sizes",
393
+ "Code Good": "px-4 py-2 text-sm",
394
+ "Code Bad": "Various padding per button",
395
+ "Severity": "Medium",
396
+ "Docs URL": ""
397
+ },
398
+ {
399
+ "No": "34",
400
+ "Category": "Buttons",
401
+ "Guideline": "Touch targets",
402
+ "Description": "Minimum 44px touch target on mobile",
403
+ "Do": "min-h-[44px] on mobile",
404
+ "Don't": "Small buttons on mobile",
405
+ "Code Good": "min-h-[44px] min-w-[44px]",
406
+ "Code Bad": "h-8 w-8 on mobile",
407
+ "Severity": "High",
408
+ "Docs URL": ""
409
+ },
410
+ {
411
+ "No": "35",
412
+ "Category": "Buttons",
413
+ "Guideline": "Loading states",
414
+ "Description": "Show loading feedback",
415
+ "Do": "disabled + spinner icon",
416
+ "Don't": "Clickable during loading",
417
+ "Code Good": "<Button disabled><Spinner/></Button>",
418
+ "Code Bad": "Button without loading state",
419
+ "Severity": "High",
420
+ "Docs URL": ""
421
+ },
422
+ {
423
+ "No": "36",
424
+ "Category": "Buttons",
425
+ "Guideline": "Icon buttons",
426
+ "Description": "Accessible icon-only buttons",
427
+ "Do": "aria-label on icon buttons",
428
+ "Don't": "Icon button without label",
429
+ "Code Good": "<button aria-label='Close'><XIcon/></button>",
430
+ "Code Bad": "<button><XIcon/></button>",
431
+ "Severity": "High",
432
+ "Docs URL": ""
433
+ },
434
+ {
435
+ "No": "37",
436
+ "Category": "Cards",
437
+ "Guideline": "Card structure",
438
+ "Description": "Consistent card styling",
439
+ "Do": "rounded-lg shadow-md p-6",
440
+ "Don't": "Inconsistent card styles",
441
+ "Code Good": "rounded-2xl shadow-lg p-6",
442
+ "Code Bad": "Mixed card styling",
443
+ "Severity": "Low",
444
+ "Docs URL": ""
445
+ },
446
+ {
447
+ "No": "38",
448
+ "Category": "Cards",
449
+ "Guideline": "Card hover states",
450
+ "Description": "Interactive cards should have hover feedback",
451
+ "Do": "hover:shadow-lg transition-shadow",
452
+ "Don't": "No hover on clickable cards",
453
+ "Code Good": "hover:shadow-xl transition-shadow",
454
+ "Code Bad": "Static cards that are clickable",
455
+ "Severity": "Medium",
456
+ "Docs URL": ""
457
+ },
458
+ {
459
+ "No": "39",
460
+ "Category": "Cards",
461
+ "Guideline": "Card spacing",
462
+ "Description": "Consistent internal card spacing",
463
+ "Do": "space-y-4 for card content",
464
+ "Don't": "Inconsistent internal spacing",
465
+ "Code Good": "space-y-4 or p-6",
466
+ "Code Bad": "Mixed mb-2 mb-4 mb-6",
467
+ "Severity": "Low",
468
+ "Docs URL": ""
469
+ },
470
+ {
471
+ "No": "40",
472
+ "Category": "Accessibility",
473
+ "Guideline": "Screen reader text",
474
+ "Description": "Provide context for screen readers",
475
+ "Do": "sr-only for hidden labels",
476
+ "Don't": "Missing context for icons",
477
+ "Code Good": "<span class='sr-only'>Close menu</span>",
478
+ "Code Bad": "No label for icon button",
479
+ "Severity": "High",
480
+ "Docs URL": "https://tailwindcss.com/docs/screen-readers"
481
+ },
482
+ {
483
+ "No": "41",
484
+ "Category": "Accessibility",
485
+ "Guideline": "Focus visible",
486
+ "Description": "Show focus only for keyboard users",
487
+ "Do": "focus-visible:ring-2",
488
+ "Don't": "Focus on all interactions",
489
+ "Code Good": "focus-visible:ring-2",
490
+ "Code Bad": "focus:ring-2 (shows on click too)",
491
+ "Severity": "Medium",
492
+ "Docs URL": ""
493
+ },
494
+ {
495
+ "No": "42",
496
+ "Category": "Accessibility",
497
+ "Guideline": "Reduced motion",
498
+ "Description": "Respect user motion preferences",
499
+ "Do": "motion-reduce:animate-none",
500
+ "Don't": "Ignore motion preferences",
501
+ "Code Good": "motion-reduce:transition-none",
502
+ "Code Bad": "No reduced motion support",
503
+ "Severity": "High",
504
+ "Docs URL": "https://tailwindcss.com/docs/hover-focus-and-other-states#prefers-reduced-motion"
505
+ },
506
+ {
507
+ "No": "43",
508
+ "Category": "Performance",
509
+ "Guideline": "Configure content paths",
510
+ "Description": "Tailwind needs to know where classes are used",
511
+ "Do": "Use 'content' array in config",
512
+ "Don't": "Use deprecated 'purge' option (v2)",
513
+ "Code Good": "content: ['./src/**/*.{js,ts,jsx,tsx}']",
514
+ "Code Bad": "purge: [...]",
515
+ "Severity": "High",
516
+ "Docs URL": "https://tailwindcss.com/docs/content-configuration"
517
+ },
518
+ {
519
+ "No": "44",
520
+ "Category": "Performance",
521
+ "Guideline": "JIT mode",
522
+ "Description": "Use JIT for faster builds and smaller bundles",
523
+ "Do": "JIT enabled (default in v3)",
524
+ "Don't": "Full CSS in development",
525
+ "Code Good": "Tailwind v3 defaults",
526
+ "Code Bad": "Tailwind v2 without JIT",
527
+ "Severity": "Medium",
528
+ "Docs URL": ""
529
+ },
530
+ {
531
+ "No": "45",
532
+ "Category": "Performance",
533
+ "Guideline": "Avoid @apply bloat",
534
+ "Description": "Use @apply sparingly",
535
+ "Do": "Direct utilities in HTML",
536
+ "Don't": "Heavy @apply usage",
537
+ "Code Good": "class='px-4 py-2 rounded'",
538
+ "Code Bad": "@apply px-4 py-2 rounded;",
539
+ "Severity": "Low",
540
+ "Docs URL": "https://tailwindcss.com/docs/reusing-styles"
541
+ },
542
+ {
543
+ "No": "46",
544
+ "Category": "Plugins",
545
+ "Guideline": "Official plugins",
546
+ "Description": "Use official Tailwind plugins",
547
+ "Do": "@tailwindcss/forms typography aspect-ratio",
548
+ "Don't": "Custom implementations",
549
+ "Code Good": "@tailwindcss/forms",
550
+ "Code Bad": "Custom form reset CSS",
551
+ "Severity": "Medium",
552
+ "Docs URL": "https://tailwindcss.com/docs/plugins"
553
+ },
554
+ {
555
+ "No": "47",
556
+ "Category": "Plugins",
557
+ "Guideline": "Custom utilities",
558
+ "Description": "Create utilities for repeated patterns",
559
+ "Do": "Custom utility in config",
560
+ "Don't": "Repeated arbitrary values",
561
+ "Code Good": "Custom shadow utility",
562
+ "Code Bad": "shadow-[0_4px_20px_rgba(0,0,0,0.1)] everywhere",
563
+ "Severity": "Medium",
564
+ "Docs URL": ""
565
+ },
566
+ {
567
+ "No": "48",
568
+ "Category": "Layout",
569
+ "Guideline": "Container Queries",
570
+ "Description": "Use @container for component-based responsiveness",
571
+ "Do": "Use @container and @lg: etc.",
572
+ "Don't": "Media queries for component internals",
573
+ "Code Good": "@container @lg:grid-cols-2",
574
+ "Code Bad": "@media (min-width: ...) inside component",
575
+ "Severity": "Medium",
576
+ "Docs URL": "https://github.com/tailwindlabs/tailwindcss-container-queries"
577
+ },
578
+ {
579
+ "No": "49",
580
+ "Category": "Interactivity",
581
+ "Guideline": "Group and Peer",
582
+ "Description": "Style based on parent/sibling state",
583
+ "Do": "group-hover peer-checked",
584
+ "Don't": "JS for simple state interactions",
585
+ "Code Good": "group-hover:text-blue-500",
586
+ "Code Bad": "onMouseEnter={() => setHover(true)}",
587
+ "Severity": "Low",
588
+ "Docs URL": "https://tailwindcss.com/docs/hover-focus-and-other-states#styling-based-on-parent-state"
589
+ },
590
+ {
591
+ "No": "50",
592
+ "Category": "Customization",
593
+ "Guideline": "Arbitrary Values",
594
+ "Description": "Use [] for one-off values",
595
+ "Do": "w-[350px] for specific needs",
596
+ "Don't": "Creating config for single use",
597
+ "Code Good": "top-[117px] (if strictly needed)",
598
+ "Code Bad": "style={{ top: '117px' }}",
599
+ "Severity": "Low",
600
+ "Docs URL": "https://tailwindcss.com/docs/adding-custom-styles#using-arbitrary-values"
601
+ },
602
+ {
603
+ "No": "51",
604
+ "Category": "Colors",
605
+ "Guideline": "Theme color variables",
606
+ "Description": "Define colors in Tailwind theme and use directly",
607
+ "Do": "bg-primary text-success border-cta",
608
+ "Don't": "bg-[var(--color-primary)] text-[var(--color-success)]",
609
+ "Code Good": "bg-primary",
610
+ "Code Bad": "bg-[var(--color-primary)]",
611
+ "Severity": "Medium",
612
+ "Docs URL": "https://tailwindcss.com/docs/customizing-colors"
613
+ },
614
+ {
615
+ "No": "52",
616
+ "Category": "Colors",
617
+ "Guideline": "Use bg-linear-to-* for gradients",
618
+ "Description": "Tailwind v4 uses bg-linear-to-* syntax for gradients",
619
+ "Do": "bg-linear-to-r bg-linear-to-b",
620
+ "Don't": "bg-gradient-to-* (deprecated in v4)",
621
+ "Code Good": "bg-linear-to-r from-blue-500 to-purple-500",
622
+ "Code Bad": "bg-gradient-to-r from-blue-500 to-purple-500",
623
+ "Severity": "Medium",
624
+ "Docs URL": "https://tailwindcss.com/docs/background-image"
625
+ },
626
+ {
627
+ "No": "53",
628
+ "Category": "Layout",
629
+ "Guideline": "Use shrink-0 shorthand",
630
+ "Description": "Shorter class name for flex-shrink-0",
631
+ "Do": "shrink-0 shrink",
632
+ "Don't": "flex-shrink-0 flex-shrink",
633
+ "Code Good": "shrink-0",
634
+ "Code Bad": "flex-shrink-0",
635
+ "Severity": "Low",
636
+ "Docs URL": "https://tailwindcss.com/docs/flex-shrink"
637
+ },
638
+ {
639
+ "No": "54",
640
+ "Category": "Layout",
641
+ "Guideline": "Use size-* for square dimensions",
642
+ "Description": "Single utility for equal width and height",
643
+ "Do": "size-4 size-8 size-12",
644
+ "Don't": "Separate h-* w-* for squares",
645
+ "Code Good": "size-6",
646
+ "Code Bad": "h-6 w-6",
647
+ "Severity": "Low",
648
+ "Docs URL": "https://tailwindcss.com/docs/size"
649
+ },
650
+ {
651
+ "No": "55",
652
+ "Category": "Images",
653
+ "Guideline": "SVG explicit dimensions",
654
+ "Description": "Add width/height attributes to SVGs to prevent layout shift before CSS loads",
655
+ "Do": "<svg class='size-6' width='24' height='24'>",
656
+ "Don't": "SVG without explicit dimensions",
657
+ "Code Good": "<svg class='size-6' width='24' height='24'>",
658
+ "Code Bad": "<svg class='size-6'>",
659
+ "Severity": "High",
660
+ "Docs URL": ""
661
+ }
662
+ ]