Docs Authoring Guide: Mintlify Rules and i18n Policy
This guide covers documentation authoring, Mintlify link rules, and the i18n policy for the OpenClaw docs. It is intended for contributors who write or maintain documentation.
Docs Guide
This directory handles documentation authoring, Mintlify link rules, and the i18n policy for docs.
Mintlify Rules
- The
openclaw/docsmirror is where docs get published tohttps://docs.openclaw.ai. - Internal doc links in
docs/**/*.mdmust stay root-relative, without any.mdor.mdxsuffix, for example[Config](/ai-agents/integrations/open-claw/docs/gateway/configuration). - For cross-references between sections, use anchors on root-relative paths, such as
[Hooks](/ai-agents/integrations/open-claw/docs/gateway/configuration-reference#hooks). - Because Mintlify anchor generation is fragile there, doc headings should avoid em dashes and apostrophes.
- README files and other GitHub-rendered docs should use absolute docs URLs so links function outside Mintlify.
- Keep docs content generic: no personal device names, hostnames, or local paths; use placeholders like
user@gateway-hostinstead.
Docs Content Rules
- For docs, UI copy, and picker lists, arrange services/providers alphabetically unless the section specifically describes runtime order or auto-detection order.
- Bundled plugin naming must align with the repo-wide plugin terminology rules found in the root
AGENTS.md. - JSON5/JSON config fences that resemble complete
openclaw.jsondocuments undergo schema validation in CI withpnpm docs:check-config-examples; intentionally partial or legacy snippets opt out by addingvalidate=falseto the fence info string. - Never hand-edit generated docs:
docs/plugins/reference/**,docs/plugins/reference.md, anddocs/plugins/plugin-inventory.mdderive frompnpm plugins:inventory:gen, whiledocs/maturity/**comes frompnpm maturity:render. - During publishing and packaging, the public and packaged docs map is generated from
pnpm docs:list --headings. Keep only the small source stub atdocs/docs_map.md; never commit the expanded heading mirror.
Internal Docs
- Long-lived private operator docs belong in
~/Projects/manager/docs/. - Repo-local internal scratch or mirror docs may live under ignored
docs/internal/. - Never add
docs/internal/**pages todocs/docs.jsonnavigation or link them from public docs. - If a page is force-added later,
scripts/docs-sync-publish.mjsexcludes and prunesdocs/internal/**from the publicopenclaw/docspublish repo. - Internal docs may reference repo paths, private app names, 1Password item names, and runbooks, but must never contain secret values.
Maturity Scorecard Editing
taxonomy.yaml and qa/maturity-scores.yaml serve as the source inputs; generated maturity docs under docs/maturity/ are projections and should not be hand-edited for score, LTS, taxonomy, QA profile, or evidence tables.
Generation is owned by scripts/qa/render-maturity-docs.ts; use pnpm maturity:render to refresh committed docs and pnpm maturity:check to verify them.
Artifact previews are rendered by .github/workflows/maturity-scorecard.yml, which can also open generated-doc PRs; .github/workflows/openclaw-release-checks.yml dispatches it for release QA.
Keep deterministic qa-evidence.json.scorecard data in GitHub Actions artifacts unless a maintainer explicitly requests a sanitized committed projection.
Human overrides must change source state in a PR, with the reason and public or redacted evidence explained.
Docs i18n
- This repo does not maintain foreign-language docs. The generated publish output lives in the separate
openclaw/docsrepo, often cloned locally as../openclaw-docs. - Do not add or edit localized docs under
docs/<locale>/**here. - Treat English docs in this repo plus glossary files as the source of truth.
- Pipeline: update English docs here, update
docs/.i18n/glossary.<locale>.jsonas needed, then let the publish-repo sync andscripts/docs-i18nrun inopenclaw/docs. - Before rerunning
scripts/docs-i18n, add glossary entries for any new technical terms, page titles, or short nav labels that must stay in English or use a fixed translation. pnpm docs:check-i18n-glossaryis the guard for changed English doc titles and short internal doc labels.- Translation memory lives in generated
docs/.i18n/*.tm.jsonlfiles in the publish repo. - See
docs/.i18n/README.md.