Writing documentation with human-readable markdown
Overview
This guide explains how to write and maintain documentation using plain markdown that stays easy to read at source while supporting rich layouts and interactivity.
We use GitHub-flavored markdown (GFM) with a few lightweight, intuitive extensions for:
- β Callouts
- β Tabs
- β Cards
- β Columns
- β Toggles
- β Boxed sidebars
- β Bookmarks
- β Buttons
- β Steps
Everything renders beautifully without breaking readability for humans or editors.
Frontmatter
Each markdown file can include optional YAML frontmatter at the top to control metadata and behavior.
---
title: Your Page Title
description: A brief description of this page
searchable: false
section: plugins
doc-type: doc
hide-toc: true
youtube-video: dQw4w9WgXcQ
---
Standard fields
title(optional): The page title displayed in navigation and search resultsdescription(optional): A summary shown in search results and metadata
Custom fields
searchable(optional, defaults totrue): Set tofalseto exclude this page from search indexingsection(optional): Categorizes the page for filtered search (e.g.,core,plugins,theme)doc-type(optional): Controls the page layout themehomeβ for landing or overview pagesdocβ for standard documentation pageshide-toc(optional): Set totrueto hide the "On this page" sidebar navigationyoutube-video(optional): YouTube video ID to embed a mini player in the sidebar (e.g.,dQw4w9WgXcQ)
Example
---
title: Getting Started with Tabs
description: Learn how to create tabbed content in your documentation
section: core
doc-type: doc
youtube-video: abc123xyz
---
1. Callouts
GitHub-flavored callouts work natively using the > [!TYPE] pattern.
> [!NOTE]
> This endpoint requires authentication via headers.
>
> Example: TGX-API-KEY
Supported types
[!NOTE]β default callout style[!INFO]β informational callout[!TIP]β helpful tips and suggestions[!IMPORTANT]β important information to note[!WARNING]β warnings about potential issues[!CAUTION]β cautionary notices[!DANGER]β critical warnings about dangerous actions
Each will render with its own visual style.
2. Tabs
Tabs group related content (for example, code snippets in multiple languages).
<div class="tab-group">
<nav>
<button class=" active-tab" type="button" data-target="python">python</button>
<button class="" type="button" data-target="javascript">javascript</button>
</nav>
<div class=" active-tab" data-id="python">
βββpython
print("Hello, World!")
βββ
</div>
<div class="" data-id="javascript">
βββjs
console.log("Hello, World!")
βββ
</div>
</div>
Rules:
- text after
"tab"defines the tabβs title. - Spaces are converted to
-for the tabβs internal ID. - If no label is provided, tabs default to
tab-1,tab-2, etc. - If all tabs contain only fenced code blocks, the container renders with
.
3. Cards
Cards highlight small pieces of information, previews, or summaries.
EachChat window
The main area where users talk to your bot.
___CODE_SPAN_0___, etc.) **flush-left** β avoid indenting them inside lists or code. - Inside custom blocks, you can write normal markdown (headings, lists, tables, etc.). - Use blank lines between structural blocks for readability. - Keep labels lowercase for consistency, but theyβre case-insensitive.
Example: combining multiple elements
> [!TIP] > You can combine **callouts** with cards, tabs, or toggles for richer docs. <div class="tab-group"> <nav> <button class=" active-tab" type="button" data-target="label="python"">label="python"</button> <button class="" type="button" data-target="label="javascript"">label="javascript"</button> </nav> <div class=" active-tab" data-id="label="python""> βββpython print("Hello") βββ </div> <div class="" data-id="label="javascript""> βββjs console.log("Hello") βββ </div> </div>More examples
<div class="cols" style="--md-cols:2">
Feature 1: fast setup
Feature 2: human-readable markdown
</div>
Final notes
- These patterns are designed for clarity and compatibility β markdown remains human-readable in raw form.
- No build-time magic is required β all features can be parsed via a simple line-based preprocessor.
- Always preview rendered docs before committing to ensure structure looks right.