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
- Filler verbs / hype adjectives —
elevate, 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.
- Slop placeholder names —
Acme, 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.
- Fake-precise numbers —
92%, 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.
- 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).
- 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."
- 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.
- 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).
- "Not X. Y." manufactured-contrast fragments — one instance is fine, 2+ on one page
is a blocking tic.
references/copy-self-audit.md §4.
- "theater"/"théâtre" keyword — any hit blocks, near-universal AI copy tell.
references/copy-self-audit.md §5.
- 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
- Confirm register (inherited from Gate 0) — never re-resolve it here.
- 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).
- 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.
- Run every visible string through the ban-lists above.
- 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.
- 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
| File |
Purpose |
references/copy-self-audit.md |
Canonical self-audit — em-dash, AI tells, fake numbers, final read |
design-method/references/register/copy.md |
Filler-verb + slop-name ban-lists, register direction (external, canonical there) |
references/voice-tone-sectors.md |
Sector voice profiles, NNG 4 dimensions, do/don't examples |
references/microcopy-patterns.md |
CTA/form-label/validation/toast/button-state patterns |
references/empty-states-copy.md |
Empty-state copy formulas per type and sector |
references/copy-saas.md |
SaaS sector copy examples |
references/copy-fintech.md |
Fintech sector copy examples |
references/copy-ecommerce.md |
E-commerce sector copy examples |
references/templates/cta-patterns.md |
CTA label examples by context |
references/templates/error-messages.md |
Error message formula + good/bad examples |
references/templates/onboarding-copy.md |
Welcome-flow / first-run copy patterns |
references/templates/copy-guide-template.md |
Project-level copy guide output template |
1---2name: ux-copy3description: Use when writing or reviewing any visible copy — headlines, buttons, body, errors, empty states — inside a design-method move or standalone.4---56<objective>7A copy self-audit pass applied any time visible copy is written or reviewed — headlines, subheads, buttons, body, captions, errors, empty states — inside any `design-method` move or as standalone copy work.89Runs 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.1011Enforces 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.12</objective>1314## UX Copy — Self-Audit + Ban-Lists, One Register Per Page1516### When17Any time visible copy is written or edited — headlines, subheads, eyebrows, button18labels, body, captions, alt text, error messages, empty states — inside `generate`/19`critique`/`audit`/`polish` (`design-method`) or as a standalone copy pass. Register is20resolved once, at Gate 0 (`design-method/SKILL.md`), before this runs — never re-guessed21here.2223### Input24- Register (`brand`/`product`) from Gate 0.25- Sector, if resolved, for `references/voice-tone-sectors.md`.26- Every visible string in the deliverable.2728### One register per page — hard rule29A single copy register per page (`references/copy-self-audit.md` §7): don't mix30technical mono, editorial prose, and marketing punch on one surface unless the brand31voice explicitly calls for it. Register direction is conditional exactly like layout and32motion (`design-method/references/register/copy.md` §3): **brand** copy must trace to33the one-sentence POV — run the Competitor Lift Test on the paragraph itself, could it run34unchanged on a competitor's site; **product** copy stays precise and domain-specific,35naming the real object and the real action, never marketing voice bleeding into the app36shell.3738### Ban-lists — mechanical (grep), not vibes39401. **Filler verbs / hype adjectives** — `elevate`, `seamless(ly)`, `unleash`, `next-gen`,41 `revolutionize`, `empower`, `supercharge`, `game-changer`, `cutting-edge`, `unlock`,42 `robust`, `effortless`, `frictionless`, plus `delve` and `tapestry`. Full grep pattern43 and flag-not-fail nuance (read against the POV or the domain-specificity floor before44 rewriting): `design-method/references/register/copy.md` §1.452. **Slop placeholder names** — `Acme`, `Nexus`, `SmartFlow`, `Cloudly`, `Initech`,46 `Globex`, `Contoso`, `Umbrella Corp`, `Zenith (Labs/Tech)`. Blocks unless the brief47 explicitly names a fictional example on purpose. Grep + rule:48 `design-method/references/register/copy.md` §2.493. **Fake-precise numbers** — `92%`, `4.1x`, `48k`, `99.99%`, or any figure not traced to50 real data, brief/brand guidelines, or an explicitly labelled mock51 (`<!-- mock -->`/"example"). Real data reads organic and messy (`47.2%`), not52 fake-perfect. `references/copy-self-audit.md` §3.534. **Title Case headlines** — sentence case is the default register for headings and body54 copy; reserve Title Case for UI labels, buttons, and eyebrows only, never a body55 headline, unless the brand style guide explicitly specifies Title Case. Inconsistent56 or unjustified Title Case on headlines is a recurring AI-slop tell (grounding57 corpus; general consistency principle also flagged in the reference clone's58 capitalization check — apply it here as a default ban, not a mere consistency note).595. **Humor in error copy ("Oops!"/"Whoops!")** — banned. Errors use the what-happened +60 why + how-to-fix formula (`references/templates/error-messages.md`), never cute61 framing — a frustrated user doesn't want jokes. Bad-example precedent already in this62 skill: `references/voice-tone-sectors.md` error row flags exactly `"Whoops!63 Something went wrong."` against the correct `"Connection lost. Try again or continue64 offline."`656. **AI production-tell catalogue** — version-label eyebrows (`v0.6`/`BETA`/`EARLY66 ACCESS`), numbered section eyebrows (`00 / INDEX`), scroll cues, weather/locale67 strips, "quietly trusted by", decorative photo-credit captions, fabricated live68 counters, poetic craftsman labels, generic step labels (`Stage 1/2/3`). Full table:69 `references/copy-self-audit.md` §2.707. **Em-dash as a crutch** — a single `—` isn't a hard fail; 2+ occurrences reading as a71 repeated tic is. `references/copy-self-audit.md` §1 (shared gate with `design-review`).728. **"Not X. Y." manufactured-contrast fragments** — one instance is fine, 2+ on one page73 is a blocking tic. `references/copy-self-audit.md` §4.749. **"theater"/"théâtre" keyword** — any hit blocks, near-universal AI copy tell.75 `references/copy-self-audit.md` §5.7610. **All-caps body copy** — 3+ consecutive all-caps words outside a recognized UI label77 blocks; fine inside a button/eyebrow/badge. `references/copy-self-audit.md` §6.7879### Steps801. Confirm register (inherited from Gate 0) — never re-resolve it here.812. Write/review against the sector voice profile82 (`references/voice-tone-sectors.md`, NNG 4 dimensions) and the matching sector guide83 if one applies (`references/copy-saas.md`, `references/copy-fintech.md`,84 `references/copy-ecommerce.md`).853. Apply the formula references for the surface being written: buttons/forms/toasts86 (`references/microcopy-patterns.md`), CTAs (`references/templates/cta-patterns.md`),87 errors (`references/templates/error-messages.md`), empty states88 (`references/empty-states-copy.md`), onboarding89 (`references/templates/onboarding-copy.md`). Project-level output uses90 `references/templates/copy-guide-template.md`.914. Run every visible string through the ban-lists above.925. Final read (`references/copy-self-audit.md` §7): grammatically broken, unclear93 referent, hallucination-sounding, "LLM trying to sound thoughtful" (forced metaphor,94 mock-poetic aside, cute-but-empty wordplay). Rewrite; when unsure, replace with the95 plain functional sentence — boring-correct beats clever-wrong.966. Mechanical checks (1-10 above) resolve on the spot. Judgment calls — does this line97 actually trace to the POV, does it sound like forced profundity, does the aphoristic98 cadence read as punchy ad copy pretending to be product copy — are named specifically99 (quote the line, name the section) and routed to the `fuse-ai-pilot:challenger` gate100 inside `design-review`, never self-scored101 (`design-method/references/register/copy.md` §4; `references/copy-self-audit.md`,102 "Not self-audited — routed to challenger").103104### Failure Handling105- Sector not resolved / no sector guide fits → default to106 `references/microcopy-patterns.md`'s generic patterns, flag the gap instead of107 inventing sector voice.108- A ban-list hit is contractually required by the brief (brand literally named "Acme",109 a launch brief that genuinely wants a `BETA` eyebrow) → note the override explicitly in110 the deliverable rather than silently keeping it unflagged.111112### Output113- Every visible string checked against the 10 ban-lists above, register-consistent, one114 voice per page.115- Judgment-call flags (if any), quoted and located, handed to `design-review`'s116 challenger gate — not resolved solo.117118### Next → `design-review` — Part 1's em-dash/production-tell checks are the same gates119enforced here; Part 2's challenger judges any remaining judgment call (aphoristic120cadence, POV-tracing) this skill flagged but didn't self-score.121122### References123| File | Purpose |124|------|---------|125| `references/copy-self-audit.md` | **Canonical self-audit — em-dash, AI tells, fake numbers, final read** |126| `design-method/references/register/copy.md` | Filler-verb + slop-name ban-lists, register direction (external, canonical there) |127| `references/voice-tone-sectors.md` | Sector voice profiles, NNG 4 dimensions, do/don't examples |128| `references/microcopy-patterns.md` | CTA/form-label/validation/toast/button-state patterns |129| `references/empty-states-copy.md` | Empty-state copy formulas per type and sector |130| `references/copy-saas.md` | SaaS sector copy examples |131| `references/copy-fintech.md` | Fintech sector copy examples |132| `references/copy-ecommerce.md` | E-commerce sector copy examples |133| `references/templates/cta-patterns.md` | CTA label examples by context |134| `references/templates/error-messages.md` | Error message formula + good/bad examples |135| `references/templates/onboarding-copy.md` | Welcome-flow / first-run copy patterns |136| `references/templates/copy-guide-template.md` | Project-level copy guide output template |