thinkhard.SI

Prompt repository Product

Write interface text for buttons, errors and empty states

You need clear, consistent text for a screen or flow: labels, buttons, error messages, empty states and confirmations.

Registry no.
PRD-018
Collection
Product
Laid out for
Gemini
Score
10 out of 10
Blanks to fill
5
Added

ProductGemini

The prompt

Score 10 of 10, Excellent

Use it when You need clear, consistent text for a screen or flow: labels, buttons, error messages, empty states and confirmations.

  • {{screens}}
  • {{style_guide}}
  • {{users}}
  • {{platform}}
  • {{char_limits}}
Full prompt and why it works
System prompt
You write interface text for software products: short, specific words that help people finish what they came to do.
User message
<screens>
{{screens}}
</screens>

<style_guide>
{{style_guide}}
</style_guide>

<context>
Product and users: {{users}}
Where the text appears (web, mobile app, email): {{platform}}
Character limits, if any: {{char_limits}}
</context>

<rules>
- Buttons start with a verb and say what happens: "Save draft", not "OK" or "Submit".
- Error messages say what happened and how to fix it, in that order, without blaming the user or showing a code alone. For example: "That date is in the past. Choose today or a later date."
- Empty states say why the space is empty and what to do first.
- Confirmations for destructive actions name the thing and the consequence, and the confirm button repeats the action, such as "Delete 3 files", never "Yes".
- Use the same word for the same thing everywhere, in sentence case.
- Avoid jargon, exclamation marks, jokes in error messages, and "please" on buttons.
</rules>

<task>
Using the screens above, write the interface text for every element listed, for the design and engineering team to use in the build. Return a table with the columns Screen, Element, Text, Characters, Note (only where a choice needs explaining). After the table, list up to 10 terms you standardized, with the word to use and the words to avoid.

Good interface text should be short enough to scan and specific enough that nobody has to guess what a button does. Follow the style guide where it conflicts with the rules above, and keep within the character limits. Do not describe features or behavior the screens do not show. If you cannot tell from the screens how the system behaves, such as whether a deletion can be undone or what a role is allowed to do, write both versions or use a bracketed placeholder, and mark the cell "Confirm:" with the question.
</task>

Variables

{{screens}}
Each screen and the elements that need text, for example "Invite screen: title, email field label, role dropdown, send button, error when the email is already a member".
{{style_guide}}
Your product's writing rules or voice notes. Write "none" if you have none.
{{users}}
The product and who uses it, for example "scheduling software for clinic receptionists".
{{platform}}
Where the text appears, for example "mobile app, iOS and Android".
{{char_limits}}
Limits by element, for example "buttons 20 characters, titles 40". Write "none" if there are none.

Why it works

  • An example. Each rule carries a concrete before-and-after, such as "Save draft" instead of "OK", which shows the standard better than adjectives like clear or friendly.
  • If unsure. When the text depends on behavior the screens do not show, both versions come back marked for confirmation instead of one guessed version.
  • Layout. Tagged sections with the material first and the task at the end, the layout Google recommends for Gemini.

How to use it

  1. Press Fill in variables and type your details into each blank. What you type stays in this browser.
  2. Copy the filled prompt into the AI tool you already use, such as ChatGPT, Claude or Gemini, or open it in the Grader or the Prompt Tester here.
  3. Before you rely on it, try it on three or four real examples. The Prompt Tester runs them all at once and shows which ones go wrong.
Use it from code

Get this prompt as JSON from the free REST API, with your own text in the blanks, or let an AI assistant fetch it through the MCP server. No key.

curl -s https://thinkhard.si/api/v1/prompts/interface-microcopy

With the MCP server added to Claude, ChatGPT, Cursor or VS Code, call get_prompt with {"prompt": "interface-microcopy"}, or just ask for it by name.