@ericrisco/rsc 3.3.1 → 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.
- package/README.md +2 -2
- 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/skills/design/SKILL.md +4 -3
- package/skills/design/evals/cases.yaml +2 -2
- 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/targets/clone-bootstrap.mjs +1 -1
- package/skills/ui-engineering/SKILL.md +0 -113
- package/skills/ui-engineering/evals/cases.yaml +0 -38
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
# UX Writing & Microcopy
|
|
2
|
+
|
|
3
|
+
UX writing is the practice of crafting user-facing text that helps people use digital products. Every word in an interface is designed to enhance the user experience.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Contents
|
|
8
|
+
|
|
9
|
+
- What is Microcopy?
|
|
10
|
+
- Core Principles
|
|
11
|
+
- Voice and Tone
|
|
12
|
+
- Writing for Common UI Elements
|
|
13
|
+
- Form Copy
|
|
14
|
+
- Accessibility in Writing
|
|
15
|
+
- Localization Considerations
|
|
16
|
+
- AI Tools for UX Writing
|
|
17
|
+
- Testing Microcopy
|
|
18
|
+
- Content Design Process
|
|
19
|
+
- Resources
|
|
20
|
+
- Sources
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## What is Microcopy?
|
|
25
|
+
|
|
26
|
+
Microcopy refers to the small bits of text throughout an interface:
|
|
27
|
+
- Button labels
|
|
28
|
+
- Error messages
|
|
29
|
+
- Form labels and hints
|
|
30
|
+
- Tooltips
|
|
31
|
+
- Empty states
|
|
32
|
+
- Confirmation messages
|
|
33
|
+
- Loading text
|
|
34
|
+
- Navigation labels
|
|
35
|
+
- Onboarding text
|
|
36
|
+
|
|
37
|
+
### The Impact of Microcopy
|
|
38
|
+
|
|
39
|
+
Good microcopy:
|
|
40
|
+
- Reduces user errors
|
|
41
|
+
- Increases conversion rates
|
|
42
|
+
- Builds trust and brand personality
|
|
43
|
+
- Decreases support requests
|
|
44
|
+
- Guides users through complex tasks
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Core Principles
|
|
49
|
+
|
|
50
|
+
### Clarity
|
|
51
|
+
|
|
52
|
+
Users should instantly understand what they're reading.
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Good: "Delete this file?"
|
|
56
|
+
Bad: "Are you sure you wish to proceed with the deletion of the selected item?"
|
|
57
|
+
|
|
58
|
+
Good: "Sign up"
|
|
59
|
+
Bad: "Get started on your journey"
|
|
60
|
+
|
|
61
|
+
Good: "Saved"
|
|
62
|
+
Bad: "Your changes have been successfully persisted to the database"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Conciseness
|
|
66
|
+
|
|
67
|
+
Use the fewest words needed to communicate clearly.
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Good: "Password must be 8+ characters"
|
|
71
|
+
Bad: "Please ensure that your password contains a minimum of eight characters"
|
|
72
|
+
|
|
73
|
+
Good: "Email sent"
|
|
74
|
+
Bad: "Your email has been sent successfully"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Usefulness
|
|
78
|
+
|
|
79
|
+
Every word should help the user accomplish their goal.
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Good: "Enter the 6-digit code from your authenticator app"
|
|
83
|
+
Bad: "Enter code"
|
|
84
|
+
|
|
85
|
+
Good: "We'll email you a receipt"
|
|
86
|
+
Bad: "Transaction complete"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Conversational (But Professional)
|
|
90
|
+
|
|
91
|
+
Write like you speak, while maintaining appropriateness.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Good: "Looks like that email doesn't exist. Want to create an account?"
|
|
95
|
+
Bad: "Error 404: User not found in database"
|
|
96
|
+
|
|
97
|
+
Good: "We couldn't find any results for 'xyz'"
|
|
98
|
+
Bad: "Your search query returned zero results"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Voice and Tone
|
|
104
|
+
|
|
105
|
+
### Voice vs. Tone
|
|
106
|
+
|
|
107
|
+
**Voice** = Your brand's personality (consistent)
|
|
108
|
+
**Tone** = How you adapt to context (varies)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
Voice: Friendly, helpful, professional
|
|
112
|
+
Tone varies:
|
|
113
|
+
- Onboarding: Welcoming, encouraging
|
|
114
|
+
- Errors: Empathetic, solution-focused
|
|
115
|
+
- Success: Celebratory (subtly)
|
|
116
|
+
- Security: Serious, trustworthy
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Developing Brand Voice
|
|
120
|
+
|
|
121
|
+
Document your voice characteristics:
|
|
122
|
+
|
|
123
|
+
| Attribute | We are... | We are NOT... |
|
|
124
|
+
|-----------|-----------|---------------|
|
|
125
|
+
| Friendly | Warm, approachable | Overly casual, unprofessional |
|
|
126
|
+
| Helpful | Clear, guiding | Condescending, verbose |
|
|
127
|
+
| Confident | Assured, direct | Arrogant, pushy |
|
|
128
|
+
| Human | Conversational, real | Robotic, corporate |
|
|
129
|
+
|
|
130
|
+
### Adapting Tone
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Context: Error Message
|
|
134
|
+
Voice: Helpful
|
|
135
|
+
Tone: Empathetic + Solution-focused
|
|
136
|
+
|
|
137
|
+
"Something went wrong on our end. We're looking into it.
|
|
138
|
+
Your work has been saved—you won't lose anything."
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Writing for Common UI Elements
|
|
144
|
+
|
|
145
|
+
### Buttons
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Good Button Labels:
|
|
149
|
+
- "Sign up" / "Log in" (standard actions)
|
|
150
|
+
- "Add to cart" / "Buy now" (specific actions)
|
|
151
|
+
- "Save changes" / "Save" (what happens)
|
|
152
|
+
- "Send message" (what it does)
|
|
153
|
+
- "Try free for 14 days" (value proposition)
|
|
154
|
+
|
|
155
|
+
Avoid:
|
|
156
|
+
- "Submit" (too generic)
|
|
157
|
+
- "Click here" (not descriptive, accessibility issue)
|
|
158
|
+
- "Yes" / "No" (require context)
|
|
159
|
+
- "OK" (too generic for important actions)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Error Messages
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
Structure: What happened + How to fix it
|
|
166
|
+
|
|
167
|
+
Good:
|
|
168
|
+
"We couldn't log you in. Check your email and password and try again."
|
|
169
|
+
|
|
170
|
+
"That email is already registered. Log in or reset your password."
|
|
171
|
+
|
|
172
|
+
"Your card was declined. Try a different payment method."
|
|
173
|
+
|
|
174
|
+
Avoid:
|
|
175
|
+
"Error"
|
|
176
|
+
"Invalid credentials"
|
|
177
|
+
"Error 422: Unprocessable entity"
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Empty States
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
Components:
|
|
184
|
+
1. What this area is for
|
|
185
|
+
2. Why it's empty
|
|
186
|
+
3. How to fill it
|
|
187
|
+
|
|
188
|
+
Example:
|
|
189
|
+
"No projects yet
|
|
190
|
+
|
|
191
|
+
Projects help you organize your work. Create your first project
|
|
192
|
+
to get started.
|
|
193
|
+
|
|
194
|
+
[Create project]"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Success Messages
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
Good:
|
|
201
|
+
"Password updated" ✓
|
|
202
|
+
"Order placed! We'll email you when it ships."
|
|
203
|
+
"Welcome aboard! Let's set up your workspace."
|
|
204
|
+
|
|
205
|
+
Keep it brief—user wants to move on.
|
|
206
|
+
Provide next steps when helpful.
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Loading States
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Generic:
|
|
213
|
+
"Loading..."
|
|
214
|
+
|
|
215
|
+
Contextual (better):
|
|
216
|
+
"Finding nearby restaurants..."
|
|
217
|
+
"Saving your changes..."
|
|
218
|
+
"Connecting to server..."
|
|
219
|
+
|
|
220
|
+
Humorous (use carefully):
|
|
221
|
+
"Reticulating splines..."
|
|
222
|
+
"Convincing pixels to behave..."
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Confirmation Dialogs
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
Structure:
|
|
229
|
+
- Clear headline stating action
|
|
230
|
+
- Brief explanation of consequences
|
|
231
|
+
- Actionable button labels
|
|
232
|
+
|
|
233
|
+
Example:
|
|
234
|
+
"Delete this project?
|
|
235
|
+
|
|
236
|
+
This will permanently delete 'Marketing Q4' and all its files.
|
|
237
|
+
This can't be undone.
|
|
238
|
+
|
|
239
|
+
[Cancel] [Delete project]"
|
|
240
|
+
|
|
241
|
+
Not:
|
|
242
|
+
"Are you sure?"
|
|
243
|
+
[Yes] [No]
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Form Copy
|
|
249
|
+
|
|
250
|
+
### Labels
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
Good:
|
|
254
|
+
"Email address"
|
|
255
|
+
"Password"
|
|
256
|
+
"First name"
|
|
257
|
+
|
|
258
|
+
Avoid:
|
|
259
|
+
"Your email address"
|
|
260
|
+
"Enter your password"
|
|
261
|
+
"Please provide first name"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Placeholder Text
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
Use for examples, not labels:
|
|
268
|
+
"you@example.com"
|
|
269
|
+
"555-123-4567"
|
|
270
|
+
"Search products..."
|
|
271
|
+
|
|
272
|
+
Don't use as the only label (disappears on focus)
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Help Text
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
Place below input or as tooltip:
|
|
279
|
+
"Password must be at least 8 characters"
|
|
280
|
+
"We'll only contact you about your order"
|
|
281
|
+
"Optional—for faster shipping estimates"
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Validation Messages
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
Specific and helpful:
|
|
288
|
+
"Enter a valid email (e.g., name@company.com)"
|
|
289
|
+
"Phone number must be 10 digits"
|
|
290
|
+
"Passwords don't match"
|
|
291
|
+
|
|
292
|
+
Not:
|
|
293
|
+
"Invalid input"
|
|
294
|
+
"Please check this field"
|
|
295
|
+
"Error in form"
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Accessibility in Writing
|
|
301
|
+
|
|
302
|
+
### Link Text
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
Good:
|
|
306
|
+
"Read our privacy policy"
|
|
307
|
+
"Download the report (PDF, 2.3 MB)"
|
|
308
|
+
"Learn more about pricing"
|
|
309
|
+
|
|
310
|
+
Avoid:
|
|
311
|
+
"Click here"
|
|
312
|
+
"Read more"
|
|
313
|
+
"Here" (as standalone link)
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Alt Text
|
|
317
|
+
|
|
318
|
+
```
|
|
319
|
+
Informative images:
|
|
320
|
+
"Bar chart showing 40% increase in sales from Q3 to Q4 2024"
|
|
321
|
+
|
|
322
|
+
Decorative images:
|
|
323
|
+
alt="" (empty)
|
|
324
|
+
|
|
325
|
+
Functional images (buttons/links):
|
|
326
|
+
"Search" (not "magnifying glass icon")
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Headings
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
Use logical hierarchy for screen readers:
|
|
333
|
+
<h1>Account Settings</h1>
|
|
334
|
+
<h2>Profile</h2>
|
|
335
|
+
<h2>Security</h2>
|
|
336
|
+
<h3>Password</h3>
|
|
337
|
+
<h3>Two-factor authentication</h3>
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## Localization Considerations
|
|
343
|
+
|
|
344
|
+
### Writing for Translation
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
Avoid idioms:
|
|
348
|
+
"Piece of cake" → "Easy"
|
|
349
|
+
"Kill two birds" → "Accomplish both"
|
|
350
|
+
"Ball is in your court" → "Your turn to decide"
|
|
351
|
+
|
|
352
|
+
Keep text expandable (30-40% expansion typical):
|
|
353
|
+
English: "Settings"
|
|
354
|
+
German: "Einstellungen"
|
|
355
|
+
|
|
356
|
+
Avoid text in images (can't be translated)
|
|
357
|
+
|
|
358
|
+
Don't embed variables mid-sentence:
|
|
359
|
+
"You have 5 messages" (number placement varies by language)
|
|
360
|
+
→ "Messages: 5"
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Cultural Sensitivity
|
|
364
|
+
|
|
365
|
+
- Date formats vary (MM/DD/YYYY vs. DD/MM/YYYY)
|
|
366
|
+
- Color meanings differ across cultures
|
|
367
|
+
- Gestures and icons may have different connotations
|
|
368
|
+
- Humor often doesn't translate
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## AI Tools for UX Writing
|
|
373
|
+
|
|
374
|
+
### Content Generation
|
|
375
|
+
|
|
376
|
+
**ChatGPT / Claude:**
|
|
377
|
+
- Brainstorm alternative phrasings
|
|
378
|
+
- Generate variation options
|
|
379
|
+
- Check tone consistency
|
|
380
|
+
|
|
381
|
+
**Writer / Jasper:**
|
|
382
|
+
- Brand voice enforcement
|
|
383
|
+
- Style guide compliance
|
|
384
|
+
- Terminology consistency
|
|
385
|
+
|
|
386
|
+
### Quality Checking
|
|
387
|
+
|
|
388
|
+
**Grammarly:**
|
|
389
|
+
- Grammar and spelling
|
|
390
|
+
- Clarity suggestions
|
|
391
|
+
- Tone detection
|
|
392
|
+
|
|
393
|
+
**Hemingway Editor:**
|
|
394
|
+
- Readability score
|
|
395
|
+
- Sentence complexity
|
|
396
|
+
- Passive voice detection
|
|
397
|
+
|
|
398
|
+
### Important Note
|
|
399
|
+
|
|
400
|
+
AI is a co-pilot, not a replacement. Always:
|
|
401
|
+
- Review and edit AI suggestions
|
|
402
|
+
- Ensure brand voice consistency
|
|
403
|
+
- Test with real users
|
|
404
|
+
- Consider context AI might miss
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## Testing Microcopy
|
|
409
|
+
|
|
410
|
+
### A/B Testing
|
|
411
|
+
|
|
412
|
+
Test button text:
|
|
413
|
+
```
|
|
414
|
+
A: "Sign up free"
|
|
415
|
+
B: "Get started"
|
|
416
|
+
C: "Create account"
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
Measure: Click-through rate, completion rate
|
|
420
|
+
|
|
421
|
+
### Usability Testing
|
|
422
|
+
|
|
423
|
+
- Can users complete the task?
|
|
424
|
+
- Do they understand what's happening?
|
|
425
|
+
- Any confusion or hesitation?
|
|
426
|
+
- What do they expect to happen next?
|
|
427
|
+
|
|
428
|
+
### Preference Testing
|
|
429
|
+
|
|
430
|
+
"Which of these messages is clearer?"
|
|
431
|
+
"Which feels more appropriate for this situation?"
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## Content Design Process
|
|
436
|
+
|
|
437
|
+
### 1. Research
|
|
438
|
+
- Understand user needs and language
|
|
439
|
+
- Analyze existing content
|
|
440
|
+
- Review support tickets and FAQs
|
|
441
|
+
- Conduct user interviews
|
|
442
|
+
|
|
443
|
+
### 2. Strategy
|
|
444
|
+
- Define voice and tone
|
|
445
|
+
- Create content guidelines
|
|
446
|
+
- Map user journeys
|
|
447
|
+
- Identify content touchpoints
|
|
448
|
+
|
|
449
|
+
### 3. Write
|
|
450
|
+
- Draft multiple options
|
|
451
|
+
- Collaborate with design
|
|
452
|
+
- Iterate with feedback
|
|
453
|
+
- Consider edge cases
|
|
454
|
+
|
|
455
|
+
### 4. Validate
|
|
456
|
+
- Usability testing
|
|
457
|
+
- A/B testing
|
|
458
|
+
- Accessibility review
|
|
459
|
+
- Stakeholder review
|
|
460
|
+
|
|
461
|
+
### 5. Maintain
|
|
462
|
+
- Update as product evolves
|
|
463
|
+
- Track metrics
|
|
464
|
+
- Gather ongoing feedback
|
|
465
|
+
- Keep guidelines current
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## Resources
|
|
470
|
+
|
|
471
|
+
### Books
|
|
472
|
+
- "Microcopy: The Complete Guide" - Kinneret Yifrah
|
|
473
|
+
- "Strategic Writing for UX" - Torrey Podmajersky
|
|
474
|
+
- "Conversational Design" - Erika Hall
|
|
475
|
+
|
|
476
|
+
### Courses
|
|
477
|
+
- UX Content Collective - UX Writing Fundamentals
|
|
478
|
+
- UX Writing Hub - UX Writing Academy
|
|
479
|
+
- Coursera - Microcopy & UX Writing
|
|
480
|
+
|
|
481
|
+
### Communities
|
|
482
|
+
- UX Writing Hub (Slack)
|
|
483
|
+
- Content Design (Slack)
|
|
484
|
+
- r/UXWriting (Reddit)
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## Sources
|
|
489
|
+
|
|
490
|
+
- [UX Writing Hub](https://uxwritinghub.com/)
|
|
491
|
+
- [Nielsen Norman Group - Writing for the Web](https://www.nngroup.com/topic/writing-web/)
|
|
492
|
+
- [Google Design - Writing](https://design.google/library/ux-writing)
|
|
493
|
+
- [Shopify Polaris - Voice and Tone](https://polaris.shopify.com/foundations/voice-and-tone)
|