@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,59 @@
1
+ {
2
+ "ux-designer": {
3
+ "repo": "szilu/ux-designer-skill",
4
+ "path": ".",
5
+ "commit": "c869d32fd8df7bd7fcd1db68e93bd3e89eed5161",
6
+ "license": "MIT",
7
+ "copyright": "Copyright (c) 2026 Szilárd Hajba",
8
+ "note": "GUIDE.md is the upstream SKILL.md with its YAML front matter removed; every other file is copied unmodified.",
9
+ "files": {
10
+ "GUIDE.md": "7c0d77afe18cbe3bc25364fdf11e8752c6b100ca4e159ef9c43884db5f72d7dc",
11
+ "LICENSE": "311bce427930791e38cee5f4e81b83240e8ae2b57629e5fec57e1283769f0912",
12
+ "references/01-core-principles.md": "6df0640b7c438d1ffe83fa057d22030d7bc58569d97094871b441ded02cdea76",
13
+ "references/02-laws-of-ux.md": "95cad93c188503434764ceae97ce2fd31d1fbe7521ffd93107653e381d5c9c07",
14
+ "references/03-accessibility.md": "ad72653487f7a4bb194b86999ee12013aa47cd090a4380d4bf6eb2aec0584ac2",
15
+ "references/04-visual-design.md": "567fb260d75c70b2c295dfd36f3ed3115f50a0b098409ef24e98dc9202c6f694",
16
+ "references/05-information-architecture.md": "c4b552783851595166f6aa99cb3486c1b834303c541a35a5d6a82d4b25727425",
17
+ "references/06-interaction-design.md": "d113a969a2af0fc70765076591b5e7c75ab38088a54713d5a1b65ca13b31d669",
18
+ "references/07-forms-and-inputs.md": "1b23668b13c5953c35038ce30ff5e8bcbc06a29f7a559c53b7be9ddbe59c9d5a",
19
+ "references/08-mobile-ux.md": "b8ad95440a69e48540bf10f03d427942a7b53fdfaec28e89ebb5fe9933445909",
20
+ "references/09-ux-writing.md": "080d74e76827972459ba359456f291bfa014fcaf9fff0fc0e6c7780446eef575",
21
+ "references/10-user-research.md": "83c1a817a02aa977659bb3c0526db0747f320c204b3e24e33629939e1760544f",
22
+ "references/11-design-systems.md": "82c4fc83b6b28003d76ecb1b310eed274c6c34f87653e729f33950021e88b006",
23
+ "references/12a-presence-awareness.md": "46834ec1c85df71982c339ab57cec807d1f4ff1a30da124c80e0f1f7dc6fb65a",
24
+ "references/12b-conflict-resolution-sync.md": "341abb08b5edeeabdb46437bf041aac8a38d1d77f96aa71642843558888e74c9",
25
+ "references/13a-canvas-navigation.md": "33025d1b3b5af85ce96071190d83305b34d28093089104f20b4ddb05c45f892b",
26
+ "references/13b-canvas-objects-performance.md": "9fe50592d1b5e211f2f7f0a9e7e018032530b58421b914afcc977ffccd08dc45",
27
+ "references/14-ai-ux-patterns.md": "c229438a2e33be662732200089a2b495811a3c8716b7e1d8daa25a23ca3035ea",
28
+ "references/15-ethical-design.md": "cd9f45ca9955cd19c14a39cc0143265591daf0749d45f54245d5e5a57622543f",
29
+ "references/16-onboarding.md": "af766e664963847367140c25de25edd308ae8bea21dfa76b790f4f3ca06a60d8",
30
+ "references/17-notifications.md": "d1bd3d109d3f8a3d16d77149c12cba3bc7032b417c1eea7f279159a49a332265",
31
+ "references/18-data-visualization.md": "6b2cfdd8f26b8372e09affd06a1881b4e21c3eb87206a63f053c86a52844195b",
32
+ "references/19-search-ux.md": "0f54a38b36ff83a14d4d3823c99bb09672fc8cee82f78f4359d22a9594bfb600",
33
+ "references/20-emotional-design.md": "5e8a1eb86c8362b9647d1a08a6fbb1b6fd5308dd5dad8aa63deb8470cad8fda5",
34
+ "references/21-data-tables.md": "84613ad183fa8fdb68389e2f0cce9b62296be18683ee82b5c9c23fc1dc111225",
35
+ "references/22-performance-ux.md": "8f9cfdc92398bb33b00720ab9be6199b1ad542706017bb8bb18f5bd3cf12655c",
36
+ "references/23-internationalization.md": "cafe080ec744cd6bdf10d808bb8111fd9a3b8586351d0a374e30fff8dcbbf5d7",
37
+ "references/24-voice-and-multimodal.md": "056367b50b8e8deb8e0599792c576371c79e4a89e63bd0c324a6351336c1a5d5",
38
+ "references/25a-barcode-camera-scanning.md": "4818b00cefbde5d77c351706ba2303f94b2107a170b55bae173928a89d97b31f",
39
+ "references/25b-barcode-scanner-workflows.md": "2f5ee30906e4e56ed2af867c12c21586672ad3f95462634847b408b763feadeb",
40
+ "references/25c-barcode-display.md": "9c9c4d52b9537e44bac7457365f1e45b931f6a72699de39a3c04abfe604fc9f1"
41
+ }
42
+ },
43
+ "ux-usability-foundations": {
44
+ "repo": "hueyexe/frontend-agent-skills",
45
+ "path": "ux-usability-foundations",
46
+ "commit": "2841c079dd8a9c634882227194dc42e25227710d",
47
+ "license": "MIT",
48
+ "copyright": "Copyright (c) 2026 hueyexe",
49
+ "note": "GUIDE.md is the upstream SKILL.md with its YAML front matter removed; every other file is copied unmodified. LICENSE is the repository licence.",
50
+ "files": {
51
+ "GUIDE.md": "1eafbca92bcd8a23a4ded6d5eade8f0d6cfd6477831c2fff73c84635c149bcb2",
52
+ "LICENSE": "5701f83f101aae5c7d89a1d44087663bd13187c043f6f2b4dc9b7a5a883db034",
53
+ "references/anti-patterns.md": "007e85bee463f247f89e58e2cc8bb11e373399bfd4ba7cfb8005385ae807f1a8",
54
+ "references/checklists.md": "3eea35605918f471d1019502294e08c0e42f70c81d4a4c9e3849cb80573ff833",
55
+ "references/decision-prompts.md": "741090dda5b23732853ef6fafb19f3102d1f8bfe7022049c7bd4efefd3581713",
56
+ "references/principle-cards.md": "301e976e5accef00f999e03a2196031122d57a0346e120982f799be82d4f6994"
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,180 @@
1
+ # UX Designer
2
+
3
+ Use this skill for three jobs: **reviewing** an interface (a screenshot, a URL, or code), **building** UI, and **advising** on a design decision. You know the general UX canon already. This file gives you the workflows, the numbers, and the calls that are easy to get wrong. The reference files go deeper, so load only the ones the task needs (see the routing table).
4
+
5
+ ## Philosophy
6
+
7
+ - **Calm over clever.** Motion, color, and density have to help the user understand something. Decoration that only impresses is noise.
8
+ - **Judgment over polish.** Anyone can generate polished UI now, so the value is in correctness, research, and knowing what to leave out.
9
+ - **AI as copilot, not autopilot.** AI assistance is optional, labeled, reversible, and the user stays in control.
10
+ - **Adapt to real needs.** Avoid opaque or manipulative personalization.
11
+
12
+ ## Workflow: Reviewing or auditing a UI
13
+
14
+ 1. **Establish context.** Identify the users, their primary task, the platform, and any stated constraints (brand, design system, legal regime). If there's no context, assume a general audience and say so.
15
+ 2. **Look at the real thing.** Render it if you can: take a screenshot or open it in the browser. Walk through the primary task with the keyboard only, and run an automated checker (axe, Lighthouse) when a browser is available. Reading code alone misses contrast, overflow, focus order, and layout at other widths.
16
+ 3. **Check at the extremes.** Try 320px width, 200% zoom, a long translated string, empty data, huge data, a slow network, an error state, and `dir="rtl"` if the product is localized.
17
+ 4. **Report findings ranked by user impact**, not in checklist order:
18
+
19
+ ```
20
+ [Blocker|Major|Minor] <what is wrong> — <who it hurts and how>
21
+ Where: <screen/component or file:line>
22
+ Fix: <concrete change> Ref: <heuristic / WCAG SC / reference file>
23
+ ```
24
+
25
+ A blocker stops a user from completing the task, or it's a legal accessibility failure. Cite WCAG success criteria by number (for example, 2.4.11 Focus Not Obscured). Skip praise padding. If a pass finds nothing serious, say that plainly.
26
+
27
+ ## Workflow: Building UI
28
+
29
+ 1. **Reuse before inventing.** Look for an existing design system, tokens, component library, and nearby screens. Match them, even where your own taste differs.
30
+ 2. **Design every state,** not only the happy path: empty, loading, partial, error, offline, permission-denied, and overflow (long names, 0/1/many items).
31
+ 3. **Semantics first.** Start from native elements (`<button>`, `<label>`, `<dialog>`, `<details>`, `<input type=…>`). Add ARIA only when no native element fits.
32
+ 4. **Verify by looking.** Render the result. Check it at mobile width, with the keyboard, and in dark mode if the product supports it. Fix what you see and check again.
33
+
34
+ ### Generated-UI defaults to avoid
35
+
36
+ These are telltale marks of model-generated interfaces. Don't use them unless the brand calls for them:
37
+ - Purple/indigo gradients, glassmorphism, and glow shadows used as default styling
38
+ - Emoji standing in for icons, and decorative icons on every heading or list item
39
+ - A card around everything, nested cards, and every section centered with the same padding
40
+ - Hero sections, testimonials, and marketing filler inside app UI that doesn't need them
41
+ - Lorem-ipsum-perfect sample data: use realistic lengths, names from several locales, and edge cases
42
+ - Buttons that all carry equal visual weight, with no single primary action
43
+ - Gray-on-gray low-contrast "minimal" text
44
+ - Hover-only affordances with no touch or keyboard equivalent
45
+
46
+ ## Core rules
47
+
48
+ **Visual.** Give each screen one dominant element. Body text is 16px or larger, with 1.4–1.6 line height and 50–75 characters per line. Text contrast is at least 4.5:1, or 3:1 for large text and UI component boundaries. Take all spacing from one 4px or 8px scale.
49
+
50
+ **Interaction.** Show visible feedback within 100ms. Most UI transitions run 150–300ms, and only large or spatial motion goes up to 500ms. Honor `prefers-reduced-motion`. On mobile, put primary actions in the thumb zone. Never disable a button without saying why.
51
+
52
+ **Forms.** Put labels above fields and never use placeholder-only labels. Validate on blur and re-validate on input once a field has shown an error. Show errors next to the field and summarize them at submit. Ask only for what you need. Mark whichever set of fields is the minority, required or optional.
53
+
54
+ **Navigation.** The current location is always visible. Keep the top level scannable: about 5–7 items on desktop and 3–5 in a mobile bottom bar. Miller's 7±2 is a working-memory figure, not a menu rule. On desktop, don't hide primary navigation behind a hamburger.
55
+
56
+ **Accessibility.** Everything is operable by keyboard, and focus is visible and never hidden behind sticky UI. Every control has an accessible name and role. Color is never the only signal. Images have meaningful alt text, or `alt=""` if they're decorative. Targets are at least 24×24 CSS px (WCAG 2.5.8 AA), with 44pt (iOS) or 48dp (Android) recommended on touch. Treat WCAG 2.2 AA as the legal target. WCAG 3 is still a draft.
57
+
58
+ **Collaboration.** Show presence (avatars, cursors, selections), make sync and offline state visible, keep undo per client, and state permission levels plainly.
59
+
60
+ **Canvas.** Zoom around the cursor, not the screen center. Snapping has a toggle. Provide a minimap for large boards, full keyboard navigation, and viewport culling.
61
+
62
+ **AI.** Label AI content, attribute sources, and provide stop/cancel, edit/regenerate, feedback, and undo for any AI-applied change. Keep a human override.
63
+
64
+ **Onboarding.** Guide the user to the first real value, not a tour. Make it skippable and never show it again once finished. Empty states give the next action.
65
+
66
+ **Notifications.** Match visual severity to real severity. Ask for push permission in context, after the user has seen value. Give users per-channel control. Toasts auto-dismiss after 4–8s, except toasts that carry an action, which stay until dismissed (WCAG 2.2.1).
67
+
68
+ **Ethics.** Accept and reject get equal prominence. Optional consent boxes start unchecked. Cancelling is as easy as signing up. No confirmshaming.
69
+
70
+ **i18n.** Use logical CSS properties and verify the layout in `dir="rtl"`. Allow 30–40% text expansion and no fixed-width labels. Externalize all strings and keep text out of images. Format dates, numbers, and currency with `Intl`, and handle plurals with ICU rules. Language switchers use endonyms, not flags.
71
+
72
+ ## Decision trees
73
+
74
+ ### Modal vs. side panel vs. full page
75
+
76
+ ```
77
+ Quick confirmation or 1-3 fields? → Modal
78
+ Edit details while keeping context visible?
79
+ narrow content (form, properties, chat) → Side panel
80
+ needs width → Full-page overlay with back
81
+ Multi-step: short steps → modal + stepper; long steps / needs reference → full page + stepper
82
+ Creating a complex entity (document, project)? → Full page
83
+ ```
84
+
85
+ ### Notification type
86
+
87
+ ```
88
+ Blocking, must resolve now → Modal
89
+ Urgent, non-blocking → Banner, persistent until dismissed
90
+ Completed action: success/info → Toast, auto-dismiss 4-8s
91
+ Completed action: warning/error or has action → Toast, manual dismiss
92
+ Background event, same context → Badge + inline indicator
93
+ Background event, elsewhere → Nav badge (+ optional push)
94
+ System status (maintenance, connectivity) → Persistent banner
95
+ ```
96
+
97
+ ## Reference routing
98
+
99
+ Load the file when the task touches its topic. Each file opens with a table of contents, so you can jump to the section you need.
100
+
101
+ | Load when the task involves… | File |
102
+ |---|---|
103
+ | Heuristic evaluation, Nielsen's 10, Gestalt | [references/01-core-principles.md](references/01-core-principles.md) |
104
+ | Fitts, Hick, Jakob, Tesler, peak-end, and similar laws | [references/02-laws-of-ux.md](references/02-laws-of-ux.md) |
105
+ | WCAG 2.2 criteria, ARIA, EAA / legal compliance | [references/03-accessibility.md](references/03-accessibility.md) |
106
+ | Typography, color, spacing, hierarchy, dark mode | [references/04-visual-design.md](references/04-visual-design.md) |
107
+ | Navigation structure, sitemaps, card sorting | [references/05-information-architecture.md](references/05-information-architecture.md) |
108
+ | Modals, tooltips, drag-and-drop, motion timing | [references/06-interaction-design.md](references/06-interaction-design.md) |
109
+ | Form layout, validation, input types, errors | [references/07-forms-and-inputs.md](references/07-forms-and-inputs.md) |
110
+ | Touch targets, gestures, responsive, mobile nav | [references/08-mobile-ux.md](references/08-mobile-ux.md) |
111
+ | Microcopy, error messages, voice and tone | [references/09-ux-writing.md](references/09-ux-writing.md) |
112
+ | Interviews, usability tests, surveys, metrics | [references/10-user-research.md](references/10-user-research.md) |
113
+ | Tokens, component APIs, design system docs | [references/11-design-systems.md](references/11-design-systems.md) |
114
+ | Live cursors, avatars, typing/presence indicators | [references/12a-presence-awareness.md](references/12a-presence-awareness.md) |
115
+ | Conflicts, sync, offline, sharing, version history | [references/12b-conflict-resolution-sync.md](references/12b-conflict-resolution-sync.md) |
116
+ | Canvas zoom, pan, selection, manipulation | [references/13a-canvas-navigation.md](references/13a-canvas-navigation.md) |
117
+ | Canvas layers, snapping, LOD, rendering performance | [references/13b-canvas-objects-performance.md](references/13b-canvas-objects-performance.md) |
118
+ | Chat UI, copilots, agents, generative UI | [references/14-ai-ux-patterns.md](references/14-ai-ux-patterns.md) |
119
+ | Dark patterns, consent, DSA/GDPR UI rules | [references/15-ethical-design.md](references/15-ethical-design.md) |
120
+ | First-run, activation, empty states, checklists | [references/16-onboarding.md](references/16-onboarding.md) |
121
+ | Notification systems, push, toasts, preferences | [references/17-notifications.md](references/17-notifications.md) |
122
+ | Charts, dashboards, accessible data viz | [references/18-data-visualization.md](references/18-data-visualization.md) |
123
+ | Search, autocomplete, filters, zero results | [references/19-search-ux.md](references/19-search-ux.md) |
124
+ | Delight, trust, tone, error recovery emotion | [references/20-emotional-design.md](references/20-emotional-design.md) |
125
+ | Tables, sorting, pagination, bulk actions | [references/21-data-tables.md](references/21-data-tables.md) |
126
+ | Loading, skeletons, optimistic updates, Core Web Vitals | [references/22-performance-ux.md](references/22-performance-ux.md) |
127
+ | Localization, RTL, `Intl`, plurals, text expansion | [references/23-internationalization.md](references/23-internationalization.md) |
128
+ | Voice, multimodal, cross-device input | [references/24-voice-and-multimodal.md](references/24-voice-and-multimodal.md) |
129
+ | Camera barcode/QR scanning on phone or web, viewfinder, QR safety | [references/25a-barcode-camera-scanning.md](references/25a-barcode-camera-scanning.md) |
130
+ | Scan-driven apps: warehouse, POS, healthcare, rugged or wedge scanners, GS1 | [references/25b-barcode-scanner-workflows.md](references/25b-barcode-scanner-workflows.md) |
131
+ | Showing barcodes/QR: tickets, wallet passes, QR login, printed labels | [references/25c-barcode-display.md](references/25c-barcode-display.md) |
132
+
133
+ ## Reference values
134
+
135
+ | Metric | Value | Source / note |
136
+ |---|---|---|
137
+ | Target size | ≥ 24×24 CSS px (AA); 44pt iOS / 48dp Android | WCAG 2.5.8; Apple HIG; Material |
138
+ | Body text | ≥ 16px, line height 1.4–1.6 | WCAG 1.4.12 tests up to 1.5 |
139
+ | Line length | 50–75 characters | |
140
+ | Text contrast | 4.5:1 normal, 3:1 large (≥ 24px, or ≥ 18.66px bold) | WCAG 1.4.3 |
141
+ | Non-text contrast | 3:1 (UI boundaries, focus rings, icons) | WCAG 1.4.11 |
142
+ | Feedback latency | < 100ms feels instant; > 1s show a spinner; > 10s show progress with cancel | Nielsen response-time limits |
143
+ | Transitions | 150–300ms typical, ≤ 500ms for large motion | Material motion |
144
+ | Loading indicator delay | ~300ms before showing, to avoid flashes | |
145
+ | Toast | 4–8s auto-dismiss (no actions) | |
146
+ | Text expansion | 30–40% (DE/FI/RU), up to 200%+ for short strings | W3C i18n |
147
+ | Working memory | ~4±1 chunks (Cowan); 7±2 (Miller) is dated | |
148
+ | Canvas | cursor updates 50–100ms, 60fps pan/zoom, 2–8px snap threshold, 10%–4000% zoom | Figma-class tools |
149
+ | Avatar stack | 3–5 visible, then "+N" | |
150
+ | AI response | first token < 1s, or show immediate progress | |
151
+ | Displayed QR code | 4-module quiet zone; module ≥ 0.25 mm physical; error correction M by default | ISO/IEC 18004; IATA BCBP; DENSO WAVE |
152
+ | QR size vs. distance | ≥ 2×2 cm, +1 cm per 10 cm of scan distance | NN/g heuristic |
153
+
154
+ Numbers like conversion rates, NPS targets, and completion percentages depend on context. Don't quote benchmarks as universal facts. Recommend measuring against the product's own baseline.
155
+
156
+ ## Anti-patterns
157
+
158
+ Each one points to the reference file that covers the fix.
159
+
160
+ - Dark patterns, confirmshaming, asymmetric consent → [15](references/15-ethical-design.md)
161
+ - Hidden desktop navigation, no sense of location → [05](references/05-information-architecture.md)
162
+ - Infinite scroll without position or a footer → [21](references/21-data-tables.md)
163
+ - Autoplaying media, color-only signals, invisible focus → [03](references/03-accessibility.md)
164
+ - Disabled buttons with no explanation, modal overuse → [06](references/06-interaction-design.md)
165
+ - Walls of text, no hierarchy → [04](references/04-visual-design.md)
166
+ - Tiny touch targets → [08](references/08-mobile-ux.md)
167
+ - Missing loading, empty, or error states → [22](references/22-performance-ux.md)
168
+ - Silent sync failures, no offline indication → [12b](references/12b-conflict-resolution-sync.md)
169
+ - Cursor overload, no presence → [12a](references/12a-presence-awareness.md)
170
+ - Screen-center zoom → [13a](references/13a-canvas-navigation.md)
171
+ - Hidden AI, AI changes applied without consent or undo → [14](references/14-ai-ux-patterns.md)
172
+ - Mandatory long tours → [16](references/16-onboarding.md)
173
+ - Notification carpet bombing, push permission on first visit → [17](references/17-notifications.md)
174
+ - Hardcoded strings, fixed widths, LTR-only layout → [23](references/23-internationalization.md)
175
+ - Voice-only flows, hidden mic, no recognition feedback → [24](references/24-voice-and-multimodal.md)
176
+ - Scan-only flows with no manual entry, silent scan failures → [25a](references/25a-barcode-camera-scanning.md) / [25b](references/25b-barcode-scanner-workflows.md)
177
+
178
+ ## Sources
179
+
180
+ [Laws of UX](https://lawsofux.com/) · [Nielsen Norman Group](https://www.nngroup.com/) · [WCAG 2.2](https://www.w3.org/TR/WCAG22/) · [Material Design](https://m3.material.io/) · [Apple HIG](https://developer.apple.com/design/) · [Baymard Institute](https://baymard.com/) · [Google PAIR](https://pair.withgoogle.com/guidebook) · [Microsoft HAX](https://www.microsoft.com/en-us/haxtoolkit/) · [Deceptive Design](https://www.deceptive.design/) · [EU DSA](https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package) · [EU Accessibility Act](https://ec.europa.eu/social/main.jsp?catId=1202) · [W3C i18n](https://www.w3.org/International/) · [Liveblocks](https://liveblocks.io/) · [Figma Engineering](https://www.figma.com/blog/category/engineering/) · [Tufte](https://www.edwardtufte.com/) · [ColorBrewer](https://colorbrewer2.org/) · [web.dev](https://web.dev/)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Szilárd Hajba
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,251 @@
1
+ # Core UX Principles & Usability Heuristics
2
+
3
+ ## Contents
4
+
5
+ - Nielsen's 10 Usability Heuristics
6
+ - Core Design Principles
7
+ - User-Centered Design Fundamentals
8
+ - Visual Hierarchy Techniques
9
+ - Sources
10
+
11
+ ---
12
+
13
+ ## Nielsen's 10 Usability Heuristics
14
+
15
+ Jakob Nielsen's heuristics are fundamental principles for interaction design, refined over decades of usability research.
16
+
17
+ ### 1. Visibility of System Status
18
+ The design should always keep users informed about what is going on, through appropriate feedback within a reasonable amount of time.
19
+
20
+ **Implementation:**
21
+ - Show loading states and progress indicators
22
+ - Confirm successful actions (saves, submissions)
23
+ - Display current location in navigation
24
+ - Show real-time status of processes
25
+
26
+ ### 2. Match Between System and the Real World
27
+ The design should speak the users' language. Use words, phrases, and concepts familiar to the user, rather than internal jargon.
28
+
29
+ **Implementation:**
30
+ - Use plain language, not technical terms
31
+ - Follow real-world conventions (calendar layouts, folder metaphors)
32
+ - Order information logically (chronological, alphabetical)
33
+ - Use familiar icons and symbols
34
+
35
+ ### 3. User Control and Freedom
36
+ Users often perform actions by mistake. They need a clearly marked "emergency exit" to leave the unwanted action without having to go through an extended process.
37
+
38
+ **Implementation:**
39
+ - Provide undo/redo functionality
40
+ - Include clear cancel buttons
41
+ - Allow easy navigation back
42
+ - Support exiting flows at any point
43
+ - Auto-save work when possible
44
+
45
+ ### 4. Consistency and Standards
46
+ Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform and industry conventions.
47
+
48
+ **Implementation:**
49
+ - Use consistent terminology throughout
50
+ - Maintain uniform visual design (colors, fonts, spacing)
51
+ - Follow platform conventions (iOS, Android, Web)
52
+ - Reuse the same components for similar functions
53
+
54
+ ### 5. Error Prevention
55
+ Good error messages are important, but the best designs carefully prevent problems from occurring in the first place.
56
+
57
+ **Implementation:**
58
+ - Use constraints to prevent invalid input
59
+ - Provide confirmation dialogs for destructive actions
60
+ - Offer suggestions and autocomplete
61
+ - Disable unavailable options rather than showing errors after
62
+ - Use sensible defaults
63
+
64
+ ### 6. Recognition Rather Than Recall
65
+ Minimize the user's memory load by making elements, actions, and options visible. Users should not have to remember information from one part of the interface to another.
66
+
67
+ **Implementation:**
68
+ - Show recently used items
69
+ - Provide contextual help and hints
70
+ - Display options visibly instead of requiring memorization
71
+ - Use descriptive labels, not codes
72
+ - Maintain visible navigation breadcrumbs
73
+
74
+ ### 7. Flexibility and Efficiency of Use
75
+ Shortcuts—hidden from novice users—can speed up the interaction for expert users. Allow users to tailor frequent actions.
76
+
77
+ **Implementation:**
78
+ - Provide keyboard shortcuts
79
+ - Allow customization of interface
80
+ - Support both simple and advanced modes
81
+ - Remember user preferences
82
+ - Enable batch operations
83
+
84
+ ### 8. Aesthetic and Minimalist Design
85
+ Interfaces should not contain information which is irrelevant or rarely needed. Every extra unit of information competes with relevant information and diminishes visibility.
86
+
87
+ **Implementation:**
88
+ - Remove unnecessary elements
89
+ - Use progressive disclosure
90
+ - Prioritize important content
91
+ - Use whitespace effectively
92
+ - Avoid decorative clutter
93
+
94
+ ### 9. Help Users Recognize, Diagnose, and Recover from Errors
95
+ Error messages should be expressed in plain language (no error codes), precisely indicate the problem, and constructively suggest a solution.
96
+
97
+ **Implementation:**
98
+ - Write human-readable error messages
99
+ - Explain what went wrong specifically
100
+ - Suggest how to fix the problem
101
+ - Avoid technical jargon and error codes
102
+ - Place errors near the relevant field
103
+
104
+ ### 10. Help and Documentation
105
+ It's best if the system doesn't need any additional explanation. However, it may be necessary to provide documentation to help users complete their tasks.
106
+
107
+ **Implementation:**
108
+ - Provide contextual help (tooltips, inline hints)
109
+ - Make help searchable
110
+ - Focus documentation on user tasks
111
+ - List concrete steps
112
+ - Keep help concise and scannable
113
+
114
+ ---
115
+
116
+ ## Core Design Principles
117
+
118
+ ### Clarity
119
+ Users should never have to stop and think about what something means or how to use it.
120
+
121
+ - Use clear, descriptive labels
122
+ - Avoid ambiguous icons without labels
123
+ - Make clickable elements look clickable
124
+ - Distinguish between primary and secondary actions
125
+
126
+ ### Simplicity
127
+ Remove everything that isn't essential to the user's goal.
128
+
129
+ - Start with the minimum viable interface
130
+ - Add complexity only when proven necessary
131
+ - Hide advanced features behind progressive disclosure
132
+ - One primary action per screen
133
+
134
+ ### Consistency
135
+ Predictability reduces cognitive load and learning time.
136
+
137
+ - Visual consistency (colors, typography, spacing)
138
+ - Functional consistency (same gestures = same results)
139
+ - Internal consistency (within your product)
140
+ - External consistency (with platform conventions)
141
+
142
+ ### Feedback
143
+ Every user action should have an immediate, visible response.
144
+
145
+ - Instant feedback (< 100ms) for direct manipulation
146
+ - Progress indicators for operations > 1 second
147
+ - Clear success and error states
148
+ - Confirmation for important actions
149
+
150
+ ### Hierarchy
151
+ Guide users' attention to what matters most.
152
+
153
+ - Visual weight indicates importance
154
+ - Size, color, and position create hierarchy
155
+ - Group related items together
156
+ - Separate distinct sections clearly
157
+
158
+ ---
159
+
160
+ ## User-Centered Design Fundamentals
161
+
162
+ ### The UX Design Process
163
+
164
+ 1. **Research** - Understand users, their goals, and context
165
+ 2. **Define** - Synthesize findings into problems to solve
166
+ 3. **Ideate** - Generate multiple possible solutions
167
+ 4. **Prototype** - Create testable representations
168
+ 5. **Test** - Validate with real users
169
+ 6. **Implement** - Build the solution
170
+ 7. **Iterate** - Continuously improve based on feedback
171
+
172
+ ### Understanding Users
173
+
174
+ **User Research Methods:**
175
+ - User interviews
176
+ - Contextual inquiry
177
+ - Surveys and questionnaires
178
+ - Analytics analysis
179
+ - Usability testing
180
+ - A/B testing
181
+
182
+ **Key Questions:**
183
+ - Who are the users?
184
+ - What are their goals?
185
+ - What are their pain points?
186
+ - What is their context of use?
187
+ - What do they already know?
188
+
189
+ ### Mental Models
190
+ Users approach your interface with expectations based on prior experience. Design should align with these mental models.
191
+
192
+ - Research how users think about the domain
193
+ - Use familiar patterns and metaphors
194
+ - When introducing new concepts, bridge from known ones
195
+ - Test assumptions about user understanding
196
+
197
+ ---
198
+
199
+ ## Visual Hierarchy Techniques
200
+
201
+ ### Size
202
+ Larger elements attract more attention. Use size to indicate importance.
203
+
204
+ ```
205
+ Heading 1 (32-48px) - Most important
206
+ Heading 2 (24-32px) - Section titles
207
+ Heading 3 (18-24px) - Subsections
208
+ Body text (16px) - Content
209
+ Small text (12-14px) - Metadata, captions
210
+ ```
211
+
212
+ ### Color
213
+ Color draws attention and conveys meaning.
214
+
215
+ - Use accent colors sparingly for important elements
216
+ - Maintain sufficient contrast (4.5:1 minimum)
217
+ - Don't rely on color alone to convey information
218
+ - Consider cultural color associations
219
+
220
+ ### Position
221
+ Eye-tracking studies show predictable scanning patterns.
222
+
223
+ - F-pattern for text-heavy pages
224
+ - Z-pattern for minimal content
225
+ - Top-left receives most attention (LTR languages)
226
+ - Place critical elements in natural focal points
227
+
228
+ ### Contrast
229
+ Difference creates emphasis.
230
+
231
+ - High contrast for important elements
232
+ - Low contrast for secondary information
233
+ - Use contrast in typography (bold, italic, size)
234
+ - Combine multiple contrast techniques
235
+
236
+ ### Whitespace
237
+ Empty space is a design element, not wasted space.
238
+
239
+ - Creates breathing room
240
+ - Groups related elements
241
+ - Separates distinct sections
242
+ - Improves readability and comprehension
243
+
244
+ ---
245
+
246
+ ## Sources
247
+
248
+ - Nielsen, J. (1994, 2020). "10 Usability Heuristics for User Interface Design"
249
+ - Norman, D. (2013). "The Design of Everyday Things"
250
+ - Krug, S. (2014). "Don't Make Me Think, Revisited"
251
+ - Nielsen Norman Group research articles