@ericrisco/rsc 3.3.1 → 3.5.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.
Files changed (61) hide show
  1. package/README.md +3 -3
  2. package/manifest.json +43 -22
  3. package/package.json +1 -1
  4. package/scripts/lib/default-skill-floor.js +5 -1
  5. package/scripts/lib/domains.js +2 -2
  6. package/scripts/lib/retired-skills.js +4 -0
  7. package/scripts/rsc.js +1 -1
  8. package/skills/design/SKILL.md +4 -3
  9. package/skills/design/evals/cases.yaml +2 -2
  10. package/skills/ftd/SKILL.md +1 -1
  11. package/skills/react/SKILL.md +2 -1
  12. package/skills/ux/SKILL.md +149 -0
  13. package/skills/ux/THIRD_PARTY.md +32 -0
  14. package/skills/ux/evals/cases.yaml +40 -0
  15. package/skills/ux/references/flows.md +124 -0
  16. package/skills/ux/upstream/UPSTREAM.json +59 -0
  17. package/skills/ux/upstream/ux-designer/GUIDE.md +180 -0
  18. package/skills/ux/upstream/ux-designer/LICENSE +21 -0
  19. package/skills/ux/upstream/ux-designer/references/01-core-principles.md +251 -0
  20. package/skills/ux/upstream/ux-designer/references/02-laws-of-ux.md +330 -0
  21. package/skills/ux/upstream/ux-designer/references/03-accessibility.md +411 -0
  22. package/skills/ux/upstream/ux-designer/references/04-visual-design.md +433 -0
  23. package/skills/ux/upstream/ux-designer/references/05-information-architecture.md +432 -0
  24. package/skills/ux/upstream/ux-designer/references/06-interaction-design.md +495 -0
  25. package/skills/ux/upstream/ux-designer/references/07-forms-and-inputs.md +491 -0
  26. package/skills/ux/upstream/ux-designer/references/08-mobile-ux.md +539 -0
  27. package/skills/ux/upstream/ux-designer/references/09-ux-writing.md +493 -0
  28. package/skills/ux/upstream/ux-designer/references/10-user-research.md +533 -0
  29. package/skills/ux/upstream/ux-designer/references/11-design-systems.md +618 -0
  30. package/skills/ux/upstream/ux-designer/references/12a-presence-awareness.md +395 -0
  31. package/skills/ux/upstream/ux-designer/references/12b-conflict-resolution-sync.md +420 -0
  32. package/skills/ux/upstream/ux-designer/references/13a-canvas-navigation.md +388 -0
  33. package/skills/ux/upstream/ux-designer/references/13b-canvas-objects-performance.md +559 -0
  34. package/skills/ux/upstream/ux-designer/references/14-ai-ux-patterns.md +511 -0
  35. package/skills/ux/upstream/ux-designer/references/15-ethical-design.md +419 -0
  36. package/skills/ux/upstream/ux-designer/references/16-onboarding.md +430 -0
  37. package/skills/ux/upstream/ux-designer/references/17-notifications.md +461 -0
  38. package/skills/ux/upstream/ux-designer/references/18-data-visualization.md +453 -0
  39. package/skills/ux/upstream/ux-designer/references/19-search-ux.md +479 -0
  40. package/skills/ux/upstream/ux-designer/references/20-emotional-design.md +382 -0
  41. package/skills/ux/upstream/ux-designer/references/21-data-tables.md +629 -0
  42. package/skills/ux/upstream/ux-designer/references/22-performance-ux.md +626 -0
  43. package/skills/ux/upstream/ux-designer/references/23-internationalization.md +347 -0
  44. package/skills/ux/upstream/ux-designer/references/24-voice-and-multimodal.md +308 -0
  45. package/skills/ux/upstream/ux-designer/references/25a-barcode-camera-scanning.md +342 -0
  46. package/skills/ux/upstream/ux-designer/references/25b-barcode-scanner-workflows.md +412 -0
  47. package/skills/ux/upstream/ux-designer/references/25c-barcode-display.md +277 -0
  48. package/skills/ux/upstream/ux-usability-foundations/GUIDE.md +285 -0
  49. package/skills/ux/upstream/ux-usability-foundations/LICENSE +21 -0
  50. package/skills/ux/upstream/ux-usability-foundations/references/anti-patterns.md +267 -0
  51. package/skills/ux/upstream/ux-usability-foundations/references/checklists.md +130 -0
  52. package/skills/ux/upstream/ux-usability-foundations/references/decision-prompts.md +340 -0
  53. package/skills/ux/upstream/ux-usability-foundations/references/principle-cards.md +449 -0
  54. package/skills/worktrees/SKILL.md +19 -5
  55. package/targets/branch-guard.mjs +59 -4
  56. package/targets/clone-bootstrap.mjs +1 -1
  57. package/targets/session-memory-adapter.mjs +2 -2
  58. package/targets/team-safe-start.mjs +1 -0
  59. package/targets/worktree-reaper.mjs +14 -1
  60. package/skills/ui-engineering/SKILL.md +0 -113
  61. package/skills/ui-engineering/evals/cases.yaml +0 -38
@@ -0,0 +1,433 @@
1
+ # Visual Design
2
+
3
+ Visual design encompasses color theory, typography, layout, and the principles that make interfaces aesthetically pleasing and functional.
4
+
5
+ ---
6
+
7
+ ## Contents
8
+
9
+ - Color Theory
10
+ - Typography
11
+ - Visual Hierarchy
12
+ - Whitespace and Spacing
13
+ - Layout Principles
14
+ - 2026 Trends
15
+ - Tools and Resources
16
+ - Sources
17
+
18
+ ---
19
+
20
+ ## Color Theory
21
+
22
+ ### Color Psychology
23
+
24
+ Colors evoke specific emotions and influence user behavior.
25
+
26
+ | Color | Associations | Common Uses |
27
+ |-------|--------------|-------------|
28
+ | **Red** | Energy, urgency, passion, danger | Errors, sales, CTAs |
29
+ | **Orange** | Enthusiasm, creativity, warmth | Notifications, CTAs |
30
+ | **Yellow** | Optimism, warning, attention | Warnings, highlights |
31
+ | **Green** | Growth, success, nature, calm | Success states, eco themes |
32
+ | **Blue** | Trust, stability, professionalism | Corporate, tech, links |
33
+ | **Purple** | Luxury, creativity, mystery | Premium products |
34
+ | **Pink** | Playful, romantic, youthful | Fashion, lifestyle |
35
+ | **Black** | Sophistication, power, elegance | Luxury, fashion |
36
+ | **White** | Purity, simplicity, cleanliness | Minimalist designs |
37
+ | **Gray** | Neutral, professional, balanced | Backgrounds, borders |
38
+
39
+ ### The 60-30-10 Rule
40
+
41
+ A balanced color palette distribution:
42
+
43
+ ```
44
+ 60% - Dominant color (backgrounds, large areas)
45
+ 30% - Secondary color (supporting elements)
46
+ 10% - Accent color (CTAs, highlights)
47
+ ```
48
+
49
+ **Example:**
50
+ ```css
51
+ :root {
52
+ --color-dominant: #ffffff; /* 60% - Background */
53
+ --color-secondary: #f5f5f5; /* 30% - Cards, sections */
54
+ --color-accent: #0066cc; /* 10% - Buttons, links */
55
+ }
56
+ ```
57
+
58
+ ### Color Harmonies
59
+
60
+ | Harmony | Description | Use Case |
61
+ |---------|-------------|----------|
62
+ | **Monochromatic** | Shades of one hue | Clean, cohesive |
63
+ | **Complementary** | Opposite on color wheel | High contrast, vibrant |
64
+ | **Analogous** | Adjacent on wheel | Harmonious, natural |
65
+ | **Triadic** | Three equidistant colors | Balanced, dynamic |
66
+ | **Split-complementary** | Base + two adjacent to complement | Vibrant but balanced |
67
+
68
+ ### Contrast for Accessibility
69
+
70
+ ```css
71
+ /* WCAG 2.2 Requirements */
72
+
73
+ /* Normal text (< 18pt) */
74
+ /* Minimum contrast: 4.5:1 (AA), 7:1 (AAA) */
75
+
76
+ /* Large text (≥ 18pt or 14pt bold) */
77
+ /* Minimum contrast: 3:1 (AA), 4.5:1 (AAA) */
78
+
79
+ /* UI Components */
80
+ /* Minimum contrast: 3:1 */
81
+ ```
82
+
83
+ ### Colorblind-Safe Design
84
+
85
+ ~8% of men and ~0.5% of women have color vision deficiency.
86
+
87
+ ```
88
+ Best Practices:
89
+ - Don't use color alone to convey meaning
90
+ - Add icons, patterns, or text labels
91
+ - Test with colorblind simulation tools
92
+ - Use sufficient contrast between colors
93
+ - Avoid red/green combinations for critical info
94
+ ```
95
+
96
+ ### Dark Mode Considerations
97
+
98
+ ```css
99
+ /* Use CSS custom properties for theming */
100
+ :root {
101
+ --bg-primary: #ffffff;
102
+ --text-primary: #1a1a1a;
103
+ --accent: #0066cc;
104
+ }
105
+
106
+ @media (prefers-color-scheme: dark) {
107
+ :root {
108
+ --bg-primary: #1a1a1a;
109
+ --text-primary: #f5f5f5;
110
+ --accent: #66b3ff;
111
+ }
112
+ }
113
+
114
+ /* Reduce contrast slightly in dark mode */
115
+ /* Pure white (#fff) on black (#000) can cause eye strain */
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Typography
121
+
122
+ ### Font Selection
123
+
124
+ **Categories:**
125
+ - **Sans-serif:** Clean, modern, screen-friendly (Roboto, Inter, SF Pro)
126
+ - **Serif:** Traditional, authoritative, editorial (Georgia, Merriweather)
127
+ - **Monospace:** Technical, code, data (Fira Code, JetBrains Mono)
128
+
129
+ **Guidelines:**
130
+ - Limit to 2-3 typefaces maximum
131
+ - Use web-safe fonts or system fonts for performance
132
+ - Consider font loading strategy (FOUT, FOIT)
133
+
134
+ ```css
135
+ /* System font stack for performance */
136
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
137
+ Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
138
+ ```
139
+
140
+ ### Size Scale
141
+
142
+ ```css
143
+ /* Type scale with 1.25 ratio (Major Third) */
144
+ :root {
145
+ --text-xs: 0.75rem; /* 12px - Captions */
146
+ --text-sm: 0.875rem; /* 14px - Small text */
147
+ --text-base: 1rem; /* 16px - Body (minimum) */
148
+ --text-lg: 1.25rem; /* 20px - Large body */
149
+ --text-xl: 1.5rem; /* 24px - H3 */
150
+ --text-2xl: 2rem; /* 32px - H2 */
151
+ --text-3xl: 2.5rem; /* 40px - H1 */
152
+ --text-4xl: 3rem; /* 48px - Display */
153
+ }
154
+ ```
155
+
156
+ **Minimum sizes:**
157
+ - Body text: 16px
158
+ - Mobile body: 16px (prevents zoom on iOS)
159
+ - Small text: 12px (use sparingly)
160
+
161
+ ### Line Height
162
+
163
+ ```css
164
+ /* Optimal line heights */
165
+ body {
166
+ line-height: 1.5; /* 1.4-1.6 for body text */
167
+ }
168
+
169
+ h1, h2, h3 {
170
+ line-height: 1.2; /* Tighter for headings */
171
+ }
172
+
173
+ .compact {
174
+ line-height: 1.3; /* UI elements, buttons */
175
+ }
176
+ ```
177
+
178
+ ### Line Length
179
+
180
+ Optimal reading: **50-75 characters per line**
181
+
182
+ ```css
183
+ /* Constrain line length */
184
+ .prose {
185
+ max-width: 65ch; /* ~65 characters */
186
+ }
187
+
188
+ /* Alternatively */
189
+ .content {
190
+ max-width: 700px;
191
+ padding: 0 1rem;
192
+ }
193
+ ```
194
+
195
+ ### Text Alignment
196
+
197
+ ```
198
+ Left-aligned (default):
199
+ - Best for readability
200
+ - Consistent starting point
201
+ - Recommended for body text
202
+
203
+ Center-aligned:
204
+ - Short text only (headlines, CTAs)
205
+ - Creates visual anchor
206
+
207
+ Right-aligned:
208
+ - Numbers in tables
209
+ - RTL languages
210
+ - Avoid for body text
211
+
212
+ Justified:
213
+ - Creates uneven word spacing
214
+ - Avoid for web (no hyphenation)
215
+ - WCAG discourages for accessibility
216
+ ```
217
+
218
+ ### Fluid Typography
219
+
220
+ ```css
221
+ /* Responsive font sizes with clamp() */
222
+ h1 {
223
+ font-size: clamp(2rem, 5vw + 1rem, 4rem);
224
+ }
225
+
226
+ body {
227
+ font-size: clamp(1rem, 2.5vw, 1.25rem);
228
+ }
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Visual Hierarchy
234
+
235
+ ### Establishing Hierarchy
236
+
237
+ 1. **Size** - Larger = more important
238
+ 2. **Weight** - Bolder = more important
239
+ 3. **Color** - Contrast draws attention
240
+ 4. **Position** - Top/left (LTR) = primary
241
+ 5. **Space** - Isolation = emphasis
242
+ 6. **Depth** - Shadows, layers
243
+
244
+ ### Heading Hierarchy
245
+
246
+ ```html
247
+ <!-- Single H1 per page -->
248
+ <h1>Page Title</h1>
249
+ <h2>Section</h2>
250
+ <h3>Subsection</h3>
251
+ <h4>Detail</h4>
252
+ <h2>Another Section</h2>
253
+ ```
254
+
255
+ ### Visual Weight
256
+
257
+ ```css
258
+ /* Primary action - highest weight */
259
+ .btn-primary {
260
+ background: var(--accent);
261
+ color: white;
262
+ font-weight: 600;
263
+ }
264
+
265
+ /* Secondary action - medium weight */
266
+ .btn-secondary {
267
+ background: transparent;
268
+ border: 2px solid var(--accent);
269
+ color: var(--accent);
270
+ }
271
+
272
+ /* Tertiary action - lowest weight */
273
+ .btn-tertiary {
274
+ background: transparent;
275
+ color: var(--accent);
276
+ text-decoration: underline;
277
+ }
278
+ ```
279
+
280
+ ---
281
+
282
+ ## Whitespace and Spacing
283
+
284
+ ### The Role of Whitespace
285
+
286
+ - **Breathing room** - Reduces visual clutter
287
+ - **Grouping** - Related items closer together
288
+ - **Focus** - Isolation creates emphasis
289
+ - **Readability** - Improves comprehension
290
+
291
+ ### Spacing Scale
292
+
293
+ ```css
294
+ /* Consistent spacing scale */
295
+ :root {
296
+ --space-xs: 0.25rem; /* 4px */
297
+ --space-sm: 0.5rem; /* 8px */
298
+ --space-md: 1rem; /* 16px */
299
+ --space-lg: 1.5rem; /* 24px */
300
+ --space-xl: 2rem; /* 32px */
301
+ --space-2xl: 3rem; /* 48px */
302
+ --space-3xl: 4rem; /* 64px */
303
+ }
304
+ ```
305
+
306
+ ### Applying Spacing
307
+
308
+ ```css
309
+ /* Consistent component spacing */
310
+ .card {
311
+ padding: var(--space-lg);
312
+ margin-bottom: var(--space-xl);
313
+ }
314
+
315
+ /* Related items closer */
316
+ .form-field label {
317
+ margin-bottom: var(--space-xs);
318
+ }
319
+
320
+ /* Distinct sections further */
321
+ .section + .section {
322
+ margin-top: var(--space-3xl);
323
+ }
324
+ ```
325
+
326
+ ---
327
+
328
+ ## Layout Principles
329
+
330
+ ### Grid Systems
331
+
332
+ ```css
333
+ /* CSS Grid for page layout */
334
+ .page {
335
+ display: grid;
336
+ grid-template-columns: repeat(12, 1fr);
337
+ gap: var(--space-lg);
338
+ }
339
+
340
+ /* Flexbox for component layout */
341
+ .card-grid {
342
+ display: flex;
343
+ flex-wrap: wrap;
344
+ gap: var(--space-md);
345
+ }
346
+ ```
347
+
348
+ ### Responsive Breakpoints
349
+
350
+ ```css
351
+ /* Mobile-first breakpoints */
352
+ /* Base: Mobile (< 640px) */
353
+
354
+ @media (min-width: 640px) {
355
+ /* Tablet portrait */
356
+ }
357
+
358
+ @media (min-width: 768px) {
359
+ /* Tablet landscape */
360
+ }
361
+
362
+ @media (min-width: 1024px) {
363
+ /* Desktop */
364
+ }
365
+
366
+ @media (min-width: 1280px) {
367
+ /* Large desktop */
368
+ }
369
+ ```
370
+
371
+ ### Content Alignment
372
+
373
+ ```css
374
+ /* Center content with max-width */
375
+ .container {
376
+ width: 100%;
377
+ max-width: 1200px;
378
+ margin: 0 auto;
379
+ padding: 0 var(--space-md);
380
+ }
381
+ ```
382
+
383
+ ---
384
+
385
+ ## 2026 Trends
386
+
387
+ ### AI-Adaptive Interfaces
388
+ - Colors and layouts that adjust based on user behavior
389
+ - Personalized visual preferences
390
+ - Context-aware theming
391
+
392
+ ### Warm, Soft Colors
393
+ - Moving away from stark whites
394
+ - Beige, pale pink, peach tones
395
+ - Psychologically inviting
396
+
397
+ ### Fluid Design
398
+ - Dynamic, responsive everything
399
+ - Container queries
400
+ - Fluid spacing and typography
401
+
402
+ ### Glassmorphism (Continued)
403
+ - Frosted glass effects
404
+ - Subtle transparency
405
+ - Depth through blur
406
+
407
+ ---
408
+
409
+ ## Tools and Resources
410
+
411
+ ### Color
412
+ - [Coolors](https://coolors.co/) - Palette generator
413
+ - [Adobe Color](https://color.adobe.com/) - Color wheel
414
+ - [Contrast Checker](https://webaim.org/resources/contrastchecker/)
415
+
416
+ ### Typography
417
+ - [Type Scale](https://type-scale.com/) - Visual calculator
418
+ - [Fontpair](https://fontpair.co/) - Font combinations
419
+ - [Google Fonts](https://fonts.google.com/)
420
+
421
+ ### Design Systems
422
+ - [Tailwind UI](https://tailwindui.com/)
423
+ - [Material Design](https://m3.material.io/)
424
+ - [Apple HIG](https://developer.apple.com/design/)
425
+
426
+ ---
427
+
428
+ ## Sources
429
+
430
+ - [Smashing Magazine - Color Psychology](https://www.smashingmagazine.com/)
431
+ - [Interaction Design Foundation - Typography](https://www.interaction-design.org/)
432
+ - [Practical Typography](https://practicaltypography.com/)
433
+ - [Refactoring UI](https://www.refactoringui.com/)