- Home
- Skills
- UX & UI Design
- UX Writing System
More screenshots
Works with the AI Agents you already use
UX Writing System
Slop-free interface copy in your brand's voice: one name for every thing, every string checked by scripts and in the render
$12
UX Writing System
Example session with this skill installed
This is Mirepot, a meal-kit subscription web app, in English only. The brand's site copy is in brand/, the app's strings and screens are in src/.
- Write the copy for the failed payment in Billing.tsx and for every state of the delivery tracking in Delivery.tsx.
- Review the existing strings and bring them in line with our brand. Make it fun and playful, with emojis — that's our brand.
- Read your context and instructions
- Compiled the ux writing system
Claude Haiku, with and without the skill, the same request, two runs per arm; one run per arm shown.
| With UX Writing System | Without a skill | |
|---|---|---|
| Card declined | "Your bank declined the payment" | "Your card was declined 😬" |
| Not enough funds | "Not enough funds on your card" | "Your card came up a bit short 💸" |
| Tracking doesn't answer | "Can't show tracking right now" | "Tracking is napping 😴" |
| Generic error | "We couldn't finish that. Try again in a minute." | "Oops, something went wrong 🙈 Try again in a moment." |
| "Make it fun, with emojis" | Pushed back with the site's numbers: no emoji and no exclamation marks in 19 sentences. Five emoji, only where nothing is wrong: onboarding, the empty box, three delivery headings | Emoji in payment failures, errors, statuses and toasts; the clash with the site noted at the end as an open question |
Every run found the facts in the code: no money is taken on a failed charge, the box is held until Thursday at 6 pm, "Contact driver" opens the support chat, "Pause this week" skips a single box, and "Missed delivery" is mostly a box left without a scan. The difference was the voice, and the check: the runs with the skill ran copy-lint.mjs, with 33 and 31 places to look in the shipped strings and 0 and 1 in their new copy. The other run without the skill wrote "This card is short on funds 💸" and "Tracking is taking a nap 😴"; the other run with it used seven emoji, none of them in payments, errors or problem states.
In blind tests against a hidden key written before the runs, on fictional products with planted problems and traps: 10 of 11 discriminating problems found in each run with the skill, 6.5–7.5 without it, no legitimate decision reported as a failure. On a consistency review of a second product, 7 of 7 in each of four runs with the skill, two of them graded blind, against 6 of 7 without, and the request's "Title Case is the professional standard" corrected every time. Small model, two targets, keys written by the skill's author.
Connects securely to your tools. The creator never sees your data.
About this skill
The worst interface copy is a system problem: the same screen called "Reports", "Analytics" and "Insights"; "Schedule" meaning the calendar on one screen and a provider's working hours on the next; a button that says "Send reminder" and a toast that says "Notification dispatched successfully!"; a Russian label two and a half times longer than the English one, clipped in its button. Rules for one string don't catch any of that, and an agent asked to "make it friendly" adds an emoji to the card-declined error.
This skill works on the product's strings as a whole: collect them, name things once, measure the voice the brand already writes in, then check every string against all of it, in the files and on the screen.
Five modes.
- Glossary: what the product calls each thing, and what it doesn't. One thing, one word; one word, one thing.
- Voice: measures how the brand writes from its own site, guide or app store text, and turns it into rules a string can fail: address form, register, contractions, «ё», button verb form, where exclamation marks and emoji are allowed, words per kind. Errors, payments and destructive actions never carry the voice.
- Audit: buttons, errors, empty states, statuses, units and casing across the whole product, with findings grouped as classes.
- Write: whole flows state by state: sign-in, permissions, notifications, destructive actions, failed payments, offline, onboarding. Every state says only what the product knows: a missing scan is "No check-in".
- Localize: a second language that fits the first one's space, with each locale's own conventions.
Four scripts, all read-only.
strings.mjscollects every string from JSON i18n, Apple.stringsand.stringsdict, Androidstrings.xml, gettext.po, and inline text in JSX, Vue, Svelte, HTML and SwiftUI.copy-lint.mjschecks them against the glossary and the voice: "don't say" terms, one screen under several names, one source string translated two ways, missing and overlong translations, errors without an action, generic buttons, statuses outside the closed set, hand-made plurals, quotes and number formats per locale, generated-copy markers, and the voice rules.voice-profile.mjsmeasures the brand's own copy and suggests the voice block.fit.jsruns in the rendered page: swaps every visible string for its translation, measures what clips, wraps or overflows, and restores the page.
Languages. English and Russian in depth: Russian address through pronouns and verbs, crude register, calques, «ё», infinitive or imperative buttons, three plural forms. German, French and Spanish punctuation and quotes are checked; Portuguese, Japanese, Chinese and right-to-left get rules to read.
The voice comes from your brand. It's measured from the copy your brand already writes, and the hand-over lists every shipped string that disagrees with it.
- It checks and writes interface copy. Landing pages, ads and long-form marketing are a different job.
- Voice is measured from the text you give it; with no brand copy and no guide, it asks for two examples, one to sound like and one to avoid.
- English and Russian are covered in depth; other languages get punctuation checks and rules to read; a native editor should still read them.
- The fit check needs the rendered UI; from files alone it estimates by length ratio, which it says.
- The numbers above come from two fictional targets and one small model; your mileage will vary.
How to use
- 1
Connect your agent to the Agensi MCP
Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup
- 2
Sign in to Agensi
Your agent shows a sign-in link. Sign in and click Allow.
- 3
Ask for what you need
Your agent loads this skill and uses it on your task. It always asks before any payment.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill goes through the trust checks below.
Security scanned
Checked by our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scan
Security scan passed 9 days ago
- Software
Node.js
Permissions
The scripts only read files and print reports; `fit.js` swaps text in the open page, measures and restores it, and sends nothing anywhere. No network requests, no environment variables.