$npx -y skills add fusengine/agents --skill ux-copyCopy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
| 1 | ## UX Copy — Self-Audit + Ban-Lists, One Register Per Page |
| 2 | |
| 3 | ### When |
| 4 | Any time visible copy is written or edited — headlines, subheads, eyebrows, button |
| 5 | labels, body, captions, alt text, error messages, empty states — inside `generate`/ |
| 6 | `critique`/`audit`/`polish` (`design-method`) or as a standalone copy pass. Register is |
| 7 | resolved once, at Gate 0 (`design-method/SKILL.md`), before this runs — never re-guessed |
| 8 | here. |
| 9 | |
| 10 | ### Input |
| 11 | - Register (`brand`/`product`) from Gate 0. |
| 12 | - Sector, if resolved, for `references/voice-tone-sectors.md`. |
| 13 | - Every visible string in the deliverable. |
| 14 | |
| 15 | ### One register per page — hard rule |
| 16 | A single copy register per page (`references/copy-self-audit.md` §7): don't mix |
| 17 | technical mono, editorial prose, and marketing punch on one surface unless the brand |
| 18 | voice explicitly calls for it. Register direction is conditional exactly like layout and |
| 19 | motion (`design-method/references/register/copy.md` §3): **brand** copy must trace to |
| 20 | the one-sentence POV — run the Competitor Lift Test on the paragraph itself, could it run |
| 21 | unchanged on a competitor's site; **product** copy stays precise and domain-specific, |
| 22 | naming the real object and the real action, never marketing voice bleeding into the app |
| 23 | shell. |
| 24 | |
| 25 | ### Ban-lists — mechanical (grep), not vibes |
| 26 | |
| 27 | 1. **Filler verbs / hype adjectives** — `elevate`, `seamless(ly)`, `unleash`, `next-gen`, |
| 28 | `revolutionize`, `empower`, `supercharge`, `game-changer`, `cutting-edge`, `unlock`, |
| 29 | `robust`, `effortless`, `frictionless`, plus `delve` and `tapestry`. Full grep pattern |
| 30 | and flag-not-fail nuance (read against the POV or the domain-specificity floor before |
| 31 | rewriting): `design-method/references/register/copy.md` §1. |
| 32 | 2. **Slop placeholder names** — `Acme`, `Nexus`, `SmartFlow`, `Cloudly`, `Initech`, |
| 33 | `Globex`, `Contoso`, `Umbrella Corp`, `Zenith (Labs/Tech)`. Blocks unless the brief |
| 34 | explicitly names a fictional example on purpose. Grep + rule: |
| 35 | `design-method/references/register/copy.md` §2. |
| 36 | 3. **Fake-precise numbers** — `92%`, `4.1x`, `48k`, `99.99%`, or any figure not traced to |
| 37 | real data, brief/brand guidelines, or an explicitly labelled mock |
| 38 | (`<!-- mock -->`/"example"). Real data reads organic and messy (`47.2%`), not |
| 39 | fake-perfect. `references/copy-self-audit.md` §3. |
| 40 | 4. **Title Case headlines** — sentence case is the default register for headings and body |
| 41 | copy; reserve Title Case for UI labels, buttons, and eyebrows only, never a body |
| 42 | headline, unless the brand style guide explicitly specifies Title Case. Inconsistent |
| 43 | or unjustified Title Case on headlines is a recurring AI-slop tell (grounding |
| 44 | corpus; general consistency principle also flagged in the reference clone's |
| 45 | capitalization check — apply it here as a default ban, not a mere consistency note). |
| 46 | 5. **Humor in error copy ("Oops!"/"Whoops!")** — banned. Errors use the what-happened + |
| 47 | why + how-to-fix formula (`references/templates/error-messages.md`), never cute |
| 48 | framing — a frustrated user doesn't want jokes. Bad-example precedent already in this |
| 49 | skill: `references/voice-tone-sectors.md` error row flags exactly `"Whoops! |
| 50 | Something went wrong."` against the correct `"Connection lost. Try again or continue |
| 51 | offline."` |
| 52 | 6. **AI production-tell catalogue** — version-label eyebrows (`v0.6`/`BETA`/`EARLY |
| 53 | ACCESS`), numbered section eyebrows (`00 / INDEX`), scroll cues, weather/locale |
| 54 | strips, "quietly trusted by", decorative photo-credit captions, fabricated live |
| 55 | counters, poetic craftsman labels, generic step labels (`Stage 1/2/3`). Full table: |
| 56 | `references/copy-self-audit.md` §2. |
| 57 | 7. **Em-dash as a crutch** — a single `—` isn't a hard fail; 2+ occurrences reading as a |
| 58 | repeated tic is. `references/copy-self-audit.md` §1 (shared gate with `design-review`). |
| 59 | 8. **"Not X. Y." manufactured-contrast fragments** — one instance is fine, 2+ on one page |
| 60 | is a blocking tic. `references/copy-self-audit.md` §4. |
| 61 | 9. **"theater"/"théâtre" keyword** — any hit blocks, near-universal AI copy tell. |
| 62 | `references/copy-self-audit.md` §5. |
| 63 | 10. **All-caps body copy** — 3+ consecutive all-caps words outside a recognized UI label |
| 64 | blocks; fine inside a button/eyebrow/badge. `references/copy-self-audit.md` §6. |
| 65 | |
| 66 | ### Steps |
| 67 | 1. Confirm register (inherited from Gate 0) — never re-resolve it here. |
| 68 | 2. Write/review against the sector voice profile |
| 69 | (`references/voice-tone-sectors.md`, NNG 4 dim |