Sections & MDX
Builtin sectionsβ
Every readme follows the same layout. projectDescription is not a section β
it is the tagline under the title β while the others are rendered as ##
headings in this exact order:
| # | Section key | Heading | Notes |
|---|---|---|---|
| β | projectDescription | (header tagline) | Rendered in the header, not as a section |
| 1 | about | π‘ About the project | Prepends the screenshot and, on root, the members table |
| 2 | features | β¨ Features | |
| 3 | gettingStarted | π Getting started | |
| 4 | installation | π Installation | Auto-derived from registry when omitted |
| 5 | usage | π§ Usage | |
| 6 | roadmap | π Roadmap | Non-empty roadmaps get a open issues link appended |
| 7 | (custom sections) | (the key, as written) | Rendered in insertion order |
| 8 | contributing | π» Contributing | Optional; links the code of conduct when found |
| 9 | contact | π¨ Contact | Not configurable β author, X handle, email, repo |
| 10 | acknowledgments | π Acknowledgments | |
| 11 | license | π License | Not configurable β rendered from the detected license |
A collapsible <details> table of contents lists every rendered section, and
backToTop: true appends a back to top link after each one.
Custom sectionsβ
Any key of sections that is not one of the nine builtin keys becomes a
custom section, titled exactly as the key. Insertion order is preserved, so
you control where it lands in the readme:
sections: {
// β¦required builtin sectionsβ¦
"βοΈ Support": "Software is still **very early**, expect breaking changes",
Benchmarks: "\n- parse 1.2M lines/s\n- render 400 readmes/s",
}
Custom sections render between roadmap and contributing.
Skipping a sectionβ
Set it to an empty string. renderSections skips empty bodies, and
validate warns you about them:
sections: {
// β¦
roadmap: "", // omitted from the readme, warning from validate
}
MDX overrides for workspace membersβ
Members can override a section per folder, straight from their own directory, without touching the root config:
packages/core/
βββ deno.json
βββ readma/
βββ sections/
βββ usage.mdx
- The file name (
usage) is the section key β builtin or custom. - The MDX content is compiled to HTML through
@mdx-js/mdxand rendered with React, so you can import components inside it. - Only workspace members get this treatment; the root readme is fully driven by the config.
- Empty or broken files are skipped with a warning and the config value is used instead.
Precedence for a member section body:
readma/sections/<key>.mdxinside the member folder,- the
sections.<key>value fromreadma.config.ts, - for
installationonly: the automatic install snippet derived from the language and registry.
The contact and license sectionsβ
Two sections are fully automatic and not driven by sections:
- Contact β
author, the X handle link, the email (email@domain.domainExt) and the repository link. - License β links the license file on the current branch with the
detected SPDX identifier, or renders
Nonewhen no license is found.