WritedocsWritedocs

Page frontmatter

Every page starts with YAML frontmatter, separate from writedocs.json:

---
title: Getting Started
description: Optional, used for the page's <meta name="description">
---

Page content here.
titlestringrequired

Rendered as the page’s <h1> automatically.

descriptionstring

Used for <meta name="description">. Falls back to writedocs.json’s top-level description if omitted.

slugstring

Overrides the URL this page is served at. See below.

openapistring

Marks this page as a hand-written OpenAPI operation override. See API Reference (OpenAPI).

seoobject

Per-page meta tag overrides (ogImage, ogType, twitterCard, keywords, noindex). Falls back field-by-field to writedocs.json’s top-level seo. See SEO and sitemap.

mode"default" | "wide" | "frame" | "custom" | "blank"default: "default"

How much site chrome (topbar, sidebar, table of contents) wraps this page. See Page modes.

Don’t repeat title as a # Heading in the page body — it’s rendered automatically and you’ll end up with it twice.

slug

Overrides the URL a page is served at, independent of where the file actually lives on disk — writedocs.json’s navigation still references the file by its own path regardless of this override.

---
title: New Guide Name
slug: guides/new-name
---

A file at docs/legacy/old-name.mdx (referenced in writedocs.json as legacy/old-name) with slug: guides/new-name is served at /guides/new-name/ — the sidebar, prev/next links, and page title all resolve correctly through the override; only the actual URL changes.

Leading/trailing slashes don’t matter — slug: /, slug: guides/x, and slug: /guides/x/ all mean the same thing. slug: / makes a page the site’s homepage.