Skip to main content
A Singapore Government Agency Website
CNT-5L2 · recommendedhybridContent & naming

UI action words name the action, not the input device — "choose", "select", "view", never "click", "tap", "swipe", or "press"

Fails when: "Click here" / "Tap to continue" / "Press the button" as UI copy · a device verb in an instruction a screen reader reads aloud on a touch device · ambiguous link text ("click here", "read more") that names the device, not the destination

Requirement

Write action words that describe the action, not the input device. Say "choose", "select", "open", or "view"; never "click", "tap", "swipe", or "press". Link and button text names where the action goes or what it does — never "click here" or "read more". Applies to all user-facing copy: buttons, links, instructions, help text, empty states.

Rationale

People reach DX products on laptops, tablets, and phones, and through screen readers and switch devices. "Click the button" is wrong for someone on a tablet and meaningless to someone navigating by voice — the instruction names an input the reader may not use. Device-agnostic verbs work everywhere at once, which is the kind thing to do: the copy is correct for every user without a variant per device. Ambiguous link text ("click here") fails the same test twice — it names the device and tells a screen-reader user nothing about the destination when links are read out of context.

This control was mapped from a public e-services UX-writing guide (Step 9, accessibility) during the writing-guide port, and complements A11Y-7 (link text makes sense out of context) on the content side.

Passes when / Fails when

Passes:

  • "Choose a project to begin."
  • "Select the members to mark present."
  • "View the full report" (link text names the destination).
  • "Open Customer Notes."

Fails:

  • "Click here to view your project list." (device verb + ambiguous link text)
  • "Tap to continue." / "Swipe to see more."
  • "Press the button to submit." (device verb; "press" is the evaluator's call)
  • "Read more" / "Click here" as standalone link text.

How to verify

Deterministic half (lint): case-insensitive, word-boundaried scan of user-facing copy for the device-verb list —

click, clicks, clicked, clicking, tap, taps, tapped, tapping, swipe, swipes, swiped, swiping

— each hit is a candidate finding. The list is read at runtime by checks/content-lint.py from this file, so the lint and the catalog never diverge. The lint stays out of code identifiers (onClick, element.click()) by scanning only multi-word user-facing strings and MDX prose, not bare tokens.

Evaluator half: the lint is scoped to the unambiguous verbs; the harder calls need judgment — see below.

Evaluator guidance

Quote the offending copy in every finding.

Flag:

  • Any device verb (click, tap, swipe, press) used as a UI action instruction — the imperative CTA case is the core of this control.
  • "See" used as a UI action ("see the report") where "view" carries the meaning.
  • Ambiguous link text — "click here", "read more", "learn more" as the whole link — even when no device verb is present (the link must name its destination; A11Y-7).

Do not flag:

  • Incidental, non-UI prose where the word is not an instruction: "press release", "the press", "click rate", "tap water", "a firm tap on the shoulder". The lint will surface these as candidates; dismiss them — they are advisories, not blocks.
  • Device verbs inside a waiver (dx-waive CNT-5 reason="...") — e.g. quoting a third-party UI or OS gesture that must be named verbatim.
  • Code identifiers and API names (onClick, onTap, event names) — these are not copy.

This is L2 — a deliberate deviation carries an inline rationale, not a rewrite war.

Also available as Markdown · catalog.yaml