---
name: docs-site
description: Write and edit the public website docs in site/routes/docs (beet.org/docs). Covers audience, diataxis mode per page, tone, routing conventions and the code-must-be-real rule. Use when touching site docs pages.
---

# Site docs

How to write and edit the public website docs in `site/routes/docs`. These are the high-level docs at [beet.org](https://beet.org/docs), distinct from the crate READMEs and the rustdoc API docs.

## Audience

READMEs are for people already working with the API. The website is for people forming a mental model. Aim higher-level: explain the shape of things and why they fit together, link out to the READMEs and `docs.rs` for detail.

## Diátaxis first

Load the `docs-diataxis` skill and pick one mode per page before writing. Mixing modes is the main cause of bad docs.

- `docs/index.md`, `docs/crates/*` are **Explanation**: discuss the subject, make connections, give context. Do not instruct.
- `docs/tutorials/*` are **Tutorials**: a guided lesson with a visible result at every step. Do not explain, do not offer choices.

## Tone

- **Be cool, not boastful.** No "beet's central trick", "the whole point", "that is deliberate", "the clearest demonstration". State what it does and move on. Beet has many good ideas; none of them need a fanfare.
- **Never neg other stacks.** Other approaches are valid in their own way. Sell beet on its own terms: malleability and the open Bevy world, not on someone else's expense.
- No em dashes. No mid-sentence line breaks in markdown, only paragraph breaks.

## Conventions

- TOML frontmatter for the title: `+++\ntitle = "Foo"\n+++`.
- Routes mirror the file tree under `site/routes/docs`. A new `foo.md` becomes `/docs/foo`; nested dirs need an `index.md`. The sidebar is auto-collected, no manual wiring.
- Link internally with absolute paths, eg `/docs/crates/beet_router`.
- Use language fences (` ```rust `, ` ```sh `) so syntax highlighting works.
- LLMs love writing text, humans hate reading it. Include exactly what must be there and nothing more. Short code snippets over prose where a snippet says it better.

## Code must be real

A tutorial's contract is that every step works for every reader. Ground all code in something verified:

- Prefer non-`ignore` README doctests and files under `/examples` as the basis.
- Confirm symbols are in the prelude and check the exact feature flags in the root `Cargo.toml` before telling a reader to `cargo add beet --features X`. Default features are `std, ui` only, so most tutorials need to opt in (`action`, `http_server`, `thread`, ...).
- State real prerequisites up front (eg an `OPENAI_API_KEY` for agent tutorials).
