Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
中文简介正在准备中。当前显示原文说明。
Use when you write any words a user reads in a mockup or a hand-off - content language and voice, buttons, labels, errors, empty states, confirmations, numbers and dates, and the longest-string check
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
The words are part of the design: a button label decides whether the user knows what happens next, an error decides whether they can recover. Copy written as an afterthought — "Submit", "Error occurred", "No data" — is how a well-drawn screen still fails.
Core principle: Say what happens, in the user's words, in the product's language — and write the longest version you will ever see.
locales/*.json, Localizable.strings, res/values/strings.xml, lib/l10n/*.arb) and reuse its terms exactly: if the app says "Workspace", a new screen does not say "Project". Match its voice — formal or casual, "you" or impersonal.#notes as draft copy.| Element | Write | Not |
|---|---|---|
| Button | verb + object, sentence case: "Send invoice" | "Submit", "OK", "Click here" |
| Destructive button | names the thing: "Delete invoice" | "Delete", "Yes" |
| Field label | a noun above the field: "Customer email" | the placeholder as the only label |
| Placeholder | an example: "name@company.com" | the label repeated |
| Helper text | the constraint, before the user hits it: "At least 8 characters" | a tooltip-only hint |
| Error | what happened + how to fix, no blame, no apology: "Enter an email address like name@company.com" | "Invalid input", "Oops! Something went wrong" |
| System error | what failed + what to do: "Invoices couldn't load. Check your connection and try again." + "Retry" | an error code alone |
| Empty, first use | why it is empty + the one next action: "No invoices yet — create your first one in under a minute." + "New invoice" | "No data" |
| Empty, no results | the query + the way out: "No invoices match "Ortiz"" + "Clear search" | the first-use empty state |
| Success | the outcome with the object: "Invoice INV-204 sent to Dana Ortiz" | "Success!" |
| Confirmation dialog | title asks with the object ("Delete invoice INV-204?"), body states the consequence ("This can't be undone."), buttons are the verb and "Cancel" | "Are you sure?" with Yes / No |
| Link | where it goes: "View invoice" | "Click here", "More" |
| Icon-only control | its accessible name, written in the spec: "Filter invoices" | nothing |
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
中文简介正在准备中。当前显示原文说明。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
中文简介正在准备中。当前显示原文说明。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
中文简介正在准备中。当前显示原文说明。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
中文简介正在准备中。当前显示原文说明。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
中文简介正在准备中。当前显示原文说明。
Use when the repository keeps its alerting in code, or a person asks for alerts outside TaskTrooper - PrometheusRule YAML, a Cloud Monitoring alert policy in Terraform, a Datadog monitor, each routed to TaskTrooper's alert ingest URL so it opens an incident here
中文简介正在准备中。当前显示原文说明。