Configuration Reference

docs.config.json lives in the root of your member repo and is the only configuration file you need.

VS Code (and most editors) autocomplete and validate it automatically using the $schema field - no extensions or package installation required.

Full example

JSON
{
    "$schema": "https://docs.trickfirerobotics.com/docs.config.schema.json",
    "name": "TrickFire CAN",
    "description": "CAN bus driver and protocol library for TrickFire robots.",
    "sidebar": [
        { "label": "Getting Started", "slug": "getting-started" },
        {
            "label": "Reference",
            "items": [
                { "label": "API", "slug": "reference/api" },
                { "label": "FAQ", "slug": "reference/faq" }
            ]
        }
    ],
    "social": [
        {
            "icon": "github",
            "label": "GitHub",
            "href": "https://github.com/TrickfireRobotics/trickfire-can"
        }
    ]
}

Fields

name (required)

Display name for your project. Shown in the navbar Projects dropdown and in the site's landing page cards.


description (required)

One-line description of the project. Shown on the docs homepage card for your project.


By default, pages are sorted alphabetically by filename, with folder and file names title-cased for their sidebar labels. This works for most projects.

If you need precise control over ordering, labels, or icons, define sidebar explicitly.

Setting sidebar generates a meta.json file next to your docs (and inside each group's subfolder) that pins the page order, group label, and icon. You don't write meta.json by hand - it's regenerated from docs.config.json on every trickfire-docs dev / trickfire-docs build.

Each item is either a doc link, an external link, or a group:

Doc link - links to a page in your docs/ folder. Use slug - the path relative to docs/ without the .md extension.

JSON
{ "label": "Getting Started", "slug": "getting-started" }
{ "label": "API Reference",   "slug": "reference/api" }

External link - links to any URL. Use link instead of slug.

JSON
{ "label": "GitHub", "link": "https://github.com/TrickfireRobotics" }
{ "label": "Notion", "link": "https://notion.so/trickfire" }

Group (category) - nests items under a heading, rendered as a flat, always-expanded section (no accordion). A group's items must live in a matching subfolder - e.g. the "Guides" group below expects its docs under docs/guides/. icon is optional - a lucide-react icon name shown next to the group label.

JSON
{
    "label": "Guides",
    "icon": "Rocket",
    "items": [
        { "label": "Page A", "slug": "guides/page-a" },
        { "label": "Page B", "slug": "guides/page-b" }
    ]
}

social (optional)

Extra nav links appended after the built-in GitHub / Notion / TrickFire links.

JSON
"social": [
    { "icon": "github",   "label": "GitHub", "href": "https://github.com/..." },
    { "icon": "external", "label": "Notion", "href": "https://notion.so/..." }
]

icon accepts "github" or "external".


JSON Schema

The full schema is published at:

plaintext
https://docs.trickfirerobotics.com/docs.config.schema.json

Referencing it via $schema gives you field descriptions, allowed values, and required-field errors directly in your editor.

On this page