ux-writing

Write and lint interface copy for labels, alerts, errors, and empty states.

1|Updated Jun 30, 2026
One-click install
npx skills add https://github.com/Lia-Creative/lia-plugins --skill ux-writing-lia-creative
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ux-writing
Source: https://github.com/Lia-Creative/lia-plugins/tree/main/lia-tools/skills/ux-writing
Command: npx skills add https://github.com/Lia-Creative/lia-plugins --skill ux-writing-lia-creative

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Interface copy drifts: buttons get inconsistent verbs, errors blame the user, and raw system text leaks into screens. This Skill writes and repairs the words inside a product — action labels, alerts, errors, empty states, notifications — using Apple's mechanics and a shared action lexicon, then verifies the result with a deterministic lint. ## Core Features & Use Cases - Pattern-based copywriting: Surface-by-surface patterns for labels, destructive confirmations, failures, empty states, waiting, permissions, settings, fields, notifications, first run, and success states. - Shared action lexicon: One verb per action across the whole product (Add/Remove, Turn On/Turn Off, Show Details/Hide Details), with a governed process for adding new rows. - Deterministic copy lint: copy-lint.py checks title case, ending punctuation, banned words, first person, system-text leaks, and Australian spelling, with a self-test that proves every rule family is exercised. - Use Case: Run a repair pass over a repo's .tsx strings, inventory every label and message, rewrite the broken ones against the patterns, and deliver a where/kind/now/proposed/why table for review. ## Quick Start Ask the agent to write or repair the copy for a screen or flow, for example: "Write the labels and error messages for this checkout flow using the ux-writing skill."

Frequently Asked Questions about ux-writing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write consistent button labels across a product?▼

Use a shared action lexicon that assigns one verb per action, such as Add/Remove or Turn On/Turn Off, and check it before naming anything new. Labels should be verbs naming the result, in title case, with no ending punctuation.

How do I lint interface copy for style violations?▼

Run copy-lint.py with a file of strings formatted as kind-tab-string per line, or pass a single string with --text and --kind. It reports E- errors for defects like wrong title case or leaked system text, and W- warnings for judgment calls.

What should an error message say instead of a system error?▼

State what happened in the person's terms, confirm their data is safe, and give the next step, such as "Couldn't reach Lia just now." Raw status codes, exception names, and stack traces belong in logs or behind a Show Details disclosure.

Does the copy lint handle Australian English spelling?▼

Yes, the lint flags American spellings like color, favorite, and organize as warnings and expects Australian forms such as colour, favourite, and organise. Correct Australian copy passes clean and is covered by regression fixtures.

When should a button label end with an ellipsis?▼

Use a single ellipsis character only when pressing the control opens further input, such as "Choose a Photo…". If nothing further opens, as with Show Details, the label takes no ellipsis and no ending punctuation.

What are the limitations of an automated copy lint?▼

The lint is a backstop, not the standard: it checks mechanics like case, punctuation, and banned words but cannot judge whether a label names the right result. Writers still make the wording decisions, and warnings never fail a run.