Google developer documentation style
House style for technical documentation and application help. Derived from the
Google developer documentation style guide
(CC BY 4.0). The goal is documentation that reads as if one careful person wrote all of
it: clear, direct, scannable, accessible, and translatable.
Reference hierarchy
When guidance conflicts, follow this order:
- Project-specific style. A
CLAUDE.md, STYLE.md, contributing guide, or an
established convention visible in the docs you're editing wins. Check for one before
you start.
- This skill.
- Third-party references. Spelling: Merriam-Webster (use the first spelling
listed). Nontechnical style: The Chicago Manual of Style. Technical style:
Microsoft Writing Style Guide.
Break the rules when doing so serves the reader. These are guidelines, not laws.
When you depart from them, be consistent about it throughout the document.
How to use this skill
- Identify the document type and the reader. A quickstart, a concept page, a
troubleshooting guide, and a tooltip are different jobs. Decide who "you" is — a
developer? an operator? an end user? — and address that reader consistently. For a
README, read
references/readme.md before you start.
- Check for project-specific style (step 1 of the reference hierarchy) and for the
terminology already used in the surrounding docs. Consistency with neighbors beats
consistency with this file.
- Draft against the core rules below. Hold them in mind while writing rather than
fixing violations afterward.
- Open a reference file when you need detail. The core rules cover most decisions;
the references cover the rest. See the index at the end.
- Run the review pass before delivering. Use
references/checklist.md. Deliver the
document, not the checklist output — unless the user asked for a style review, in
which case report findings with file and line.
When reviewing rather than writing: report what to change and why, quoting the
offending text. Don't rewrite wholesale unless asked. Rank findings by reader impact —
ambiguity and inaccessible constructions first, spelling and hyphenation last.
Core rules
Voice and tone
Aim for conversational, friendly, and respectful without being frivolous. Sound like a
knowledgeable friend who understands what the reader is trying to do. Don't write the
way you speak — speech is more verbose than documentation should be.
Avoid:
- Buzzwords, jargon, and figurative language, including metaphors and ableist idioms.
- Placeholder phrases: please note, at this time.
- Starting every sentence the same way (You can…, To do…).
- Pop-culture references, humor, wackiness, cuteness.
- Exclamation points. They read as unprofessional or alarming, and in some languages
they read as shouting. Never in concept or reference docs. See
mechanics.md for the
narrow exceptions.
- Simply, easy, just, quickly in procedures. What's easy for you may not be
easy for the reader.
- Please in instructions. "To view the document, click View" — not "please click."
Reserve please for when you're asking a favor that inconveniences the reader.
- Let's do X phrasing.
- Internet slang and abbreviations: tl;dr, ymmv, RTFM.
| Too informal |
About right |
Too formal |
| Dude! This API is totally awesome! |
This API lets you collect data about what your users like. |
The API documented by this page may enable the acquisition of information pertaining to user preferences. |
| Then—BOOM—just garbage-collect, and you're golden. |
To clean up, call the collectGarbage method. |
Please note that completion of the task requires the following prerequisite: executing an automated memory management function. |
Address the reader as you
Use second person. Assume the reader is the person doing the tasks.
- Recommended: "The following sections describe how you can create a website."
- Not recommended: "The following sections describe how we can create a website."
- Not recommended: "Let's add a description to our table."
Use the imperative for instructions — the you is implied: "Click Submit."
Reserve the word user for the user of the software your reader is building. Use
third person for what the software or an end user does, second person for what the
reader does.
We, our, and us are acceptable only for the organization authoring the document,
and only when the antecedent is clear: "Example Organization provides A and B, but we
don't provide C." Also acceptable in FAQ questions and in signed first-person commentary.
Active voice
Make clear who performs the action.
- Recommended: "Send a query to the service. The server sends an acknowledgment."
- Not recommended: "The service is queried, and an acknowledgment is sent."
Passive is fine when you want to emphasize the object ("The file is saved"),
de-emphasize the actor ("Over 50 conflicts were found in the file"), or when the actor
is irrelevant ("The database was purged in January").
Present tense
Describe general behavior in the present tense. "The server sends an acknowledgment,"
not "will send." Use future tense only for something that genuinely happens later:
"The file will be archived the next time the backup process runs." Avoid the
hypothetical would.
Say what you mean: must, can, might
Write prescriptive documentation — recommend a path instead of listing every option.
Generally avoid should: it leaves the reader unsure whether an action is required.
| Intent |
Use |
| Action is required |
must, or an imperative: "Do the following before you continue." |
| Action is recommended |
"We recommend…" (should is OK for widely recognized advice: "You should use a strong password") |
| Action is optional |
can: "You can also use approach B." |
| Outcome is expected |
State it: "The process returns 10 items." |
| Outcome is possible |
might or can: "The process can take about 30 minutes." |
| State of something |
Be explicit: "You must set the value to true" — not "The value should be true." |
Avoid could, would, and shall. Reserve may for permission in a legal or policy
sense.
Sentence and paragraph structure
- Put the condition before the instruction. "To delete the entire document, click
Delete" — not "Click Delete if you want to delete the entire document."
Likewise "For more information, see X," not "See X for more information."
- Put the most important information first in the sentence and in the paragraph.
- Keep paragraphs short — one idea each. A paragraph past 5 or 6 sentences usually
carries too much. One-sentence paragraphs are fine.
- Keep sentences short — aim under 26 words.
- Left-align text. Don't center, justify, or force line breaks inside sentences.
Write timeless documentation
Document how the product works now. Don't anchor text to a moment.
Avoid: as of this writing, currently, does not yet, eventually, existing, future,
in the future, latest, new, newer, now, old, older, presently, at present, soon.
- Recommended: "These subcommands let you interact with HTTP load balancing."
- Not recommended: "These new subcommands…"
- Recommended: "The following options aren't supported:"
- Not recommended: "The following options aren't currently supported:"
Time-anchored words are fine in release notes, changelogs, and blog posts. If you must
say new, give a reference point: "The January 14, 2021 release includes a new
resource panel."
Don't document future features. Don't pre-announce anything.
Don't overclaim
Avoid superlatives — best, simplest, fastest, never, always. Be careful with
ensure and guarantee. Cite a source for performance claims. Say a feature "helps
with security" or "is designed for security" rather than that it is secure — the
weaker claim stays true after an incident.
Don't anthropomorphize
Software doesn't see, tell, want, or think.
- Recommended: "A
Delimiter object specifies where to split a string."
- Not recommended: "A
Delimiter object tells the splitter where a string should be broken."
Jargon
Jargon hurts clarity, translation, and readers new to the domain. Before using a term
like blast radius, shift left, or out-of-the-box, ask:
- Can you write around it? "When the project is finished, review what worked" beats
"Hold a post-mortem."
- Is there a more specific term? affected area for blast radius; import or
load for ingest; ready-made for off-the-shelf.
- Used once? Describe it in plain language and put the jargon in parentheses.
- Used throughout? Define it in parentheses on first use, then use it consistently.
Write for a global audience
Much of what follows exists because documentation gets translated and read by people
whose first language isn't English.
- Use simple words. use not utilize or leverage; start not commence;
so not consequently; to not in order to.
- Avoid phrasal verbs. "This document uses the following terms," not "makes use of."
- Don't stack modifiers. No more than two nouns modifying another noun.
- Place only immediately before what it modifies. "Request only one token."
- Keep helper words that casual English drops: then, that, of, and then.
- "If the key is not found, then the default value is returned."
- "…assumes that you have the following knowledge:"
- "Identify all of the datasets."
- "Start the profiler, and then run the app."
- Don't omit relative pronouns. "the rules that you previously defined."
- Avoid gerunds where a clause is clearer. "You must configure the firewall rules
before you deploy the VM," not "Configuring the firewall rules is required before
deploying the VM."
- Use words in their primary sense. Avoid once for after, since for because,
while for although, as for because.
- Repeat a word if it removes ambiguity. "creates both IAM segmentation and network
segmentation," not "both IAM and network segmentation."
- Use consistent terminology. Same concept, same word, same capitalization, every
time. Don't elegantly vary.
- Skip culturally specific references — holidays, seasons, sports, idioms.
- Include articles (a, an, the), even in headings: "Create a VM instance."
- Don't skip prepositions, and don't fear one at the end of a sentence.
Structure
Titles and headings
- Sentence case. Capitalize the first word, the first word after a colon, and proper
nouns. No period at the end.
- Task-based sections start with a base-form verb: "Create an instance" — not
"Creating an instance." Avoid
-ing forms as the first word of any heading; they
translate inconsistently. (Billing, Pricing are acceptable exceptions.)
- Conceptual sections use a noun phrase: "Migration to Google Cloud." Mixing both
styles in one document is fine.
- Optional sections use an
Optional: prefix: "Optional: Customize your alias" —
not "Customize your alias (optional)."
- One
h1 per page, unique across the doc set. Don't repeat the page title verbatim in
a section heading.
- Don't skip heading levels. Don't use heading tags for visual styling. Don't leave a
heading with no content under it.
- No numbers to indicate sequence, no links in headings, and avoid code items in
headings — if you must, add a descriptive noun: "The
config.yaml file."
- To introduce a group of subsections, say "the following sections," never "this
section" or "these sections."
Lists
| Item shape |
Use |
| Single units, sequence matters |
Numbered list |
| Single units, no sequence |
Bulleted list |
| Term + definition, want emphasis |
Description list |
| Term + short explanation, save space |
Bulleted run-in headings ("Emu: the best kind of bird") |
| Three or more related fields per item |
Table |
- Introduce a list with a complete sentence, not a fragment the items complete.
- Recommended: "Use the Submit button for any of the following purposes:"
- Not recommended: "Use the Submit button to:"
- Colon if the intro immediately precedes the list; period if other material intervenes.
- Capitalize each item. End each with a period, except items that are a single word,
have no verb, are entirely code font, or are entirely link text or a document title.
If punctuation ends up inconsistent, rewrite for parallelism or punctuate everything.
- Use parallel structure across items.
- Never make a one-item list.
- Don't end a list with etc. or and so on. Introduce it so it's clear the list isn't
exhaustive: "problems such as instability or high latency."
Procedures
- Introduce with a complete sentence: "To customize the buttons, follow these steps:"
or "To customize the buttons, do the following:" — not "To customize the buttons:".
- One action per step. Start each step with an imperative verb. Use complete sentences.
- State the location before the action: "In the Google Cloud console, go to the
Monitoring page" — not "Go to the Monitoring page in the console."
- State the goal before the action: "To start a new document, click File > New >
Document."
- A single-step procedure is a bulleted item, not a numbered list of one.
- Sub-steps use lowercase letters; sub-sub-steps use lowercase Roman numerals.
- Mark optional steps with
Optional: as the first word — not (Optional).
- Don't use directional language (above, below, left-hand side). Use
preceding, following, earlier, later. If an element is hard to find, show a
screenshot or name its icon.
- Don't include keyboard shortcuts as the documented path. Don't say "run the following
command" — say what the command does: "In Cloud Shell, deploy the load generator:"
- Give one way to do a thing — the shortest, most accessible, most familiar. If you must
document several, separate them into pages, headings, or tabs.
- Order inside a complex step: action → command → placeholder explanations → command
explanation → output → result.
Tables
- Introduce every table with a complete sentence; screen readers don't always announce
them.
- Sentence case for headings, cells, and captions. No end punctuation in column heads.
- Header cells in the first row and first column only, marked up as headers with the
scope attribute where the format supports it.
- Don't merge cells. Don't use tables for layout, code snippets, or one-dimensional
lists. Avoid tables inside numbered procedures.
- Sort rows logically, or alphabetically if there's no logical order.
- If a document has more than one table close together, caption each: "Table 1.
Prehistoric birds." Refer to them by number ("as shown in table 2"), lowercase.
Notices
| Type |
Meaning |
| Note |
Useful but not critical. The reader still succeeds if they skip it. |
| Caution |
Proceed carefully. |
| Warning |
Don't do this, or this may be irreversible — data loss, cost, security. |
| Success |
An error-free result. Interactive content only. |
Readers skip notices, so don't overuse them, and never stack two in a row. Write the
content as ordinary text first, then decide whether it needs offsetting.
Don't use a note for: cross-references, prerequisites, a full procedural step, anything
the reader needs in order to succeed, or a continuation of the preceding text.
Links and cross-references
- Be selective. Every link is a decision and a chance to lose the reader. Prefer
giving a couple of sentences of context on the page over linking away.
- Link text is the page title or a descriptive phrase, capitalized as part of the
sentence. Put the important words first. Never click here, this document, read
this, or a bare URL.
- Introduce a standalone cross-reference consistently: "For more information, see X."
or "For more information about Y, see X." Use about, never on. Use see.
- Don't duplicate links to the same destination on a page.
- Explain unexpected behavior. Say when a link downloads a file, opens an email
client, jumps to another section of the same page, or opens in a new tab. Don't force
a new tab; if you must, say so in the link text.
- Punctuation goes outside the link. Don't put link text in quotation marks.
- Include the abbreviation inside the link text: "Google Kubernetes Engine (GKE)".
- When linking a code element, include the descriptive noun in the link: "run the
gcloud instances create command."
Example data
Never use real domains, emails, names, phone numbers, IPs, or addresses.
| Kind |
Use |
| Domains |
example.com, example.org, example.net |
| Email |
A reserved domain plus an example name: dana@example.com, support@example.net |
| Person names |
Alex, Amal, Ariel, Bola, Charlie, Cruz, Dana, Dani, Hao, Ira, Izumi, Jie, Kai, Kalani, Kim, Kiran, Lee, Lucian, Luka, Mahan, Noam, Nur, Quinn, Raha, Rosario, Sasha, Tal, Taylor, Tristan, Yuri — with an initial for a surname ("Dana A.") |
| Company |
Example Organization |
| Phone (US) |
800-555-0100 through 800-555-0199 |
| IPv4 |
192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 |
| IPv6 |
2001:db8::/32 |
| Street address |
1800 Amphibious Blvd., Mountain View, CA 94045 |
| Project names |
Something meaningful: staging, frontend-development, production-1. Never foo, bar, baz. |
Use diverse names, and use singular they. Watch for stereotypes in which personas get
which job roles.
Formatting
| Element |
Use |
Bold (<b> / **) |
UI element names; run-in headings; the label at the start of a notice. Nothing else. |
Italic (<i> / _) |
A term you're defining on first mention; words as words; titles of full-length works; mathematical and version variables; emphasis. Use sparingly. |
| Underline |
Links only. |
Code font |
Code and code-adjacent text, inline. |
| Code block |
Code samples and commands. |
Prefer _underscores_ for italic and **asterisks** for bold in Markdown — the two are
easier to tell apart that way. Don't use ampersands as shorthand for and. Don't
override font family, size, or color inline.
Put in code font: attribute names and values, class names, command output,
command-line utility names, data types, database rows and columns, constants, DNS record
types, element names (without angle brackets), enum names, environment variables,
filenames and paths, folders, HTTP content types, HTTP status codes and verbs, IAM role
names, IP addresses, language keywords, method and function names, namespaces, package
names, placeholders, port numbers, query parameters, strings used in code, text the
reader types, and UI values derived from earlier input.
Don't put in code font: domain names, product and organization names, and URLs the
reader is meant to open in a browser.
Grammatical treatment of code: don't inflect a code element. Add a noun and inflect
that instead.
- Recommended: "The
ADDRESS constant's value is defined in the settings.h file."
- Not recommended: "
ADDRESS's value is defined in settings.h."
- Recommended: "To add the data, send a
POST request." — Not: "POST the data."
Placeholders: UPPERCASE_WITH_UNDERSCORES. No possessives (MY_, YOUR_). Explain
every placeholder the first time it appears. One placeholder: "Replace BUILD_ID with
the ID of the build." Two or more: introduce with "Replace the following:" and list them
in the order they appear, each as `NAME`: lowercase description.
Commands: put a click-to-copy command in a code block, wrap lines at 80 characters
with the shell's continuation character, and follow it with the placeholder list. Keep
optional-argument syntax ([], {}, |, ...) out of copyable commands — those
characters break the command if the reader doesn't strip them. Introduce output with
"The output is similar to the following:".
For the full detail — code samples, command-line syntax notation, math notation,
figures and alt text, filenames — see references/formatting.md.
Mechanics at a glance
- Capitalization. Sentence case for titles, headings, list items, table content,
captions, and figure text. Don't capitalize for emphasis. Don't rely on capitalization
to carry meaning. Lowercase after a colon unless what follows is a proper noun, a
heading, a quotation, or a label.
- Numbers. Spell out zero through nine and any number starting a sentence. Use
numerals for 10 and up, and always for versions, technical quantities, measurements,
percentages, prices, dimensions, decimals, and ranges.
40%, no space. Ranges use a
hyphen: 2012-2016. Commas in numbers of four or more digits: 1,532,784.
- Dates. Spell out the month: "January 19, 2017". Never numeric-only formats with
slashes. If you must go numeric, use ISO
YYYY-MM-DD. Avoid seasons.
- Times. 12-hour clock, "3:45 PM" — caps, no periods, space before.
- Units. Nonbreaking space between number and unit:
64 GB. No space for currency,
percent, or degrees of angle. Repeat the unit in a range and use to: "-40 °C to
85 °C". Don't write MB when you mean MiB.
- Abbreviations. Spell out on first use with the abbreviation in parentheses, both
italicized, and capitalize the long form only if it's a proper noun: data
manipulation language (DML). AI, API, DVD, HTML, PC, PDF, RAM, REST, URL, USB, and
file formats such as XML rarely need spelling out. No periods in acronyms. Never use an
abbreviation as a verb. Never i.e. or e.g.
- Serial commas. Always: "zones, regions, and multi-regions."
- Em dashes for a break in a sentence, no spaces around them. Never en dashes.
- Quotation marks: straight, not curly. Commas and periods go inside — except around
a literal string, where they go outside.
- Semicolons and ellipses: avoid. Screen readers may skip them.
- Slashes: avoid outside code. No and/or, no
3/4, no date slashes.
- Hyphens. Close most prefixes (
preprocessing, metadata) — hyphenate after
self-, cross-, before a capital or number, and to avoid a misreading. Close
compound nouns (webpage, hostname, tradeoff). Hyphenate compound modifiers
before a noun (well-designed app) but not after a verb ("The app is well designed"),
and never after an -ly adverb.
- Possessives.
's for singular nouns including those ending in s; apostrophe
only for plurals ending in s. Never form a possessive or plural from a code item,
product name, feature name, or trademark.
- Plurals. No
's for plurals: APIs, not API's. Don't pluralize a unit
abbreviation: 64 GB, not 64 GBs. Never (s) — use "one or more."
- Filenames. Lowercase, hyphens not underscores, ASCII only. Refer to a file type by
its formal name, not its extension: "a PNG file," not "a
.png file."
Full detail in references/mechanics.md.
Accessibility and inclusion
These are not optional polish — they change what you write.
- Alt text on every image. Empty
alt="" if the image is decorative or duplicates
adjacent text. Under 155 characters, no "Image of." Don't put new information only in
an image, and never use images of text, code, or terminal output.
- Descriptive link text that makes sense read out of context.
- No directional language. Not above, below, left-hand side. Use preceding,
following, earlier, later.
- Refer to controls by their label, not their appearance: "Click Save," not
"Click the disk icon."
- Don't rely on color, size, or position alone to carry meaning.
- Semantic markup, real heading hierarchy, real
button elements, labeled form
fields.
- Avoid ableist and figurative language: not sanity check, crazy, cripples,
blind to, dummy variable, hangs. Use quick check, baffling, slows down,
ignores, placeholder, stops responding.
- Avoid non-inclusive terms: blacklist/whitelist, master/slave, man-hours,
grandfathered, first-class citizen, brown bag, sanity check. See the word list
for replacements. If the term is baked into code you're documenting, name it once in
code font, in parentheses, then use the inclusive term throughout.
- Gender-neutral throughout. Singular they. Never he/she or (s)he.
- Write about disability with care. Not normal or healthy for people without
disabilities; not suffers from or wheelchair-bound.
Full detail in references/audience.md.
Open source READMEs
An extension to the source guide, which doesn't cover READMEs. Everything above still
applies — this section is about what goes in a README, in what order, and how short it
should be.
A README is a front door, not a manual. Its job is to get a stranger from "what is
this?" to a working install in the fewest steps, then point them at the real docs. If
a section grows past roughly one screen, move it to docs/ and link to it.
Order
Put the actionable material first. A reader who has to scroll past your motivation,
your badge wall, and your architecture diagram to find npm install will leave.
- Project name and a one-line description. What it is and what it does, in one
sentence, no superlatives.
- Two to four sentences of context. What problem it solves and who it's for. Stop
there — background, design rationale, and comparisons belong in
docs/.
- Quick start. The first substantive section. See below.
- Installation. The complete set of install paths.
- Configuration. Minimum working config, then the option reference.
- Usage. The handful of tasks most readers actually perform.
- Everything else: troubleshooting, links to full documentation, how to contribute,
license.
Badges, if any, go on one line under the title, and only ones a reader acts on — build
status, version, license. Give each an alt attribute.
Quick start
The quick start is a procedure (see the Procedures rules above), held to the shortest
path that produces a verifiable result.
- Every command must run exactly as written. No
[optional] or {a|b} notation, no
values the reader must edit before pasting, no shell prompts to strip. If a value can't
be avoided, make it a documented placeholder and explain it immediately.
- Run the commands before you publish them. Copy them from a real terminal session,
not from memory. Fabricated flags and near-miss command names are the most common
README defect and the most expensive one.
- State prerequisites as checkable versions, immediately before the first command —
"Node.js 20 or later," not "a recent version of Node." Give the command that checks.
- End with proof it worked. A final step that produces output, followed by "The
output is similar to the following:" and the actual output. Without it, the reader
can't tell success from silent failure.
- Don't teach concepts here. No architecture, no vocabulary, no explanation of why
the tool works the way it does. Link to it.
Installation
The quick start shows one way in; this section shows the rest. For each supported path
— package manager, container image, prebuilt binary, from source — give the exact
command, and say what the path is for when it isn't obvious ("from source, if you're
contributing"). State the supported platforms and versions in a table rather than in
prose, so the facts stay current without a rewrite. Say how to verify the install and
how to uninstall.
Configuration
Two parts, in this order:
- Minimum working configuration. The smallest complete config that runs, as a
copy-pasteable file, with a sentence saying where the file goes.
- The option reference. A table: option name, type, default, description. Read every
default out of the code rather than assuming it. If options come from more than one
source — file, environment variable, command-line flag — state the precedence order
explicitly.
Never put a real secret, token, key, or hostname in an example. Use a placeholder, say
where the value comes from, and don't imply that a committed config file is a safe place
for it.
Keep it short
Cut from the README and link instead: philosophy and origin stories, roadmaps and
planned features (see the future-features rule), exhaustive feature lists, comparison
tables against other projects (see excessive claims), full API references, and
screenshots of text or terminal output.
Full detail, an annotated skeleton, and the common failure modes are in
references/readme.md.
Adapting to output format
This guidance was written for HTML and Markdown documentation sites. Adapt it, don't
break it:
- Plain-text contexts (terminal output, commit messages, error strings): drop the
markup-level rules —
, <var>, aria-label, srcset — and keep everything
about wording, structure, and terminology.
- README and repo docs: all of it applies. Sentence-case headings, second person,
present tense, real heading hierarchy, code font for code. See the READMEs section
above and
references/readme.md.
- UI text (labels, buttons, tooltips, empty states): follow your design system's
content guidelines for capitalization and list punctuation — Material Design and this
guide differ there. The voice, tone, and terminology rules still apply.
- Release notes and changelogs: the timeless-documentation rule is relaxed. New,
now, and soon are fine here, and dates are the point.
Reference files
Open these when you need detail beyond the core rules.
| File |
Covers |
references/word-list.md |
Alphabetical usage, spelling, and capitalization decisions; terms to avoid and their replacements. Check it whenever a term choice feels uncertain. |
references/structure.md |
Headings, lists, procedures, tables, notices, cross-references, example data, sentence and paragraph structure. |
references/formatting.md |
Text formatting, code in text, code samples, command-line syntax, placeholders, math notation, figures and alt text, filenames, HTML vs. Markdown. |
references/mechanics.md |
Capitalization, abbreviations, numbers, dates and times, units, phone numbers, plurals, possessives, all punctuation, footnotes. |
references/audience.md |
Accessible documentation, inclusive documentation, writing for a global audience. |
references/names-and-claims.md |
Product and feature names, trademarks, excessive claims, future features, timeless documentation, third-party content. |
references/api-reference.md |
API reference code comments: classes, methods, parameters, return values, exceptions, deprecations. |
references/readme.md |
Open source READMEs: section order, the quick start, installation, configuration, what to cut, common failure modes. Open it whenever you're writing or reviewing a README. |
references/checklist.md |
The review pass to run before delivering. |
Source: Google developer documentation style guide,
licensed under CC BY 4.0. Condensed,
reorganized, and adapted for use by coding agents.
1---2name: google-doc-style-guide3description: Writes and edits technical documentation and application help content in a consistent house style derived from the Google developer documentation style guide — second person, active voice, present tense, sentence-case headings, procedures, lists, tables, code font, placeholders, notices, link text, accessible and inclusive language, and a word list of preferred and prohibited terms. Use whenever writing or revising a README, quickstart, how-to, tutorial, concept page, troubleshooting guide, CLI or API docs, API reference comments, release notes, in-app help, tooltips, or error-message text; also use when asked to "apply the Google style guide", "make these docs consistent", "edit this doc for style", "write docs for this", or to review documentation for style problems.4---56# Google developer documentation style78House style for technical documentation and application help. Derived from the9[Google developer documentation style guide](https://developers.google.com/style)10(CC BY 4.0). The goal is documentation that reads as if one careful person wrote all of11it: clear, direct, scannable, accessible, and translatable.1213---1415## Reference hierarchy1617When guidance conflicts, follow this order:18191. **Project-specific style.** A `CLAUDE.md`, `STYLE.md`, contributing guide, or an20 established convention visible in the docs you're editing wins. Check for one before21 you start.222. **This skill.**233. **Third-party references.** Spelling: Merriam-Webster (use the first spelling24 listed). Nontechnical style: *The Chicago Manual of Style*. Technical style:25 Microsoft Writing Style Guide.2627**Break the rules** when doing so serves the reader. These are guidelines, not laws.28When you depart from them, be consistent about it throughout the document.2930---3132## How to use this skill33341. **Identify the document type and the reader.** A quickstart, a concept page, a35 troubleshooting guide, and a tooltip are different jobs. Decide who "you" is — a36 developer? an operator? an end user? — and address that reader consistently. For a37 README, read `references/readme.md` before you start.382. **Check for project-specific style** (step 1 of the reference hierarchy) and for the39 terminology already used in the surrounding docs. Consistency with neighbors beats40 consistency with this file.413. **Draft against the core rules below.** Hold them in mind while writing rather than42 fixing violations afterward.434. **Open a reference file when you need detail.** The core rules cover most decisions;44 the references cover the rest. See the index at the end.455. **Run the review pass before delivering.** Use `references/checklist.md`. Deliver the46 document, not the checklist output — unless the user asked for a style review, in47 which case report findings with file and line.4849**When reviewing rather than writing:** report what to change and why, quoting the50offending text. Don't rewrite wholesale unless asked. Rank findings by reader impact —51ambiguity and inaccessible constructions first, spelling and hyphenation last.5253---5455## Core rules5657### Voice and tone5859Aim for conversational, friendly, and respectful without being frivolous. Sound like a60knowledgeable friend who understands what the reader is trying to do. Don't write the61way you speak — speech is more verbose than documentation should be.6263Avoid:6465- Buzzwords, jargon, and figurative language, including metaphors and ableist idioms.66- Placeholder phrases: *please note*, *at this time*.67- Starting every sentence the same way (*You can…*, *To do…*).68- Pop-culture references, humor, wackiness, cuteness.69- Exclamation points. They read as unprofessional or alarming, and in some languages70 they read as shouting. Never in concept or reference docs. See `mechanics.md` for the71 narrow exceptions.72- *Simply*, *easy*, *just*, *quickly* in procedures. What's easy for you may not be73 easy for the reader.74- *Please* in instructions. "To view the document, click **View**" — not "please click."75 Reserve *please* for when you're asking a favor that inconveniences the reader.76- *Let's do X* phrasing.77- Internet slang and abbreviations: *tl;dr*, *ymmv*, *RTFM*.7879| Too informal | About right | Too formal |80|---|---|---|81| Dude! This API is totally awesome! | This API lets you collect data about what your users like. | The API documented by this page may enable the acquisition of information pertaining to user preferences. |82| Then—BOOM—just garbage-collect, and you're golden. | To clean up, call the `collectGarbage` method. | Please note that completion of the task requires the following prerequisite: executing an automated memory management function. |8384### Address the reader as *you*8586Use second person. Assume the reader is the person doing the tasks.8788- Recommended: "The following sections describe how you can create a website."89- Not recommended: "The following sections describe how we can create a website."90- Not recommended: "Let's add a description to our table."9192Use the imperative for instructions — the *you* is implied: "Click **Submit**."9394Reserve the word **user** for the user of the software your reader is building. Use95third person for what the software or an end user does, second person for what the96reader does.9798*We*, *our*, and *us* are acceptable only for the organization authoring the document,99and only when the antecedent is clear: "Example Organization provides A and B, but we100don't provide C." Also acceptable in FAQ questions and in signed first-person commentary.101102### Active voice103104Make clear who performs the action.105106- Recommended: "Send a query to the service. The server sends an acknowledgment."107- Not recommended: "The service is queried, and an acknowledgment is sent."108109Passive is fine when you want to emphasize the object ("The file is saved"),110de-emphasize the actor ("Over 50 conflicts were found in the file"), or when the actor111is irrelevant ("The database was purged in January").112113### Present tense114115Describe general behavior in the present tense. "The server sends an acknowledgment,"116not "will send." Use future tense only for something that genuinely happens later:117"The file will be archived the next time the backup process runs." Avoid the118hypothetical *would*.119120### Say what you mean: must, can, might121122Write **prescriptive** documentation — recommend a path instead of listing every option.123Generally avoid *should*: it leaves the reader unsure whether an action is required.124125| Intent | Use |126|---|---|127| Action is required | *must*, or an imperative: "Do the following before you continue." |128| Action is recommended | "We recommend…" (*should* is OK for widely recognized advice: "You should use a strong password") |129| Action is optional | *can*: "You can also use approach B." |130| Outcome is expected | State it: "The process returns 10 items." |131| Outcome is possible | *might* or *can*: "The process can take about 30 minutes." |132| State of something | Be explicit: "You must set the value to `true`" — not "The value should be `true`." |133134Avoid *could*, *would*, and *shall*. Reserve *may* for permission in a legal or policy135sense.136137### Sentence and paragraph structure138139- **Put the condition before the instruction.** "To delete the entire document, click140 **Delete**" — not "Click **Delete** if you want to delete the entire document."141 Likewise "For more information, see X," not "See X for more information."142- **Put the most important information first** in the sentence and in the paragraph.143- **Keep paragraphs short** — one idea each. A paragraph past 5 or 6 sentences usually144 carries too much. One-sentence paragraphs are fine.145- **Keep sentences short** — aim under 26 words.146- **Left-align text.** Don't center, justify, or force line breaks inside sentences.147148### Write timeless documentation149150Document how the product works now. Don't anchor text to a moment.151152Avoid: *as of this writing, currently, does not yet, eventually, existing, future,153in the future, latest, new, newer, now, old, older, presently, at present, soon.*154155- Recommended: "These subcommands let you interact with HTTP load balancing."156- Not recommended: "These **new** subcommands…"157- Recommended: "The following options aren't supported:"158- Not recommended: "The following options aren't **currently** supported:"159160Time-anchored words are fine in release notes, changelogs, and blog posts. If you must161say *new*, give a reference point: "The January 14, 2021 release includes a new162resource panel."163164**Don't document future features.** Don't pre-announce anything.165166### Don't overclaim167168Avoid superlatives — *best*, *simplest*, *fastest*, *never*, *always*. Be careful with169*ensure* and *guarantee*. Cite a source for performance claims. Say a feature "helps170with security" or "is designed for security" rather than that it *is* secure — the171weaker claim stays true after an incident.172173### Don't anthropomorphize174175Software doesn't see, tell, want, or think.176177- Recommended: "A `Delimiter` object specifies where to split a string."178- Not recommended: "A `Delimiter` object tells the splitter where a string should be broken."179180### Jargon181182Jargon hurts clarity, translation, and readers new to the domain. Before using a term183like *blast radius*, *shift left*, or *out-of-the-box*, ask:1841851. Can you write around it? "When the project is finished, review what worked" beats186 "Hold a post-mortem."1872. Is there a more specific term? *affected area* for *blast radius*; *import* or188 *load* for *ingest*; *ready-made* for *off-the-shelf*.1893. Used once? Describe it in plain language and put the jargon in parentheses.1904. Used throughout? Define it in parentheses on first use, then use it consistently.191192### Write for a global audience193194Much of what follows exists because documentation gets translated and read by people195whose first language isn't English.196197- **Use simple words.** *use* not *utilize* or *leverage*; *start* not *commence*;198 *so* not *consequently*; *to* not *in order to*.199- **Avoid phrasal verbs.** "This document uses the following terms," not "makes use of."200- **Don't stack modifiers.** No more than two nouns modifying another noun.201- **Place *only* immediately before what it modifies.** "Request only one token."202- **Keep helper words** that casual English drops: *then*, *that*, *of*, *and then*.203 - "If the key is not found, **then** the default value is returned."204 - "…assumes **that** you have the following knowledge:"205 - "Identify all **of** the datasets."206 - "Start the profiler, **and then** run the app."207- **Don't omit relative pronouns.** "the rules **that** you previously defined."208- **Avoid gerunds where a clause is clearer.** "You must configure the firewall rules209 before you deploy the VM," not "Configuring the firewall rules is required before210 deploying the VM."211- **Use words in their primary sense.** Avoid *once* for *after*, *since* for *because*,212 *while* for *although*, *as* for *because*.213- **Repeat a word if it removes ambiguity.** "creates both IAM segmentation and network214 segmentation," not "both IAM and network segmentation."215- **Use consistent terminology.** Same concept, same word, same capitalization, every216 time. Don't elegantly vary.217- **Skip culturally specific references** — holidays, seasons, sports, idioms.218- **Include articles** (*a*, *an*, *the*), even in headings: "Create a VM instance."219- **Don't skip prepositions**, and don't fear one at the end of a sentence.220221---222223## Structure224225### Titles and headings226227- **Sentence case.** Capitalize the first word, the first word after a colon, and proper228 nouns. No period at the end.229- **Task-based sections start with a base-form verb:** "Create an instance" — not230 "Creating an instance." Avoid `-ing` forms as the first word of any heading; they231 translate inconsistently. (*Billing*, *Pricing* are acceptable exceptions.)232- **Conceptual sections use a noun phrase:** "Migration to Google Cloud." Mixing both233 styles in one document is fine.234- **Optional sections use an `Optional:` prefix:** "Optional: Customize your alias" —235 not "Customize your alias (optional)."236- One `h1` per page, unique across the doc set. Don't repeat the page title verbatim in237 a section heading.238- Don't skip heading levels. Don't use heading tags for visual styling. Don't leave a239 heading with no content under it.240- No numbers to indicate sequence, no links in headings, and avoid code items in241 headings — if you must, add a descriptive noun: "The `config.yaml` file."242- To introduce a group of subsections, say "**the following sections**," never "this243 section" or "these sections."244245### Lists246247| Item shape | Use |248|---|---|249| Single units, sequence matters | Numbered list |250| Single units, no sequence | Bulleted list |251| Term + definition, want emphasis | Description list |252| Term + short explanation, save space | Bulleted run-in headings ("**Emu**: the best kind of bird") |253| Three or more related fields per item | Table |254255- **Introduce a list with a complete sentence**, not a fragment the items complete.256 - Recommended: "Use the **Submit** button for any of the following purposes:"257 - Not recommended: "Use the **Submit** button to:"258- Colon if the intro immediately precedes the list; period if other material intervenes.259- **Capitalize each item.** End each with a period, except items that are a single word,260 have no verb, are entirely code font, or are entirely link text or a document title.261 If punctuation ends up inconsistent, rewrite for parallelism or punctuate everything.262- **Use parallel structure** across items.263- Never make a one-item list.264- Don't end a list with *etc.* or *and so on*. Introduce it so it's clear the list isn't265 exhaustive: "problems such as instability or high latency."266267### Procedures268269- Introduce with a complete sentence: "To customize the buttons, follow these steps:"270 or "To customize the buttons, do the following:" — not "To customize the buttons:".271- One action per step. Start each step with an imperative verb. Use complete sentences.272- **State the location before the action:** "In the Google Cloud console, go to the273 **Monitoring** page" — not "Go to the Monitoring page in the console."274- **State the goal before the action:** "To start a new document, click **File > New >275 Document**."276- **A single-step procedure is a bulleted item**, not a numbered list of one.277- Sub-steps use lowercase letters; sub-sub-steps use lowercase Roman numerals.278- Mark optional steps with `Optional:` as the first word — not `(Optional)`.279- **Don't use directional language** (*above*, *below*, *left-hand side*). Use280 *preceding*, *following*, *earlier*, *later*. If an element is hard to find, show a281 screenshot or name its icon.282- Don't include keyboard shortcuts as the documented path. Don't say "run the following283 command" — say what the command does: "In Cloud Shell, deploy the load generator:"284- Give one way to do a thing — the shortest, most accessible, most familiar. If you must285 document several, separate them into pages, headings, or tabs.286- Order inside a complex step: action → command → placeholder explanations → command287 explanation → output → result.288289### Tables290291- Introduce every table with a complete sentence; screen readers don't always announce292 them.293- Sentence case for headings, cells, and captions. No end punctuation in column heads.294- Header cells in the first row and first column only, marked up as headers with the295 `scope` attribute where the format supports it.296- Don't merge cells. Don't use tables for layout, code snippets, or one-dimensional297 lists. Avoid tables inside numbered procedures.298- Sort rows logically, or alphabetically if there's no logical order.299- If a document has more than one table close together, caption each: "**Table 1.**300 Prehistoric birds." Refer to them by number ("as shown in table 2"), lowercase.301302### Notices303304| Type | Meaning |305|---|---|306| **Note** | Useful but not critical. The reader still succeeds if they skip it. |307| **Caution** | Proceed carefully. |308| **Warning** | Don't do this, or this may be irreversible — data loss, cost, security. |309| **Success** | An error-free result. Interactive content only. |310311Readers skip notices, so don't overuse them, and never stack two in a row. Write the312content as ordinary text first, then decide whether it needs offsetting.313314Don't use a note for: cross-references, prerequisites, a full procedural step, anything315the reader needs in order to succeed, or a continuation of the preceding text.316317### Links and cross-references318319- **Be selective.** Every link is a decision and a chance to lose the reader. Prefer320 giving a couple of sentences of context on the page over linking away.321- **Link text is the page title or a descriptive phrase**, capitalized as part of the322 sentence. Put the important words first. Never *click here*, *this document*, *read323 this*, or a bare URL.324- **Introduce a standalone cross-reference consistently:** "For more information, see X."325 or "For more information about Y, see X." Use *about*, never *on*. Use *see*.326- Don't duplicate links to the same destination on a page.327- **Explain unexpected behavior.** Say when a link downloads a file, opens an email328 client, jumps to another section of the same page, or opens in a new tab. Don't force329 a new tab; if you must, say so in the link text.330- Punctuation goes outside the link. Don't put link text in quotation marks.331- Include the abbreviation inside the link text: "Google Kubernetes Engine (GKE)".332- When linking a code element, include the descriptive noun in the link: "run the333 `gcloud instances create` command."334335### Example data336337Never use real domains, emails, names, phone numbers, IPs, or addresses.338339| Kind | Use |340|---|---|341| Domains | `example.com`, `example.org`, `example.net` |342| Email | A reserved domain plus an example name: `dana@example.com`, `support@example.net` |343| Person names | Alex, Amal, Ariel, Bola, Charlie, Cruz, Dana, Dani, Hao, Ira, Izumi, Jie, Kai, Kalani, Kim, Kiran, Lee, Lucian, Luka, Mahan, Noam, Nur, Quinn, Raha, Rosario, Sasha, Tal, Taylor, Tristan, Yuri — with an initial for a surname ("Dana A.") |344| Company | Example Organization |345| Phone (US) | `800-555-0100` through `800-555-0199` |346| IPv4 | `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` |347| IPv6 | `2001:db8::/32` |348| Street address | 1800 Amphibious Blvd., Mountain View, CA 94045 |349| Project names | Something meaningful: `staging`, `frontend-development`, `production-1`. Never `foo`, `bar`, `baz`. |350351Use diverse names, and use singular *they*. Watch for stereotypes in which personas get352which job roles.353354---355356## Formatting357358| Element | Use |359|---|---|360| **Bold** (`<b>` / `**`) | UI element names; run-in headings; the label at the start of a notice. Nothing else. |361| *Italic* (`<i>` / `_`) | A term you're defining on first mention; words as words; titles of full-length works; mathematical and version variables; emphasis. Use sparingly. |362| Underline | Links only. |363| `Code font` | Code and code-adjacent text, inline. |364| Code block | Code samples and commands. |365366Prefer `_underscores_` for italic and `**asterisks**` for bold in Markdown — the two are367easier to tell apart that way. Don't use ampersands as shorthand for *and*. Don't368override font family, size, or color inline.369370**Put in code font:** attribute names and values, class names, command output,371command-line utility names, data types, database rows and columns, constants, DNS record372types, element names (without angle brackets), enum names, environment variables,373filenames and paths, folders, HTTP content types, HTTP status codes and verbs, IAM role374names, IP addresses, language keywords, method and function names, namespaces, package375names, placeholders, port numbers, query parameters, strings used in code, text the376reader types, and UI values derived from earlier input.377378**Don't put in code font:** domain names, product and organization names, and URLs the379reader is meant to open in a browser.380381**Grammatical treatment of code:** don't inflect a code element. Add a noun and inflect382that instead.383384- Recommended: "The `ADDRESS` constant's value is defined in the `settings.h` file."385- Not recommended: "`ADDRESS`'s value is defined in `settings.h`."386- Recommended: "To add the data, send a `POST` request." — Not: "`POST` the data."387388**Placeholders:** `UPPERCASE_WITH_UNDERSCORES`. No possessives (`MY_`, `YOUR_`). Explain389every placeholder the first time it appears. One placeholder: "Replace `BUILD_ID` with390the ID of the build." Two or more: introduce with "Replace the following:" and list them391in the order they appear, each as `` `NAME` ``: lowercase description.392393**Commands:** put a click-to-copy command in a code block, wrap lines at 80 characters394with the shell's continuation character, and follow it with the placeholder list. Keep395optional-argument syntax (`[]`, `{}`, `|`, `...`) out of copyable commands — those396characters break the command if the reader doesn't strip them. Introduce output with397"The output is similar to the following:".398399For the full detail — code samples, command-line syntax notation, math notation,400figures and alt text, filenames — see `references/formatting.md`.401402---403404## Mechanics at a glance405406- **Capitalization.** Sentence case for titles, headings, list items, table content,407 captions, and figure text. Don't capitalize for emphasis. Don't rely on capitalization408 to carry meaning. Lowercase after a colon unless what follows is a proper noun, a409 heading, a quotation, or a label.410- **Numbers.** Spell out zero through nine and any number starting a sentence. Use411 numerals for 10 and up, and always for versions, technical quantities, measurements,412 percentages, prices, dimensions, decimals, and ranges. `40%`, no space. Ranges use a413 hyphen: `2012-2016`. Commas in numbers of four or more digits: `1,532,784`.414- **Dates.** Spell out the month: "January 19, 2017". Never numeric-only formats with415 slashes. If you must go numeric, use ISO `YYYY-MM-DD`. Avoid seasons.416- **Times.** 12-hour clock, "3:45 PM" — caps, no periods, space before.417- **Units.** Nonbreaking space between number and unit: `64 GB`. No space for currency,418 percent, or degrees of angle. Repeat the unit in a range and use *to*: "-40 °C to419 85 °C". Don't write `MB` when you mean `MiB`.420- **Abbreviations.** Spell out on first use with the abbreviation in parentheses, both421 italicized, and capitalize the long form only if it's a proper noun: *data422 manipulation language (DML)*. AI, API, DVD, HTML, PC, PDF, RAM, REST, URL, USB, and423 file formats such as XML rarely need spelling out. No periods in acronyms. Never use an424 abbreviation as a verb. Never *i.e.* or *e.g.*425- **Serial commas.** Always: "zones, regions, and multi-regions."426- **Em dashes** for a break in a sentence, no spaces around them. Never en dashes.427- **Quotation marks:** straight, not curly. Commas and periods go inside — except around428 a literal string, where they go outside.429- **Semicolons and ellipses:** avoid. Screen readers may skip them.430- **Slashes:** avoid outside code. No *and/or*, no `3/4`, no date slashes.431- **Hyphens.** Close most prefixes (`preprocessing`, `metadata`) — hyphenate after432 *self-*, *cross-*, before a capital or number, and to avoid a misreading. Close433 compound nouns (`webpage`, `hostname`, `tradeoff`). Hyphenate compound modifiers434 before a noun (`well-designed app`) but not after a verb ("The app is well designed"),435 and never after an `-ly` adverb.436- **Possessives.** `'s` for singular nouns including those ending in *s*; apostrophe437 only for plurals ending in *s*. Never form a possessive or plural from a code item,438 product name, feature name, or trademark.439- **Plurals.** No `'s` for plurals: `APIs`, not `API's`. Don't pluralize a unit440 abbreviation: `64 GB`, not `64 GBs`. Never `(s)` — use "one or more."441- **Filenames.** Lowercase, hyphens not underscores, ASCII only. Refer to a file type by442 its formal name, not its extension: "a PNG file," not "a `.png` file."443444Full detail in `references/mechanics.md`.445446---447448## Accessibility and inclusion449450These are not optional polish — they change what you write.451452- **Alt text on every image.** Empty `alt=""` if the image is decorative or duplicates453 adjacent text. Under 155 characters, no "Image of." Don't put new information only in454 an image, and never use images of text, code, or terminal output.455- **Descriptive link text** that makes sense read out of context.456- **No directional language.** Not *above*, *below*, *left-hand side*. Use *preceding*,457 *following*, *earlier*, *later*.458- **Refer to controls by their label**, not their appearance: "Click **Save**," not459 "Click the disk icon."460- **Don't rely on color, size, or position alone** to carry meaning.461- **Semantic markup**, real heading hierarchy, real `button` elements, labeled form462 fields.463- **Avoid ableist and figurative language:** not *sanity check*, *crazy*, *cripples*,464 *blind to*, *dummy variable*, *hangs*. Use *quick check*, *baffling*, *slows down*,465 *ignores*, *placeholder*, *stops responding*.466- **Avoid non-inclusive terms:** *blacklist/whitelist*, *master/slave*, *man-hours*,467 *grandfathered*, *first-class citizen*, *brown bag*, *sanity check*. See the word list468 for replacements. If the term is baked into code you're documenting, name it once in469 code font, in parentheses, then use the inclusive term throughout.470- **Gender-neutral throughout.** Singular *they*. Never *he/she* or *(s)he*.471- **Write about disability with care.** Not *normal* or *healthy* for people without472 disabilities; not *suffers from* or *wheelchair-bound*.473474Full detail in `references/audience.md`.475476---477478## Open source READMEs479480> An extension to the source guide, which doesn't cover READMEs. Everything above still481> applies — this section is about what goes in a README, in what order, and how short it482> should be.483484A README is a front door, not a manual. Its job is to get a stranger from "what is485this?" to a working install in the fewest steps, then point them at the real docs. If486a section grows past roughly one screen, move it to `docs/` and link to it.487488### Order489490Put the actionable material first. A reader who has to scroll past your motivation,491your badge wall, and your architecture diagram to find `npm install` will leave.4924931. **Project name and a one-line description.** What it is and what it does, in one494 sentence, no superlatives.4952. **Two to four sentences of context.** What problem it solves and who it's for. Stop496 there — background, design rationale, and comparisons belong in `docs/`.4973. **Quick start.** The first substantive section. See below.4984. **Installation.** The complete set of install paths.4995. **Configuration.** Minimum working config, then the option reference.5006. **Usage.** The handful of tasks most readers actually perform.5017. **Everything else:** troubleshooting, links to full documentation, how to contribute,502 license.503504Badges, if any, go on one line under the title, and only ones a reader acts on — build505status, version, license. Give each an `alt` attribute.506507### Quick start508509The quick start is a procedure (see the Procedures rules above), held to the shortest510path that produces a verifiable result.511512- **Every command must run exactly as written.** No `[optional]` or `{a|b}` notation, no513 values the reader must edit before pasting, no shell prompts to strip. If a value can't514 be avoided, make it a documented placeholder and explain it immediately.515- **Run the commands before you publish them.** Copy them from a real terminal session,516 not from memory. Fabricated flags and near-miss command names are the most common517 README defect and the most expensive one.518- **State prerequisites as checkable versions,** immediately before the first command —519 "Node.js 20 or later," not "a recent version of Node." Give the command that checks.520- **End with proof it worked.** A final step that produces output, followed by "The521 output is similar to the following:" and the actual output. Without it, the reader522 can't tell success from silent failure.523- **Don't teach concepts here.** No architecture, no vocabulary, no explanation of why524 the tool works the way it does. Link to it.525526### Installation527528The quick start shows one way in; this section shows the rest. For each supported path529— package manager, container image, prebuilt binary, from source — give the exact530command, and say what the path is for when it isn't obvious ("from source, if you're531contributing"). State the supported platforms and versions in a table rather than in532prose, so the facts stay current without a rewrite. Say how to verify the install and533how to uninstall.534535### Configuration536537Two parts, in this order:5385391. **Minimum working configuration.** The smallest complete config that runs, as a540 copy-pasteable file, with a sentence saying where the file goes.5412. **The option reference.** A table: option name, type, default, description. Read every542 default out of the code rather than assuming it. If options come from more than one543 source — file, environment variable, command-line flag — state the precedence order544 explicitly.545546Never put a real secret, token, key, or hostname in an example. Use a placeholder, say547where the value comes from, and don't imply that a committed config file is a safe place548for it.549550### Keep it short551552Cut from the README and link instead: philosophy and origin stories, roadmaps and553planned features (see the future-features rule), exhaustive feature lists, comparison554tables against other projects (see excessive claims), full API references, and555screenshots of text or terminal output.556557Full detail, an annotated skeleton, and the common failure modes are in558`references/readme.md`.559560---561562## Adapting to output format563564This guidance was written for HTML and Markdown documentation sites. Adapt it, don't565break it:566567- **Plain-text contexts** (terminal output, commit messages, error strings): drop the568 markup-level rules — ` `, `<var>`, `aria-label`, `srcset` — and keep everything569 about wording, structure, and terminology.570- **README and repo docs:** all of it applies. Sentence-case headings, second person,571 present tense, real heading hierarchy, code font for code. See the READMEs section572 above and `references/readme.md`.573- **UI text** (labels, buttons, tooltips, empty states): follow your design system's574 content guidelines for capitalization and list punctuation — Material Design and this575 guide differ there. The voice, tone, and terminology rules still apply.576- **Release notes and changelogs:** the timeless-documentation rule is relaxed. *New*,577 *now*, and *soon* are fine here, and dates are the point.578579---580581## Reference files582583Open these when you need detail beyond the core rules.584585| File | Covers |586|---|---|587| `references/word-list.md` | Alphabetical usage, spelling, and capitalization decisions; terms to avoid and their replacements. Check it whenever a term choice feels uncertain. |588| `references/structure.md` | Headings, lists, procedures, tables, notices, cross-references, example data, sentence and paragraph structure. |589| `references/formatting.md` | Text formatting, code in text, code samples, command-line syntax, placeholders, math notation, figures and alt text, filenames, HTML vs. Markdown. |590| `references/mechanics.md` | Capitalization, abbreviations, numbers, dates and times, units, phone numbers, plurals, possessives, all punctuation, footnotes. |591| `references/audience.md` | Accessible documentation, inclusive documentation, writing for a global audience. |592| `references/names-and-claims.md` | Product and feature names, trademarks, excessive claims, future features, timeless documentation, third-party content. |593| `references/api-reference.md` | API reference code comments: classes, methods, parameters, return values, exceptions, deprecations. |594| `references/readme.md` | Open source READMEs: section order, the quick start, installation, configuration, what to cut, common failure modes. Open it whenever you're writing or reviewing a README. |595| `references/checklist.md` | The review pass to run before delivering. |596597---598599Source: [Google developer documentation style guide](https://developers.google.com/style),600licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Condensed,601reorganized, and adapted for use by coding agents.