> For the complete Mojo documentation index, see [llms.txt](/llms.txt).
> Markdown versions of all pages are available by appending .md to any URL (e.g. /docs/manual/basics.md).

# Update a Mojo cheat sheet

One-page reference cards for the Mojo language, rendered from HTML sources to
PDF, PNG, and SVG (light + dark). Use this skill to update an existing card or
add a new one.

## Where things are

- `src/body-<topic>.html` — the content of one card; this is what you edit.
- `src/_head.html`, `src/_foot.html` — shared CSS, palette, header.
- `bin/build.py` — assembles a card and renders all formats. It discovers cards
  from the body files present; there is no card list to edit.
- `dist/` — produced files. Generated; never edit by hand.

## Workflow

1. Anchor to the reference. Every behavioral claim on a card must match the Mojo
   reference docs under `mojo/docs/reference/`, or a short program you compile
   to confirm it. Do not rely on memory or older syntax.
2. One card at a time.
3. Edit the source, never the output. Change `src/body-<topic>.html`.
4. A card's title and subtitle live in two comment lines at the top of its body
   file:

   ```text
   <!-- title: ... -->
   <!-- subtitle: ... -->
   ```

5. Rebuild and look: `python3 bin/build.py <topic>`, then open
   `dist/mojo-cheat-sheet-<topic>-light.png`.
6. Compiler-check new claims with a tiny snippet before asserting them.
7. Discuss restructuring a card or adding a new one before doing it.

## Conventions

- Each card stands alone. No cross-references between cards.
- One space before a trailing `#` comment; keep all trailing comments.
- No em-dashes in prose.
- Keep code lines short enough not to wrap.
- Current Mojo syntax only: `def` (no `fn`), `comptime` (not `alias`),
  `read`/`mut`/`out`/`var`/`ref` conventions, `t"..."` template strings.
- The legend on each card is generated from the colors it uses; do not maintain
  it by hand.

## Build everything

`python3 bin/build.py all` rebuilds every card present and the combined PDFs.
The build shrinks SVGs with `svgo` so they stay under the repo's 2 MB file cap.

## Required tools

See `README.md`.
