vibecodeagent 0.0.0-stage → 0.1.65

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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +46 -2
  3. package/THIRD-PARTY-NOTICES.txt +1427 -0
  4. package/dist/agen.js +138920 -0
  5. package/dist/bin.js +1245 -0
  6. package/dist/daemon.js +163701 -0
  7. package/dist/node_modules/node-ensure/index.js +10 -0
  8. package/dist/node_modules/node-ensure/package.json +31 -0
  9. package/dist/node_modules/pdf-parse/lib/pdf-parse.js +102 -0
  10. package/dist/node_modules/pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js +18538 -0
  11. package/dist/node_modules/pdf-parse/lib/pdf.js/v1.10.100/build/pdf.worker.js +45507 -0
  12. package/dist/node_modules/pdf-parse/package.json +49 -0
  13. package/dist/node_modules/sql.js/dist/sql-wasm.js +186 -0
  14. package/dist/node_modules/sql.js/dist/sql-wasm.wasm +0 -0
  15. package/dist/node_modules/sql.js/package.json +58 -0
  16. package/dist/resources/skills/builtin/.gitkeep +0 -0
  17. package/dist/resources/skills/builtin/NOTICE.md +35 -0
  18. package/dist/resources/skills/builtin/README.md +74 -0
  19. package/dist/resources/skills/builtin/backend-engineering/SKILL.md +102 -0
  20. package/dist/resources/skills/builtin/backend-engineering/references/api-contracts.md +320 -0
  21. package/dist/resources/skills/builtin/backend-engineering/references/auth-and-secrets.md +268 -0
  22. package/dist/resources/skills/builtin/backend-engineering/references/concurrency-and-jobs.md +386 -0
  23. package/dist/resources/skills/builtin/backend-engineering/references/data-modelling.md +367 -0
  24. package/dist/resources/skills/builtin/backend-engineering/references/deploy-and-config.md +228 -0
  25. package/dist/resources/skills/builtin/backend-engineering/references/migrations.md +320 -0
  26. package/dist/resources/skills/builtin/backend-engineering/references/observability.md +301 -0
  27. package/dist/resources/skills/builtin/backend-engineering/references/plan-template.md +152 -0
  28. package/dist/resources/skills/builtin/backend-engineering/references/review-audit.md +213 -0
  29. package/dist/resources/skills/builtin/backend-engineering/references/security.md +251 -0
  30. package/dist/resources/skills/builtin/backend-engineering/references/stack-go.md +238 -0
  31. package/dist/resources/skills/builtin/backend-engineering/references/stack-node.md +274 -0
  32. package/dist/resources/skills/builtin/backend-engineering/references/stack-python.md +296 -0
  33. package/dist/resources/skills/builtin/backend-engineering/references/testing-and-perf.md +298 -0
  34. package/dist/resources/skills/builtin/backend-engineering/references/validation-and-errors.md +266 -0
  35. package/dist/resources/skills/builtin/dasar-vibecode/SKILL.md +312 -0
  36. package/dist/resources/skills/builtin/excel-maker/SKILL.md +71 -0
  37. package/dist/resources/skills/builtin/frontend-design/SKILL.md +131 -0
  38. package/dist/resources/skills/builtin/frontend-design/data/app-interface.csv +33 -0
  39. package/dist/resources/skills/builtin/frontend-design/data/catalog-summary.json +78 -0
  40. package/dist/resources/skills/builtin/frontend-design/data/charts.csv +26 -0
  41. package/dist/resources/skills/builtin/frontend-design/data/colors.csv +193 -0
  42. package/dist/resources/skills/builtin/frontend-design/data/data-provenance.json +1348 -0
  43. package/dist/resources/skills/builtin/frontend-design/data/google-font-licenses.json +20185 -0
  44. package/dist/resources/skills/builtin/frontend-design/data/google-fonts.csv +1935 -0
  45. package/dist/resources/skills/builtin/frontend-design/data/icons.csv +106 -0
  46. package/dist/resources/skills/builtin/frontend-design/data/landing.csv +35 -0
  47. package/dist/resources/skills/builtin/frontend-design/data/motion.csv +18 -0
  48. package/dist/resources/skills/builtin/frontend-design/data/phosphor-icons-upstream.json +32582 -0
  49. package/dist/resources/skills/builtin/frontend-design/data/products.csv +193 -0
  50. package/dist/resources/skills/builtin/frontend-design/data/react-performance.csv +45 -0
  51. package/dist/resources/skills/builtin/frontend-design/data/stacks/angular.csv +51 -0
  52. package/dist/resources/skills/builtin/frontend-design/data/stacks/astro.csv +54 -0
  53. package/dist/resources/skills/builtin/frontend-design/data/stacks/avalonia.csv +57 -0
  54. package/dist/resources/skills/builtin/frontend-design/data/stacks/flutter.csv +53 -0
  55. package/dist/resources/skills/builtin/frontend-design/data/stacks/html-tailwind.csv +60 -0
  56. package/dist/resources/skills/builtin/frontend-design/data/stacks/javafx.csv +76 -0
  57. package/dist/resources/skills/builtin/frontend-design/data/stacks/jetpack-compose.csv +53 -0
  58. package/dist/resources/skills/builtin/frontend-design/data/stacks/laravel.csv +51 -0
  59. package/dist/resources/skills/builtin/frontend-design/data/stacks/nextjs.csv +62 -0
  60. package/dist/resources/skills/builtin/frontend-design/data/stacks/nuxt-ui.csv +71 -0
  61. package/dist/resources/skills/builtin/frontend-design/data/stacks/nuxtjs.csv +68 -0
  62. package/dist/resources/skills/builtin/frontend-design/data/stacks/react-native.csv +52 -0
  63. package/dist/resources/skills/builtin/frontend-design/data/stacks/react.csv +62 -0
  64. package/dist/resources/skills/builtin/frontend-design/data/stacks/shadcn.csv +69 -0
  65. package/dist/resources/skills/builtin/frontend-design/data/stacks/svelte.csv +56 -0
  66. package/dist/resources/skills/builtin/frontend-design/data/stacks/swiftui.csv +51 -0
  67. package/dist/resources/skills/builtin/frontend-design/data/stacks/threejs.csv +54 -0
  68. package/dist/resources/skills/builtin/frontend-design/data/stacks/uno.csv +60 -0
  69. package/dist/resources/skills/builtin/frontend-design/data/stacks/uwp.csv +56 -0
  70. package/dist/resources/skills/builtin/frontend-design/data/stacks/vue.csv +50 -0
  71. package/dist/resources/skills/builtin/frontend-design/data/stacks/winui.csv +60 -0
  72. package/dist/resources/skills/builtin/frontend-design/data/stacks/wpf.csv +57 -0
  73. package/dist/resources/skills/builtin/frontend-design/data/styles.csv +89 -0
  74. package/dist/resources/skills/builtin/frontend-design/data/typography.csv +75 -0
  75. package/dist/resources/skills/builtin/frontend-design/data/ui-reasoning.csv +193 -0
  76. package/dist/resources/skills/builtin/frontend-design/data/ux-guidelines.csv +120 -0
  77. package/dist/resources/skills/builtin/frontend-design/references/animation-patterns.md +705 -0
  78. package/dist/resources/skills/builtin/frontend-design/references/app-polish.md +117 -0
  79. package/dist/resources/skills/builtin/frontend-design/references/apple-fluid.md +278 -0
  80. package/dist/resources/skills/builtin/frontend-design/references/art-direction.md +280 -0
  81. package/dist/resources/skills/builtin/frontend-design/references/case-studies.md +599 -0
  82. package/dist/resources/skills/builtin/frontend-design/references/craft.md +128 -0
  83. package/dist/resources/skills/builtin/frontend-design/references/expo.md +251 -0
  84. package/dist/resources/skills/builtin/frontend-design/references/layout-systems.md +533 -0
  85. package/dist/resources/skills/builtin/frontend-design/references/libraries.md +72 -0
  86. package/dist/resources/skills/builtin/frontend-design/references/motion.md +222 -0
  87. package/dist/resources/skills/builtin/frontend-design/references/picker.md +197 -0
  88. package/dist/resources/skills/builtin/frontend-design/references/plan-template.md +73 -0
  89. package/dist/resources/skills/builtin/frontend-design/references/prototype.md +85 -0
  90. package/dist/resources/skills/builtin/frontend-design/references/recipes-expo.md +385 -0
  91. package/dist/resources/skills/builtin/frontend-design/references/recipes-web.md +421 -0
  92. package/dist/resources/skills/builtin/frontend-design/references/review-audit.md +107 -0
  93. package/dist/resources/skills/builtin/frontend-design/references/sonner.md +143 -0
  94. package/dist/resources/skills/builtin/frontend-design/references/technical-stack.md +543 -0
  95. package/dist/resources/skills/builtin/frontend-design/references/theming.md +60 -0
  96. package/dist/resources/skills/builtin/frontend-design/references/typography.md +393 -0
  97. package/dist/resources/skills/builtin/frontend-design/references/ux-rules.md +256 -0
  98. package/dist/resources/skills/builtin/frontend-design/references/vocabulary.md +169 -0
  99. package/dist/resources/skills/builtin/frontend-design/scripts/core.py +993 -0
  100. package/dist/resources/skills/builtin/frontend-design/scripts/design_system.py +1643 -0
  101. package/dist/resources/skills/builtin/frontend-design/scripts/reasoning_contract.py +123 -0
  102. package/dist/resources/skills/builtin/frontend-design/scripts/search.py +171 -0
  103. package/dist/resources/skills/builtin/frontend-design/scripts/validate_data.py +1091 -0
  104. package/dist/resources/skills/builtin/kerja-agentik/SKILL.md +117 -0
  105. package/dist/resources/skills/builtin/pdf-maker/SKILL.md +51 -0
  106. package/dist/resources/skills/builtin/tinjau-keamanan/SKILL.md +53 -0
  107. package/dist/resources/skills/builtin/word-maker/SKILL.md +58 -0
  108. package/dist/resources/skills/builtin/write-swift/SKILL.md +388 -0
  109. package/package.json +35 -4
@@ -0,0 +1,393 @@
1
+ # Typography Reference
2
+
3
+ ## Table of Contents
4
+ 1. Font Pairing Strategies
5
+ 2. Type Scale Systems
6
+ 3. CSS Typography Techniques
7
+ 4. Variable Fonts
8
+ 5. Font Loading Optimization
9
+
10
+ ---
11
+
12
+ ## 1. Font Pairing Strategies
13
+
14
+ ### The Contrast Principle
15
+ Great pairings create tension through contrast in one dimension while maintaining harmony in others.
16
+
17
+ **Contrast Dimensions:**
18
+ - Weight (light vs. bold)
19
+ - Width (condensed vs. extended)
20
+ - Style (serif vs. sans)
21
+ - Era (classic vs. contemporary)
22
+ - Mood (serious vs. playful)
23
+
24
+ ### Proven Pairings by Style
25
+
26
+ **Editorial/Magazine:**
27
+ ```
28
+ Display: Freight Display / Editorial New / Canela
29
+ Body: Söhne / Untitled Sans / Graphik
30
+ ```
31
+
32
+ **Tech/Modern:**
33
+ ```
34
+ Display: Monument Extended / ABC Favorit Extended / Druk Wide
35
+ Body: Inter (only acceptable here) / Suisse Int'l / Neue Montreal
36
+ ```
37
+
38
+ **Luxury/Fashion:**
39
+ ```
40
+ Display: Didot / Romana / Noe Display
41
+ Body: Apercu / Basis Grotesque / Plain
42
+ ```
43
+
44
+ **Brutalist/Raw:**
45
+ ```
46
+ Display: ABC Diatype / Neue Haas Grotesk / Helvetica Now
47
+ Body: Same as display (mono-font strategy)
48
+ ```
49
+
50
+ **Creative/Playful:**
51
+ ```
52
+ Display: Basement Grotesque / GT Maru / Gambarino
53
+ Body: GT Walsheim / Gilroy / Proxima Nova
54
+ ```
55
+
56
+ ### Free/Google Font Alternatives
57
+
58
+ **Premium Feel, Zero Cost:**
59
+ ```
60
+ Display Options:
61
+ ├── Space Grotesk (geometric, techy)
62
+ ├── Instrument Serif (editorial elegance)
63
+ ├── Fraunces (variable, characterful)
64
+ ├── Playfair Display (classic serif)
65
+ ├── Cormorant Garamond (refined serif)
66
+ └── Syne (bold, distinctive)
67
+
68
+ Body Options:
69
+ ├── Plus Jakarta Sans (clean, modern)
70
+ ├── DM Sans (geometric, friendly)
71
+ ├── Outfit (variable, versatile)
72
+ ├── Satoshi (via Fontshare - free!)
73
+ └── General Sans (via Fontshare)
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 2. Type Scale Systems
79
+
80
+ ### Fluid Typography (Preferred)
81
+
82
+ ```css
83
+ /* Fluid scale using clamp() */
84
+ :root {
85
+ /* Base: 16px at 320px → 20px at 1440px */
86
+ --text-base: clamp(1rem, 0.857rem + 0.714vw, 1.25rem);
87
+
88
+ /* Scale ratio: 1.25 (Major Third) */
89
+ --text-sm: clamp(0.8rem, 0.686rem + 0.571vw, 1rem);
90
+ --text-lg: clamp(1.25rem, 1.071rem + 0.893vw, 1.563rem);
91
+ --text-xl: clamp(1.563rem, 1.339rem + 1.116vw, 1.953rem);
92
+ --text-2xl: clamp(1.953rem, 1.674rem + 1.395vw, 2.441rem);
93
+ --text-3xl: clamp(2.441rem, 2.092rem + 1.744vw, 3.052rem);
94
+ --text-4xl: clamp(3.052rem, 2.616rem + 2.18vw, 3.815rem);
95
+ --text-5xl: clamp(3.815rem, 3.27rem + 2.725vw, 4.768rem);
96
+
97
+ /* Hero sizes - dramatic scale */
98
+ --text-hero: clamp(4rem, 2rem + 8vw, 12rem);
99
+ --text-display: clamp(3rem, 1.5rem + 6vw, 9rem);
100
+ }
101
+ ```
102
+
103
+ ### Step-Based Scale (Fixed Breakpoints)
104
+
105
+ ```css
106
+ /* Mobile-first scale */
107
+ :root {
108
+ --step--2: 0.75rem; /* 12px */
109
+ --step--1: 0.875rem; /* 14px */
110
+ --step-0: 1rem; /* 16px - base */
111
+ --step-1: 1.125rem; /* 18px */
112
+ --step-2: 1.5rem; /* 24px */
113
+ --step-3: 2rem; /* 32px */
114
+ --step-4: 3rem; /* 48px */
115
+ --step-5: 4rem; /* 64px */
116
+ --step-6: 6rem; /* 96px */
117
+ --step-7: 8rem; /* 128px */
118
+ }
119
+
120
+ @media (min-width: 768px) {
121
+ :root {
122
+ --step-4: 4rem;
123
+ --step-5: 6rem;
124
+ --step-6: 9rem;
125
+ --step-7: 12rem;
126
+ }
127
+ }
128
+
129
+ @media (min-width: 1280px) {
130
+ :root {
131
+ --step-5: 8rem;
132
+ --step-6: 12rem;
133
+ --step-7: 16rem;
134
+ }
135
+ }
136
+ ```
137
+
138
+ ---
139
+
140
+ ## 3. CSS Typography Techniques
141
+
142
+ ### Tracking (Letter-Spacing)
143
+
144
+ ```css
145
+ /* Tracking scales inversely with size */
146
+ .text-hero {
147
+ letter-spacing: -0.04em; /* Tight for massive text */
148
+ }
149
+
150
+ .text-display {
151
+ letter-spacing: -0.03em;
152
+ }
153
+
154
+ .text-heading {
155
+ letter-spacing: -0.02em;
156
+ }
157
+
158
+ .text-body {
159
+ letter-spacing: 0; /* Normal for body */
160
+ }
161
+
162
+ .text-small {
163
+ letter-spacing: 0.01em; /* Slightly open for small text */
164
+ }
165
+
166
+ .text-caps {
167
+ letter-spacing: 0.1em; /* Open for all-caps */
168
+ text-transform: uppercase;
169
+ }
170
+ ```
171
+
172
+ ### Leading (Line-Height)
173
+
174
+ ```css
175
+ /* Line-height based on use case */
176
+ .leading-hero {
177
+ line-height: 0.9; /* Very tight for impact */
178
+ }
179
+
180
+ .leading-display {
181
+ line-height: 1.0;
182
+ }
183
+
184
+ .leading-heading {
185
+ line-height: 1.1;
186
+ }
187
+
188
+ .leading-body {
189
+ line-height: 1.6; /* Comfortable reading */
190
+ }
191
+
192
+ .leading-relaxed {
193
+ line-height: 1.8; /* Long-form content */
194
+ }
195
+ ```
196
+
197
+ ### Advanced Techniques
198
+
199
+ ```css
200
+ /* Optical margin alignment */
201
+ .hanging-punctuation {
202
+ hanging-punctuation: first last;
203
+ }
204
+
205
+ /* Font feature settings */
206
+ .tabular-nums {
207
+ font-variant-numeric: tabular-nums;
208
+ }
209
+
210
+ .oldstyle-nums {
211
+ font-variant-numeric: oldstyle-nums;
212
+ }
213
+
214
+ .ligatures {
215
+ font-variant-ligatures: common-ligatures discretionary-ligatures;
216
+ }
217
+
218
+ /* Text rendering optimization */
219
+ .hero-text {
220
+ text-rendering: optimizeLegibility;
221
+ -webkit-font-smoothing: antialiased;
222
+ -moz-osx-font-smoothing: grayscale;
223
+ }
224
+
225
+ /* Preventing text wrapping issues */
226
+ .no-orphans {
227
+ text-wrap: balance; /* Modern browsers */
228
+ }
229
+
230
+ /* Hyphenation for justified text */
231
+ .justified {
232
+ text-align: justify;
233
+ hyphens: auto;
234
+ hyphenate-limit-chars: 6 3 2;
235
+ }
236
+ ```
237
+
238
+ ### Text Masking & Gradient Text
239
+
240
+ ```css
241
+ /* Gradient text */
242
+ .gradient-text {
243
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
244
+ -webkit-background-clip: text;
245
+ -webkit-text-fill-color: transparent;
246
+ background-clip: text;
247
+ }
248
+
249
+ /* Image-filled text */
250
+ .image-text {
251
+ background-image: url('/texture.jpg');
252
+ background-size: cover;
253
+ -webkit-background-clip: text;
254
+ -webkit-text-fill-color: transparent;
255
+ }
256
+
257
+ /* Animated gradient text */
258
+ .animated-gradient-text {
259
+ background: linear-gradient(90deg, #ff0000, #00ff00, #0000ff, #ff0000);
260
+ background-size: 300% 100%;
261
+ -webkit-background-clip: text;
262
+ -webkit-text-fill-color: transparent;
263
+ animation: gradient-shift 8s ease infinite;
264
+ }
265
+
266
+ @keyframes gradient-shift {
267
+ 0%, 100% { background-position: 0% 50%; }
268
+ 50% { background-position: 100% 50%; }
269
+ }
270
+ ```
271
+
272
+ ---
273
+
274
+ ## 4. Variable Fonts
275
+
276
+ ### Benefits
277
+ - Single file, multiple weights/widths
278
+ - Fluid animations between weights
279
+ - Smaller total file size
280
+
281
+ ### Implementation
282
+
283
+ ```css
284
+ /* Loading variable font */
285
+ @font-face {
286
+ font-family: 'Inter';
287
+ src: url('/fonts/Inter-Variable.woff2') format('woff2-variations');
288
+ font-weight: 100 900;
289
+ font-display: swap;
290
+ }
291
+
292
+ /* Using weight axis */
293
+ .light { font-variation-settings: 'wght' 300; }
294
+ .regular { font-variation-settings: 'wght' 400; }
295
+ .medium { font-variation-settings: 'wght' 500; }
296
+ .bold { font-variation-settings: 'wght' 700; }
297
+ .black { font-variation-settings: 'wght' 900; }
298
+
299
+ /* Animating weight */
300
+ .hover-weight {
301
+ font-variation-settings: 'wght' 400;
302
+ transition: font-variation-settings 0.3s ease;
303
+ }
304
+
305
+ .hover-weight:hover {
306
+ font-variation-settings: 'wght' 700;
307
+ }
308
+
309
+ /* Multiple axes */
310
+ .variable-text {
311
+ font-variation-settings:
312
+ 'wght' 500, /* Weight */
313
+ 'wdth' 100, /* Width */
314
+ 'ital' 0, /* Italic */
315
+ 'slnt' 0; /* Slant */
316
+ }
317
+ ```
318
+
319
+ ---
320
+
321
+ ## 5. Font Loading Optimization
322
+
323
+ ### Critical Font Strategy
324
+
325
+ ```html
326
+ <!-- Preload critical fonts -->
327
+ <link rel="preload" href="/fonts/display.woff2" as="font" type="font/woff2" crossorigin>
328
+ <link rel="preload" href="/fonts/body.woff2" as="font" type="font/woff2" crossorigin>
329
+
330
+ <!-- Inline critical @font-face -->
331
+ <style>
332
+ @font-face {
333
+ font-family: 'Display';
334
+ src: url('/fonts/display.woff2') format('woff2');
335
+ font-weight: 700;
336
+ font-display: swap;
337
+ }
338
+ </style>
339
+ ```
340
+
341
+ ### Font Subsetting
342
+
343
+ ```bash
344
+ # Using pyftsubset to create subset
345
+ pyftsubset "Font.ttf" \
346
+ --output-file="Font-subset.woff2" \
347
+ --flavor=woff2 \
348
+ --layout-features="kern,liga,calt" \
349
+ --unicodes="U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD"
350
+ ```
351
+
352
+ ### FOUT/FOIT Prevention
353
+
354
+ ```css
355
+ /* Font loading classes via JavaScript */
356
+ .fonts-loading {
357
+ /* Use fallback stack */
358
+ font-family: Georgia, serif;
359
+ }
360
+
361
+ .fonts-loaded .body-text {
362
+ font-family: 'Custom Font', Georgia, serif;
363
+ }
364
+
365
+ /* Or use font-display */
366
+ @font-face {
367
+ font-family: 'Display Font';
368
+ src: url('/fonts/display.woff2') format('woff2');
369
+ font-display: swap; /* Show fallback immediately, swap when loaded */
370
+ }
371
+
372
+ @font-face {
373
+ font-family: 'Body Font';
374
+ src: url('/fonts/body.woff2') format('woff2');
375
+ font-display: optional; /* Only use if already cached */
376
+ }
377
+ ```
378
+
379
+ ### JavaScript Font Loading API
380
+
381
+ ```javascript
382
+ // Check if fonts are loaded
383
+ document.fonts.ready.then(() => {
384
+ document.documentElement.classList.add('fonts-loaded');
385
+ });
386
+
387
+ // Load specific font
388
+ const font = new FontFace('Display', 'url(/fonts/display.woff2)');
389
+ font.load().then((loadedFont) => {
390
+ document.fonts.add(loadedFont);
391
+ document.body.classList.add('display-font-loaded');
392
+ });
393
+ ```
@@ -0,0 +1,256 @@
1
+ # Quick Reference — Full Rule Set (all 10 categories)
2
+
3
+ Load this file when doing a UI review/audit pass, or when you need the full checklist for a category beyond the priority table in the frontend-design SKILL.md. Each rule is also present verbatim in `data/ux-guidelines.csv` / `data/app-interface.csv` and is reachable via `--domain ux` / `--domain web` search — this file is a static index for quick scanning without a search round-trip.
4
+
5
+ ## Quick Reference
6
+
7
+ ### 1. Accessibility (CRITICAL)
8
+
9
+ - `color-contrast` - Minimum 4.5:1 ratio for normal text (large text 3:1); Material Design
10
+ - `focus-states` - Visible focus rings on interactive elements (2–4px; Apple HIG, MD)
11
+ - `alt-text` - Descriptive alt text for meaningful images
12
+ - `aria-labels` - aria-label for icon-only buttons; accessibilityLabel in native (Apple HIG)
13
+ - `icon-context` - Semantics depend on use: decorative icons beside visible text are hidden from the accessibility tree; meaningful icons need a text alternative; icon controls need an accessible name and applicable state
14
+ - `keyboard-nav` - Tab order matches visual order; full keyboard support (Apple HIG)
15
+ - `form-labels` - Use label with for attribute
16
+ - `skip-links` - Skip to main content for keyboard users
17
+ - `heading-hierarchy` - Sequential h1→h6, no level skip
18
+ - `color-not-only` - Don't convey info by color alone (add icon/text)
19
+ - `dynamic-type` - Support system text scaling; avoid truncation as text grows (Apple Dynamic Type, MD)
20
+ - `reduced-motion` - Respect prefers-reduced-motion; reduce/disable animations when requested (Apple Reduced Motion API, MD)
21
+ - `voiceover-sr` - Meaningful accessibilityLabel/accessibilityHint; logical reading order for VoiceOver/screen readers (Apple HIG, MD)
22
+ - `escape-routes` - Provide cancel/back in modals and multi-step flows (Apple HIG)
23
+ - `keyboard-shortcuts` - Preserve system and a11y shortcuts; offer keyboard alternatives for drag-and-drop (Apple HIG)
24
+ - `focus-not-obscured` - Sticky UI, overlays, and banners must not hide the keyboard-focused control (WCAG 2.2 AA)
25
+ - `focus-not-obscured-enhanced` - Keep the entire focused component visible (WCAG 2.2 AAA)
26
+ - `focus-appearance` - Verify focus indicator area and 3:1 state contrast; visible focus alone is not enough (WCAG 2.2 AAA)
27
+ - `dragging-alternative` - Every author-controlled drag action needs a single-pointer and keyboard alternative (WCAG 2.2 AA)
28
+ - `web-target-size` - Web pointer targets need 24×24 CSS px or a documented exception; do not substitute native units (WCAG 2.2 AA)
29
+ - `consistent-help` - Repeated help mechanisms stay in the same relative order across a page set (WCAG 2.2 A)
30
+ - `redundant-entry` - Reuse information already supplied in the same process unless re-entry is essential (WCAG 2.2 A)
31
+ - `accessible-authentication` - Allow password managers and paste; provide a non-cognitive authentication path (WCAG 2.2 Minimum, AA). The Enhanced AAA criterion is not represented in the dataset
32
+ - `auto-rotation-controls` - Carousels and moving content need pause/stop controls and must stop on focus or reduced motion (WAI)
33
+ - `contextual-live-badge-updates` - Announce a changed count/status as a complete contextual phrase without moving focus; use one appropriate live/status region and atomic updates only when needed
34
+
35
+ ### 2. Touch & Interaction (CRITICAL)
36
+
37
+ - `touch-target-size` - Min 44×44pt (Apple) / 48×48dp (Material); extend hit area beyond visual bounds if needed
38
+ - `touch-spacing` - Minimum 8px/8dp gap between touch targets (Apple HIG, MD)
39
+ - `hover-vs-tap` - Use click/tap for primary interactions; don't rely on hover alone
40
+ - `loading-buttons` - Disable button during async operations; show spinner or progress
41
+ - `error-feedback` - Clear error messages near problem
42
+ - `cursor-pointer` - Add cursor-pointer to clickable elements (Web)
43
+ - `gesture-conflicts` - Avoid horizontal swipe on main content; prefer vertical scroll
44
+ - `tap-delay` - Use touch-action: manipulation to reduce 300ms delay (Web)
45
+ - `standard-gestures` - Use platform standard gestures consistently; don't redefine (e.g. swipe-back, pinch-zoom) (Apple HIG)
46
+ - `system-gestures` - Don't block system gestures (Control Center, back swipe, etc.) (Apple HIG)
47
+ - `press-feedback` - Visual feedback on press (ripple/highlight; MD state layers)
48
+ - `haptic-feedback` - Use haptic for confirmations and important actions; avoid overuse (Apple HIG)
49
+ - `gesture-alternative` - Don't rely on gesture-only interactions; always provide visible controls for critical actions
50
+ - `safe-area-awareness` - Keep primary touch targets away from notch, Dynamic Island, gesture bar and screen edges
51
+ - `no-precision-required` - Avoid requiring pixel-perfect taps on small icons or thin edges
52
+ - `swipe-clarity` - Swipe actions must show clear affordance or hint (chevron, label, tutorial)
53
+ - `drag-threshold` - Use a movement threshold before starting drag to avoid accidental drags
54
+
55
+ ### 3. Performance (HIGH)
56
+
57
+ - `image-optimization` - Use WebP/AVIF, responsive images (srcset/sizes), lazy load non-critical assets
58
+ - `image-dimension` - Declare width/height or use aspect-ratio to prevent layout shift (Core Web Vitals: CLS)
59
+ - `font-loading` - Use font-display: swap/optional to avoid invisible text (FOIT); reserve space to reduce layout shift (MD)
60
+ - `font-preload` - Preload only critical fonts; avoid overusing preload on every variant
61
+ - `critical-css` - Prioritize above-the-fold CSS (inline critical CSS or early-loaded stylesheet)
62
+ - `lazy-loading` - Lazy load non-hero components via dynamic import / route-level splitting
63
+ - `bundle-splitting` - Split code by route/feature (React Suspense / Next.js dynamic) to reduce initial load and TTI
64
+ - `third-party-scripts` - Load third-party scripts async/defer; audit and remove unnecessary ones (MD)
65
+ - `reduce-reflows` - Avoid frequent layout reads/writes; batch DOM reads then writes
66
+ - `content-jumping` - Reserve space for async content to avoid layout jumps (Core Web Vitals: CLS)
67
+ - `lazy-load-below-fold` - Use loading="lazy" for below-the-fold images and heavy media
68
+ - `virtualize-lists` - Virtualize lists with 50+ items to improve memory efficiency and scroll performance
69
+ - `main-thread-budget` - Keep per-frame work under ~16ms for 60fps; move heavy tasks off main thread (HIG, MD)
70
+ - `progressive-loading` - Use skeleton screens / shimmer instead of long blocking spinners for >1s operations (Apple HIG)
71
+ - `input-latency` - Keep input latency under ~100ms for taps/scrolls (Material responsiveness standard)
72
+ - `tap-feedback-speed` - Provide visual feedback within 100ms of tap (Apple HIG)
73
+ - `debounce-throttle` - Use debounce/throttle for high-frequency events (scroll, resize, input)
74
+ - `offline-support` - Provide offline state messaging and basic fallback (PWA / mobile)
75
+ - `network-fallback` - Offer degraded modes for slow networks (lower-res images, fewer animations)
76
+
77
+ ### 4. Style Selection (HIGH)
78
+
79
+ - `style-match` - Match style to product type (use `--design-system` for recommendations)
80
+ - `consistency` - Use same style across all pages
81
+ - `no-emoji-icons` - Use SVG icons (Heroicons, Lucide), not emojis
82
+ - `color-palette-from-product` - Choose palette from product/industry (search `--domain color`)
83
+ - `effects-match-style` - Shadows, blur, radius aligned with chosen style (glass / flat / clay etc.)
84
+ - `platform-adaptive` - Respect platform idioms (iOS HIG vs Material): navigation, controls, typography, motion
85
+ - `state-clarity` - Make hover/pressed/disabled states visually distinct while staying on-style (Material state layers)
86
+ - `elevation-consistent` - Use a consistent elevation/shadow scale for cards, sheets, modals; avoid random shadow values
87
+ - `dark-mode-pairing` - Design light/dark variants together to keep brand, contrast, and style consistent
88
+ - `icon-style-consistent` - Use one icon set/visual language (stroke width, corner radius) across the product
89
+ - `system-controls` - Prefer native/system controls over fully custom ones; only customize when branding requires it (Apple HIG)
90
+ - `blur-purpose` - Use blur to indicate background dismissal (modals, sheets), not as decoration (Apple HIG)
91
+ - `primary-action` - Each screen should have only one primary CTA; secondary actions visually subordinate (Apple HIG)
92
+
93
+ ### 5. Layout & Responsive (HIGH)
94
+
95
+ - `viewport-meta` - width=device-width initial-scale=1 (never disable zoom)
96
+ - `mobile-first` - Design mobile-first, then scale up to tablet and desktop
97
+ - `breakpoint-consistency` - Use systematic breakpoints (e.g. 375 / 768 / 1024 / 1440)
98
+ - `readable-font-size` - Minimum 16px body text on mobile (avoids iOS auto-zoom)
99
+ - `line-length-control` - Mobile 35–60 chars per line; desktop 60–75 chars
100
+ - `horizontal-scroll` - No horizontal scroll on mobile; ensure content fits viewport width
101
+ - `spacing-scale` - Use 4pt/8dp incremental spacing system (Material Design)
102
+ - `touch-density` - Keep component spacing comfortable for touch: not cramped, not causing mis-taps
103
+ - `container-width` - Consistent max-width on desktop (max-w-6xl / 7xl)
104
+ - `z-index-management` - Define layered z-index scale (e.g. 0 / 10 / 20 / 40 / 100 / 1000)
105
+ - `fixed-element-offset` - Fixed navbar/bottom bar must reserve safe padding for underlying content
106
+ - `scroll-behavior` - Avoid nested scroll regions that interfere with the main scroll experience
107
+ - `viewport-units` - Prefer min-h-dvh over 100vh on mobile
108
+ - `orientation-support` - Keep layout readable and operable in landscape mode
109
+ - `content-priority` - Show core content first on mobile; fold or hide secondary content
110
+ - `visual-hierarchy` - Establish hierarchy via size, spacing, contrast — not color alone
111
+ - `compact-label-overflow` - Choose badge, status tag, filter chip, or removable value from its semantics; keep essential labels available and disclose unavoidable truncation to pointer and keyboard users
112
+ - `chip-collection-reflow` - Wrap the collection before shrinking labels; make a `+n` overflow summary an operable disclosure instead of hiding values
113
+
114
+ ### 6. Typography & Color (MEDIUM)
115
+
116
+ - `line-height` - Use 1.5-1.75 for body text
117
+ - `line-length` - Limit to 65-75 characters per line
118
+ - `font-pairing` - Match heading/body font personalities
119
+ - `font-scale` - Consistent type scale (e.g. 12 14 16 18 24 32)
120
+ - `contrast-readability` - Darker text on light backgrounds (e.g. slate-900 on white)
121
+ - `text-styles-system` - Use platform type system: iOS 11 Dynamic Type styles / Material 5 type roles (display, headline, title, body, label) (HIG, MD)
122
+ - `weight-hierarchy` - Use font-weight to reinforce hierarchy: Bold headings (600–700), Regular body (400), Medium labels (500) (MD)
123
+ - `color-semantic` - Define semantic color tokens (primary, secondary, error, surface, on-surface) not raw hex in components (Material color system)
124
+ - `color-dark-mode` - Dark mode uses desaturated / lighter tonal variants, not inverted colors; test contrast separately (HIG, MD)
125
+ - `color-accessible-pairs` - Foreground/background pairs must meet 4.5:1 (AA) or 7:1 (AAA); use tools to verify (WCAG, MD)
126
+ - `color-not-decorative-only` - Functional color (error red, success green) must include icon/text; avoid color-only meaning (HIG, MD)
127
+ - `truncation-strategy` - Prefer wrapping over truncation; when truncating use ellipsis and provide full text via tooltip/expand (Apple HIG)
128
+ - `letter-spacing` - Respect default letter-spacing per platform; avoid tight tracking on body text (HIG, MD)
129
+ - `number-tabular` - Use tabular/monospaced figures for data columns, prices, and timers to prevent layout shift
130
+ - `whitespace-balance` - Use whitespace intentionally to group related items and separate sections; avoid visual clutter (Apple HIG)
131
+ - `heading-line-balance` - Use balanced wrapping on short headings as a progressive, user-agent-controlled heuristic; keep natural wrapping readable and never force final words together with blanket nonbreaking spaces
132
+ - `long-token-wrapping` - Let URLs, IDs, and user content reflow with `overflow-wrap: anywhere` and a shrinkable flex/grid text child; do not apply `word-break: break-all` to normal prose
133
+
134
+ ### 7. Animation (MEDIUM)
135
+
136
+ - `duration-timing` - Choose shared motion tokens by distance, complexity, platform, and user context; test that feedback remains responsive instead of treating one duration range as universal
137
+ - `transform-performance` - Use transform/opacity only; avoid animating width/height/top/left
138
+ - `loading-states` - Match feedback to the expected wait and platform/component guidance; avoid both flashing indicators for near-instant work and unexplained long waits
139
+ - `excessive-motion` - Animate 1-2 key elements per view max
140
+ - `easing` - Use deceleration when arriving, acceleration when leaving, and linear motion for genuinely constant-rate progress or rotation
141
+ - `motion-meaning` - Every animation must express a cause-effect relationship, not just be decorative (Apple HIG)
142
+ - `state-transition` - State changes (hover / active / expanded / collapsed / modal) should animate smoothly, not snap
143
+ - `continuity` - Page/screen transitions should maintain spatial continuity (shared element, directional slide) (Apple HIG)
144
+ - `parallax-subtle` - Use parallax sparingly; must respect reduced-motion and not cause disorientation (Apple HIG)
145
+ - `spring-physics` - Prefer spring/physics-based curves over linear or cubic-bezier for natural feel (Apple HIG fluid animations)
146
+ - `exit-faster-than-enter` - Exit animations shorter than enter (~60–70% of enter duration) to feel responsive (MD motion)
147
+ - `stagger-sequence` - Stagger list/grid item entrance by 30–50ms per item; avoid all-at-once or too-slow reveals (MD)
148
+ - `shared-element-transition` - Use shared element / hero transitions for visual continuity between screens (MD, HIG)
149
+ - `interruptible` - Animations must be interruptible; user tap/gesture cancels in-progress animation immediately (Apple HIG)
150
+ - `no-blocking-animation` - Never block user input during an animation; UI must stay interactive (Apple HIG)
151
+ - `fade-crossfade` - Use crossfade for content replacement within the same container (MD)
152
+ - `scale-feedback` - Subtle scale (0.95–1.05) on press for tappable cards/buttons; restore on release (HIG, MD)
153
+ - `gesture-feedback` - Drag, swipe, and pinch must provide real-time visual response tracking the finger (MD Motion)
154
+ - `hierarchy-motion` - Use translate/scale direction to express hierarchy: enter from below = deeper, exit upward = back (MD)
155
+ - `motion-consistency` - Unify duration/easing tokens globally; all animations share the same rhythm and feel
156
+ - `opacity-threshold` - Fading elements should not linger below opacity 0.2; either fade fully or remain visible
157
+ - `modal-motion` - Modals/sheets should animate from their trigger source (scale+fade or slide-in) for spatial context (HIG, MD)
158
+ - `navigation-direction` - Forward navigation animates left/up; backward animates right/down — keep direction logically consistent (HIG)
159
+ - `layout-shift-avoid` - Animations must not cause layout reflow or CLS; use transform for position changes
160
+ - `cancellable-state-transitions` - Rapid state changes must cancel/replace prior micro-interactions safely, set the new final state explicitly, and never depend on an animation-end event for correctness
161
+
162
+ ### 8. Forms & Feedback (MEDIUM)
163
+
164
+ - `input-labels` - Visible label per input (not placeholder-only)
165
+ - `error-placement` - Show a specific error below the related field and connect it with aria-describedby
166
+ - `submit-feedback` - Loading then success/error state on submit
167
+ - `required-indicators` - Mark required fields (e.g. asterisk)
168
+ - `empty-states` - Helpful message and action when no content
169
+ - `toast-dismiss` - Auto-dismiss toasts in 3-5s
170
+ - `confirmation-dialogs` - Confirm before destructive actions
171
+ - `input-helper-text` - Provide persistent helper text below complex inputs, not just placeholder (Material Design)
172
+ - `disabled-states` - Disabled elements use reduced opacity (0.38–0.5) + cursor change + semantic attribute (MD)
173
+ - `progressive-disclosure` - Reveal complex options progressively; don't overwhelm users upfront (Apple HIG)
174
+ - `inline-validation` - Validate on blur (not keystroke); show error only after user finishes input (MD)
175
+ - `input-type-keyboard` - Use semantic input types (email, tel, number) to trigger the correct mobile keyboard (HIG, MD)
176
+ - `password-toggle` - Provide show/hide toggle for password fields (MD)
177
+ - `autofill-support` - Use autocomplete / textContentType attributes so the system can autofill (HIG, MD)
178
+ - `undo-support` - Allow undo for destructive or bulk actions (e.g. "Undo delete" toast) (Apple HIG)
179
+ - `success-feedback` - Confirm completed actions with brief visual feedback (checkmark, toast, color flash) (MD)
180
+ - `error-recovery` - Error messages must include a clear recovery path (retry, edit, help link) (HIG, MD)
181
+ - `multi-step-progress` - Multi-step flows show step indicator or progress bar; allow back navigation (MD)
182
+ - `form-autosave` - Long forms should auto-save drafts to prevent data loss on accidental dismissal (Apple HIG)
183
+ - `sheet-dismiss-confirm` - Confirm before dismissing a sheet/modal with unsaved changes (Apple HIG)
184
+ - `error-clarity` - Error messages must state cause + how to fix (not just "Invalid input") (HIG, MD)
185
+ - `field-grouping` - Group related fields logically (fieldset/legend or visual grouping) (MD)
186
+ - `read-only-distinction` - Read-only state should be visually and semantically different from disabled (MD)
187
+ - `focus-management` - After failed submission with multiple errors, focus the error summary; without a summary, focus the first invalid field
188
+ - `error-summary` - Put a focusable summary at the top after failed submit, link each item to its invalid field, and retain inline field errors
189
+ - `touch-friendly-input` - Mobile input height ≥44px to meet touch target requirements (Apple HIG)
190
+ - `destructive-emphasis` - Destructive actions use semantic danger color (red) and are visually separated from primary actions (HIG, MD)
191
+ - `toast-accessibility` - Toasts must not steal focus; use aria-live="polite" for screen reader announcement (WCAG)
192
+ - `aria-live-errors` - Form errors use aria-live region or role="alert" to notify screen readers (WCAG)
193
+ - `contrast-feedback` - Error and success state colors must meet 4.5:1 contrast ratio (WCAG, MD)
194
+ - `timeout-feedback` - Request timeout must show clear feedback with retry option (MD)
195
+
196
+ ### 9. Navigation Patterns (HIGH)
197
+
198
+ - `bottom-nav-limit` - Bottom navigation max 5 items; use labels with icons (Material Design)
199
+ - `drawer-usage` - Use drawer/sidebar for secondary navigation, not primary actions (Material Design)
200
+ - `back-behavior` - Back navigation must be predictable and consistent; preserve scroll/state (Apple HIG, MD)
201
+ - `deep-linking` - All key screens must be reachable via deep link / URL for sharing and notifications (Apple HIG, MD)
202
+ - `tab-bar-ios` - iOS: use bottom Tab Bar for top-level navigation (Apple HIG)
203
+ - `top-app-bar-android` - Android: use Top App Bar with navigation icon for primary structure (Material Design)
204
+ - `nav-label-icon` - Navigation items must have both icon and text label; icon-only nav harms discoverability (MD)
205
+ - `nav-state-active` - Current location must be visually highlighted (color, weight, indicator) in navigation (HIG, MD)
206
+ - `nav-hierarchy` - Primary nav (tabs/bottom bar) vs secondary nav (drawer/settings) must be clearly separated (MD)
207
+ - `modal-escape` - Modals and sheets must offer a clear close/dismiss affordance; swipe-down to dismiss on mobile (Apple HIG)
208
+ - `search-accessible` - Search must be easily reachable (top bar or tab); provide recent/suggested queries (MD)
209
+ - `breadcrumb-web` - Web: use breadcrumbs for 3+ level deep hierarchies to aid orientation (MD)
210
+ - `state-preservation` - Navigating back must restore previous scroll position, filter state, and input (HIG, MD)
211
+ - `gesture-nav-support` - Support system gesture navigation (iOS swipe-back, Android predictive back) without conflict (HIG, MD)
212
+ - `tab-badge` - Use badges on nav items sparingly to indicate unread/pending; clear after user visits (HIG, MD)
213
+ - `overflow-menu` - When actions exceed available space, use overflow/more menu instead of cramming (MD)
214
+ - `bottom-nav-top-level` - Bottom nav is for top-level screens only; never nest sub-navigation inside it (MD)
215
+ - `adaptive-navigation` - Large screens (≥1024px) prefer sidebar; small screens use bottom/top nav (Material Adaptive)
216
+ - `back-stack-integrity` - Never silently reset the navigation stack or unexpectedly jump to home (HIG, MD)
217
+ - `navigation-consistency` - Navigation placement must stay the same across all pages; don't change by page type
218
+ - `avoid-mixed-patterns` - Don't mix Tab + Sidebar + Bottom Nav at the same hierarchy level
219
+ - `modal-vs-navigation` - Modals must not be used for primary navigation flows; they break the user's path (HIG)
220
+ - `focus-on-route-change` - After page transition, move focus to main content region for screen reader users (WCAG)
221
+ - `persistent-nav` - Core navigation must remain reachable from deep pages; don't hide it entirely in sub-flows (HIG, MD)
222
+ - `destructive-nav-separation` - Dangerous actions (delete account, logout) must be visually and spatially separated from normal nav items (HIG, MD)
223
+ - `empty-nav-state` - When a nav destination is unavailable, explain why instead of silently hiding it (MD)
224
+
225
+ ### 10. Charts & Data (LOW)
226
+
227
+ - `chart-type` - Match chart type to data type (trend → line, comparison → bar, proportion → pie/donut)
228
+ - `color-guidance` - Use accessible color palettes; avoid red/green only pairs for colorblind users (WCAG, MD)
229
+ - `data-table` - Provide table alternative for accessibility; charts alone are not screen-reader friendly (WCAG)
230
+ - `pattern-texture` - Supplement color with patterns, textures, or shapes so data is distinguishable without color (WCAG, MD)
231
+ - `legend-visible` - Always show legend; position near the chart, not detached below a scroll fold (MD)
232
+ - `tooltip-on-interact` - Provide tooltips/data labels on hover (Web) or tap (mobile) showing exact values (HIG, MD)
233
+ - `axis-labels` - Label axes with units and readable scale; avoid truncated or rotated labels on mobile
234
+ - `responsive-chart` - Charts must reflow or simplify on small screens (e.g. horizontal bar instead of vertical, fewer ticks)
235
+ - `empty-data-state` - Show meaningful empty state when no data exists ("No data yet" + guidance), not a blank chart (MD)
236
+ - `loading-chart` - Use skeleton or shimmer placeholder while chart data loads; don't show an empty axis frame
237
+ - `animation-optional` - Chart entrance animations must respect prefers-reduced-motion; data should be readable immediately (HIG)
238
+ - `large-dataset` - For 1000+ data points, aggregate or sample; provide drill-down for detail instead of rendering all (MD)
239
+ - `number-formatting` - Use locale-aware formatting for numbers, dates, currencies on axes and labels (HIG, MD)
240
+ - `touch-target-chart` - Interactive chart elements (points, segments) must have ≥44pt tap area or expand on touch (Apple HIG)
241
+ - `no-pie-overuse` - Avoid pie/donut for >5 categories; switch to bar chart for clarity
242
+ - `contrast-data` - Data lines/bars vs background ≥3:1; data text labels ≥4.5:1 (WCAG)
243
+ - `legend-interactive` - Legends should be clickable to toggle series visibility (MD)
244
+ - `direct-labeling` - For small datasets, label values directly on the chart to reduce eye travel
245
+ - `tooltip-keyboard` - Tooltip content must be keyboard-reachable and not rely on hover alone (WCAG)
246
+ - `sortable-table` - Data tables must support sorting with aria-sort indicating current sort state (WCAG)
247
+ - `axis-readability` - Axis ticks must not be cramped; maintain readable spacing, auto-skip on small screens
248
+ - `data-density` - Limit information density per chart to avoid cognitive overload; split into multiple charts if needed
249
+ - `trend-emphasis` - Emphasize data trends over decoration; avoid heavy gradients/shadows that obscure the data
250
+ - `gridline-subtle` - Grid lines should be low-contrast (e.g. gray-200) so they don't compete with data
251
+ - `focusable-elements` - Interactive chart elements (points, bars, slices) must be keyboard-navigable (WCAG)
252
+ - `screen-reader-summary` - Provide a text summary or aria-label describing the chart's key insight for screen readers (WCAG)
253
+ - `error-state-chart` - Data load failure must show error message with retry action, not a broken/empty chart
254
+ - `export-option` - For data-heavy products, offer CSV/image export of chart data
255
+ - `drill-down-consistency` - Drill-down interactions must maintain a clear back-path and hierarchy breadcrumb
256
+ - `time-scale-clarity` - Time series charts must clearly label time granularity (day/week/month) and allow switching