Files of Voice and words
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 |
Discussion
Browse more free Claude skills.