Use when writing or reviewing functional UI text: button labels, empty states, tooltips, dialogs, placeholders, loading/progress messages, toasts, inline validation, permission copy, or onboarding steps. Covers interface-copy patterns such as verb-first action labels, acknowledge-explain-guide empty states, one-sentence tooltips, consequence-first confirmations, progressive loading language, and blur/fix validation messages. Do NOT use for marketing persuasion, documentation prose/guide structure, feedback-state staging, or general linguistic rationale behind wording. Do NOT use for write the marketing headline for the pricing page. Do NOT use for review this WCAG 2.2 contrast violation on the dashboard. Do NOT use for explain the morphology rule behind verb-first function names. Do NOT use for restructure this help-center article into a tutorial. Do NOT use for decide the kebab-case format for this new CSS class. Do NOT use for rename this React component across all call-sites.
Microcopy is the functional text inside a working interface: the button label a user reads before clicking, the empty state they meet when they first arrive, the error message that appears when something fails, the tooltip that answers "what is this?", the toast that confirms "done." It is distinct from marketing copy (which persuades) and documentation (which teaches at length) — microcopy's job is to make the interface operable, telling the user what just happened, what will happen if they act, and what to do next, in as few specific words as possible. The discipline is not free-form writing; each interface surface carries a fixed shape the words must fill — verb-first action labels, acknowledge → explain → guide empty states, consequence-first confirmations, What → Why → What-to-do errors, progressive loading language keyed to elapsed time, blur/fix validation. This skill exists because functional UI text is structurally unowned in most products: copywriters own the marketing surfaces, tech writers own the docs, naming conventions own code identifiers, but nobody owns the words inside the running interface — so the placeholder text written during implementation ("Submit", "Error occurred", "No data") ships and stays forever. The skill replaces that accidental quality with surface-specific patterns and a verification checklist, so the words a user actually reads are short, specific, actionable, and correct for the surface they appear on.
Coverage
Functional UI text patterns across all interactive surfaces:
Button labels — verb-first, specific action, max 3 words; never generic ("Submit", "OK", "Yes", "Continue")
Empty states — three-part structure: acknowledge → explain → guide, with one primary action
Tooltips — one sentence, no terminal period, answers "what is this?"
Confirmation dialogs — state the consequence first, name the action in the button, always provide an escape
Placeholder text — example format not instruction; never the only label for a field
Loading and progress messages — progressive disclosure: nothing → spinner → skeleton → message → reassurance, by elapsed time
Error / success / warning messages — three-part What → Why → What-to-do structure with blame-free framing
Inline form-validation messages — appear on blur, disappear on fix, specific not generic
Toast / snackbar messages — action plus context, undo for reversible actions, auto-dismiss after 5 seconds, max 2 lines
Permission request copy — explain why before asking
Onboarding step copy — one action per step, progressive disclosure, time-honest
Philosophy of the skill
Microcopy is the most-read, least-reviewed text in any application. A user may never read the docs, skip the onboarding, and ignore the marketing — but they will read the button label before clicking it. They will read the error message when something fails. They will read the empty state when they first arrive. These micro-moments determine whether the user feels confident or confused, and they compound across every interaction.
The failure mode is predictable: developers write placeholder microcopy during implementation ("Click here", "Error occurred", "No data"), it ships because nobody reviews it, and it stays forever. Agents make it worse — they default to verbose, hedged, generic text ("An error has occurred while processing your request. Please try again later.") when users need short, specific, actionable text ("Payment failed — check your card number.").
This skill exists because microcopy quality is structurally unowned in most projects. Marketing copy has a copywriter. Documentation has a tech writer. Naming has a convention. But nobody owns the words inside the working interface — the button that says "Submit" when it should say "Save Changes", the empty state that says "No items" when it should say "No orders yet — connect your storefront to start syncing." The cost of that gap is paid one click at a time.
Scope boundary: microcopy writes FUNCTIONAL UI text — button labels, error messages, empty states, tooltips, confirmation dialogs. It does NOT cover marketing copy or content-strategy decisions; those belong to dedicated copywriting and content-strategy skills.
1. Button Labels
Buttons are the primary action interface. Every button label is a micro-contract: it promises what will happen when clicked.
Specific action: "Delete Order" not "Delete", "Send Invitation" not "Send"
Max 3 words for primary actions: "Save", "Save Changes", "Save and Close"
Match the consequence: if clicking deletes data, the button says "Delete" not "OK". If it sends an email, it says "Send Email" not "Confirm"
Avoid generic labels: "Submit", "OK", "Yes", "Continue" are almost always wrong — name the actual action
Cancel is always available: destructive dialogs need both the action ("Delete Order") and the escape ("Cancel")
Button label patterns by context:
Context
Bad
Good
Save form
Submit
Save Changes
Delete item
OK
Delete Order
Connect platform
Continue
Connect Storefront
Export data
Download
Export as CSV
Confirm send
Yes
Send Invitation
Dismiss dialog
Close
Cancel
2. Empty States
Empty states are the first impression for every new feature. They must acknowledge, explain, and guide.
Three-part structure:
Acknowledge — "No orders yet" — confirm the user is in the right place and the emptiness is expected
Explain — "Orders will appear here once your storefront syncs" — tell them why it's empty and when it won't be
Guide — "Connect Storefront" (button) — give them the action that fills the empty state
Rules:
Never just "No data" or "Nothing to show" — this is a dead end
Use "yet" to imply future content: "No orders yet" vs "No orders"
Include one primary action button that resolves the empty state
For filtered empty states: "No orders match your filters" + "Clear filters" button
For error empty states: "Could not load orders" + "Try again" button + brief explanation
Common empty-state patterns:
Surface
Message
Action
Orders table (new user)
No orders yet
Connect Storefront
Orders table (filtered)
No orders match these filters
Clear filters
Dashboard (no data)
Connect a storefront to see your profits
Get Started
Product list (empty)
No products synced yet
Sync Products
3. Tooltips
Tooltips answer one question: "What is this?"
Rules:
One sentence maximum, no period at the end
Answer "what is this?" or "why would I use this?" — not "how does this work?"
Never repeat the label the tooltip is attached to
No links in tooltips (they disappear on mouseout)
Use sentence case for the first word only
Appear on hover after 300ms delay, dismiss on mouseout
Examples:
Production-cost field: "Cost of goods sold, including production and shipping to your fulfillment center"
Confidence badge: "How complete the profit calculation is for this order"
Sync status icon: "Last synced 5 minutes ago from your storefront"
4. Confirmation Dialogs
Confirmation dialogs exist for one reason: preventing irreversible mistakes.
Rules:
State the consequence first: "This will permanently delete 3 orders and their associated profit data."
Name the action in the button: "Delete 3 Orders" not "Confirm" or "OK"
Provide the escape: "Cancel" button, always present
No double negatives: "Don't cancel" is never the right label
Include the count: "Delete 3 orders" not "Delete selected orders"
Distinguish destructive from reversible: red button + explicit "permanently" for destructive; normal button for reversible
5. Error Messages
Error messages are the most important microcopy in the application. When something fails, the user needs clarity, not apology.
Three-part structure:
What happened: "Payment failed" — state the failure clearly
Why: "Your card was declined" — give the specific reason if known
What to do: "Check your card details or try a different payment method" — actionable next step
Rules:
Never "An error occurred" — say what errored
Never "Please try again later" — say what to try or when later is
Blame-free framing: "We couldn't sync your orders" not "You have a sync error"
Include error codes only in technical contexts, never in user-facing messages
For transient errors: "Sync paused — retrying automatically" with a progress indicator
The general blame-free / What → Why → What-to-do framing is the linguistic rule (see linguistics); microcopy applies it specifically to in-product error toasts, banners, and inline messages.
6. Loading and Progress
Users tolerate waiting when they understand what's happening.
Progressive disclosure by elapsed time:
0 – 300 ms: show nothing (the action feels instant)
300 ms – 2 s: show spinner or skeleton (brief acknowledgment)
2 – 10 s: show message ("Syncing your orders from your storefront…")
10 s+: show progress ("Syncing orders… 47 of 312")
30 s+: show reassurance ("This may take a few minutes for large stores. You can leave this page.")
7. Inline Validation Messages
Validation messages appear at the field level, not the form level.
Rules:
Appear on blur (not on keystroke — that's hostile)
Disappear as soon as the user fixes the input
Specific, not generic: "Email must include @" not "Invalid input"
Placed below the field, not in an alert box
Red text + icon for errors, green for success (with non-color indicator for accessibility)
Never use exclamation marks in validation messages
8. Toast / Snackbar Messages
Toasts confirm completed actions. They are the UI's "done" signal.
Rules:
Action + context: "Order #1234 deleted" not "Item deleted"
Include undo for reversible actions: "Order archived. Undo"
Auto-dismiss after 5 seconds (configurable for actions with undo)
Max 2 lines of text
Stack from bottom, newest on top
Never use toasts for errors — errors need persistent, in-context display
Verification
After writing or reviewing UI text, verify:
Button labels are verb-first and name the actual action (no "Submit", "OK", "Yes", "Continue" alone)
Empty states acknowledge → explain → guide, with a real next-step button
Tooltips are one sentence, no terminal period, and answer "what is this?"
Confirmation dialogs state the consequence first and name the action in the button (with a Cancel escape)
Placeholder text is an example format, not the only label
Loading messages follow progressive disclosure by elapsed time, not a single state
Error messages follow What → Why → What-to-do, blame-free, with a specific action
Inline validation appears on blur and disappears on fix; messages are specific, not generic
Toasts include action + context and an undo path for reversible actions
Functional UI text stays inside the interface — does not drift into marketing or documentation territory
Do NOT Use When
Instead, use
Why
linguistics
The user wants the underlying linguistic rule (morphology, polysemy, register), not the specific UI-text pattern. Linguistics owns the why; microcopy owns the what to write.
documentation
Writing or restructuring long-form prose for guides, tutorials, reference docs, or help-center articles. Documentation owns doc architecture and prose; microcopy owns in-product UI text.
a11y
Auditing UI text for screen-reader announcement, aria-live behavior, or color-contrast compliance. A11y owns the accessibility contracts; microcopy owns the words.
naming-conventions
Deciding the casing format for an artifact kind (kebab vs camel vs snake). Naming-conventions is for code identifiers, not user-facing UI strings.
intent-recognition
Disambiguating a user's intent from an ambiguous prompt. Intent-recognition is upstream of any UI; microcopy is the words the UI uses to respond.
Page structure, funnel strategy, or what content belongs on each page. Content strategy is upstream of microcopy.
interaction-feedback
When and how feedback states appear (timing, placement, persistence, recovery). Interaction-feedback owns the staging; microcopy owns the words inside the staged element.
Skill Graph context
Classification
Subject: design
Public: true
Domain: design/ux
Scope: Writing and reviewing functional UI text — button labels, empty states, tooltips, dialogs, placeholders, loading/progress messages, toasts, inline validation, permission copy, and onboarding steps — using interface-copy patterns such as verb-first action labels, acknowledge-explain-guide empty states, one-sentence tooltips, consequence-first confirmations, progressive loading language, and blur/fix validation messages. Portable across any UI; principle-grounded, not repo-bound. Excludes marketing persuasion, documentation prose and guide structure, feedback-state staging (interaction-feedback), and general linguistic rationale behind wording.
When to use
rewrite this button label so it names the actual action instead of saying Submit
what should the empty state say when a user has no orders yet?
draft tooltip text for a production-cost field that explains what it means in one sentence
this destructive confirmation dialog says OK — what should the button label be instead?
the inline validation message says Invalid input — make it specific and actionable
draft a toast message for a successful order export with undo
what should the loading state say when a sync takes longer than 10 seconds?
Analogy: Microcopy is to an interface what stage directions and labels are to a theater set — not the marketing poster outside (copywriting) or the program notes (documentation), but the lit EXIT sign, the 'pull' on the door, and the usher's one-line 'your seat is to the left': short functional text placed exactly where someone needs to know what to do next.
1---2name: microcopy3description: Use when writing or reviewing functional UI text: button labels, empty states, tooltips, dialogs, placeholders, loading/progress messages, toasts, inline validation, permission copy, or onboarding steps. Covers interface-copy patterns such as verb-first action labels, acknowledge-explain-guide empty states, one-sentence tooltips, consequence-first confirmations, progressive loading language, and blur/fix validation messages. Do NOT use for marketing persuasion, documentation prose/guide structure, feedback-state staging, or general linguistic rationale behind wording. Do NOT use for write the marketing headline for the pricing page. Do NOT use for review this WCAG 2.2 contrast violation on the dashboard. Do NOT use for explain the morphology rule behind verb-first function names. Do NOT use for restructure this help-center article into a tutorial. Do NOT use for decide the kebab-case format for this new CSS class. Do NOT use for rename this React component across all call-sites.4license: MIT5---6# Microcopy78## Concept of the skill910Microcopy is the functional text inside a working interface: the button label a user reads before clicking, the empty state they meet when they first arrive, the error message that appears when something fails, the tooltip that answers "what is this?", the toast that confirms "done." It is distinct from marketing copy (which persuades) and documentation (which teaches at length) — microcopy's job is to make the interface *operable*, telling the user what just happened, what will happen if they act, and what to do next, in as few specific words as possible. The discipline is not free-form writing; each interface surface carries a fixed shape the words must fill — verb-first action labels, acknowledge → explain → guide empty states, consequence-first confirmations, What → Why → What-to-do errors, progressive loading language keyed to elapsed time, blur/fix validation. This skill exists because functional UI text is structurally unowned in most products: copywriters own the marketing surfaces, tech writers own the docs, naming conventions own code identifiers, but nobody owns the words *inside* the running interface — so the placeholder text written during implementation ("Submit", "Error occurred", "No data") ships and stays forever. The skill replaces that accidental quality with surface-specific patterns and a verification checklist, so the words a user actually reads are short, specific, actionable, and correct for the surface they appear on.1112## Coverage1314Functional UI text patterns across all interactive surfaces:1516- **Button labels** — verb-first, specific action, max 3 words; never generic ("Submit", "OK", "Yes", "Continue")17- **Empty states** — three-part structure: acknowledge → explain → guide, with one primary action18- **Tooltips** — one sentence, no terminal period, answers "what is this?"19- **Confirmation dialogs** — state the consequence first, name the action in the button, always provide an escape20- **Placeholder text** — example format not instruction; never the only label for a field21- **Loading and progress messages** — progressive disclosure: nothing → spinner → skeleton → message → reassurance, by elapsed time22- **Error / success / warning messages** — three-part What → Why → What-to-do structure with blame-free framing23- **Inline form-validation messages** — appear on blur, disappear on fix, specific not generic24- **Toast / snackbar messages** — action plus context, undo for reversible actions, auto-dismiss after 5 seconds, max 2 lines25- **Permission request copy** — explain *why* before asking26- **Onboarding step copy** — one action per step, progressive disclosure, time-honest2728## Philosophy of the skill2930Microcopy is the most-read, least-reviewed text in any application. A user may never read the docs, skip the onboarding, and ignore the marketing — but they will read the button label before clicking it. They will read the error message when something fails. They will read the empty state when they first arrive. These micro-moments determine whether the user feels confident or confused, and they compound across every interaction.3132The failure mode is predictable: developers write placeholder microcopy during implementation ("Click here", "Error occurred", "No data"), it ships because nobody reviews it, and it stays forever. Agents make it worse — they default to verbose, hedged, generic text ("An error has occurred while processing your request. Please try again later.") when users need short, specific, actionable text ("Payment failed — check your card number.").3334This skill exists because microcopy quality is structurally unowned in most projects. Marketing copy has a copywriter. Documentation has a tech writer. Naming has a convention. But nobody owns the words *inside* the working interface — the button that says "Submit" when it should say "Save Changes", the empty state that says "No items" when it should say "No orders yet — connect your storefront to start syncing." The cost of that gap is paid one click at a time.3536> **Scope boundary:** microcopy writes FUNCTIONAL UI text — button labels, error messages, empty states, tooltips, confirmation dialogs. It does NOT cover marketing copy or content-strategy decisions; those belong to dedicated copywriting and content-strategy skills.3738---3940## 1. Button Labels4142Buttons are the primary action interface. Every button label is a micro-contract: it promises what will happen when clicked.4344**Rules:**45461. **Verb-first**: "Save Changes", "Connect Storefront", "Export CSV" — not "Changes", "Storefront", "CSV"472. **Specific action**: "Delete Order" not "Delete", "Send Invitation" not "Send"483. **Max 3 words** for primary actions: "Save", "Save Changes", "Save and Close"494. **Match the consequence**: if clicking deletes data, the button says "Delete" not "OK". If it sends an email, it says "Send Email" not "Confirm"505. **Avoid generic labels**: "Submit", "OK", "Yes", "Continue" are almost always wrong — name the actual action516. **Cancel is always available**: destructive dialogs need both the action ("Delete Order") and the escape ("Cancel")5253**Button label patterns by context:**5455| Context | Bad | Good |56| --- | --- | --- |57| Save form | Submit | Save Changes |58| Delete item | OK | Delete Order |59| Connect platform | Continue | Connect Storefront |60| Export data | Download | Export as CSV |61| Confirm send | Yes | Send Invitation |62| Dismiss dialog | Close | Cancel |6364---6566## 2. Empty States6768Empty states are the first impression for every new feature. They must acknowledge, explain, and guide.6970**Three-part structure:**71721. **Acknowledge** — "No orders yet" — confirm the user is in the right place and the emptiness is expected732. **Explain** — "Orders will appear here once your storefront syncs" — tell them why it's empty and when it won't be743. **Guide** — "Connect Storefront" (button) — give them the action that fills the empty state7576**Rules:**7778- Never just "No data" or "Nothing to show" — this is a dead end79- Use "yet" to imply future content: "No orders yet" vs "No orders"80- Include one primary action button that resolves the empty state81- For filtered empty states: "No orders match your filters" + "Clear filters" button82- For error empty states: "Could not load orders" + "Try again" button + brief explanation8384**Common empty-state patterns:**8586| Surface | Message | Action |87| --- | --- | --- |88| Orders table (new user) | No orders yet | Connect Storefront |89| Orders table (filtered) | No orders match these filters | Clear filters |90| Dashboard (no data) | Connect a storefront to see your profits | Get Started |91| Product list (empty) | No products synced yet | Sync Products |9293---9495## 3. Tooltips9697Tooltips answer one question: "What is this?"9899**Rules:**100101- One sentence maximum, no period at the end102- Answer "what is this?" or "why would I use this?" — not "how does this work?"103- Never repeat the label the tooltip is attached to104- No links in tooltips (they disappear on mouseout)105- Use sentence case for the first word only106- Appear on hover after 300ms delay, dismiss on mouseout107108**Examples:**109110- Production-cost field: "Cost of goods sold, including production and shipping to your fulfillment center"111- Confidence badge: "How complete the profit calculation is for this order"112- Sync status icon: "Last synced 5 minutes ago from your storefront"113114---115116## 4. Confirmation Dialogs117118Confirmation dialogs exist for one reason: preventing irreversible mistakes.119120**Rules:**1211221. **State the consequence first**: "This will permanently delete 3 orders and their associated profit data."1232. **Name the action in the button**: "Delete 3 Orders" not "Confirm" or "OK"1243. **Provide the escape**: "Cancel" button, always present1254. **No double negatives**: "Don't cancel" is never the right label1265. **Include the count**: "Delete 3 orders" not "Delete selected orders"1276. **Distinguish destructive from reversible**: red button + explicit "permanently" for destructive; normal button for reversible128129---130131## 5. Error Messages132133Error messages are the most important microcopy in the application. When something fails, the user needs clarity, not apology.134135**Three-part structure:**1361371. **What happened**: "Payment failed" — state the failure clearly1382. **Why**: "Your card was declined" — give the specific reason if known1393. **What to do**: "Check your card details or try a different payment method" — actionable next step140141**Rules:**142143- Never "An error occurred" — say *what* errored144- Never "Please try again later" — say *what* to try or *when* later is145- Blame-free framing: "We couldn't sync your orders" not "You have a sync error"146- Include error codes only in technical contexts, never in user-facing messages147- For transient errors: "Sync paused — retrying automatically" with a progress indicator148149The general blame-free / What → Why → What-to-do framing is the linguistic rule (see `linguistics`); microcopy applies it specifically to in-product error toasts, banners, and inline messages.150151---152153## 6. Loading and Progress154155Users tolerate waiting when they understand what's happening.156157**Progressive disclosure by elapsed time:**158159- **0 – 300 ms**: show nothing (the action feels instant)160- **300 ms – 2 s**: show spinner or skeleton (brief acknowledgment)161- **2 – 10 s**: show message ("Syncing your orders from your storefront…")162- **10 s+**: show progress ("Syncing orders… 47 of 312")163- **30 s+**: show reassurance ("This may take a few minutes for large stores. You can leave this page.")164165---166167## 7. Inline Validation Messages168169Validation messages appear at the field level, not the form level.170171**Rules:**172173- Appear on blur (not on keystroke — that's hostile)174- Disappear as soon as the user fixes the input175- Specific, not generic: "Email must include @" not "Invalid input"176- Placed below the field, not in an alert box177- Red text + icon for errors, green for success (with non-color indicator for accessibility)178- Never use exclamation marks in validation messages179180---181182## 8. Toast / Snackbar Messages183184Toasts confirm completed actions. They are the UI's "done" signal.185186**Rules:**187188- Action + context: "Order #1234 deleted" not "Item deleted"189- Include undo for reversible actions: "Order archived. Undo"190- Auto-dismiss after 5 seconds (configurable for actions with undo)191- Max 2 lines of text192- Stack from bottom, newest on top193- Never use toasts for errors — errors need persistent, in-context display194195---196197## Verification198199After writing or reviewing UI text, verify:200201- [ ] Button labels are verb-first and name the actual action (no "Submit", "OK", "Yes", "Continue" alone)202- [ ] Empty states acknowledge → explain → guide, with a real next-step button203- [ ] Tooltips are one sentence, no terminal period, and answer "what is this?"204- [ ] Confirmation dialogs state the consequence first and name the action in the button (with a Cancel escape)205- [ ] Placeholder text is an example format, not the only label206- [ ] Loading messages follow progressive disclosure by elapsed time, not a single state207- [ ] Error messages follow What → Why → What-to-do, blame-free, with a specific action208- [ ] Inline validation appears on blur and disappears on fix; messages are specific, not generic209- [ ] Toasts include action + context and an undo path for reversible actions210- [ ] Functional UI text stays inside the interface — does not drift into marketing or documentation territory211212## Do NOT Use When213214| Instead, use | Why |215| --- | --- |216| `linguistics` | The user wants the underlying linguistic rule (morphology, polysemy, register), not the specific UI-text pattern. Linguistics owns the *why*; microcopy owns the *what to write*. |217| `documentation` | Writing or restructuring long-form prose for guides, tutorials, reference docs, or help-center articles. Documentation owns doc architecture and prose; microcopy owns in-product UI text. |218| `a11y` | Auditing UI text for screen-reader announcement, aria-live behavior, or color-contrast compliance. A11y owns the accessibility contracts; microcopy owns the words. |219| `naming-conventions` | Deciding the casing format for an artifact kind (kebab vs camel vs snake). Naming-conventions is for code identifiers, not user-facing UI strings. |220| `intent-recognition` | Disambiguating a user's intent from an ambiguous prompt. Intent-recognition is upstream of any UI; microcopy is the words the UI uses to respond. |221| (a copywriting skill) | Marketing headlines, pricing copy, landing-page persuasion, brand-voice work. Copywriting owns persuasive product surfaces; microcopy owns functional in-product text. |222| (a content-strategy skill) | Page structure, funnel strategy, or what content belongs on each page. Content strategy is upstream of microcopy. |223| `interaction-feedback` | When and how feedback states appear (timing, placement, persistence, recovery). Interaction-feedback owns the staging; microcopy owns the words inside the staged element. |224225## Skill Graph context226227<!-- skill-graph-context:start (generated — do not edit by hand) -->228229**Classification**230- Subject: `design`231- Public: `true`232- Domain: `design/ux`233- Scope: Writing and reviewing functional UI text — button labels, empty states, tooltips, dialogs, placeholders, loading/progress messages, toasts, inline validation, permission copy, and onboarding steps — using interface-copy patterns such as verb-first action labels, acknowledge-explain-guide empty states, one-sentence tooltips, consequence-first confirmations, progressive loading language, and blur/fix validation messages. Portable across any UI; principle-grounded, not repo-bound. Excludes marketing persuasion, documentation prose and guide structure, feedback-state staging (interaction-feedback), and general linguistic rationale behind wording.234235**When to use**236- rewrite this button label so it names the actual action instead of saying Submit237- what should the empty state say when a user has no orders yet?238- draft tooltip text for a production-cost field that explains what it means in one sentence239- this destructive confirmation dialog says OK — what should the button label be instead?240- the inline validation message says Invalid input — make it specific and actionable241- draft a toast message for a successful order export with undo242- what should the loading state say when a sync takes longer than 10 seconds?243- Triggers: `button label`, `empty state copy`, `tooltip text`, `confirmation dialog wording`, `inline validation message`244245**Not for**246- write the marketing headline for the pricing page247- review this WCAG 2.2 contrast violation on the dashboard248- explain the morphology rule behind verb-first function names249- restructure this help-center article into a tutorial250- decide the kebab-case format for this new CSS class251- rename this React component across all call-sites252- Owned by `interaction-feedback`: when, where, and how feedback states appear253254**Related skills**255- Verify with: `linguistics`, `a11y`256- Related: `linguistics`, `task-analysis`, `intent-recognition`, `interaction-feedback`, `form-ux-architecture`, `a11y`257258**Concept**259- Mental model: |260- Purpose: |261- Boundary: |262- Analogy: Microcopy is to an interface what stage directions and labels are to a theater set — not the marketing poster outside (copywriting) or the program notes (documentation), but the lit EXIT sign, the 'pull' on the door, and the usher's one-line 'your seat is to the left': short functional text placed exactly where someone needs to know what to do next.263- Common misconception: |264265**Keywords**266- `button label microcopy`, `empty-state copy`, `tooltip text rule`, `confirmation dialog wording`, `inline validation message`, `toast notification copy`, `placeholder text rule`, `loading-state messaging`, `functional UI text`, `ux writing patterns`267268<!-- skill-graph-context:end -->
Run npx skillmds@latest add jacob-balslev/microcopy in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Use when writing or reviewing functional UI text: button labels, empty states, tooltips, dialogs, placeholders, loading/progress messages, toasts, inline validation, permission copy, or onboarding steps. Covers interface-copy patterns such as verb-first action labels, acknowledge-explain-guide empty states, one-sentence tooltips, consequence-first confirmations, progressive loading language, and blur/fix validation messages. Do NOT use for marketing persuasion, documentation prose/guide structure, feedback-state staging, or general linguistic rationale behind wording. Do NOT use for write the marketing headline for the pricing page. Do NOT use for review this WCAG 2.2 contrast violation on the dashboard. Do NOT use for explain the morphology rule behind verb-first function names. Do NOT use for restructure this help-center article into a tutorial. Do NOT use for decide the kebab-case format for this new CSS class. Do NOT use for rename this React component across all call-sites. It is listed under Marketing & Growth on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
jacob-balslev (@jacob-balslev) published this skill. Their other Agent Skills are listed on their SkillMD profile.