ux-copy

SkillMedia

Use when writing or reviewing any visible copy — headlines, buttons, body, errors, empty states — inside a design-method move or standalone.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the ux-copy skill

What this skill tells your AI

The instructions your AI receives, as published by fusengine/agents in plugins/design-expert/skills/ux-copy/SKILL.md and read by ahel’s review.

Runs 10 mechanical ban-lists: filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, unjustified Title Case headlines, humor in error copy ("Oops!"), the AI production-tell catalogue, em-dash-as-crutch, "Not X. Y." manufactured contrast, the "theater" keyword, and all-caps body copy.

Enforces one copy register per page (brand traces to the POV, product stays domain-specific). Judgment calls that aren't mechanically resolvable are quoted, located, and routed to design-review's challenger gate — never self-scored.

UX Copy — Self-Audit + Ban-Lists, One Register Per Page

When

Any time visible copy is written or edited — headlines, subheads, eyebrows, button labels, body, captions, alt text, error messages, empty states — inside generate/ critique/audit/polish (design-method) or as a standalone copy pass. Register is resolved once, at Gate 0 (design-method/SKILL.md), before this runs — never re-guessed here.

Input

  • Register (brand/product) from Gate 0.
  • Sector, if resolved, for references/voice-tone-sectors.md.
  • Every visible string in the deliverable.

One register per page — hard rule

A single copy register per page (references/copy-self-audit.md §7): don't mix technical mono, editorial prose, and marketing punch on one surface unless the brand voice explicitly calls for it. Register direction is conditional exactly like layout and motion (design-method/references/register/copy.md §3): brand copy must trace to the one-sentence POV — run the Competitor Lift Test on the paragraph itself, could it run unchanged on a competitor's site; product copy stays precise and domain-specific, naming the real object and the real action, never marketing voice bleeding into the app shell.

Ban-lists — mechanical (grep), not vibes

  1. Filler verbs / hype adjectiveselevate, seamless(ly), unleash, next-gen, revolutionize, empower, supercharge, game-changer, cutting-edge, unlock, robust, effortless, frictionless, plus delve and tapestry. Full grep pattern and flag-not-fail nuance (read against the POV or the domain-specificity floor before rewriting): design-method/references/register/copy.md §1.
  2. Slop placeholder namesAcme, Nexus, SmartFlow, Cloudly, Initech, Globex, Contoso, Umbrella Corp, Zenith (Labs/Tech). Blocks unless the brief explicitly names a fictional example on purpose. Grep + rule: design-method/references/register/copy.md §2.
  3. Fake-precise numbers92%, 4.1x, 48k, 99.99%, or any figure not traced to real data, brief/brand guidelines, or an explicitly labelled mock (<!-- mock -->/"example"). Real data reads organic and messy (47.2%), not fake-perfect. references/copy-self-audit.md §3.
  4. Title Case headlines — sentence case is the default register for headings and body copy; reserve Title Case for UI labels, buttons, and eyebrows only, never a body headline, unless the brand style guide explicitly specifies Title Case. Inconsistent or unjustified Title Case on headlines is a recurring AI-slop tell (grounding corpus; general consistency principle also flagged in the reference clone's capitalization check — apply it here as a default ban, not a mere consistency note).
  5. Humor in error copy ("Oops!"/"Whoops!") — banned. Errors use the what-happened + why + how-to-fix formula (references/templates/error-messages.md), never cute framing — a frustrated user doesn't want jokes. Bad-example precedent already in this skill: references/voice-tone-sectors.md error row flags exactly "Whoops! Something went wrong." against the correct "Connection lost. Try again or continue offline."
  6. AI production-tell catalogue — version-label eyebrows (v0.6/BETA/EARLY ACCESS), numbered section eyebrows (00 / INDEX), scroll cues, weather/locale strips, "quietly trusted by", decorative photo-credit captions, fabricated live counters, poetic craftsman labels, generic step labels (Stage 1/2/3). Full table: references/copy-self-audit.md §2.
  7. Em-dash as a crutch — a single isn't a hard fail; 2+ occurrences reading as a repeated tic is. references/copy-self-audit.md §1 (shared gate with design-review).
  8. "Not X. Y." manufactured-contrast fragments — one instance is fine, 2+ on one page is a blocking tic. references/copy-self-audit.md §4.
  9. "theater"/"théâtre" keyword — any hit blocks, near-universal AI copy tell. references/copy-self-audit.md §5.
  10. All-caps body copy — 3+ consecutive all-caps words outside a recognized UI label blocks; fine inside a button/eyebrow/badge. references/copy-self-audit.md §6.

Steps

  1. Confirm register (inherited from Gate 0) — never re-resolve it here.
  2. Write/review against the sector voice profile (references/voice-tone-sectors.md, NNG 4 dimensions) and the matching sector guide if one applies (references/copy-saas.md, references/copy-fintech.md, references/copy-ecommerce.md).
  3. Apply the formula references for the surface being written: buttons/forms/toasts (references/microcopy-patterns.md), CTAs (references/templates/cta-patterns.md), errors (references/templates/error-messages.md), empty states (references/empty-states-copy.md), onboarding (references/templates/onboarding-copy.md). Project-level output uses references/templates/copy-guide-template.md.
  4. Run every visible string through the ban-lists above.
  5. Final read (references/copy-self-audit.md §7): grammatically broken, unclear referent, hallucination-sounding, "LLM trying to sound thoughtful" (forced metaphor, mock-poetic aside, cute-but-empty wordplay). Rewrite; when unsure, replace with the plain functional sentence — boring-correct beats clever-wrong.
  6. Mechanical checks (1-10 above) resolve on the spot. Judgment calls — does this line actually trace to the POV, does it sound like forced profundity, does the aphoristic cadence read as punchy ad copy pretending to be product copy — are named specifically (quote the line, name the section) and routed to the fuse-ai-pilot:challenger gate inside design-review, never self-scored (design-method/references/register/copy.md §4; references/copy-self-audit.md, "Not self-audited — routed to challenger").

Failure Handling

  • Sector not resolved / no sector guide fits → default to references/microcopy-patterns.md's generic patterns, flag the gap instead of inventing sector voice.
  • A ban-list hit is contractually required by the brief (brand literally named "Acme", a launch brief that genuinely wants a BETA eyebrow) → note the override explicitly in the deliverable rather than silently keeping it unflagged.

Output

  • Every visible string checked against the 10 ban-lists above, register-consistent, one voice per page.
  • Judgment-call flags (if any), quoted and located, handed to design-review's challenger gate — not resolved solo.

Next → design-review — Part 1's em-dash/production-tell checks are the same gates

enforced here; Part 2's challenger judges any remaining judgment call (aphoristic cadence, POV-tracing) this skill flagged but didn't self-score.

References

FilePurpose
references/copy-self-audit.mdCanonical self-audit — em-dash, AI tells, fake numbers, final read
design-method/references/register/copy.mdFiller-verb + slop-name ban-lists, register direction (external, canonical there)
references/voice-tone-sectors.mdSector voice profiles, NNG 4 dimensions, do/don't examples
references/microcopy-patterns.mdCTA/form-label/validation/toast/button-state patterns
references/empty-states-copy.mdEmpty-state copy formulas per type and sector
references/copy-saas.mdSaaS sector copy examples
references/copy-fintech.mdFintech sector copy examples
references/copy-ecommerce.mdE-commerce sector copy examples
references/templates/cta-patterns.mdCTA label examples by context
references/templates/error-messages.mdError message formula + good/bad examples
references/templates/onboarding-copy.mdWelcome-flow / first-run copy patterns
references/templates/copy-guide-template.mdProject-level copy guide output template

Signals

GitHub stars
25
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
ux-copy
Source
github.com/fusengine/agents