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

L2 · hybrid · Content & naming

**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 —
<!-- dx-sync:cnt5-verbs source -->
click, clicks, clicked, clicking, tap, taps, tapped, tapping, swipe, swipes, swiped, swiping
<!-- /dx-sync:cnt5-verbs -->
— 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.
