This repository is the source for docs.fluid.app: Fluid's Help Center, developer docs, theme docs and API reference. It's built with Mintlify.
AGENTS.md: the house rules for everyone who edits these docs, people and AI tools alike. It covers where pages go, terminology, style, and what must never be hand-edited.eval/guide-truth.md: how the guide-claims gate works, the verification decisions already made, and what to do when the API sync reports a conflict.eval/README.md: what each check ineval/does.
The site has four tabs. A page's URL is its file path, and docs.json decides where it appears in the navigation. Every new page needs a docs.json entry in the same PR.
| Tab | Audience | Where the files live |
|---|---|---|
| Help Center | Merchants, admins and reps | help/**, plus introduction.mdx, the site's landing page |
| Developer Platform | Developers building on Fluid | quickstart.mdx, platform-overview.mdx, concepts/, guides/, storefront/, setup/, sdk/, mist-apps/, portal-widgets/ and migration/ |
| Themes | Theme developers | themes/** |
| API Reference | API integrators | api/**, plus the generated api-reference/** |
A few pages appear in a different tab from most of their folder, so docs.json is the final word. AGENTS.md has the detailed rules, such as how Help Center URLs mirror admin routes and where hub pages sit.
You need Node.js 22. From the repository root, where docs.json is:
npx --yes mint@4.2.930 devThen open http://localhost:3000. The version matches the one CI uses, so what you see matches what CI checks.
CI runs .github/workflows/validate.yml on every pull request and on every push to main. Run the same gating steps locally, from the repository root:
npx --yes mint@4.2.930 validate
node eval/generate-api-nav.mjs --check
node eval/check-guide-claims.mjs --self-test
node eval/check-advertised-docs-links.mjs
(cd eval && node --test)
node eval/check-guide-claims.mjs
node eval/check-broken-links.mjsThese steps check:
mint validate: the site configuration and the generated API references.generate-api-nav.mjs --check: the API Reference sidebar matches its rules.check-advertised-docs-links.mjs: every docs URL the Fluid admin links to still points at a page in the navigation. Those URLs are pinned ineval/advertised-docs-links.json. To move one, see "Pinned URLs" inAGENTS.md.- The claims checks: the guide-claims self-test and the claims check itself. See the next section.
check-broken-links.mjs: internal links, anchors, snippets and redirect destinations.
CI also reports broken external links (node eval/check-broken-links.mjs --external), but that step never fails the build.
The task guides under api/guides/ and storefront/, and the guided setup pages, make factual claims about the API. Each claim is registered in eval/guide-claims.json, and eval/check-guide-claims.mjs checks every one against the synced API specs. If you change one of these guides without updating the registry, or the other way around, CI fails. Read eval/guide-truth.md before you edit them.
Help Center pages aren't covered by the gate. Check each one against the current product before you publish it.
api-reference/*.yaml(OpenAPI specs) andsdk-artifacts/(TypeDoc files) are copied in from public mirrors. To add or remove one, edit.github/synced-api-references.json.- The API Reference tab in
docs.jsonis generated from the synced specs, following the rules in.github/api-reference-nav.json. To change it, edit those rules and runnode eval/generate-api-nav.mjs.
The sync workflow runs every hour, and you can also run it manually. It:
- fetches every reference listed in
.github/synced-api-references.json; - regenerates the API Reference sidebar;
- runs
mint validateand, if it passes, commits the changes tomain; - checks the guide claims against the new specs, and opens or updates an issue labeled
guide-spec-conflictif any claim no longer holds.
If validation fails, the change is held on a reference-sync-blocked pull request instead of reaching main, and the run fails. Read "CI wiring" and "Resolving a conflict" in eval/guide-truth.md before you change the sync or resolve a conflict.
- Open a pull request. The validate workflow runs on it.
- Once it's reviewed and the checks pass, merge it into
main. - Mintlify's GitHub app deploys
mainto docs.fluid.app automatically.
There's no separate release step.
- Commit messages and PR titles use Conventional Commits with a scope, for example
docs(help): add the Contacts guideordocs(api): explain which cart operations need a token. - Linear issues go in the PR description, for example "Part of ENG-1234". Keep issue IDs out of branch names and PR titles: Linear can move the issue to Done when such a PR merges.
- Say how you checked the change, for example which checks you ran and which pages you looked at in the local preview.
- This repository is public. Keep customer names and data, internal code names and file paths, and security details out of pages, commits and PR descriptions.
- One topic per PR where you can, so reviews stay quick. If another open PR also edits
docs.json, whichever merges second mergesmainin first.