@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.
- package/README.md +3 -3
- package/manifest.json +43 -22
- package/package.json +1 -1
- package/scripts/lib/default-skill-floor.js +5 -1
- package/scripts/lib/domains.js +2 -2
- package/scripts/lib/retired-skills.js +4 -0
- package/scripts/rsc.js +1 -1
- package/skills/design/SKILL.md +4 -3
- package/skills/design/evals/cases.yaml +2 -2
- package/skills/ftd/SKILL.md +1 -1
- package/skills/react/SKILL.md +2 -1
- package/skills/ux/SKILL.md +149 -0
- package/skills/ux/THIRD_PARTY.md +32 -0
- package/skills/ux/evals/cases.yaml +40 -0
- package/skills/ux/references/flows.md +124 -0
- package/skills/ux/upstream/UPSTREAM.json +59 -0
- package/skills/ux/upstream/ux-designer/GUIDE.md +180 -0
- package/skills/ux/upstream/ux-designer/LICENSE +21 -0
- package/skills/ux/upstream/ux-designer/references/01-core-principles.md +251 -0
- package/skills/ux/upstream/ux-designer/references/02-laws-of-ux.md +330 -0
- package/skills/ux/upstream/ux-designer/references/03-accessibility.md +411 -0
- package/skills/ux/upstream/ux-designer/references/04-visual-design.md +433 -0
- package/skills/ux/upstream/ux-designer/references/05-information-architecture.md +432 -0
- package/skills/ux/upstream/ux-designer/references/06-interaction-design.md +495 -0
- package/skills/ux/upstream/ux-designer/references/07-forms-and-inputs.md +491 -0
- package/skills/ux/upstream/ux-designer/references/08-mobile-ux.md +539 -0
- package/skills/ux/upstream/ux-designer/references/09-ux-writing.md +493 -0
- package/skills/ux/upstream/ux-designer/references/10-user-research.md +533 -0
- package/skills/ux/upstream/ux-designer/references/11-design-systems.md +618 -0
- package/skills/ux/upstream/ux-designer/references/12a-presence-awareness.md +395 -0
- package/skills/ux/upstream/ux-designer/references/12b-conflict-resolution-sync.md +420 -0
- package/skills/ux/upstream/ux-designer/references/13a-canvas-navigation.md +388 -0
- package/skills/ux/upstream/ux-designer/references/13b-canvas-objects-performance.md +559 -0
- package/skills/ux/upstream/ux-designer/references/14-ai-ux-patterns.md +511 -0
- package/skills/ux/upstream/ux-designer/references/15-ethical-design.md +419 -0
- package/skills/ux/upstream/ux-designer/references/16-onboarding.md +430 -0
- package/skills/ux/upstream/ux-designer/references/17-notifications.md +461 -0
- package/skills/ux/upstream/ux-designer/references/18-data-visualization.md +453 -0
- package/skills/ux/upstream/ux-designer/references/19-search-ux.md +479 -0
- package/skills/ux/upstream/ux-designer/references/20-emotional-design.md +382 -0
- package/skills/ux/upstream/ux-designer/references/21-data-tables.md +629 -0
- package/skills/ux/upstream/ux-designer/references/22-performance-ux.md +626 -0
- package/skills/ux/upstream/ux-designer/references/23-internationalization.md +347 -0
- package/skills/ux/upstream/ux-designer/references/24-voice-and-multimodal.md +308 -0
- package/skills/ux/upstream/ux-designer/references/25a-barcode-camera-scanning.md +342 -0
- package/skills/ux/upstream/ux-designer/references/25b-barcode-scanner-workflows.md +412 -0
- package/skills/ux/upstream/ux-designer/references/25c-barcode-display.md +277 -0
- package/skills/ux/upstream/ux-usability-foundations/GUIDE.md +285 -0
- package/skills/ux/upstream/ux-usability-foundations/LICENSE +21 -0
- package/skills/ux/upstream/ux-usability-foundations/references/anti-patterns.md +267 -0
- package/skills/ux/upstream/ux-usability-foundations/references/checklists.md +130 -0
- package/skills/ux/upstream/ux-usability-foundations/references/decision-prompts.md +340 -0
- package/skills/ux/upstream/ux-usability-foundations/references/principle-cards.md +449 -0
- package/skills/worktrees/SKILL.md +19 -5
- package/targets/branch-guard.mjs +59 -4
- package/targets/clone-bootstrap.mjs +1 -1
- package/targets/session-memory-adapter.mjs +2 -2
- package/targets/team-safe-start.mjs +1 -0
- package/targets/worktree-reaper.mjs +14 -1
- package/skills/ui-engineering/SKILL.md +0 -113
- 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
|