better-writing
Improve UX writing for interface labels, errors, empty states, settings, notifications, and product voice consistency.
Install
npx skills add https://github.com/jakubkrehel/skills --skill better-writingCopy patterns
Templates for destructive flows and status copy, and recipes for plurals and locale formatting.
Destructive flows
An undo toast carries an action, so how long it stays on screen is better-accessibility's.
Status copy
Keep the in-progress and done strings parallel, so "Saving changes…" resolves to "Changes saved".
Plurals and placeholders
Write one message per sentence in ICU MessageFormat, which most i18n libraries read. The variable sits inside the sentence and the translator moves it:
=0 matches the number zero exactly. one and other are plural categories, and a translator adds few or many where the language needs them. Without a library, pick the category with new Intl.PluralRules(locale).select(count).
Locale formatting
Never hand-build a number, date or list. Pass the user's locale to Intl:
Intl.ListFormat follows each locale's own comma and conjunction rules, so never join names with ", " and " and " by hand.