@ericrisco/rsc 3.3.0 → 3.4.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 (56) hide show
  1. package/README.md +6 -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/skills/design/SKILL.md +4 -3
  8. package/skills/design/evals/cases.yaml +2 -2
  9. package/skills/react/SKILL.md +2 -1
  10. package/skills/suggest/SKILL.md +12 -8
  11. package/skills/suggest/evals/cases.yaml +6 -0
  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/targets/clone-bootstrap.mjs +1 -1
  55. package/skills/ui-engineering/SKILL.md +0 -113
  56. package/skills/ui-engineering/evals/cases.yaml +0 -38
@@ -0,0 +1,511 @@
1
+ # AI & LLM UX Patterns
2
+
3
+ AI-powered interfaces are now mainstream but have unique UX challenges. This reference covers design patterns for conversational AI, copilots, agents, and generative interfaces.
4
+
5
+ ---
6
+
7
+ ## Contents
8
+
9
+ - AI as a Respectful Copilot, Not an Autopilot
10
+ - Conversational / Chat UI
11
+ - Prompt UX
12
+ - AI Transparency & Trust
13
+ - Hallucination Handling
14
+ - Human-in-the-Loop
15
+ - Generative UI
16
+ - AI Copilot Patterns
17
+ - Agent UX
18
+ - Ethical AI UX
19
+ - Key Metrics
20
+ - Anti-Patterns
21
+ - Sources
22
+
23
+ ---
24
+
25
+ ## AI as a Respectful Copilot, Not an Autopilot
26
+
27
+ The defining 2026 framing (NN/g *State of UX 2026* and broad trend consensus): the
28
+ best AI features are a **respectful copilot**—present and helpful, but optional and
29
+ under user control—rather than an **autopilot** that hijacks the flow. As raw UI
30
+ becomes a commodity, the differentiator is judgment about *when not to act*.
31
+
32
+ **What "respectful copilot" looks like:**
33
+ - **Optional, not forced** — AI is offered (a sidebar, overlay, collapsible panel,
34
+ inline suggestion), never shoved into the critical path. The user can ignore it
35
+ and still complete the task the normal way.
36
+ - **Calm and peripheral** — it augments the current context instead of taking over
37
+ the screen; suggestions sit beside the work, not on top of it.
38
+ - **User stays in control** — the human initiates or explicitly accepts; AI
39
+ proposes, the user disposes. Every AI action is previewable, reversible, and
40
+ attributable (see "Hidden AI", "Over-automation", "No AI undo" anti-patterns).
41
+ - **Transparent** — clearly labeled as AI, honest about confidence and limits,
42
+ shows its sources/reasoning when it matters.
43
+
44
+ ```
45
+ Autopilot (avoid) Respectful copilot (prefer)
46
+ ───────────────── ──────────────────────────
47
+ Auto-rewrites your text Suggests an edit you can accept/dismiss
48
+ Modal hijacks the screen Quiet panel beside your work
49
+ Acts, then maybe tells you Proposes, you confirm, then it acts
50
+ "AI is doing X…" (opaque) Shows what, why, and an undo
51
+ ```
52
+
53
+ Apply this lens to every pattern below: chat, copilots, and agents should all
54
+ default to *offered and reversible*, never *imposed and silent*.
55
+
56
+ ---
57
+
58
+ ## Conversational / Chat UI
59
+
60
+ ### Message Layout
61
+
62
+ ```
63
+ ┌─────────────────────────────────────────┐
64
+ │ User message [14:02] │
65
+ │ Right-aligned, accent background │
66
+ ├─────────────────────────────────────────┤
67
+ │ [AI avatar] │
68
+ │ AI response [14:02] │
69
+ │ Left-aligned, neutral background │
70
+ │ ┌─────────────────────────────┐ │
71
+ │ │ Source: document.pdf, p.12 │ │
72
+ │ └─────────────────────────────┘ │
73
+ │ [👍] [👎] [Copy] [Regenerate] │
74
+ ├─────────────────────────────────────────┤
75
+ │ ┌───────────────────────────────────┐ │
76
+ │ │ Type a message... [Send] │ │
77
+ │ │ [Attach] [Voice] │ │
78
+ │ └───────────────────────────────────┘ │
79
+ └─────────────────────────────────────────┘
80
+ ```
81
+
82
+ ### Message Bubbles
83
+
84
+ - **User messages**: Right-aligned, accent color background, rounded corners
85
+ - **AI messages**: Left-aligned, neutral/light background, distinct from user
86
+ - **System messages**: Centered, muted, no bubble (e.g., "Conversation started")
87
+ - **Max width**: 70-80% of container to maintain readability
88
+ - **Timestamps**: Show on hover or at natural breaks, not every message
89
+
90
+ ### Streaming Responses
91
+
92
+ ```
93
+ AI is typing...
94
+ ├── Show cursor/blinking indicator at end of text
95
+ ├── Render markdown incrementally (not raw then formatted)
96
+ ├── Allow user to stop generation mid-stream [Stop] button
97
+ ├── Smooth text appearance (word-by-word or chunk-by-chunk)
98
+ └── Don't auto-scroll if user has scrolled up to read history
99
+ ```
100
+
101
+ **Key timings:**
102
+ - First token should appear within 500ms-1s (perceived responsiveness)
103
+ - Show typing indicator immediately on send
104
+ - Skeleton/placeholder for structured outputs (tables, code blocks)
105
+
106
+ ### Turn-Taking
107
+
108
+ - Disable send button while AI is responding (or allow interrupt)
109
+ - Clear visual separation between turns
110
+ - Support editing previous user messages and re-generating from that point
111
+ - Show "AI is thinking..." for multi-step reasoning delays
112
+ - Multi-turn context: show thread/conversation history clearly
113
+
114
+ ---
115
+
116
+ ## Prompt UX
117
+
118
+ ### Input Design
119
+
120
+ ```html
121
+ <!-- Expandable textarea that grows with content -->
122
+ <div class="prompt-input">
123
+ <textarea
124
+ placeholder="Ask anything..."
125
+ rows="1"
126
+ aria-label="Message input"
127
+ ></textarea>
128
+ <div class="input-actions">
129
+ <button aria-label="Attach file">📎</button>
130
+ <button aria-label="Send message" disabled>→</button>
131
+ </div>
132
+ </div>
133
+ ```
134
+
135
+ **Best practices:**
136
+ - Auto-expanding textarea (start 1 row, grow to ~6, then scroll)
137
+ - Send on Enter, Shift+Enter for newline (document this with a tooltip)
138
+ - Enable send button only when input is non-empty
139
+ - Character/token count for limited contexts
140
+ - Support paste of images, files, and rich text
141
+
142
+ ### Suggested Prompts
143
+
144
+ ```
145
+ ┌─────────────────────────────────────────┐
146
+ │ What can I help you with? │
147
+ │ │
148
+ │ ┌──────────┐ ┌──────────────────┐ │
149
+ │ │ Summarize │ │ Compare options │ │
150
+ │ │ this doc │ │ for deployment │ │
151
+ │ └──────────┘ └──────────────────┘ │
152
+ │ ┌──────────────┐ ┌──────────────┐ │
153
+ │ │ Write a test │ │ Explain this │ │
154
+ │ │ for this fn │ │ error │ │
155
+ │ └──────────────┘ └──────────────┘ │
156
+ └─────────────────────────────────────────┘
157
+ ```
158
+
159
+ - Show 3-6 contextual suggestions on empty state
160
+ - Update suggestions based on current context (file open, selection, etc.)
161
+ - Use prompt templates for complex tasks with fill-in-the-blank slots
162
+ - Allow users to save and reuse their own prompt templates
163
+ - Provide category-based prompt libraries for discoverability
164
+
165
+ ### Multimodal Inputs
166
+
167
+ - Image upload with preview and crop/annotate before sending
168
+ - File attachment with type indicators and size display
169
+ - Voice input with waveform visualization and transcription preview
170
+ - Screen/selection capture with annotation tools
171
+ - Drag-and-drop support with clear drop zone indicators
172
+
173
+ ---
174
+
175
+ ## AI Transparency & Trust
176
+
177
+ ### Confidence Indicators
178
+
179
+ ```
180
+ High confidence:
181
+ "The capital of France is Paris."
182
+
183
+ Medium confidence:
184
+ "Based on available data, revenue likely increased ~15%."
185
+ ⚠️ This estimate is based on partial data
186
+
187
+ Low confidence:
188
+ "I'm not certain, but this might be related to..."
189
+ ⚠️ Low confidence — verify independently
190
+ ```
191
+
192
+ **Pattern options:**
193
+ - Textual hedging ("I believe", "Based on...", "I'm not sure")
194
+ - Visual indicators (confidence bars, color-coded borders)
195
+ - Explicit disclaimers for uncertain outputs
196
+ - "Verified" badges for factual claims with sources
197
+
198
+ ### Source Attribution
199
+
200
+ ```
201
+ ┌─────────────────────────────────────────┐
202
+ │ AI Response text here with inline │
203
+ │ citations [1] and references [2]. │
204
+ │ │
205
+ │ ┌─ Sources ─────────────────────────┐ │
206
+ │ │ [1] design-system.md, line 42 │ │
207
+ │ │ [2] api-docs.md, §Authentication │ │
208
+ │ └───────────────────────────────────┘ │
209
+ └─────────────────────────────────────────┘
210
+ ```
211
+
212
+ - Inline citations linked to expandable source cards
213
+ - Distinguish between direct quotes and paraphrasing
214
+ - Show source reliability/recency metadata
215
+ - Allow click-through to original source
216
+ - Group sources by type (documents, web, code)
217
+
218
+ ### "AI-Generated" Labels
219
+
220
+ - Mark AI-generated content clearly: "Generated by AI" or sparkle icon (✨)
221
+ - Distinguish AI suggestions from confirmed/human-edited content
222
+ - Persist labels through copy/paste and export
223
+ - Follow platform regulations (EU AI Act requires labeling)
224
+
225
+ ---
226
+
227
+ ## Hallucination Handling
228
+
229
+ ### Prevention UX
230
+
231
+ - Ground responses in user-provided context (RAG patterns)
232
+ - Show "based on" indicators linking to source material
233
+ - Limit AI to domains where it has verified information
234
+ - Offer "search the web" as explicit fallback for unknown topics
235
+
236
+ ### Detection & Recovery
237
+
238
+ ```
239
+ ┌─────────────────────────────────────────┐
240
+ │ AI: "The function `getData()` returns │
241
+ │ a Promise<User[]>." │
242
+ │ │
243
+ │ ⚠️ Could not verify this in your │
244
+ │ codebase. [Check source] [Report] │
245
+ │ │
246
+ │ Was this response helpful? │
247
+ │ [👍 Yes] [👎 No — incorrect] │
248
+ └─────────────────────────────────────────┘
249
+ ```
250
+
251
+ - Provide feedback mechanisms (thumbs up/down, flag as incorrect)
252
+ - "Regenerate" button to get a fresh response
253
+ - User correction flow: allow editing AI output directly
254
+ - Track and surface known inaccuracies for similar future queries
255
+ - Show verification status for factual claims when possible
256
+
257
+ ---
258
+
259
+ ## Human-in-the-Loop
260
+
261
+ ### Approval Workflows
262
+
263
+ ```
264
+ ┌─────────────────────────────────────────┐
265
+ │ AI Suggestion │
266
+ │ ┌───────────────────────────────────┐ │
267
+ │ │ Proposed changes: │ │
268
+ │ │ - Update user.email to new value │ │
269
+ │ │ - Send confirmation email │ │
270
+ │ │ - Log change in audit trail │ │
271
+ │ └───────────────────────────────────┘ │
272
+ │ │
273
+ │ [✓ Apply All] [Review Each] [✗ Cancel] │
274
+ └─────────────────────────────────────────┘
275
+ ```
276
+
277
+ ### Suggestion vs. Auto-Action Spectrum
278
+
279
+ ```
280
+ Full manual ←────────────────────→ Full auto
281
+
282
+ Suggest → Suggest+ → Auto+ → Auto
283
+ only default apply notify silent
284
+
285
+ User User can User can No user
286
+ initiates reject review action
287
+ action suggestion after needed
288
+ ```
289
+
290
+ **Best practices:**
291
+ - Default to "suggest" mode for destructive or irreversible actions
292
+ - Allow users to configure automation level per action type
293
+ - Show clear diff/preview before applying changes
294
+ - Provide undo for auto-applied actions (minimum 10 seconds)
295
+ - Log all AI-initiated actions for auditability
296
+
297
+ ### Override Patterns
298
+
299
+ - Always provide manual override for AI decisions
300
+ - Make overrides discoverable (not hidden in settings)
301
+ - Don't penalize users for overriding (no "Are you sure?" friction)
302
+ - Learn from overrides to improve future suggestions
303
+ - Show "AI suggested X, you chose Y" in history for context
304
+
305
+ ---
306
+
307
+ ## Generative UI
308
+
309
+ ### AI-Generated Interface Elements
310
+
311
+ - Render structured AI outputs as rich components (tables, charts, forms)
312
+ - Provide fallback to plain text if rendering fails
313
+ - Allow user to toggle between rendered and raw views
314
+ - Maintain accessibility in generated components
315
+
316
+ ### Adaptive Layouts
317
+
318
+ ```
319
+ Simple query → Single text response
320
+ Data query → Table or chart + summary
321
+ Comparison → Side-by-side cards
322
+ Multi-step → Numbered steps with progress
323
+ Code query → Syntax-highlighted block with copy button
324
+ ```
325
+
326
+ - Match output format to query intent
327
+ - Let users request different output formats ("show as table")
328
+ - Remember format preferences per query type
329
+
330
+ ---
331
+
332
+ ## AI Copilot Patterns
333
+
334
+ ### Inline Suggestions
335
+
336
+ ```
337
+ ┌──────────────────────────────────────────┐
338
+ │ function calculateTotal(items) { │
339
+ │ return items.reduce((sum, item) => │
340
+ │ ░░sum + item.price * item.qty, 0);░░ │ ← ghost text
341
+ │ } │
342
+ │ │
343
+ │ [Tab] to accept [Esc] to dismiss │
344
+ └──────────────────────────────────────────┘
345
+ ```
346
+
347
+ **Ghost text / inline completion:**
348
+ - Show suggestion as dimmed/ghost text at cursor position
349
+ - Tab to accept, Esc to dismiss, keep typing to refine
350
+ - Accept word-by-word with Ctrl+Right (partial accept)
351
+ - Show suggestion after 300-750ms pause in typing (debounce)
352
+ - Never show during active, rapid typing
353
+
354
+ ### Accept / Reject / Modify
355
+
356
+ - **Accept**: Tab or click — apply suggestion immediately
357
+ - **Reject**: Esc or keep typing — dismiss silently
358
+ - **Modify**: Accept then edit — encourage iteration
359
+ - **Partial accept**: Accept first N words/lines
360
+ - Show acceptance rate metrics to tune suggestion quality
361
+
362
+ ### Suggestion Panel (Multi-Option)
363
+
364
+ ```
365
+ ┌─ AI Suggestions ────────────────────────┐
366
+ │ │
367
+ │ Option 1: Using array.filter() │
368
+ │ ┌────────────────────────────────────┐ │
369
+ │ │ const active = users.filter(u => │ │
370
+ │ │ u.status === 'active'); │ │
371
+ │ └────────────────────────────────────┘ │
372
+ │ │
373
+ │ Option 2: Using for...of loop │
374
+ │ ┌────────────────────────────────────┐ │
375
+ │ │ const active = []; │ │
376
+ │ │ for (const u of users) { ... │ │
377
+ │ └────────────────────────────────────┘ │
378
+ │ │
379
+ │ [Apply #1] [Apply #2] [Dismiss] │
380
+ └──────────────────────────────────────────┘
381
+ ```
382
+
383
+ ---
384
+
385
+ ## Agent UX
386
+
387
+ ### Multi-Step Task Visibility
388
+
389
+ ```
390
+ ┌─ Agent Task: "Deploy to staging" ───────┐
391
+ │ │
392
+ │ ✅ Step 1: Run tests (12s) │
393
+ │ ✅ Step 2: Build application (45s) │
394
+ │ 🔄 Step 3: Push to registry ... │
395
+ │ ⬚ Step 4: Update deployment │
396
+ │ ⬚ Step 5: Run health checks │
397
+ │ │
398
+ │ ├── Elapsed: 1m 23s │
399
+ │ └── [View Logs] [Pause] [Cancel] │
400
+ └──────────────────────────────────────────┘
401
+ ```
402
+
403
+ ### Progress & Autonomy Controls
404
+
405
+ - Show current step, total steps, and elapsed time
406
+ - Expandable logs/details for each step
407
+ - Pause/Resume to give users control over long-running tasks
408
+ - Cancel with confirmation for destructive operations
409
+ - Estimated remaining time when possible
410
+
411
+ ### Tool-Use Transparency
412
+
413
+ ```
414
+ ┌─────────────────────────────────────────┐
415
+ │ 🔧 Agent used: file_search │
416
+ │ Searched 24 files matching "*.ts" │
417
+ │ Found 3 relevant results │
418
+ │ [Show details ▾] │
419
+ │ │
420
+ │ 🔧 Agent used: code_edit │
421
+ │ Modified: src/utils/auth.ts │
422
+ │ [View diff ▾] │
423
+ └─────────────────────────────────────────┘
424
+ ```
425
+
426
+ - Show each tool invocation with name and brief description
427
+ - Collapsible detail view (inputs, outputs, duration)
428
+ - Highlight side effects (file writes, API calls, etc.)
429
+ - Permission prompts before sensitive tool use
430
+ - Full audit log accessible after task completion
431
+
432
+ ---
433
+
434
+ ## Ethical AI UX
435
+
436
+ ### Bias Disclosure
437
+
438
+ - Acknowledge known limitations and biases upfront
439
+ - Provide model card information accessible from the UI
440
+ - Show training data recency ("Knowledge current through [date]")
441
+ - Flag outputs in sensitive domains (medical, legal, financial)
442
+
443
+ ### User Control Over AI Behavior
444
+
445
+ ```
446
+ ┌─ AI Preferences ────────────────────────┐
447
+ │ │
448
+ │ Response style: [Concise ▾] │
449
+ │ Creativity: ████░░░░░ 40% │
450
+ │ Auto-suggest: [✓ Enabled] │
451
+ │ Data usage: [View policy] │
452
+ │ │
453
+ │ [Reset to defaults] │
454
+ └──────────────────────────────────────────┘
455
+ ```
456
+
457
+ - Let users adjust tone, verbosity, creativity
458
+ - Opt-out of data collection for model training
459
+ - Clear "forget this conversation" action
460
+ - Per-conversation or global preference settings
461
+ - Transparent about what data is retained and for how long
462
+
463
+ ### Opt-Out Mechanisms
464
+
465
+ - Easy toggle to disable AI features entirely
466
+ - Graceful degradation to manual workflows
467
+ - No penalty or reduced functionality for opting out
468
+ - Clear explanation of what changes when AI is disabled
469
+ - Respect opt-out across sessions and devices
470
+
471
+ ---
472
+
473
+ ## Key Metrics
474
+
475
+ | Metric | Target | Context |
476
+ |--------|--------|---------|
477
+ | Time to first token | < 1s | Perceived responsiveness |
478
+ | Streaming speed | 30-80 tokens/s | Natural reading pace |
479
+ | Suggestion acceptance rate | 25-35% | Copilot usefulness |
480
+ | Response rating (thumbs up) | > 80% | Quality benchmark |
481
+ | Regeneration rate | < 15% | First-response quality |
482
+ | Task completion (agents) | > 90% | Reliability |
483
+ | Hallucination rate | < 5% | Factual accuracy |
484
+ | Human override rate | Track trend | Automation calibration |
485
+
486
+ ---
487
+
488
+ ## Anti-Patterns
489
+
490
+ 1. **Anthropomorphizing too much** — Avoid names, personalities, or claims of emotions that mislead users about AI capabilities
491
+ 2. **No streaming** — Showing nothing then dumping a wall of text feels broken
492
+ 3. **Hidden AI** — Users should always know when they're interacting with AI
493
+ 4. **Ignoring errors** — Silently failing or making up answers instead of admitting uncertainty
494
+ 5. **Over-automation** — Applying AI changes without user awareness or consent
495
+ 6. **No undo for AI actions** — AI-applied changes must be reversible
496
+ 7. **Prompt injection vulnerability** — Showing AI outputs that can execute code or alter UI
497
+ 8. **Infinite context illusion** — Not communicating context window limits
498
+ 9. **Blocking UI during generation** — Users should be able to navigate or cancel
499
+ 10. **No feedback loop** — Not providing thumbs up/down or correction mechanisms
500
+
501
+ ---
502
+
503
+ ## Sources
504
+
505
+ - [Nielsen Norman Group: UX for AI](https://www.nngroup.com/articles/ai-ux/) — AI interaction research
506
+ - [Nielsen Norman Group: State of UX](https://www.nngroup.com/articles/) — annual UX trend analysis (respectful-copilot framing)
507
+ - [Google PAIR: People + AI Guidebook](https://pair.withgoogle.com/guidebook) — AI design patterns
508
+ - [Apple: Human Interface Guidelines for Machine Learning](https://developer.apple.com/design/human-interface-guidelines/machine-learning)
509
+ - [Microsoft: HAX Toolkit](https://www.microsoft.com/en-us/haxtoolkit/) — Human-AI interaction guidelines
510
+ - [Anthropic: Responsible AI Practices](https://www.anthropic.com/) — Safety and transparency
511
+ - [EU AI Act](https://artificialintelligenceact.eu/) — Regulatory requirements for AI interfaces