customer-docs Style Guide
This file defines conventions for content incustomer-docs/. It is internal — Mintlify only publishes pages listed in docs.json navigation, so this file does not ship.
See also: QUALITY-AUDIT.md (historical audit scoring log, separate artifact).
Q&A Sections
Required component
Every Q&A section uses the<FAQ> / <FAQItem> component from /snippets/FAQ.jsx:
<FAQ> block near the bottom of the page, above any “Related Pages” section.
Banned patterns
<AccordionGroup>/<Accordion>for Q&A content. The question text lives in atitleattribute that renders as a button label, not a heading element. It hurts Google featured-snippet extraction, andbuild-markdown.jsstrips it from.mdmirrors (making the Q&A invisible to LLMs that fetch the markdown).- Raw
### Q?Markdown Q&A blocks. No structured data, no single source of truth. If you need Q&A on a page, use<FAQ>. - Empty
<FAQ>blocks or placeholder<FAQItem>entries. Ship real answers or skip the section entirely.
Rubric (per-question gate)
Every<FAQItem> must pass all four tests. A reviewer rejects any Q that fails.
- Deletion test (uniqueness): if this page is deleted, does the answer become wrong or missing? If the answer lives equally on three other pages, it belongs on the most canonical one, not here.
- Volume test (traffic): do real people search for or ask an LLM this question? Cite at least one seeding source — Google Search Console impressions, “People Also Ask” accordion, Google auto-complete, AnswerThePublic, support ticket, or LLM query log. A Q without a volume source is a red flag in review.
- User phrasing, not doc phrasing: the question starts with Who/What/When/Where/Why/How/Is/Does/Can/Should and ends with
?. Good: “How do I rotate my API key?” Bad: “API key rotation.” - Short answers, link out for depth: 2-4 sentences. Answer the question directly, then link to the canonical page or section if the reader needs more. Long explanations go in the prose of the page, not in the Q&A.
Per-page Q count
0 to ~6 questions per page. No template, no quota. A reference page listing enum values may have 0 Qs; a concept page on freshness thresholds may have 6. Pages with 0 Qs don’t need justification in code — reviewer notes it in the PR if unclear.Skip List — Pages That Don’t Get Q&A
The governing principle: if a prospect would not organically land on this page from a search result or LLM answer, skip it. These pages cannot drive acquisition traffic, so Q&A work on them is wasted effort. Skip the following:releases/**— release notes / changelog. Version-specific, churns every release.- Anything with a version number in the filename or frontmatter.
api-reference/**auto-generated endpoint pages — the endpoint spec is the answer.- Deep internal reference (API error code tables, low-level config reference).
- Pure reference tables (enum lists, status code charts) where every row is already a pseudo-answer.
- Landing / nav pages with no real content (section index pages that are just a list of links).
- Post-auth / logged-in-only pages — user settings, admin config, billing management that only existing authenticated users can reach. Apply per-page, not per-folder:
security/,billing/, andaccount/each contain prospect-facing pages that are still in scope. - App-only pages — anything only reachable from inside the product UI (in-app help flyouts, admin panels, internal tools surfaced as docs). If the URL isn’t indexed by Google and isn’t quoted by LLMs, it’s out of scope here.
Toolchain
When you add or edit<FAQ> content:
- Run
node customer-docs/build-markdown.jslocally. This regenerates the.mdmirror for the page via the FAQ conversion rule (seebuild-markdown.js,conversions.faq). - Confirm the Q&A content appears in the regenerated
.mdfile. If it doesn’t, the toolchain regressed — investigate before merging. - Optionally run
node customer-docs/scripts/generate-llms-txt.jsto updatellms.txt(typically unchanged since it only reads frontmatter descriptions).
<h2> / <h3> HTML in the live Mintlify page plus a <script type="application/ld+json"> FAQPage block for Google structured data. Everything comes from a single source: the <FAQItem question="..."/> props and children.
References
/snippets/FAQ.jsx— the FAQ / FAQItem component implementation.build-markdown.js— Node build-time script that generates.mdmirrors. Theconversions.faqrule (patterned onconversions.tabs) handles<FAQ>→ H2 + H3 Q&A markdown.mdx-to-markdown.js— browser-side script that converts the live rendered DOM to markdown for copy-as-markdown. No FAQ-specific handling needed; the component’s plain HTML output flows through the generic HTML-to-Markdown converter.docs/tasks/backlog/TECH-980-customer-docs-qa-backfill.md— the full PRD behind this convention.
