---
name: interface-text
description: "In-product strings: button labels, field labels, errors, empty states. Use when writing text that ships inside the interface."
---

# Interface Text

**Boundary — read this first.** This skill governs strings shipped inside
the running product: button and field labels, placeholders, errors, empty
states, toasts, confirmations, tooltips, onboarding and notifications. It
does not govern documentation. READMEs, guides, help articles, release
notes, tutorials and API references belong to the documentation-language
skills: `tekom-technical-communication`, `simple-language-din-8581-1`,
`ste-documentation-style` and `readability-measures`. If the reader is
away from the product, stop here and use those instead.

**One voice, written down.** Produce a three-sentence voice statement: who
the product speaks as, what it never does, and one before-and-after
example. A reviewer picks any three strings and matches them to it.

**Strings live in one resource file.** Produce every user-visible string
as a keyed entry outside the component. A reviewer greps the component
tree for quoted sentence text and finds none.

**Sentence case.** Produce sentence case for labels, buttons, headings and
menu items: capitalise the first word, plus names of products, people and
places `[ASSUMPTION]`. A reviewer scans for Title Case and finds only
those names.

**Buttons name the action.** Produce a verb plus an object in at most
three words, matching the heading of whatever it opens. A reviewer reads
the button alone and states what happens next. "OK", "Submit" and "Yes"
fail that read.

**Confirmations name object and consequence.** Produce the object, what
becomes of it, and whether it can be undone. The primary button repeats
the verb, as in "Delete 3 files". A reviewer checks that no dialog asks
only "Are you sure?".

**Errors answer three questions.** Produce what failed, which input or
resource caused it, and the next step, in at most two sentences. Include
the correlation identifier where one exists. A reviewer checks each error
string names an action the reader can take without leaving the product.

**Banned error strings.** Produce none of these: "Oops", "Something went
wrong", "Invalid input", "An error occurred", a bare status code, a stack
trace. Produce the system, never the reader, as the subject of the failure
sentence. A reviewer greps for those strings, and for errors starting
"You", and finds zero.

**Empty states.** Produce one sentence naming the cause and one control
that changes it. A reviewer confirms the text differs between first run
and a filter with no matches.

**One term per concept, short sentences.** Produce a term list mapping
each concept to exactly one word used everywhere in the interface. Produce
sentences of 15 words or fewer, and never over 20. A reviewer searches
each term's synonyms for zero hits, and counts the words in the longest
string.

**Localisation headroom.** Produce layouts that hold 1.35x the English
string length without truncation `[ASSUMPTION]`, and take dates, numbers
and currency from locale formatters rather than concatenation. A reviewer
renders the surface with every string padded by 35%.

**Cold read test.** Produce strings that stand alone. A reviewer reads
each string with no surrounding screen and names the object it acts on. A
string that fails is rewritten.
