Skip to main content

rustfs-docs

Write, edit, or review RustFS documentation in this repo (docs.rustfs.com, a FumaPress site under content/). Use whenever a task adds or changes a page in content/, updates navigation (meta.json), touches screenshots, or reviews a docs change. Encodes the factual-accuracy discipline, canonical constants, FumaPress syntax rules, page structure, voice, and the pre-flight checks that keep the docs correct and consistent.

Source facts

Repository
rustfs/docs.rustfs.com
Last source activity
July 24, 2026 at 13:07
Detected SKILL.md language
English
Stars
19
Forks
81

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
rustfs-docs
description
Write, edit, or review RustFS documentation in this repo (docs.rustfs.com, a FumaPress site under content/). Use whenever a task adds or changes a page in content/, updates navigation (meta.json), touches screenshots, or reviews a docs change. Encodes the factual-accuracy discipline, canonical constants, FumaPress syntax rules, page structure, voice, and the pre-flight checks that keep the docs correct and consistent.
# Writing RustFS documentation This is a **FumaPress** site (Waku + Fumadocs). Pages live in `content/`; each page's URL mirrors its path (`content/administration/data/bucket/creation.md` → `/administration/data/bucket/creation`). Navigation is defined by `content/meta.json` (root sidebar) and per-folder `meta.json` files. Read `STYLE.md` (repo root) for the full style guide and `AGENTS.md` for repo mechanics. This skill is the operating playbook — follow it for every change. ## 1. Accuracy is the first rule The single worst class of past defects was **plausible but false** content: invented CLI commands, non-existent config files, wrong defaults, capabilities that don't exist. Never repeat it. - Every command, flag, environment variable, port, default, metric name, limit, or capability claim MUST be verifiable against the **upstream source** (`rustfs/rustfs`) or observed by running RustFS. When you cannot verify it, **omit it** — do not guess, and never ship a command you have not confirmed exists (no "hypothetical `rustfs-admin ...`" placeholders). - To verify: read `rustfs/src/config/cli.rs` and `crates/config/src/constants/` for flags/env/defaults; `crates/*` for capabilities; run the binary or the Docker image for behavior. Cite the source (file:line) in your reasoning. - The only CLI binary is `rustfs` (subcommands `server` / `info` / `tls`). There is a `rc` admin client referenced by the Helm chart — treat its exact syntax as unverified unless confirmed. Admin operations are the Console or the admin HTTP API. - RustFS is S3-compatible but **not 100%** — link the compatibility notes rather than claiming full coverage. Never write "100% S3 compatible" or "100% secure". ## 2. Canonical constants (use these verbatim) | Thing | Value | |---|---| | S3 API endpoint (examples) | `http://localhost:9000` (note: replace with server IP) | | Console | port `9001` (`RUSTFS_CONSOLE_ADDRESS`); desktop launcher uses `7001` | | Internal node RPC | shares port `9000` | | Region | `us-east-1` | | Bucket name | `my-bucket` | | Sample object / path | `hello.txt` / `/path/to/hello.txt` | | Credentials | `<your-access-key>` / `<your-secret-key>` placeholders | | Default credentials | `rustfsadmin` / `rustfsadmin` — mention only as a local-test caveat, never as the recommended value | | Addressing | RustFS defaults to **path-style**; every SDK/client example must enable path-style (`forcePathStyle` / `force_path_style` / `UsePathStyle` / `addressing_style=path`); virtual-host needs `RUSTFS_SERVER_DOMAINS` | Banned in examples (the CI rejects them): `12.34.56.78`, `cn-east-1`, `password.txt`, `/Users/<name>` private paths, real-looking access keys, `100% S3`, `100% secure`, `rustfs-admin`. ## 3. Page structure - Frontmatter: `title` (required — rendered as the H1 and sidebar label) and a `description` that is a **complete sentence** (no `…` truncation, not a copy of the first body line). Do **not** add a duplicate top-level `#` heading. - Open with what the page is and what the reader will accomplish, plus any prerequisites — not a marketing slogan. - Headings are unnumbered, EXCEPT install/how-to step sequences: `## 1. …` headings render as numbered steps (remark-steps). Don't skip heading levels. - Same-level parallel operations (UI / mc / API) use same-level headings. - End task pages with a short "Next steps" with real links. - Follow Diátaxis: keep concept / task / reference / troubleshooting content in separate pages; a reference page is a lookup table, a task page is steps. ## 4. FumaPress formatting (use sparingly, where it aids scanning) - **Admonitions** (work in `.md`): `:::note`, `:::tip`, `:::warning[Title]`, `:::danger`, closed by `:::`. Prefer these over bare `>` blockquotes for notes/warnings. Do not mix syntaxes. - **Code fences** always carry a language. Commands → `bash`; command output → `text`; config files → `ini`/`yaml`/`nginx` with `title="/etc/…"`; S3 request lines → `http`. Use `{2,3}` meta ranges to highlight lines. - **JSX components require the `.mdx` extension** — in a plain `.md` file they are silently dropped (renders blank, no build error). `<Cards>`/`<Card title href>` for link grids; `<Tabs items={[...]}><Tab value id>` for mutually exclusive alternatives (each `Tab` needs a page-unique `id`). Rename a page to `.mdx` only when it actually uses components — the URL does not change. - Diagrams: ```mermaid fenced blocks. Math: KaTeX `$…$` / `$$…$$`. ## 5. Voice Second person ("you"). Official recommendations as "We recommend". No superlatives or promises (fastest, perfect, 100% …). Technical pages carry instructions, not sales copy — solutions/marketing content belongs on the main site (rustfs.com), not in these docs. The docs sidebar has seven sections: Installation · Administration · Security & Compliance · Operations · Troubleshooting · Developer · Reference. New pages go into one of these. ## 6. Navigation Every new page must be added to the appropriate `meta.json` (root or folder), or it becomes an orphan (invisible in the sidebar but still indexed). Align the sidebar label with the page's `title`. Relative `.md` links between pages resolve automatically (FumaPress maps by URL, so a `.md` link to a page shipped as `.mdx` is fine). ## 7. Screenshots - Capture the **current Console** in **English**, **light theme**, at **2×** device-pixel-ratio; downscale to ~2000 px wide and keep each **≤300 KB**. - No leaked secrets: use throwaway demo keys, `hello.txt` (never `password.txt`), and clear any presigned-URL/token field. - Meaningful `alt` text describing the location and action. Match the platform (don't show a macOS window on the Windows page). - Store images in a sibling `images/` folder; reference by relative path. ## 8. Pre-flight before proposing a change Always run, from the repo root, and fix every finding: ```bash npm run docs:check # orphans, broken links, unlabelled fences, banned strings, oversized images npm run build # must succeed ``` For a change with runtime surface (commands, config, Console flows), verify the behavior against a running RustFS (binary or `docker run rustfs/rustfs`) or the upstream source — do not rely on the previous docs, which may be wrong. ## 9. Reviewing a docs change Check, in priority order: (1) every factual claim is verifiable; (2) canonical constants and no banned strings; (3) page structure and voice; (4) correct `.md`/`.mdx` extension for any component use; (5) new pages are in `meta.json`; (6) `docs:check` and `build` pass. Reject invented commands and unverifiable numbers rather than softening them.
View on GitHub