This guide defines the writing and formatting conventions for all pages under content/. When in doubt, match the existing installation guides, which follow these rules.
- Address the reader as "you" (second person). Never "the user" or "one".
- Phrase recommendations as "We recommend ...".
- No superlatives or promises: avoid fastest, best-in-class, world-leading, 100% secure, 100% compatible, perfect, military-grade.
- No marketing CTAs ("Contact us immediately", "Buy now") inside technical pages.
- Every factual claim must be verifiable against the rustfs/rustfs source or an official release. Never document hypothetical commands, flags, or components. If you are unsure whether a capability exists, remove the claim.
- Keep performance figures in one verified reference location instead of repeating them across pages.
- Use USD (
$) for any cost examples; never mix currencies.
- Frontmatter must contain
titleanddescription. Thedescriptionis a complete sentence (ends with a period), not a keyword list. - No H1 (
#) in the body — the title is rendered from frontmatter. Body headings start at##. - The opening paragraph states what the page covers, why it matters, and any prerequisites — before the first heading.
- One blank line between blocks; no trailing whitespace.
- Headings are unnumbered, except in install/how-to step sequences where numbered H2s (
## 1. Download the Package) render as steps. - Use sentence-style capitalization consistently within a page.
- Never duplicate a heading text within a page; if two sections feel identical, one of them is about something else — retitle it.
Only the three supported forms, always with a title:
:::note[Title]
:::tip[Title]
:::warning[Title]Do not use blockquote-based "Note:" paragraphs or other callout syntaxes.
- Every fence declares a language.
- Shell commands:
bash. Command output:text(separate fence from the command). Config files:ini,yaml, etc. withtitle="path/to/file". - Prompts: do not prefix commands with
$.
Example:
```bash
rustfs server /data
```
```ini title="/etc/default/rustfs"
RUSTFS_VOLUMES="/data"
```- Placeholders use angle brackets and kebab-case:
<your-access-key>,<your-secret-key>,<node-hostname>. - Canonical example values — always use these, never invent variants:
- Endpoint:
http://localhost:9000 - Console: port
9001 - Region:
us-east-1 - Bucket:
my-bucket - Object/file:
/path/to/hello.txt
- Endpoint:
- Never publish real credentials, tokens, or internal hostnames, even as examples.
- Use tables only for comparative data (option matrices, platform comparisons, parameter lists). Do not use tables for narrative content.
- Always include a header row.
- Keep cell content short; move explanation into surrounding prose.
- Internal links are root-relative paths without file extension:
/installation/linux/quick-start,/operations/status-check. - Link text describes the target ("see the cloud-native installation guide"), never "click here".
- Screenshots show the English UI in the light theme.
- Capture at approximately 1600px width; compress to ≤300KB.
- Every image has meaningful alt text describing what it shows.
- Store images next to the page in an
images/directory and reference them relatively.
- Plain Markdown pages use
.md. - Pages that need JSX components (
<Cards>,<Tabs>,<Steps>, etc.) must use the.mdxextension. Do not put JSX in.mdfiles. - Mermaid diagrams are supported in fenced ```mermaid blocks.
- Card icons: use one consistent icon family within each landing grid and apply an icon to every card. Use Lucide for abstract concepts. A platform-selection grid may use brand logos from
react-iconswhen every primary card icon is a brand logo. Do not mix brand logos with abstract primary icons or use emoji as icons.
- The product is RustFS (capital R, capital FS) — never "rustFS", "Rustfs", or "RUSTFS".
- RustFS ships as a single binary and an official Helm chart for Kubernetes. The separate official RustFS Operator repository provides a pre-release
TenantCRD; verify its current release status before documenting it. RustFS has no KES component. - Key management is the built-in KMS with
local,vault, andvault-transitbackends. - Observability is OpenTelemetry (OTLP)-based: metrics, logs, and traces export through an OTLP endpoint.