Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
45 changes: 23 additions & 22 deletions .agents/skills/dynamo-docs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ site, in line with the project's authoring guides.

Two authoring guides govern this work; read whichever applies before writing:

- [`docs/fern/documentation-style-guide.md`](https://github.com/ai-dynamo/dynamo/blob/main/docs/fern/documentation-style-guide.md) — the standard for **every** page: frontmatter, headings, prose, terminology, links, callouts. The must-fix subset is distilled in [Style Guide Is the Standard](#style-guide-is-the-standard) and [Content Rules](#content-rules) below.
- [`docs/fern/recipes/_catalog/README.md`](https://github.com/ai-dynamo/dynamo/blob/main/docs/fern/recipes/_catalog/README.md) — the standard for **recipe and feature-benchmark pages** (the catalog contract, the `.mdx` page blueprint, and the pure-CSS target picker). See [Add a Recipe or Feature Benchmark Page](#add-a-recipe-or-feature-benchmark-page).
- [`docs/fern/pages/community/contributing/documentation/documentation-style-guide.md`](../../../docs/fern/pages/community/contributing/documentation/documentation-style-guide.md) — the standard for **every** page: frontmatter, headings, prose, terminology, links, callouts. The must-fix subset is distilled in [Style Guide Is the Standard](#style-guide-is-the-standard) and [Content Rules](#content-rules) below.
- [`docs/fern/pages/recipes/_catalog/README.md`](../../../docs/fern/pages/recipes/_catalog/README.md) — the standard for **recipe and feature-benchmark pages** (the catalog contract, the `.mdx` page blueprint, and the pure-CSS target picker). See [Add a Recipe or Feature Benchmark Page](#add-a-recipe-or-feature-benchmark-page).

## Branch Rule

Expand All @@ -34,7 +34,7 @@ The `docs-website` branch is CI-managed and must **never** be edited by hand.
## Style Guide Is the Standard

Every page under `docs/` (and the READMEs under `examples/` and `recipes/`) follows the
[Documentation Style Guide](https://github.com/ai-dynamo/dynamo/blob/main/docs/fern/documentation-style-guide.md)
[Documentation Style Guide](../../../docs/fern/pages/community/contributing/documentation/documentation-style-guide.md)
(`docs/documentation-style-guide.md`). Read it before writing content. The docs bot enforces a
**must-fix** subset on every PR — get these right or the checks fail:

Expand Down Expand Up @@ -166,21 +166,21 @@ Short intro paragraph stating what the page covers.

Recipe and feature-benchmark pages are **catalog-driven** and use `.mdx` (they embed a pure-CSS
target picker). Authoritative guide:
[`docs/fern/recipes/_catalog/README.md`](https://github.com/ai-dynamo/dynamo/blob/main/docs/fern/recipes/_catalog/README.md).
[`docs/fern/pages/recipes/_catalog/README.md`](../../../docs/fern/pages/recipes/_catalog/README.md).
Each page is a triple — page + catalog entry + nav:

1. **Write the `.mdx`** at `docs/recipes/<slug>.mdx` (or `docs/benchmarks/<slug>.mdx`). Frontmatter
1. **Write the `.mdx`** at `docs/fern/pages/recipes/model-recipes/<slug>.mdx` (or `docs/fern/pages/recipes/feature-benchmarks/<slug>.mdx`). Frontmatter
carries SPDX + `title` + one-sentence `subtitle`; body starts with a short intro, then the target
picker — multi-target pages use the radio picker, single-target pages use the **static** form
(exact classes under [Target picker](#target-picker) below) — then the fixed section order:
`## Prerequisites` → `## Deploy` → `## Smoke Test` → `## Benchmark` → `## Expected Performance`
(omit if no numbers) → `## Compare All Targets` (multi-target only) → `## Related Feature
Benchmarks` → `## Notes` → `## Source`. **MDX rule:** blank line after `<div ...>` and before
`</div>`; keep code fences at column 0.
2. **Add a catalog entry** — one file at `docs/recipes/_catalog/recipes/<id>.yaml` (or
`docs/benchmarks/_catalog/benchmarks/<id>.yaml`), SPDX header, exactly one object. **Read the
sibling `schema.json` first for the exact field set** (`docs/recipes/_catalog/schema.json` for
recipes, `docs/benchmarks/_catalog/schema.json` for benchmarks — they are **different** schemas) —
2. **Add a catalog entry** — one file at `docs/fern/pages/recipes/_catalog/recipes/<id>.yaml` (or
`docs/fern/pages/recipes/feature-benchmarks/_catalog/benchmarks/<id>.yaml`), SPDX header, exactly one object. **Read the
sibling `schema.json` first for the exact field set** (`docs/fern/pages/recipes/_catalog/schema.json` for
recipes, `docs/fern/pages/recipes/feature-benchmarks/_catalog/schema.json` for benchmarks — they are **different** schemas) —
each is `additionalProperties: false`, so an invented or misspelled key fails validation; don't
guess the shape. A **recipe** entry requires `id`,
`title`, `provider`, `model`, `status`, `targets`, `maintainer`, and each `targets[]` item
Expand All @@ -196,8 +196,8 @@ Each page is a triple — page + catalog entry + nav:
(`recipe-sku`: `b200`/`h200`/`h100`/`gb200`/`hopper`/`blackwell`; `recipe-usecase`:
`chat`/`agentic`; `recipe-variant`: `agg`/`disagg`/…). A value missing from CSS renders but
filters nothing.
5. **Add the landing card** in `docs/recipes/README.mdx` and update the model/target counts.
6. **Validate**: `python3 docs/recipes/_catalog/validate.py` (covers both catalogs), then `fern
5. **Add the landing card** in `docs/fern/pages/recipes/model-recipes/overview.mdx` and update the model/target counts.
6. **Validate**: `python3 docs/fern/pages/recipes/_catalog/validate.py` (covers both catalogs), then `fern
check` and `fern docs broken-links`.

#### Catalog entry shape
Expand Down Expand Up @@ -230,8 +230,8 @@ targets: # >= 1 item
expected_performance: { available: false } # add summary: when numbers exist
```

**Benchmarks use a different schema.** A `docs/benchmarks/_catalog/benchmarks/<id>.yaml` entry
validates against `docs/benchmarks/_catalog/schema.json`, whose required set is `id`, `title`, `page`,
**Benchmarks use a different schema.** A `docs/fern/pages/recipes/feature-benchmarks/_catalog/benchmarks/<id>.yaml` entry
validates against `docs/fern/pages/recipes/feature-benchmarks/_catalog/schema.json`, whose required set is `id`, `title`, `page`,
`claim`, `subtype` (enum: `ab-test`/`feature-stack`/`topology`/`provider-comparison`/`hands-on`),
`features`, `model`, `hardware`, `traffic`, `arms`, `results`, `maintainer` — **no** `provider`,
`status`, or `targets`. The skeleton above is recipe-only; read the benchmark schema for that shape.
Expand Down Expand Up @@ -270,7 +270,7 @@ A catalog page is a triple (page + entry + nav) — never touch just one part:
- **Remove**: delete the `.mdx`, the `_catalog/<id>.yaml`, the `index.yaml` entry, the nav `- page:`,
and the landing card; update the model/target counts; add a redirect.

Run `python3 docs/recipes/_catalog/validate.py` after any of these.
Run `python3 docs/fern/pages/recipes/_catalog/validate.py` after any of these.

### Add an Example or Recipe (code)

Expand Down Expand Up @@ -310,7 +310,7 @@ are a snapshot, not an authority; sections get added, renamed, and removed. What

- Two tabs under `navigation:`. **`- tab: docs`** holds the main documentation; **`- tab: recipes`**
is a flat list of `- page:` entries (`recipes/<slug>.mdx`), order mirroring
`docs/recipes/_catalog/index.yaml`.
`docs/fern/pages/recipes/_catalog/index.yaml`.
- In the docs tab, each section is marked by a banner comment
(`# ==================== <Section> ====================`); a `- page:` sits under that section's
`contents:` at 2-space indent, `path:` relative to `docs/`. In the recipes tab a `- page:` sits
Expand All @@ -333,9 +333,10 @@ Design Docs, Documentation, Hidden Pages. To place a page, match the nearest exi
deep-relative into `docs/` — count `../` as 4 plus one per directory level of the page under
`pages-dev/` (`getting-started/x.md` → 5, `components/router/x.md` → 6) — so the repo link
checker and GitHub browsing stay valid; the sync workflow rewrites them to site URLs at publish
via `fern/resolve_translation_links.py`. Image refs stay shallow-relative (`../assets/...`) and
are **not** copied into the mirror — Fern resolves them against the base page. Translate prose, not code, flags, or terminology
(vLLM / SGLang / TensorRT-LLM stay verbatim). Keep it in sync when the English page changes,
via `docs/fern/scripts/resolve_translation_links.py`. Image refs stay shallow-relative
(`../assets/...`) and are **not** copied into the mirror — Fern resolves them against the base
page. Translate prose, not code, flags, or terminology (vLLM / SGLang / TensorRT-LLM stay
verbatim). Keep it in sync when the English page changes,
or don't ship it stale.
- **Versioned navs.** Author only against `docs/` on `main` (the `pages-dev` set). When a release is
cut, the publish step builds `pages-vX.Y.Z/` from the tagged `docs/` tree and rewrites nav paths —
Expand Down Expand Up @@ -378,7 +379,7 @@ fails the PR on any of these.
```bash
fern check # nav + frontmatter structure
fern docs broken-links # link resolution
python3 docs/recipes/_catalog/validate.py # recipe/benchmark changes only — validates BOTH catalogs
python3 docs/fern/pages/recipes/_catalog/validate.py # recipe/benchmark changes only — validates BOTH catalogs
```

`fern check` and `broken-links` mirror the PR checks. The catalog validator is **not yet wired into
Expand Down Expand Up @@ -413,14 +414,14 @@ git commit -s -m "docs: <add|update|move|remove> <page-title>"
| File | Purpose |
|---|---|
| `docs/documentation-style-guide.md` | Authoring standard for every page (must-fix + guidance) |
| `docs/recipes/_catalog/README.md` | Recipe/benchmark page authoring (catalog contract, blueprint, picker) |
| `docs/recipes/_catalog/validate.py` | Catalog validator (covers both recipe and benchmark catalogs) |
| `docs/fern/pages/recipes/_catalog/README.md` | Recipe/benchmark page authoring (catalog contract, blueprint, picker) |
| `docs/fern/pages/recipes/_catalog/validate.py` | Catalog validator (covers both recipe and benchmark catalogs) |
| `docs/fern/index.yml` | Navigation tree (two tabs: `docs` + `recipes`) |
| `docs/` | Content directory (`.md`, plus `.mdx` for recipe/benchmark pages) |
| `docs/assets/` | Images, SVGs, fonts |
| `docs/fern/docs.yml` | Fern site configuration + `redirects:` |
| `docs/fern/main.css` | Pure-CSS target-picker axis values (recipe/benchmark pages) |
| `fern/convert_callouts.py` | Callout conversion (GitHub -> Fern) |
| `docs/fern/scripts/convert_callouts.py` | Callout conversion (GitHub -> Fern) |
| `recipes/README.md` | Available Recipes tables (code recipes) |
| `recipes/CONTRIBUTING.md` | How to contribute a code recipe |
| `docs/README.md` | Docs system guide (build, sync, publish) |
4 changes: 2 additions & 2 deletions .agents/skills/fern-components/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ page formats, and the boundary is a hard must-fix:

| Page type | How to write rich content |
|---|---|
| **`.mdx`** (e.g. `getting-started/introduction.mdx`, recipe pages) | Use Fern components **directly** — `<CardGroup>`, `<Steps>`, `<Accordion>`, `<Tabs>`, `<Note>`, etc. |
| **`.md`** (most docs pages) | **Do not hand-write `<Note>`/`<Tip>`/etc.** Write callouts GitHub-style (`> [!NOTE]`); `fern/convert_callouts.py` converts them at build. Other components (Cards, Steps, Tabs…) are **not** available — restructure with plain Markdown, or convert the page to `.mdx` on purpose. |
| **`.mdx`** (e.g. `kubernetes/getting-started/introduction.mdx`, recipe pages) | Use Fern components **directly** — `<CardGroup>`, `<Steps>`, `<Accordion>`, `<Tabs>`, `<Note>`, etc. |
| **`.md`** (most docs pages) | **Do not hand-write `<Note>`/`<Tip>`/etc.** Write callouts GitHub-style (`> [!NOTE]`); `docs/fern/scripts/convert_callouts.py` converts them at build. Other components (Cards, Steps, Tabs…) are **not** available — restructure with plain Markdown, or convert the page to `.mdx` on purpose. |

Callout conversion map (GitHub → Fern), for `.md` pages:

Expand Down
2 changes: 1 addition & 1 deletion .github/filters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ operator:
- 'deploy/operator/.*'
# Operator imports the local snapshot module.
- 'deploy/snapshot/**'
- 'docs/fern/kubernetes/api-reference.md'
- 'docs/fern/pages/reference/kubernetes-api/additional-resources/api-reference-k8s.md'
- 'deploy/helm/charts/platform/**'
# The operator check owns the real Go/Python DGD override contract test.
- 'components/src/dynamo/profiler/utils/dgd_override.py'
Expand Down
Loading
Loading