CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What This Repo Is
This is the MAVLink Developer Guide — a VitePress-based documentation site for the MAVLink drone messaging protocol. Source content lives in en/ (English), with translations in zh/ (Chinese) and ko/ (Korean) managed via Crowdin. The published site is at mavlink.io.
Commands
# Install dependencies
npm ci # or: yarn install
# Local dev server with hot reload
yarn start # alias for: yarn docs:dev
# Production build (Linux)
yarn docs:build
# Production build (Windows)
yarn docs:buildwin
# Preview the built site
yarn docs:preview
# Check links
yarn linkcheckCI (.github/workflows/docs_deploy.yml) uses npm ci + npm run docs:build on Node 20, then deploys to the mavlink/mavlink.io repo.
Architecture
Directory Layout
en/— primary English source; all editing happens herezh/,ko/— machine/community translations synced from Crowdin (do not edit directly).vitepress/config.mjs— VitePress site config; sidebars are generated dynamically fromSUMMARY.mdfiles rather than hard-coded.vitepress/get_sidebar.js— parsesSUMMARY.mdGitBook-style files to generate VitePress sidebar config.vitepress/theme/— custom theme overrides
Navigation / Sidebar
The sidebar for each language is built by reading that language's en/SUMMARY.md (and equivalent). This file is the authoritative table of contents — adding a new page requires both creating the .md file and adding it to SUMMARY.md.
Content Structure (en/)
messages/— auto-generated message reference docs (one per XML dialect:common.md,ardupilotmega.md, etc.)services/— microservice protocol docs (mission, command, camera, gimbal, FTP, etc.)guide/— protocol internals (serialization, routing, MAVLink 2, signing, etc.)mavgen_c/,mavgen_python/— language-specific library usage guidescontributing/— contributor guidesabout/,getting_started/,file_formats/— introductory and reference content
Excluded from Build
Files matching **/_*.md are excluded from the VitePress build (used as includes/partials). Several language folders (de, ja, ru, tr, uk) are also excluded — only en, zh, and ko are active.
Authoring Conventions
- VitePress callout syntax:
::: info,::: tip,::: warning,::: danger(not> **Note**or> **Tip**) - Math is supported via
markdown-it-mathjax3— use$...$inline and$$...$$for blocks - Tabs component is available via
@red-asuka/vitepress-plugin-tabs - Internal links use relative paths to
.mdfiles (e.g.,../services/mission.md) - The
EDITORenvironment variable enables "Open in your editor" links during local dev; omit it to get GitHub edit links instead
Translation Workflow
- Crowdin config (
crowdin.yml) mapsen/**/*.md→{lang}/**/{filename}.md - Only edit English source in
en/; translation PRs come from the Crowdin bot - New pages need to be in
en/SUMMARY.mdbefore Crowdin will pick them up

