ux-writing/SKILL.md
Microcopy and UX writing standards for buttons, error messages, empty states, loading states, form labels, confirmations, tooltips, and onboarding. Covers voice vs tone, accessibility in writing, translation readiness, and consistency rules...
npx skillsauth add peterbamuhigire/skills-web-dev ux-writingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ux-writing or would be better handled by a more specific companion skill.SKILL.md first, then load only the referenced deep-dive files that are necessary for the task.| Companion Skill | When to Load |
|---|---|
| practical-ui-design | Visual system for text styling |
| form-ux-design | Deep form label and validation patterns |
| content-writing | Long-form copywriting (articles, blogs) |
| language-standards | Multi-language standards (EN/FR/SW) |
| ai-slop-prevention | Catch generic AI copy patterns |
Scope: This skill covers interface microcopy — the short text inside apps. For long-form content (articles, blogs, marketing pages), use content-writing instead.
| Principle | Meaning | |---|---| | Specific | Say exactly what happened, what to do, what it means | | Concise | If a word can be removed without losing meaning, remove it | | Active | Use active voice ("We saved your file" not "Your file has been saved") | | Human | Write as a helpful colleague, not a robot or a lawyer | | Helpful | Every piece of text should help the user take their next step | | Consistent | Same term for the same concept everywhere in the product |
| BAD | GOOD | Why | |---|---|---| | Submit | Create account | Specific action + object | | OK | Save changes | Names the consequence | | Yes / No | Delete message / Keep message | Names both outcomes | | Click here | View pricing plans | Describes destination | | Cancel | Discard draft | Says what actually happens | | Confirm | Place order | Matches user's mental model |
Every error message must answer:
| BAD | GOOD | |---|---| | Error | Your password must be at least 8 characters | | Invalid input | Enter a valid email address (e.g., [email protected]) | | Something went wrong | We couldn't save your changes. Check your connection and try again. | | 404 | We can't find that page. It may have been moved or deleted. | | Request failed | The file is too large. Choose a file under 10 MB. | | Validation error | Enter a date after today |
Empty states are onboarding moments, not dead ends.
| BAD | GOOD | |---|---| | No data | No projects yet. Create a project to start tracking your work. [New project] | | Nothing to show | Your inbox is empty. Messages from your team will appear here. | | No results | No matches for "flibbertigibbet". Try different keywords or check the spelling. | | (blank screen) | You haven't added any team members yet. Invite your team to start collaborating. [Invite team] |
| BAD | GOOD | |---|---| | Loading... | Saving your draft... | | Please wait | Generating your report... | | Processing | Uploading 3 of 12 photos... | | One moment | Connecting to payment provider... |
| BAD | GOOD | |---|---| | Success! | Invoice #1042 sent to [email protected] | | Done | Your changes have been saved | | Completed | Payment of UGX 500,000 processed |
Most actions should be undoable, eliminating the need for confirmation.
[Heading]: Name the action ("Delete this project?")
[Body]: State the consequence ("All 47 tasks and files will be permanently deleted.")
[Primary]: Name the action ("Delete project") — use red for destructive
[Secondary]: Name the safe option ("Keep project")
e.g., [email protected]Your product's personality — stays the same everywhere. Define once:
| Moment | Tone | Example | |---|---|---| | Onboarding | Warm, encouraging | "Welcome! Let's set up your workspace." | | Success | Brief, satisfied | "Payment processed." | | Error | Calm, helpful | "We couldn't connect. Check your internet and try again." | | Destructive action | Serious, clear | "This will permanently delete all project data." | | Empty state | Optimistic, guiding | "No messages yet. Start a conversation with your team." | | Waiting | Reassuring | "Generating your report. This usually takes 10-15 seconds." |
alt="")aria-label: <button aria-label="Close dialog">✕</button>aria-describedby to connect help text to form fieldsaria-live="polite" for dynamic status messages| Language | Expansion vs English | |---|---| | German | +30-35% | | French | +15-20% | | Finnish | +30-40% | | Chinese/Japanese/Korean | -10-30% (but may need taller line height) | | Arabic/Hebrew | RTL layout + similar length |
item(s))| Pick ONE | Don't Mix | |---|---| | Delete | Remove, Trash, Discard | | Edit | Modify, Change, Update | | Create | Add, New, Make | | Settings | Preferences, Options, Configuration | | Sign in | Log in, Login |
Sources: Impeccable ux-writing reference (Bakaus, 2025); microcopy patterns from UX Writing Hub; Nielsen Norman Group error message guidelines.
data-ai
Use when adding AI-powered analytics to a SaaS platform — semantic search over business data, natural language queries, trend detection, anomaly alerts, and AI-generated insights for dashboards. Covers embeddings, NL2SQL, and per-tenant analytics...
data-ai
Design AI-powered analytics dashboards — what metrics to show, how to display AI predictions and confidence, drill-down patterns, KPI cards, trend visualisation, AI Insights panels, export design, and role-based dashboard variants. Invoke when...
development
Use when designing, building, reviewing, or upgrading production software systems that must be secure, performant, maintainable, scalable, and user-centered. Apply before writing specs, code, architecture, APIs, databases, mobile apps, SaaS platforms, or ERP systems.
development
Professional web app UI using commercial templates (Tabler/Bootstrap 5) with strong frontend design direction when needed. Use for CRUD interfaces, dashboards, admin panels with SweetAlert2, DataTables, Flatpickr. Clone seeder-page.php, use...