skills / design

ux-copy

what it does

Write or review UX copy — microcopy, error messages, empty states, CTAs. Trigger with "write copy for", "what should this button say?", "review this error message", or when naming a CTA, wording a confirmation dialog, filling an empty state, or writing onboarding text.

Verified Before and after: 2 models 1 try per case View source Download .zip

Compare the answers

Answers from Claude Sonnet 5.5 and GPT-6.1 Sol · try 1 of 1

Same request, same model, once with the skill and once without. Read both and judge for yourself.

“Can you rewrite these three error messages? Users keep contacting support about them.”

Source material given with the request

App: Tallyroom, team expense tracking (web). 1. Payment form, shown when the card is declined by the bank: "Error 4012: Operation failed." 2. Sign-up password field, shown when the password is under 12 characters or has no number: "Invalid input." 3. Receipt upload, shown when the file is over the 25 MB limit: "Something went wrong. Please try again later."
with the skill
## UX Copy: Tallyroom error messages ### Recommended Copy | Location | Copy | |---|---| | **Payment form** | Your bank declined this payment. Try a different card or contact your bank. | | **Password field** | Use at least 12 characters, including at least one number. | | **Receipt upload** | This file exceeds the 25 MB limit. Choose a smaller file. | ### Alternatives For password validation, use a more specific message when you can identify which requirement is unmet: - **Too short:** Use at least 12 characters. - **Missing a number:** Include at least one number. - **Both:** Use at least 12 characters, including at least one number. ### Rationale
Show the rest (7 more lines)
- **Payment:** Names the cause without guessing why the bank declined the payment, and gives two next steps. Keep error code `4012` in diagnostic logs rather than the main message. - **Password:** States the requirements instead of calling the input “invalid.” Show these requirements before an error occurs, too. - **Upload:** Explains the actual limit and how to proceed. Removes “try again later,” since waiting won’t fix the file size. ### Localization Notes Keep “Tallyroom” unchanged. Allow room for text expansion, and format “25 MB” according to locale conventions. Use the same terms—“card,” “password,” and “file”—throughout the flow.
without
1. **Payment declined** “Your bank declined this payment. Try a different card or contact your bank for help.” 2. **Password requirements not met** Ideally, show only the requirement that’s missing: - Too short: “Use at least 12 characters.” - No number: “Include at least one number.” - Both: “Use at least 12 characters, including at least one number.” 3. **Receipt file too large** “This file is too large. Upload a receipt that’s 25 MB or smaller.”

Answers are shown exactly as the model wrote them, from the first try, and nothing is picked by hand.

The models

2 models

Claude Sonnet 5.5

made by Anthropic

claude-sonnet-5-5 · revision not reported by the provider

1 try per case · tested 3 Nov 2026

GPT-6.1 Sol

made by OpenAI

gpt-6.1-sol · revision not reported by the provider

1 try per case · tested 3 Nov 2026

The tasks

written by Carte Blanche
delete-workspace-dialog

“Rewrite this confirmation dialog. It shows when someone deletes a workspace.”

onboarding-consistency

“Review the copy on these three onboarding screens before we ship.”

reports-empty-state

“Our Reports page just says 'No data.' when someone hasn't made any reports yet. Write a better empty state. The button can be at most 20 characters.”

trial-button-label

“The button on our pricing page just says 'Submit'. It starts a 14-day free trial, no card needed. What should it say?”

vague-error-messages

“Can you rewrite these three error messages? Users keep contacting support about them.”

Install

Download the .zip and unzip it. Put its files, in a folder named ux-copy, here:

Claude Code~/.claude/skills/Every project. For one project only, use .claude/skills/ inside it.
Codex~/.agents/skills/Every project. For one repository only, use .agents/skills/ inside it.
Cursor~/.cursor/skills/Cursor also reads the Claude Code and Codex folders above.

Then start a new session and ask for what the skill does. Other agents that read SKILL.md have their own skills folder; check their docs.

Coming after launch: get skills from inside your agent, no download needed.