content-microcopy-architect
Architect-level UI content — where strings live, voice and terminology consistency, error and empty-state copy as part of the interface, translation-ready authoring, and the content model a product needs before it multiplies screens. Use when the words in the interface matter as much as the pixels.
- License 许可
- MIT
- 最近更新
- 2026-11-13
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- content-microcopy-architect
- license
- MIT
- metadata
- { "crusor-path": "website-architect/ui-ux-implementation-architect/content-microcopy-architect", "crusor-domain": "website-architect", "crusor-origin": "original", "crusor-sources": "nngroup.com/articles (microcopy, error messages); gov.uk content design guidance", "crusor-triggers": "microcopy, ux writing, interface copy, error messages, empty state copy, terminology, tone of voice", "crusor-verified-on": "2026-10-30" }
- description
- Architect-level UI content — where strings live, voice and terminology consistency, error and empty-state copy as part of the interface, translation-ready authoring, and the content model a product needs before it multiplies screens. Use when the words in the interface matter as much as the pixels.
- compatibility
- Framework-agnostic; i18n catalogues (see i18n-architect)
03 SKILL.md 正文
Content & Microcopy Architect
Copy is interface. A button label is not decoration; it is the specification of what pressing it does.
When to use
- Writing labels, buttons, errors, empty states, confirmations.
- Terminology is inconsistent across screens (Save/Update/Submit).
- Copy is hard-coded and needs to become translatable.
When NOT to use
- Marketing copy and long-form content, which have their own editing process.
Decision 1 — Strings are data
- All UI strings live in a catalogue keyed by meaning (see
i18n-architect). - No concatenation: "{n} items" is one message with a plural rule, not
n + " items". - Placeholder names are descriptive (
{fileName}, not{0}). - Content limits are part of the design spec: buttons truncate, headlines wrap — decide which.
Decision 2 — Voice and terminology
- One verb per action, product-wide: pick "Delete" and never also use "Remove", "Discard", "Erase" for the same operation.
- A terminology list exists and is enforced in review (glossary in the repo).
- Second person, active, present tense: "We couldn't save your changes."
- No jargon the user did not introduce; no idioms that will not translate.
Decision 3 — Errors as guidance
Every error answers three questions:
- What happened, in the user's terms.
- Why, if it is knowable and actionable.
- What to do next.
- Never expose codes, stack traces, or internal identifiers as the message.
- Field errors sit next to the field and name the fix ("Enter a date after 1 March"), not the failure ("Invalid input").
- Distinguish user error, system error, and permission error — the actions differ.
Decision 4 — Empty and first-run states
- Empty is a design state with a purpose: explain the value, offer the first action, and — where useful — show an example.
- Distinguish "nothing yet" from "nothing matched your filter" from "no permission".
- Loading copy sets expectations for anything over a second.
- Confirmations name what changed ("Invite sent to ana@…"), not "Success!".
Decision 5 — Translation-ready authoring
- Short sentences, no nested clauses; translation expands text 30–40%.
- No text inside images; no string splits across elements.
- Dates, numbers, currency via
Intl, never pre-formatted in strings. - Provide context to translators (screenshot + what the string is for).
Failure modes at scale
- Three words for the same action, so users cannot predict outcomes.
- Errors like "Error 422" that tell the user nothing.
- Empty states that say "No data" and offer no next step.
- Button labels that change meaning after translation and no longer fit.
- Copy invented per screen by whoever implemented it last.
Verification receipts
- Terminology glossary in the repo, enforced on strings changed in the PR.
- Error-copy checklist applied to every error path in the flow.
- Empty state present and purposeful for every list/data surface.
- String catalogue: no concatenation, no embedded HTML, placeholders named.
- Pseudo-locale pass on the primary screens (overflow, truncation).
04 同仓库更多 Skills
interaction-patterns-architect
Architect-level interaction design in code — choosing established patterns over invented ones, feedback and latency behaviour, destructive-action safeguards, navigation and overlay conventions, and the state model behind every interactive surface. Use when a screen has to behave, not just look.
design-system-ops-architect
Architect-level operation of a design system in code — token pipelines and versioning, component API and variant policy, the catalogue as the contract, adoption metrics, and the governance that stops a system from forking into three. Use when a component library must survive several teams.
design-handoff-architect
Architect-level design handoff — what must be specified before implementation starts, tokens over raw values, responsive and content-limit contracts, state matrices, and the review loop that catches drift between design and code. Use when a design is about to become code.
ui-ux-implementation-architect
Architect-level direction for turning a design into working UI — the handoff contract, component ownership versus screen-level layout, interaction and state conventions, design QA gates, and the review habits that keep an implementation faithful without frozen pixels. Use before any specific UI implementation skill.
test-strategy-architect
Architect-level test strategy — allocating assertions across unit, integration, contract and end-to-end layers, designing for testability through dependency boundaries, fixture and data strategy, and the flake and coverage policies that keep a suite trustworthy. Use when defining how a codebase is tested.
release-strategy-architect
Architect-level release practice — small-batch delivery, feature flag and canary strategy, expand/contract database changes, rollback versus roll-forward decisions, and the versioning and communication that keep releases boring. Use when deciding how code reaches users.