Signage
The words on an interface are signage. A label's whole job is to let someone act without stopping to decode it. Agent-written UI fails at this in a specific, repeating way: the model reaches for the vocabulary of its own internal model of the system, or it writes a sentence where a two-word label belongs, and the result is an interface that is beautiful and unreadable.
This is a comprehension pass: the user has to know what the button does.
The test that decides every word: would you say it out loud to someone who does the audience's job, and be understood? If you would have to explain it, it is wrong on the screen. Word choice gets the test; the tells below catch the failures the test cannot see.
The tells
Cite by number in findings, so a reviewer sees the pattern rather than the instance. Copy that reads as plain English and is still unclear has no tell number - it is caught by the test alone, and reported against the test.
Vocabulary the audience does not have
- Internal nouns on screen. A domain term, table name, service name, or architecture word promoted to a label. The user never saw the schema.
Shelf for catalogue, Answering for search, Record for the data.
- Invented words for ordinary things. A coined term where a standard one exists. If the industry already has a word, use the industry's word, even when it is duller.
- A verb nobody performs.
Ingest, Surface, Reconcile, Materialise on a button. People add, save, send, check, open, compare.
- Abstraction as a label.
Intelligence, Signal, Context, Instrument, Governance where a concrete noun would name the actual thing on screen. Keep an abstraction when it is the term of art the audience already uses in their trade - provenance in a materials library, signal in audio tools.
- A label naming the evidence rather than the fact.
Vector-matched colour instead of Closest colour. The user wants the property; how it was derived is not the label. A market that requires the derivation disclosed is the exception, and it belongs in the value, not the label.
Prose where a label belongs
- A sentence doing a label's job.
This page names three products is a heading trying to be an essay. 3 products.
- Shouted declarations.
THE PAGE AND THE RECORD DISAGREE, PROOF YOU CAN ORDER. Caps turn a status into a headline about the system's own reasoning.
- Explanatory subtext under every element. A caption telling the user what the thing above it means is an admission the label above it has failed. Fix the label and remove redundant captions. Preserve distinct help, consent, constraints and error-recovery information.
- Lighter grey text standing in for real UI. A dimmed sentence is not a state, a control, or an empty state. It is a note to self left on the screen.
- Scaffolding copy.
Three ways forward:, Here's what we found:, Overview, Getting started as a heading over content that is neither.
Sentences no human would say
- Template-assembled descriptions.
A Hospitality Lobby in Mid-Century Modern, feeling calm, in warm muted green, evoking Nordic, in the Mid-Century. Every slot filled, no sentence produced, and the same fact stated twice. Read generated strings as strings, and judge the words against the audience rather than against the template's own logic.
- Portentous compression.
The system reads the warehouse through one governed instrument, before the panel sits. Grammatical, meaningless, and unsayable to another person.
- Metaphor and flourish where a direct statement belongs. Mannered copy substitutes the figure for the fact:
A dial worth turning where the label means Sample size, Earns its keep where it means Still in use. The phrase displays the writer rather than conveying the idea, so the user does extra work mid-task to recover a plain meaning that could have been written plainly. It is also imprecise, because a metaphor drags in connotations nobody chose. Wordplay and a knowing voice fail the same way. Say what you mean; when a literal phrase is available, use it.
- Rule-of-three cadence and the closing flourish in body copy, tooltips, and empty states. Three options the user can actually take are a list, which is fine; the tell is three parallel clauses with nothing behind them.
Typographic tells that read as machine-made
- Small caps and letter-spaced micro-headings. They add emphasis the content does not support.
- Title Case Drift across labels that should be sentence case, and sentence case where the product's convention is title case. Pick one and hold it.
- Emoji, status theatre, and box-drawing in any user-facing surface.
Substitutions
The model's word on the left, the audience's word on the right. Direction for the pass rather than a dictionary to apply blind.
| Written |
Say |
| Shelf |
Catalogue |
| Answering |
Search |
| The record |
The data, or name the actual source |
| Resolve (outside conflict and review UIs) / Reconcile |
Fix, match, choose |
| Surface / Expose |
Show |
| Ingest |
Import, add |
| Leverage / Utilise |
Use |
| Unlock / Enable |
Open, turn on |
| Seamless / Frictionless |
Name what is actually easy, or delete |
| Journey |
Name the task |
| Evoking |
In the style of, or delete |
| Signal |
The named fact itself |
| Provenance |
Where it came from, unless the trade uses the word |
| Instrument / Governed |
Delete; say what it does |
| Sampleability |
Whether you can get a sample |
| Artefact |
The thing's actual name |
| A dial worth turning / Tune the dial |
Name the setting, and the verb for changing it |
| Earns its keep / Pulls its weight |
State the plain fact - in use, kept, still needed |
| Where the rubber meets the road |
Name the step |
Steps
Scale the pass to the requested strings. A few labels need direct edits and a short explanation, not a separate task list or counts.
- Fix the scope and the audience. Name the screens or the diff, and name who reads them in one line, in their own job title.
Working interior designers, not end users. A pass without a named audience produces generic copy, because the test in this skill has nothing to measure against.
- Find the ubiquitous language. Read any glossary the project keeps before judging a word. Where it keeps none, judge by the test alone and report the gap as a finding for
domain-modeling, rather than blocking the pass or inventing a glossary.
- Extract every string. Labels, headings, buttons, status lines, tooltips, empty states, error text, and anything generated from a template. Read them as a flat list, out of layout. Copy that survives only because the design carries it is the copy this pass exists to catch.
- Apply the test mechanically, string by string. Treat labels over eight words or with subordinate clauses as review signals. Preserve length needed for meaningful consent, error recovery or an unambiguous action. Correct verb phrases where a noun belongs and vocabulary the step 1 audience would not use. Each rejection gets a tell number and a
file:line or a node reference.
- Rewrite to the shortest sayable form, and the most literal. Take the literal phrase over the figurative one wherever both exist, per tell 13. Shorter is only better when it stays sayable, because a shortened piece of jargon is still jargon. Keep every fact the user needs, drop facts the same string already states, and where a string comes from a template, fix the template rather than the rendered instance. Change display text only: preserve translation keys, IDs, stored values, interpolation placeholders and formatting syntax. Adjust existing text assertions when needed to verify the intended new wording.
- Check the rewrites against the glossary and its avoid-list, so the fix does not reintroduce a term the domain model rejected, or invent a second word for a thing that already has one.
- Render it and read it in place when the app and browser are available. A label that works in a list can still be wrong beside its real neighbours. If rendering is unavailable, report that gap and do not claim visual verification.
- Report. For more than a handful of strings, give counts by tell number and a before-and-after table. For a small pass, name the changes briefly. Include unresolved terms and verification gaps in either case.
Where this fits
- Body prose, docs, and PR descriptions:
deslop.
- Product, feature and package names:
nomen.
- A layout or mockup that confuses while every word in it is plain:
chiaroscuro.
- Deciding what a concept is before naming it:
domain-modeling.
- Machine-written tells in code rather than on screen:
unslop.
1---2name: signage3description: Rewrite interface strings into the words the audience already uses: labels, headings, buttons, status lines, empty states and generated text. Use when reviewing UI copy for comprehension. Not for body prose (`deslop`), product names (`nomen`), layout or visual styling (`chiaroscuro`), or the type ramp (`typecase`).4---56# Signage78The words on an interface are signage. A label's whole job is to let someone act without stopping to decode it. Agent-written UI fails at this in a specific, repeating way: the model reaches for the vocabulary of its own internal model of the system, or it writes a sentence where a two-word label belongs, and the result is an interface that is beautiful and unreadable.910This is a comprehension pass: the user has to know what the button does.1112**The test that decides every word: would you say it out loud to someone who does the audience's job, and be understood?** If you would have to explain it, it is wrong on the screen. Word choice gets the test; the tells below catch the failures the test cannot see.1314## The tells1516Cite by number in findings, so a reviewer sees the pattern rather than the instance. Copy that reads as plain English and is still unclear has no tell number - it is caught by the test alone, and reported against the test.1718**Vocabulary the audience does not have**19201. **Internal nouns on screen.** A domain term, table name, service name, or architecture word promoted to a label. The user never saw the schema. `Shelf` for catalogue, `Answering` for search, `Record` for the data.212. **Invented words for ordinary things.** A coined term where a standard one exists. If the industry already has a word, use the industry's word, even when it is duller.223. **A verb nobody performs.** `Ingest`, `Surface`, `Reconcile`, `Materialise` on a button. People add, save, send, check, open, compare.234. **Abstraction as a label.** `Intelligence`, `Signal`, `Context`, `Instrument`, `Governance` where a concrete noun would name the actual thing on screen. Keep an abstraction when it is the term of art the audience already uses in their trade - provenance in a materials library, signal in audio tools.245. **A label naming the evidence rather than the fact.** `Vector-matched colour` instead of `Closest colour`. The user wants the property; how it was derived is not the label. A market that requires the derivation disclosed is the exception, and it belongs in the value, not the label.2526**Prose where a label belongs**27286. **A sentence doing a label's job.** `This page names three products` is a heading trying to be an essay. `3 products`.297. **Shouted declarations.** `THE PAGE AND THE RECORD DISAGREE`, `PROOF YOU CAN ORDER`. Caps turn a status into a headline about the system's own reasoning.308. **Explanatory subtext under every element.** A caption telling the user what the thing above it means is an admission the label above it has failed. Fix the label and remove redundant captions. Preserve distinct help, consent, constraints and error-recovery information.319. **Lighter grey text standing in for real UI.** A dimmed sentence is not a state, a control, or an empty state. It is a note to self left on the screen.3210. **Scaffolding copy.** `Three ways forward:`, `Here's what we found:`, `Overview`, `Getting started` as a heading over content that is neither.3334**Sentences no human would say**353611. **Template-assembled descriptions.** `A Hospitality Lobby in Mid-Century Modern, feeling calm, in warm muted green, evoking Nordic, in the Mid-Century.` Every slot filled, no sentence produced, and the same fact stated twice. Read generated strings as strings, and judge the words against the audience rather than against the template's own logic.3712. **Portentous compression.** `The system reads the warehouse through one governed instrument, before the panel sits.` Grammatical, meaningless, and unsayable to another person.3813. **Metaphor and flourish where a direct statement belongs.** Mannered copy substitutes the figure for the fact: `A dial worth turning` where the label means `Sample size`, `Earns its keep` where it means `Still in use`. The phrase displays the writer rather than conveying the idea, so the user does extra work mid-task to recover a plain meaning that could have been written plainly. It is also imprecise, because a metaphor drags in connotations nobody chose. Wordplay and a knowing voice fail the same way. Say what you mean; when a literal phrase is available, use it.3914. **Rule-of-three cadence and the closing flourish** in body copy, tooltips, and empty states. Three options the user can actually take are a list, which is fine; the tell is three parallel clauses with nothing behind them.4041**Typographic tells that read as machine-made**424315. **Small caps and letter-spaced micro-headings.** They add emphasis the content does not support.4416. **Title Case Drift** across labels that should be sentence case, and sentence case where the product's convention is title case. Pick one and hold it.4517. **Emoji, status theatre, and box-drawing** in any user-facing surface.4647## Substitutions4849The model's word on the left, the audience's word on the right. Direction for the pass rather than a dictionary to apply blind.5051| Written | Say |52| --- | --- |53| Shelf | Catalogue |54| Answering | Search |55| The record | The data, or name the actual source |56| Resolve (outside conflict and review UIs) / Reconcile | Fix, match, choose |57| Surface / Expose | Show |58| Ingest | Import, add |59| Leverage / Utilise | Use |60| Unlock / Enable | Open, turn on |61| Seamless / Frictionless | Name what is actually easy, or delete |62| Journey | Name the task |63| Evoking | In the style of, or delete |64| Signal | The named fact itself |65| Provenance | Where it came from, unless the trade uses the word |66| Instrument / Governed | Delete; say what it does |67| Sampleability | Whether you can get a sample |68| Artefact | The thing's actual name |69| A dial worth turning / Tune the dial | Name the setting, and the verb for changing it |70| Earns its keep / Pulls its weight | State the plain fact - in use, kept, still needed |71| Where the rubber meets the road | Name the step |7273## Steps7475Scale the pass to the requested strings. A few labels need direct edits and a short explanation, not a separate task list or counts.76771. **Fix the scope and the audience.** Name the screens or the diff, and name who reads them in one line, in their own job title. `Working interior designers`, not `end users`. A pass without a named audience produces generic copy, because the test in this skill has nothing to measure against.782. **Find the ubiquitous language.** Read any glossary the project keeps before judging a word. Where it keeps none, judge by the test alone and report the gap as a finding for `domain-modeling`, rather than blocking the pass or inventing a glossary.793. **Extract every string.** Labels, headings, buttons, status lines, tooltips, empty states, error text, and anything generated from a template. Read them as a flat list, out of layout. Copy that survives only because the design carries it is the copy this pass exists to catch.804. **Apply the test mechanically, string by string.** Treat labels over eight words or with subordinate clauses as review signals. Preserve length needed for meaningful consent, error recovery or an unambiguous action. Correct verb phrases where a noun belongs and vocabulary the step 1 audience would not use. Each rejection gets a tell number and a `file:line` or a node reference.815. **Rewrite to the shortest sayable form, and the most literal.** Take the literal phrase over the figurative one wherever both exist, per tell 13. Shorter is only better when it stays sayable, because a shortened piece of jargon is still jargon. Keep every fact the user needs, drop facts the same string already states, and where a string comes from a template, fix the template rather than the rendered instance. Change display text only: preserve translation keys, IDs, stored values, interpolation placeholders and formatting syntax. Adjust existing text assertions when needed to verify the intended new wording.826. **Check the rewrites against the glossary and its avoid-list**, so the fix does not reintroduce a term the domain model rejected, or invent a second word for a thing that already has one.837. **Render it and read it in place** when the app and browser are available. A label that works in a list can still be wrong beside its real neighbours. If rendering is unavailable, report that gap and do not claim visual verification.848. **Report.** For more than a handful of strings, give counts by tell number and a before-and-after table. For a small pass, name the changes briefly. Include unresolved terms and verification gaps in either case.8586## Where this fits8788- Body prose, docs, and PR descriptions: `deslop`.89- Product, feature and package names: `nomen`.90- A layout or mockup that confuses while every word in it is plain: `chiaroscuro`.91- Deciding what a concept *is* before naming it: `domain-modeling`.92- Machine-written tells in code rather than on screen: `unslop`.