Authoring Guide
How to write and structure documentation in the FlexPoint hub so it stays a trusted reference, not a change log.
This guide is the human-readable companion to the agent instructions in
.github/instructions/. Follow it for every page you add.
The one rule that matters most
Durable reference, not a change log
This hub holds durable reference — things that are true over time (architecture, how-tos, runbooks, API references). It is not a change log. Ephemeral status (per-feature "shipped / in progress" tracking, agent TODOs, dated progress notes) lives in the source repos, not here. Mixing the two is exactly what eroded trust in the old in-app docs.
Structure: app-first, audience-second
Every page lives under an app and an audience:
content/docs/<app>/<audience>/<page>.mdx- Apps are top-level folders with
meta.jsoncontaining"root": true. They render as the sidebar app switcher. Current apps:loan-portal,flexrate,marketing,ocr, plus the cross-cuttingplatform. - Audiences are the second level — one of:
users/— task how-tos for people using the app. Plain language, no assumed engineering knowledge.product/— how features behave: events, workflows, parity, roadmap.engineering/— architecture, runbooks, API references, deep dives.
Frontmatter
Every .mdx page starts with frontmatter:
---
title: Page Title
description: One sentence describing the page. Used in search and metadata.
icon: BookOpen # optional — a lucide-react icon name
---Navigation (meta.json)
Each folder may have a meta.json controlling its title, icon, and page order:
{
"title": "Engineering",
"icon": "Code",
"pages": ["architecture", "tech-debt", "api"]
}- App root folders add
"root": true. - Use
"---Section---"strings insidepagesto add labeled separators. - List every page/folder you want ordered; omitted items are appended.
Components
Markdown (including GFM tables and task lists) works out of the box. For richer pages, import fumadocs components directly in MDX:
import { Cards, Card } from 'fumadocs-ui/components/card';
import { Callout } from 'fumadocs-ui/components/callout';
import { Tabs, Tab } from 'fumadocs-ui/components/tabs';Use Cards on landing pages to link onward, and Callout for important notes.
Voice by audience
- Users: imperative, step-by-step, screenshot-first. Avoid jargon.
- Product: explain behavior and intent. Describe events/workflows in terms of cause and effect.
- Engineering: precise and reference-grade. Name real classes, commands, and files. Prefer durable explanations over status updates.
Adding a new app
- Create
content/docs/<app>/meta.jsonwith"root": true, atitle, and adescription. - Add
index.mdx(the app landing) with audienceCards. - Add
users/,product/, andengineering/subfolders, each with ameta.jsonand anindex.mdx. - Register the app in the root
content/docs/meta.jsonpageslist.