Source for docs.colyseus.io. Built with
Nextra; every page is an .mdx file under pages/, and
the sidebar comes from the _meta.ts file in each directory.
pnpm install # also installs the pre-commit hook
pnpm dev # http://localhost:3000
pnpm build # generates the nav surface, builds, emits the markdown twinsProse linting needs Vale, a single Go binary that is deliberately not an npm dependency:
brew install valeWithout it, pnpm lint:prose warns and exits 0. CI always runs it.
| Command | What it proves |
|---|---|
pnpm check-links |
Every internal link and anchor resolves against real heading slugs, and the pages/404.mdx redirect map is sound. next build checks none of this. |
pnpm check:ai-nav |
The committed llms.txt, sitemap.xml, and robots.txt match the sidebar. |
pnpm lint:prose |
Vale over pages/. Terminology and em-dash violations are errors and gate CI; everything else is advisory. |
All three run as a pre-commit hook, installed by pnpm install via
core.hooksPath. Use git commit --no-verify to skip them.
public/llms.txt, public/sitemap.xml, and public/robots.txt are generated by
scripts/generate-ai-nav.js from the _meta files and page frontmatter. Edit
the pages, run pnpm generate:ai-nav, and commit the result. Never hand-edit
the three outputs.
pnpm build additionally emits an out/<route>.md markdown twin of every page
plus out/llms-full.txt, so any docs URL with .md appended returns raw
markdown. Those artifacts are not committed.
STYLE.mdis the house style guide: sentence limits, voice, the approved terminology table, and the rules we deliberately reject so they do not get reintroduced as improvements.CLAUDE.mdcarries the instructions for coding agents, and.claude/skills/holds the repo's recurring rituals: moving a page without breaking inbound links, auditing a page against the framework source, and reviewing a docs diff.
MIT.