Docusaurus docs schema
Built-in id: docusaurus:docs:3.10
Published at https://hawkeyexl.github.io/manni/schemas/docusaurus-docs/3.10.json.
A $schema that names this URL resolves to the bundled copy, with no network
call.
docusaurus:docs:3.10 checks the front matter @docusaurus/plugin-content-docs
reads, as of Docusaurus 3.10. It is a format check, not a presence check. It
requires no field, and constrains the shape of every field the plugin documents.
It is one of three Docusaurus schemas,
one per content plugin. The rules the three share, and what none of them
checks, live on that page.
| Property | Value |
|---|---|
| Id | docusaurus:docs:3.10 |
| Title | Docusaurus docs front matter v3.10 |
| Dialect | Draft 2020-12 |
| Required fields | None |
| Additional properties | Allowed (additionalProperties: true) |
| Reference kind | builtin |
| On by default | No |
| Upstream reference | Docs front matter |
| JSON | docusaurus-docs/3.10.json |
Use it
Section titled “Use it”A repo whose only Docusaurus content is the docs root names the id in
manni.config.yaml:
meta: schemas: - docusaurus:docs:3.10For a one-off run, pass the id directly:
manni meta validate docs/ -s docusaurus:docs:3.10A site with a blog or standalone pages as well gives each content root a schema of its own. Wire them up shows the config for all three roots.
Fields
Section titled “Fields”| Field | Type | Constraint |
|---|---|---|
id | string | n/a |
title | string | may be empty |
description | string | may be empty |
slug | string | n/a |
sidebar_label | string | n/a |
sidebar_position | number | n/a |
sidebar_class_name | string | n/a |
sidebar_key | string | n/a |
sidebar_custom_props | object | n/a |
displayed_sidebar | string or null | n/a |
pagination_label | string | n/a |
pagination_next | string or null | n/a |
pagination_prev | string or null | n/a |
hide_title | boolean | n/a |
hide_table_of_contents | boolean | n/a |
toc_min_heading_level | number | 2–6 |
toc_max_heading_level | number | 2–6 |
parse_number_prefixes | boolean | n/a |
custom_edit_url | string or null | uri-reference |
keywords | array of string | n/a |
image | string | uri-reference |
tags | array | string, or object with label and permalink |
draft | boolean | not both with unlisted |
unlisted | boolean | not both with draft |
last_update | object | author and/or date, at least one, nothing else |
The cross-field rules behind the last few rows are the same in all three Docusaurus schemas. The rules worth knowing covers each of them.
Additional properties
Section titled “Additional properties”Allowed. Docusaurus tolerates theme and plugin front matter, and so does this
schema. The one exception is inside last_update, which takes author and
date and nothing else. A misspelled top-level key passes, so stack a strict
overlay
when your docs set has no plugin front matter of its own.
Example page
Section titled “Example page”Every field the docs plugin documents, at a legal value. This is
test/fixtures/docusaurus/docs-valid.md, and it passes.
---id: installtitle: Install the SDKsidebar_label: Installsidebar_position: 2sidebar_custom_props: badge: newdisplayed_sidebar: apiSidebarhide_title: falsehide_table_of_contents: falsetoc_min_heading_level: 2toc_max_heading_level: 4pagination_label: Installingpagination_prev: nullpagination_next: getting-started/first-callparse_number_prefixes: falsecustom_edit_url: https://github.com/acme/docs/edit/main/docs/install.mdkeywords: - install - sdkdescription: Install the SDK and verify the version.image: /img/social/install.pngslug: /installtags: - setup - label: Getting started permalink: /tags/getting-starteddraft: falseunlisted: falselast_update: author: Dana date: 2026-03-14---A common mistake
Section titled “A common mistake”sidebar_position is a number. Quoting it makes it a string, and Docusaurus
rejects it. This is the most common front matter mistake these schemas catch:
✗ docs/install.md /sidebar_position must be number (line 3) [docusaurus:docs:3.10]Drop the quotes and the finding clears. A heading level outside 2–6 fails the
same way, naming toc_min_heading_level or toc_max_heading_level.