Why
The handbook is public and increasingly consumed by AI assistants (Claude Code,
Cursor, MCP servers) via the llms.txt standard. Publish
an LLM-friendly version so those tools can read it directly (adopted by 2026 by
Stripe, Cloudflare, ~800k sites).
What
llms.txt (curated index + per-page links) and llms-full.txt (all content in
one file), served at the site root — generated from doc/*.md (single source,
no hand-maintained copy).
Plan
1. Now — VitePress + GitHub Pages
Generate at build/deploy time with
vitepress-plugin-llms
(zero-config, follows the standard). Add it as a devDependency, wire it into
doc/.vitepress/config.mts; pnpm docs:build then emits llms.txt /
llms-full.txt into the Pages output.
2. Transition — Wiki.js + Cloudflare D1
Pick one when the migration lands (see #71, #72):
- (a) Native: figure out how to generate/serve llms.txt in the Wiki.js + D1
setup (from the same doc/*.md source), or
- (b) Carry over: keep generating with VitePress and copy the built
llms.txt / llms-full.txt into the Cloudflare Worker's public/ so the
worker serves them. Cheapest — reuses the working generator, no Wiki.js-side
work.
Source stays doc/*.md in every case, so there is no duplicated content to
drift.
Acceptance
- Now:
pnpm docs:build emits llms.txt + llms-full.txt;
https://handbook.osbrjp.com/llms.txt resolves and lists the pages.
- Transition path (a or b) chosen and noted when the platform moves.
Relates to
Why
The handbook is public and increasingly consumed by AI assistants (Claude Code,
Cursor, MCP servers) via the llms.txt standard. Publish
an LLM-friendly version so those tools can read it directly (adopted by 2026 by
Stripe, Cloudflare, ~800k sites).
What
llms.txt(curated index + per-page links) andllms-full.txt(all content inone file), served at the site root — generated from
doc/*.md(single source,no hand-maintained copy).
Plan
1. Now — VitePress + GitHub Pages
Generate at build/deploy time with
vitepress-plugin-llms(zero-config, follows the standard). Add it as a devDependency, wire it into
doc/.vitepress/config.mts;pnpm docs:buildthen emitsllms.txt/llms-full.txtinto the Pages output.2. Transition — Wiki.js + Cloudflare D1
Pick one when the migration lands (see #71, #72):
setup (from the same
doc/*.mdsource), orllms.txt/llms-full.txtinto the Cloudflare Worker'spublic/so theworker serves them. Cheapest — reuses the working generator, no Wiki.js-side
work.
Source stays
doc/*.mdin every case, so there is no duplicated content todrift.
Acceptance
pnpm docs:buildemitsllms.txt+llms-full.txt;https://handbook.osbrjp.com/llms.txtresolves and lists the pages.Relates to