agentsclimarketplace

Microcopy

Skill viknesh20-20/claude-code-tool-kit/.claude/skills/microcopy

Production-ready Claude Code configuration. 12 original agents, 200+ slash-command skills, 45+ MCP servers, 14 plugins, design + 3D + WebGPU + GSAP + RAG tooling. One-command Node.js installer for premium websites, SaaS apps, AI agents. Free, MIT, stack-agnostic.

Install
npx -y skills add viknesh20-20/claude-code-tool-kit --skill microcopy

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Writes or reviews UX copy — button labels, error messages, empty states, success messages, tooltips, form labels, onboarding text, confirmation dialogs. Voice-consistent, action-led, recovery-oriented. Localizable. No dark patterns.

SKILL.md

7.9 KB, as published. Nobody here has run it

/microcopy

Write the small strings that decide whether users figure your product out — or churn. Bad copy makes good visuals fail; good copy carries average visuals.

When to use

  • Designing or reviewing any user-facing text — buttons, errors, empty states, tooltips, confirmations, form labels, onboarding.
  • After a UX review flagged unclear messaging.
  • When a feature ships with placeholder strings ("Submit," "Error," "Loading…") and needs real ones.
  • When localizing — the source strings need to be localizable in the first place.

Operating method

1. Establish voice

Read 5–10 existing strings from the product before writing new ones. Identify:

  • Tone — professional / friendly / playful / clinical. Most B2B is professional-with-warmth; consumer varies wildly.
  • Person — second person ("Save your changes") almost always. First-person plural ("We saved your changes") for system updates only.
  • Verb usage — direct ("Save"), polite ("Please save"), or playful ("Stash it"). Pick one and stick with it.
  • Punctuation — sentence case vs title case for buttons. Periods at end of error messages or not.
  • Emoji — used or not. (Default: not. Add only if the product already uses them.)

If no existing strings exist, default to: direct, second person, sentence case for buttons, periods on full sentences, no emoji.

2. Apply the four rules

Verbs over nouns on buttons. Buttons do something. Use the verb.

BadGood
SubmitSend invite
OKSave changes
ConfirmationConfirm payment
SettingsOpen settings

Specific errors with recovery. Tell the user what went wrong AND what to do.

BadGood
Invalid inputEmail must include an @ symbol
ErrorCouldn't reach the server. Check your connection or retry.
Try againCard declined — try a different card
FailedTwo-factor code expired — request a new one

Empty states have CTAs. Don't leave the user stranded with "No results."

BadGood
No projectsCreate your first project to get started
0 messagesYour inbox is empty. Connect an account to start receiving mail.
Nothing hereNo matching results. Try a broader search or [clear filters].

Honesty in confirmations. Don't trick users into clicking yes.

BadGood
"OK" + "Cancel" on a destructive modal"Delete project" + "Keep project"
"Are you sure?""Delete this project? This cannot be undone."

3. Forbidden phrases

These signal lazy or hostile copy. Refuse to write them; replace if you find them.

PhraseWhy it's badReplace with
"Simply…" / "Just…" / "Easy…"Patronizes the user — if it were that simple, they wouldn't be reading the help textRemove the word; explain the steps
"Oops!" / "Whoops!"Trivializes the user's problemBe specific about what happened
"Something went wrong"The least useful possible errorName what failed, name the recovery
"Please try again later"Useless — when? Why?Give a time, a reason, or a workaround
"Are you sure?" aloneDoesn't tell the user the consequence"Delete X? This cannot be undone."
"Click here" / "Read more"Bad for accessibility (screen readers without context)Use descriptive link text: "Read the API docs"
Pre-checked consent ("☑ Yes, send me marketing emails")Illegal in EU (GDPR)Default unchecked; let users opt in
Confirmshaming ("No thanks, I don't want to save 50%")Dark patternPlain language: "No thanks"

4. Localization-friendly writing

Write strings that translate cleanly:

  • No idioms. "Bite the bullet" doesn't translate. "Confirm the change" does.
  • No concatenation. Don't write "You have " + count + " messages" — different languages put numbers in different positions, and some require plural forms beyond singular/plural.
  • Use ICU MessageFormat or your framework's i18n library for plurals, gender, and number formatting.
  • Don't bake numbers into strings. "5 items" → {count, plural, one {# item} other {# items}}.
  • Render dates and currencies in user locale, not source locale.
  • Leave 30% room for expansion. German strings are often 30–40% longer than English.

5. Cover all the moments

For every screen or component, walk the moments:

  • Default — the standard view. What does it say?
  • Loading — what's communicated while waiting?
  • Empty — first-time-use copy + CTA.
  • Success — confirmation message.
  • Error — per failure mode (network, validation, permission, server).
  • Disabled — why is this thing disabled? Tooltip explains.
  • Confirm — destructive actions get a clear "do X / cancel" choice.
  • Onboarding — first 3 actions for a new user.

6. Save patterns to memory

If the product establishes a copy convention (e.g., "always say 'Save changes' not 'Save'"), save it to .claude/memory/feedback/copy-conventions.md so future sessions follow the same voice.

Output format

For a copy spec:

# Microcopy: <screen / feature>

## Voice
- Tone: <professional with warmth>
- Person: second
- Case: sentence (buttons), title (page headers)
- Punctuation: full sentences end with periods; buttons no periods

## Strings

### Page header
<copy>

### Primary CTA (button)
<copy>

### Secondary action
<copy>

### Form fields
| Field | Label | Placeholder | Help text | Error: blank | Error: invalid |
|---|---|---|---|---|---|
| Email | "Work email" | "[email protected]" | "We'll send sign-in links here." | "Email is required." | "Email must include an @ symbol." |

### States
| State | Copy |
|---|---|
| Loading | "Sending invite…" |
| Success | "Invite sent ✓" |
| Error: network | "Couldn't send the invite — check your connection or retry." |
| Error: already invited | "Already invited — resend or remove." |
| Empty | "No invites sent yet. Send your first below." |

### Confirmation dialog (destructive)
- Title: "Remove team member?"
- Body: "They'll lose access to all projects. This can't be undone."
- Confirm button: "Remove member"
- Cancel button: "Keep member"

### Tooltips
| Element | Tooltip |
|---|---|
| Disabled "Send" button | "Add at least one recipient to send" |
| ⚠ icon next to plan | "Card on file expires in 7 days" |

For a copy review:

## Verdict: GREAT | NEEDS WORK | REWRITE

## Issues by category

### Specificity (N issues)
- error.tsx:18 — "Something went wrong" → "Couldn't save changes — check your connection and retry."

### Voice consistency (N issues)
- onboarding.tsx:42 — Uses first-person ("We've saved your work") but the rest of the product uses second person.

### Forbidden phrases (N issues)
- billing.tsx:91 — "Simply enter your card" → "Enter your card."

### Empty states (N issues)
- inbox.tsx:5 — "No messages" with no CTA → "Your inbox is empty. Connect an account to start."

### Localization-readiness (N issues)
- list.tsx:30 — `"You have " + count + " items"` → use ICU plural format.

## What's working
- <thing>
- <thing>

## Recommended next moves
1. <highest-leverage>

Boundaries

  • Don't write for a voice the product doesn't have — read existing copy first.
  • Don't write copy that's marketing-speak when the product is utilitarian, or vice versa.
  • Don't recommend dark patterns. Refuse, name them, offer honest alternatives.
  • Don't translate yourself — flag strings for translator review when localizing.
  • Don't write copy without knowing the state. "Submit" with no context is meaningless.
  • Always cover all relevant moments (loading / empty / error / success).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.