Voice and Words
Voice and words

Deepens SKILL.md §2 (Voice: You, Active, Present, Timeless) and §3 (Sentences and Words).
# Voice and Words
Deepens SKILL.md §2 (Voice: You, Active, Present, Timeless) and §3 (Sentences and Words). Owns rule IDs V1-V10 and W1-W8 — cite these IDs in audit findings; S9 ("click here") and P8 (placeholders) are cited here but explained in their owner files.
## Contents
- [Second person](#second-person-v1) · [Active voice](#active-voice-v2) · [Present tense](#present-tense-v3)
- [Please, simply, and excessive claims](#please-simply-and-excessive-claims-v4-v5) · [Anthropomorphism](#anthropomorphism-v6)
- [Timeless documentation](#timeless-documentation-v7) · [Contractions \[EN\]](#contractions-en-v8)
- [Inclusive language](#inclusive-language-v9) · [Global audience](#global-audience-v10)
- [Condition before instruction](#condition-before-instruction-w1) · [Short sentences, one idea](#short-sentences-one-idea-w2)
- [Abbreviations](#abbreviations-w3-and-latin-abbreviations-en-w4) · [can/may/might \[EN\]](#canmaymight-en-w5)
- [Jargon](#jargon-w6) · [Word list \[EN\]](#word-list-en-w7)
- [American spelling and serial comma \[EN\]](#american-spelling-and-serial-comma-en-w8) · [Non-English documents](#non-english-documents)
## Second person (V1)
Address the reader as "you." Never "we" (hides who has to act) or "the user" (turns the reader into a third party watching someone else's instructions). Default to the imperative for steps — the subject "you" is implied, not written.
Overview
Deepens SKILL.md §2 (Voice: You, Active, Present, Timeless) and §3 (Sentences and Words). Owns rule IDs V1-V10 and W1-W8 — cite these IDs in audit findings; S9 ("click here") and P8 (placeholders) are cited here but explained in their owner files.
Manual install (npx, ZIP)
npx skills add wondelai/skills --skill voice-and-words -g -a claude-codeConnects with Agent Alley MCP · agentalley.io/mcp
Files included
voice-and-words.md16.2 KB
Read voice-and-words.md here
wondelai/
Show the full text297 lines
Voice and Words
Deepens SKILL.md §2 (Voice: You, Active, Present, Timeless) and §3 (Sentences and Words). Owns rule IDs V1-V10 and W1-W8 — cite these IDs in audit findings; S9 ("click here") and P8 (placeholders) are cited here but explained in their owner files.
Contents
- Second person · Active voice · Present tense
- Please, simply, and excessive claims · Anthropomorphism
- Timeless documentation · Contractions [EN]
- Inclusive language · Global audience
- Condition before instruction · Short sentences, one idea
- Abbreviations · can/may/might [EN]
- Jargon · Word list [EN]
- American spelling and serial comma [EN] · Non-English documents
Second person (V1)
Address the reader as "you." Never "we" (hides who has to act) or "the user" (turns the reader into a third party watching someone else's instructions). Default to the imperative for steps — the subject "you" is implied, not written.
| Avoid | Use instead | Why |
|---|---|---|
| "We recommend restarting the Nimbus CLI daemon after a config change." | "Restart the Nimbus CLI daemon after you change the config." | "We" hides who has to act |
| "The user must set an API key before calling the endpoint." | "Set an API key before you call the endpoint." | "The user" makes the reader a bystander in their own instructions |
| "You should click Deploy to start the build." | "Click Deploy to start the build." | Imperative drops the throat-clearing subject |
The one allowed "we": Google, or the team that owns the product, speaking as the actual actor — stating a design decision, not giving an instruction. Rare, and confined to prose about the product's history or rationale.
- Allowed: "We built the Vantage API to replace polling with webhooks."
- Not allowed: "We suggest you enable webhooks." → "Enable webhooks."
Source: person
Active voice (V2)
Spot it: a form of "be" (is, was, are, were, been, being) followed by a past participle, with the actor missing or trailing in a "by" phrase.
| Passive | Active | Note |
|---|---|---|
| "The manifest is validated by the Kiln build server." | "The Kiln build server validates the manifest." | Actor is named — no reason for passive |
| "Deployments are triggered when a tag is pushed." | "Pushing a tag triggers a deployment." | Actor recoverable — rewrite active |
Three allowed passive cases:
- Actor unknown: "The request was rejected by an upstream proxy." → allowed as "The request was rejected" when the Wayfinder SDK genuinely can't identify which proxy.
- Actor irrelevant to the reader's task: "Sessions are rotated every 15 minutes." — the reader needs the interval, not the internal job that does the rotating.
- To emphasize the object over the actor: "Expired records are purged nightly." — the record is the point; naming the cron job would bury it.
Source: voice
Present tense (V3)
Default to present tense for behavior. Reserve "will" for effects genuinely later than the action described, not for the next line of the same sequence.
| Rewrite to present | Legitimate "will" |
|---|---|
| "The server will send an ack." → "The server sends an ack." | "If you delete a project, Fleetlog will permanently remove its logs after a 90-day grace period." — the effect is deferred by a stated delay, not immediate |
| "The Fleetlog service will purge logs older than 30 days nightly." → "The Fleetlog service purges logs older than 30 days nightly." | "After three consecutive failed health checks, the load balancer will mark the instance unhealthy." — a threshold-triggered future event |
Rule of thumb: if the result follows directly from the action in the same step, use present tense. If it arrives after a stated delay or a later condition, "will" is accurate.
Source: tense
Please, simply, and excessive claims (V4, V5)
"Please": omit from instructions. Reserve it for asking the reader's permission or forgiveness, not for softening a command.
- "Please click Save to persist your changes." → "Click Save to persist your changes."
- Allowed: "Please allow up to 24 hours for DNS changes to propagate." — asking for patience, not issuing a step.
"Simply / easily / just / quickly": omit. They grade the reader's experience for them; if a step really is easy, the reader notices without being told.
- "Just add the
--watchflag to simply enable live reload." → "Add the--watchflag to enable live reload."
Superlatives, absolutes, and competitor comparisons: cut, or replace with a verifiable, specific claim.
| Avoid | Use instead |
|---|---|
| "The fastest way to deploy" | "One way to deploy" — or a stated number: "deploys in under 10 seconds on the free tier" |
| "Never loses a message" | "Retries delivery up to five times before moving the message to a dead-letter queue" |
| "Faster than Relay's queue" | Cut the comparison, or link to a published benchmark |
Source: tone, excessive-claims
Anthropomorphism (V6)
Software doesn't want, see, think, know, tell, or complain. Name what actually happens.
| Avoid | Use instead | Example |
|---|---|---|
| wants | requires, needs | "The build script wants a NODE_ENV value." → "The build script requires a NODE_ENV value." |
| sees | detects | "The linter sees an unused import." → "The linter detects an unused import." |
| thinks | determines, evaluates | "The scheduler thinks the job is stuck." → "The scheduler determines the job is stuck after a 10-minute timeout." |
| knows | stores, has | "The cache knows the last ETag." → "The cache stores the last ETag." |
| tells | notifies, reports | "The webhook tells the queue the job failed." → "The webhook reports the failure to the queue." |
| complains | returns an error, logs | "The parser complains about invalid syntax." → "The parser returns a syntax error." |
Source: anthropomorphism
Timeless documentation (V7)
Cut "currently," "now," "new," "soon," and "at the time of writing." A doc that never refers to today stays correct for as long as the behavior holds; one anchored to today starts rotting the day it ships.
| Avoid | Use instead |
|---|---|
| "Currently, the Cortex API rate-limits requests to 100/min." | "The Cortex API rate-limits requests to 100/min." |
| "This new dashboard shows deploy history." | "The dashboard shows deploy history." |
| "Soon you'll be able to export CSV." | Cut it — document only what's shipped |
Never pre-announce. A feature that isn't released yet doesn't belong in the docs, even hedged as "coming soon."
Version differences aren't a timeless-docs violation — they name a fact tied to a version number, not to the calendar:
- "In Nimbus CLI 2.x and later,
--dry-runprints a diff before applying changes." — fine, because the boundary is the version, not "now."
Source: future, timeless-documentation
Contractions [EN] (V8)
Contractions read as conversational, not sloppy, and Google's guide allows them. For negations, prefer the contraction over the two-word form.
| Prefer | Over |
|---|---|
| isn't | is not |
| don't | do not |
| won't | will not |
- "The API key is not valid for staging." → "The API key isn't valid for staging."
- "Do not delete the retention record." → "Don't delete the retention record."
Source: contractions
Inclusive language (V9)
| Avoid | Use instead |
|---|---|
| master / slave | primary / replica, controller / worker |
| blacklist / whitelist | denylist / allowlist (or blocklist / safelist) |
| sanity check | final check |
| dummy (variable, value) | placeholder |
| crazy | unexpected, erratic |
| cripple | disable, degrade |
| guys | everyone, team, folks |
| he / she (generic) | they |
Fix pairs together. Replacing only "blacklist" with "denylist" while leaving "whitelist" untouched keeps the asymmetry the swap was meant to remove — change both halves of a pair in the same edit, even when only one half appears on the page in front of you.
Gender-neutral "they": use it for a person of unspecified gender, singular or plural, instead of switching to "he or she" or alternating pronouns.
- "A developer must configure his API key before deploying." → "A developer must configure their API key before deploying."
Source: inclusive-documentation
Global audience (V10)
| Avoid | Use instead | Why |
|---|---|---|
| "Once you deploy the service, health checks start." | "After you deploy the service, health checks start." | "Once" reads as a time word in some dialects and a conditional in others |
| "This endpoint hits the ground running with zero config." | "This endpoint works with no configuration." | Idioms don't translate |
| "Configure it like setting up a Thanksgiving dinner — plan ahead." | Cut the analogy; describe the steps directly | Culture-bound reference |
| "the customer order fulfillment status notification service" | "the service that notifies customers about fulfillment status" | Long noun stacks don't parse for non-native readers |
| "The team, the config file having been updated, redeployed." | "The team updated the config file, then redeployed." | Keep subject-verb-object order |
Date, time, currency, and number formatting for a global audience are S11 (structure-and-formatting.md) — this section covers sentence-level and word-choice habits only.
Source: translation, global-audience
Condition before instruction (W1)
State the condition or goal first, so the reader can tell whether the step applies to them before they act on it.
- "Click Delete if you want to remove the workspace." → "To remove the workspace, click Delete."
- "Restart the Anchor auth service after you edit
config.yaml." → "After you editconfig.yaml, restart the Anchor auth service." - Multi-condition: "Retry the request if the response is a 503 and a
Retry-Afterheader is present, and otherwise fail immediately." → "If the response is a 503 and includes aRetry-Afterheader, retry the request. Otherwise, fail immediately."
Source: sentence-structure
Short sentences, one idea (W2)
One clause, one idea. When a sentence accumulates a "which" clause, a comma-and, and a second instruction, split it into separate sentences.
Before: "The Vantage API returns a 429 status code when you exceed the rate limit, which is 100 requests per minute for free-tier accounts, and you should back off using the Retry-After header."
After: "The Vantage API returns a 429 status code when you exceed the rate limit. Free-tier accounts are limited to 100 requests per minute. Back off using the value in the Retry-After header."
Convert a "which" clause into a list when it enumerates items:
Before: "The deploy command validates the manifest, which checks the schema, the image tag, and the resource limits."
After: "The deploy command validates the manifest. It checks:
- The schema
- The image tag
- The resource limits"
Source: tech-writing/one "Short sentences"
Abbreviations (W3) and Latin abbreviations [EN] (W4)
First use: spell out the term with the abbreviation in parentheses, then use the abbreviation for the rest of the page.
- "Configure the command-line interface (CLI) before running the first build. The CLI reads
~/.nimbusrcon startup."
Universally known exceptions: skip the spell-out for terms every reader already knows — URL and HTML, and similarly ubiquitous ones (inferred: API, CPU).
Latin abbreviations don't translate and scan poorly in the middle of a sentence — spell out the meaning instead.
| Avoid | Use instead |
|---|---|
| e.g. | for example |
| i.e. | that is |
| etc. | omit, or finish the list |
| vs. | versus, or "compared with" |
| cf. (inferred) | see, or compare |
Source: abbreviations, word-list
can/may/might [EN] (W5)
| Modal | Meaning | Example |
|---|---|---|
| can | ability | "Free-tier accounts can make up to 100 requests per minute." |
| may | permission | "You may cache a response for up to 60 seconds." |
| might | possibility | "The migration might take several minutes for databases over 10 GB." |
Don't use "may" for possibility — "The build may fail" reads as the build having permission to fail. Use "might."
Source: word-list
Jargon (W6)
Jargon is a defect only for the reader who doesn't have it. Define, link, or replace it based on the reader named at intake.
| For this reader | Do this |
|---|---|
| Experienced backend engineers | Use the term as-is: "The write is idempotent." |
| Mixed technical audience | Define inline on first use: "The write is idempotent — repeating it produces the same result." |
| Non-technical or new readers | Link to a concept page, or replace with plain language: "Repeating the request is safe; it won't create duplicates." |
Source: jargon
Word list [EN] (W7)
"Click here" is not a word-list row — it's rule S9 (structure-and-formatting.md), a link-text defect, not a word choice.
Entries owned by their own rule aren't repeated here — please (V4), just/simply (V5), e.g./i.e./etc. (W4), the inclusive-language pairs (V9), and once→after (V10) live in their sections; "click here" is rule S9 in structure-and-formatting.md.
| Avoid | Use instead | Why |
|---|---|---|
| above / below | preceding / following | Breaks on reflow, print, and translation |
| abort / kill | stop, cancel, end | Violent connotation |
| log in | sign in (unless the product itself says "log in") | Google's preferred term |
| setup (as a verb) | set up | "Setup" is the noun; "set up" is the verb |
| check box | checkbox | One word |
| and/or | pick one | Ambiguous |
| in order to | to | Wordy |
| desire | want | Plainer |
| leverage | use | Jargon |
| utilize | use (inferred) | Plainer |
| pop-up / dialog box | dialog | Google's preferred term |
| email (don't use it as a verb) | Modern spelling; not a verb | |
| Internet | internet | Common noun now |
| back-end / front-end | backend / frontend | One word, no hyphen |
| file name | filename | One word |
| Id / id | ID | Always capitalized |
| admin | administrator (except literal UI labels) | Plainer, except where the UI itself reads "Admin" |
| application | app (for end-user programs) | Google's preferred term in consumer contexts |
| click and drag | drag | Simpler |
| via | through, by using | Latin-derived; doesn't localize |
| allows you to | lets you / you can | Wordy |
| wish | want | Plainer |
| terminate | end, stop | Plainer |
| enable (a person) | let, lets | "Enable" a feature, not a person |
| display (intransitive) | appears | "Display" needs an object |
| execute | run | Plainer |
| illegal | invalid, not allowed | "Illegal" implies law-breaking |
| foo / bar | meaningful names in samples | Realistic names read better and copy-paste safely |
| Note that | omit | Filler opener |
| going forward | omit | Filler; also a timeless-docs violation |
| it's / its | "it's" only for "it is"; "its" is possessive | Commonly confused |
| toggle (as a verb) | turn on, turn off | Plainer |
| uncheck | clear | Google's UI term |
| unselect | deselect | Google's UI term |
Source: word-list
American spelling and serial comma [EN] (W8)
| UK | US (use this) |
|---|---|
| colour | color |
| behaviour | behavior |
| licence (noun) | license |
| centre | center |
| optimise | optimize |
Serial comma: place a comma before the final "and" or "or" in a list of three or more.
- "Install the CLI, configure the API key and run the migration." → "Install the CLI, configure the API key, and run the migration."
Source: highlights, commas
Non-English documents
The authoritative split lives in audit-checklist.md, "Non-English documents": the [EN] rules — contractions (V8), Latin abbreviations (W4), can/may/might (W5), the word list (W7), spelling and the serial comma (W8) — are skipped, and every other rule in this file, spelling out abbreviations (W3) included, applies in any language.
Never translate a document unless asked (skill rule) — edit or write in the language the source already uses, and flag translation as a separate task if one looks needed.
| 1 | # Voice and Words |
| 2 | |
| 3 | Deepens SKILL.md §2 (Voice: You, Active, Present, Timeless) and §3 (Sentences and Words). Owns rule IDs V1-V10 and W1-W8 — cite these IDs in audit findings; S9 ("click here") and P8 (placeholders) are cited here but explained in their owner files. |
| 4 | |
| 5 | ## Contents |
| 6 | [Second person] · [Active voice] · [Present tense] |
| 7 | [Please, simply, and excessive claims] · [Anthropomorphism] |
| 8 | [Timeless documentation] · [Contractions \[EN\]](#contractions-en-v8) |
| 9 | [Inclusive language] · [Global audience] |
| 10 | [Condition before instruction] · [Short sentences, one idea] |
| 11 | [Abbreviations] · [can/may/might \[EN\]](#canmaymight-en-w5) |
| 12 | [Jargon] · [Word list \[EN\]](#word-list-en-w7) |
| 13 | [American spelling and serial comma \[EN\]](#american-spelling-and-serial-comma-en-w8) · [Non-English documents] |
| 14 | |
| 15 | ## Second person (V1) |
| 16 | |
| 17 | Address the reader as "you." Never "we" (hides who has to act) or "the user" (turns the reader into a third party watching someone else's instructions). Default to the imperative for steps — the subject "you" is implied, not written. |
| 18 | |
| 19 | | Avoid | Use instead | Why | |
| 20 | |---|---|---| |
| 21 | | "We recommend restarting the Nimbus CLI daemon after a config change." | "Restart the Nimbus CLI daemon after you change the config." | "We" hides who has to act | |
| 22 | | "The user must set an API key before calling the endpoint." | "Set an API key before you call the endpoint." | "The user" makes the reader a bystander in their own instructions | |
| 23 | | "You should click Deploy to start the build." | "Click **Deploy** to start the build." | Imperative drops the throat-clearing subject | |
| 24 | |
| 25 | **The one allowed "we":** Google, or the team that owns the product, speaking as the actual actor — stating a design decision, not giving an instruction. Rare, and confined to prose about the product's history or rationale. |
| 26 | Allowed: "We built the Vantage API to replace polling with webhooks." |
| 27 | Not allowed: "We suggest you enable webhooks." → "Enable webhooks." |
| 28 | |
| 29 | Source: person |
| 30 | |
| 31 | ## Active voice (V2) |
| 32 | |
| 33 | **Spot it:** a form of "be" (is, was, are, were, been, being) followed by a past participle, with the actor missing or trailing in a "by" phrase. |
| 34 | |
| 35 | | Passive | Active | Note | |
| 36 | |---|---|---| |
| 37 | | "The manifest is validated by the Kiln build server." | "The Kiln build server validates the manifest." | Actor is named — no reason for passive | |
| 38 | | "Deployments are triggered when a tag is pushed." | "Pushing a tag triggers a deployment." | Actor recoverable — rewrite active | |
| 39 | |
| 40 | **Three allowed passive cases:** |
| 41 | Actor unknown: "The request was rejected by an upstream proxy." → allowed as "The request was rejected" when the Wayfinder SDK genuinely can't identify which proxy. |
| 42 | Actor irrelevant to the reader's task: "Sessions are rotated every 15 minutes." — the reader needs the interval, not the internal job that does the rotating. |
| 43 | To emphasize the object over the actor: "Expired records are purged nightly." — the record is the point; naming the cron job would bury it. |
| 44 | |
| 45 | Source: voice |
| 46 | |
| 47 | ## Present tense (V3) |
| 48 | |
| 49 | Default to present tense for behavior. Reserve "will" for effects genuinely later than the action described, not for the next line of the same sequence. |
| 50 | |
| 51 | | Rewrite to present | Legitimate "will" | |
| 52 | |---|---| |
| 53 | | "The server will send an ack." → "The server sends an ack." | "If you delete a project, Fleetlog will permanently remove its logs after a 90-day grace period." — the effect is deferred by a stated delay, not immediate | |
| 54 | | "The Fleetlog service will purge logs older than 30 days nightly." → "The Fleetlog service purges logs older than 30 days nightly." | "After three consecutive failed health checks, the load balancer will mark the instance unhealthy." — a threshold-triggered future event | |
| 55 | |
| 56 | Rule of thumb: if the result follows directly from the action in the same step, use present tense. If it arrives after a stated delay or a later condition, "will" is accurate. |
| 57 | |
| 58 | Source: tense |
| 59 | |
| 60 | ## Please, simply, and excessive claims (V4, V5) |
| 61 | |
| 62 | **"Please":** omit from instructions. Reserve it for asking the reader's permission or forgiveness, not for softening a command. |
| 63 | "Please click Save to persist your changes." → "Click **Save** to persist your changes." |
| 64 | Allowed: "Please allow up to 24 hours for DNS changes to propagate." — asking for patience, not issuing a step. |
| 65 | |
| 66 | **"Simply / easily / just / quickly":** omit. They grade the reader's experience for them; if a step really is easy, the reader notices without being told. |
| 67 | "Just add the `--watch` flag to simply enable live reload." → "Add the `--watch` flag to enable live reload." |
| 68 | |
| 69 | **Superlatives, absolutes, and competitor comparisons:** cut, or replace with a verifiable, specific claim. |
| 70 | |
| 71 | | Avoid | Use instead | |
| 72 | |---|---| |
| 73 | | "The fastest way to deploy" | "One way to deploy" — or a stated number: "deploys in under 10 seconds on the free tier" | |
| 74 | | "Never loses a message" | "Retries delivery up to five times before moving the message to a dead-letter queue" | |
| 75 | | "Faster than Relay's queue" | Cut the comparison, or link to a published benchmark | |
| 76 | |
| 77 | Source: tone, excessive-claims |
| 78 | |
| 79 | ## Anthropomorphism (V6) |
| 80 | |
| 81 | Software doesn't want, see, think, know, tell, or complain. Name what actually happens. |
| 82 | |
| 83 | | Avoid | Use instead | Example | |
| 84 | |---|---|---| |
| 85 | | wants | requires, needs | "The build script wants a `NODE_ENV` value." → "The build script requires a `NODE_ENV` value." | |
| 86 | | sees | detects | "The linter sees an unused import." → "The linter detects an unused import." | |
| 87 | | thinks | determines, evaluates | "The scheduler thinks the job is stuck." → "The scheduler determines the job is stuck after a 10-minute timeout." | |
| 88 | | knows | stores, has | "The cache knows the last ETag." → "The cache stores the last ETag." | |
| 89 | | tells | notifies, reports | "The webhook tells the queue the job failed." → "The webhook reports the failure to the queue." | |
| 90 | | complains | returns an error, logs | "The parser complains about invalid syntax." → "The parser returns a syntax error." | |
| 91 | |
| 92 | Source: anthropomorphism |
| 93 | |
| 94 | ## Timeless documentation (V7) |
| 95 | |
| 96 | Cut "currently," "now," "new," "soon," and "at the time of writing." A doc that never refers to today stays correct for as long as the behavior holds; one anchored to today starts rotting the day it ships. |
| 97 | |
| 98 | | Avoid | Use instead | |
| 99 | |---|---| |
| 100 | | "Currently, the Cortex API rate-limits requests to 100/min." | "The Cortex API rate-limits requests to 100/min." | |
| 101 | | "This new dashboard shows deploy history." | "The dashboard shows deploy history." | |
| 102 | | "Soon you'll be able to export CSV." | Cut it — document only what's shipped | |
| 103 | |
| 104 | **Never pre-announce.** A feature that isn't released yet doesn't belong in the docs, even hedged as "coming soon." |
| 105 | |
| 106 | **Version differences aren't a timeless-docs violation** — they name a fact tied to a version number, not to the calendar: |
| 107 | "In Nimbus CLI 2.x and later, `--dry-run` prints a diff before applying changes." — fine, because the boundary is the version, not "now." |
| 108 | |
| 109 | Source: future, timeless-documentation |
| 110 | |
| 111 | ## Contractions [EN] (V8) |
| 112 | |
| 113 | Contractions read as conversational, not sloppy, and Google's guide allows them. For negations, prefer the contraction over the two-word form. |
| 114 | |
| 115 | | Prefer | Over | |
| 116 | |---|---| |
| 117 | | isn't | is not | |
| 118 | | don't | do not | |
| 119 | | won't | will not | |
| 120 | |
| 121 | "The API key is not valid for staging." → "The API key isn't valid for staging." |
| 122 | "Do not delete the retention record." → "Don't delete the retention record." |
| 123 | |
| 124 | Source: contractions |
| 125 | |
| 126 | ## Inclusive language (V9) |
| 127 | |
| 128 | | Avoid | Use instead | |
| 129 | |---|---| |
| 130 | | master / slave | primary / replica, controller / worker | |
| 131 | | blacklist / whitelist | denylist / allowlist (or blocklist / safelist) | |
| 132 | | sanity check | final check | |
| 133 | | dummy (variable, value) | placeholder | |
| 134 | | crazy | unexpected, erratic | |
| 135 | | cripple | disable, degrade | |
| 136 | | guys | everyone, team, folks | |
| 137 | | he / she (generic) | they | |
| 138 | |
| 139 | **Fix pairs together.** Replacing only "blacklist" with "denylist" while leaving "whitelist" untouched keeps the asymmetry the swap was meant to remove — change both halves of a pair in the same edit, even when only one half appears on the page in front of you. |
| 140 | |
| 141 | **Gender-neutral "they":** use it for a person of unspecified gender, singular or plural, instead of switching to "he or she" or alternating pronouns. |
| 142 | "A developer must configure his API key before deploying." → "A developer must configure their API key before deploying." |
| 143 | |
| 144 | Source: inclusive-documentation |
| 145 | |
| 146 | ## Global audience (V10) |
| 147 | |
| 148 | | Avoid | Use instead | Why | |
| 149 | |---|---|---| |
| 150 | | "Once you deploy the service, health checks start." | "After you deploy the service, health checks start." | "Once" reads as a time word in some dialects and a conditional in others | |
| 151 | | "This endpoint hits the ground running with zero config." | "This endpoint works with no configuration." | Idioms don't translate | |
| 152 | | "Configure it like setting up a Thanksgiving dinner — plan ahead." | Cut the analogy; describe the steps directly | Culture-bound reference | |
| 153 | | "the customer order fulfillment status notification service" | "the service that notifies customers about fulfillment status" | Long noun stacks don't parse for non-native readers | |
| 154 | | "The team, the config file having been updated, redeployed." | "The team updated the config file, then redeployed." | Keep subject-verb-object order | |
| 155 | |
| 156 | Date, time, currency, and number formatting for a global audience are S11 (structure-and-formatting.md) — this section covers sentence-level and word-choice habits only. |
| 157 | |
| 158 | Source: translation, global-audience |
| 159 | |
| 160 | ## Condition before instruction (W1) |
| 161 | |
| 162 | State the condition or goal first, so the reader can tell whether the step applies to them before they act on it. |
| 163 | |
| 164 | "Click **Delete** if you want to remove the workspace." → "To remove the workspace, click **Delete**." |
| 165 | "Restart the Anchor auth service after you edit `config.yaml`." → "After you edit `config.yaml`, restart the Anchor auth service." |
| 166 | Multi-condition: "Retry the request if the response is a 503 and a `Retry-After` header is present, and otherwise fail immediately." → "If the response is a 503 and includes a `Retry-After` header, retry the request. Otherwise, fail immediately." |
| 167 | |
| 168 | Source: sentence-structure |
| 169 | |
| 170 | ## Short sentences, one idea (W2) |
| 171 | |
| 172 | One clause, one idea. When a sentence accumulates a "which" clause, a comma-and, and a second instruction, split it into separate sentences. |
| 173 | |
| 174 | Before: "The Vantage API returns a 429 status code when you exceed the rate limit, which is 100 requests per minute for free-tier accounts, and you should back off using the Retry-After header." |
| 175 | |
| 176 | After: "The Vantage API returns a 429 status code when you exceed the rate limit. Free-tier accounts are limited to 100 requests per minute. Back off using the value in the `Retry-After` header." |
| 177 | |
| 178 | **Convert a "which" clause into a list when it enumerates items:** |
| 179 | |
| 180 | Before: "The deploy command validates the manifest, which checks the schema, the image tag, and the resource limits." |
| 181 | |
| 182 | After: "The deploy command validates the manifest. It checks: |
| 183 | The schema |
| 184 | The image tag |
| 185 | The resource limits" |
| 186 | |
| 187 | Source: tech-writing/one "Short sentences" |
| 188 | |
| 189 | ## Abbreviations (W3) and Latin abbreviations [EN] (W4) |
| 190 | |
| 191 | **First use:** spell out the term with the abbreviation in parentheses, then use the abbreviation for the rest of the page. |
| 192 | "Configure the command-line interface (CLI) before running the first build. The CLI reads `~/.nimbusrc` on startup." |
| 193 | |
| 194 | **Universally known exceptions:** skip the spell-out for terms every reader already knows — URL and HTML, and similarly ubiquitous ones (inferred: API, CPU). |
| 195 | |
| 196 | **Latin abbreviations** don't translate and scan poorly in the middle of a sentence — spell out the meaning instead. |
| 197 | |
| 198 | | Avoid | Use instead | |
| 199 | |---|---| |
| 200 | | e.g. | for example | |
| 201 | | i.e. | that is | |
| 202 | | etc. | omit, or finish the list | |
| 203 | | vs. | versus, or "compared with" | |
| 204 | | cf. (inferred) | see, or compare | |
| 205 | |
| 206 | Source: abbreviations, word-list |
| 207 | |
| 208 | ## can/may/might [EN] (W5) |
| 209 | |
| 210 | | Modal | Meaning | Example | |
| 211 | |---|---|---| |
| 212 | | can | ability | "Free-tier accounts can make up to 100 requests per minute." | |
| 213 | | may | permission | "You may cache a response for up to 60 seconds." | |
| 214 | | might | possibility | "The migration might take several minutes for databases over 10 GB." | |
| 215 | |
| 216 | Don't use "may" for possibility — "The build may fail" reads as the build having permission to fail. Use "might." |
| 217 | |
| 218 | Source: word-list |
| 219 | |
| 220 | ## Jargon (W6) |
| 221 | |
| 222 | Jargon is a defect only for the reader who doesn't have it. Define, link, or replace it based on the reader named at intake. |
| 223 | |
| 224 | | For this reader | Do this | |
| 225 | |---|---| |
| 226 | | Experienced backend engineers | Use the term as-is: "The write is idempotent." | |
| 227 | | Mixed technical audience | Define inline on first use: "The write is idempotent — repeating it produces the same result." | |
| 228 | | Non-technical or new readers | Link to a concept page, or replace with plain language: "Repeating the request is safe; it won't create duplicates." | |
| 229 | |
| 230 | Source: jargon |
| 231 | |
| 232 | ## Word list [EN] (W7) |
| 233 | |
| 234 | "Click here" is not a word-list row — it's rule S9 (structure-and-formatting.md), a link-text defect, not a word choice. |
| 235 | |
| 236 | Entries owned by their own rule aren't repeated here — please (V4), just/simply (V5), e.g./i.e./etc. (W4), the inclusive-language pairs (V9), and once→after (V10) live in their sections; "click here" is rule S9 in structure-and-formatting.md. |
| 237 | |
| 238 | | Avoid | Use instead | Why | |
| 239 | |---|---|---| |
| 240 | | above / below | preceding / following | Breaks on reflow, print, and translation | |
| 241 | | abort / kill | stop, cancel, end | Violent connotation | |
| 242 | | log in | sign in (unless the product itself says "log in") | Google's preferred term | |
| 243 | | setup (as a verb) | set up | "Setup" is the noun; "set up" is the verb | |
| 244 | | check box | checkbox | One word | |
| 245 | | and/or | pick one | Ambiguous | |
| 246 | | in order to | to | Wordy | |
| 247 | | desire | want | Plainer | |
| 248 | | leverage | use | Jargon | |
| 249 | | utilize | use (inferred) | Plainer | |
| 250 | | pop-up / dialog box | dialog | Google's preferred term | |
| 251 | | e-mail | email (don't use it as a verb) | Modern spelling; not a verb | |
| 252 | | Internet | internet | Common noun now | |
| 253 | | back-end / front-end | backend / frontend | One word, no hyphen | |
| 254 | | file name | filename | One word | |
| 255 | | Id / id | ID | Always capitalized | |
| 256 | | admin | administrator (except literal UI labels) | Plainer, except where the UI itself reads "Admin" | |
| 257 | | application | app (for end-user programs) | Google's preferred term in consumer contexts | |
| 258 | | click and drag | drag | Simpler | |
| 259 | | via | through, by using | Latin-derived; doesn't localize | |
| 260 | | allows you to | lets you / you can | Wordy | |
| 261 | | wish | want | Plainer | |
| 262 | | terminate | end, stop | Plainer | |
| 263 | | enable (a person) | let, lets | "Enable" a feature, not a person | |
| 264 | | display (intransitive) | appears | "Display" needs an object | |
| 265 | | execute | run | Plainer | |
| 266 | | illegal | invalid, not allowed | "Illegal" implies law-breaking | |
| 267 | | foo / bar | meaningful names in samples | Realistic names read better and copy-paste safely | |
| 268 | | Note that | omit | Filler opener | |
| 269 | | going forward | omit | Filler; also a timeless-docs violation | |
| 270 | | it's / its | "it's" only for "it is"; "its" is possessive | Commonly confused | |
| 271 | | toggle (as a verb) | turn on, turn off | Plainer | |
| 272 | | uncheck | clear | Google's UI term | |
| 273 | | unselect | deselect | Google's UI term | |
| 274 | |
| 275 | Source: word-list |
| 276 | |
| 277 | ## American spelling and serial comma [EN] (W8) |
| 278 | |
| 279 | | UK | US (use this) | |
| 280 | |---|---| |
| 281 | | colour | color | |
| 282 | | behaviour | behavior | |
| 283 | | licence (noun) | license | |
| 284 | | centre | center | |
| 285 | | optimise | optimize | |
| 286 | |
| 287 | **Serial comma:** place a comma before the final "and" or "or" in a list of three or more. |
| 288 | "Install the CLI, configure the API key and run the migration." → "Install the CLI, configure the API key, and run the migration." |
| 289 | |
| 290 | Source: highlights, commas |
| 291 | |
| 292 | ## Non-English documents |
| 293 | |
| 294 | The authoritative split lives in [audit-checklist.md], "Non-English documents": the `[EN]` rules — contractions (V8), Latin abbreviations (W4), can/may/might (W5), the word list (W7), spelling and the serial comma (W8) — are skipped, and every other rule in this file, spelling out abbreviations (W3) included, applies in any language. |
| 295 | |
| 296 | Never translate a document unless asked (skill rule) — edit or write in the language the source already uses, and flag translation as a separate task if one looks needed. |
| 297 |
Details
- Updated
- Sep 10, 2026
- License
- MIT
- Stars on the repo
- ★ 2,235
- Checked
- Source
- wondelai/skills ↗
- Creator
- wondelai · 319 listings
Similar skills
See all →
SkillCross-Platform Reverse Engineer
SkillBrainstorm Ideas
SkillCode Review Feedback Analyzer
SkillBug Diagnosis Framework
SkillImplement Spec
SkillPR Description WriterMore from wondelai
SkillSoftware Design Philosophy
SkillActionable Metrics Guide
SkillAdvertising Media
SkillAffordance Design
SkillLean UX in Agile Teams
SkillAMP Framework Practitioner