llms.txt explained¶
llms.txt is a 2024 convention proposed by
Jeremy Howard for advertising a documentation corpus to LLM-based
tools. A single Markdown file at a known URL lists every doc page,
grouped by section, with one-line annotations.
LazyBridge generates two artefacts at build time:
| URL | Contents | Use |
|---|---|---|
| https://core.lazybridge.com/llms.txt | Index — every doc page grouped by section | Tools that resolve linked pages on demand |
| https://core.lazybridge.com/llms-full.txt | Whole corpus concatenated (10-15K lines, 500-800 KB and growing) | Long-context models that take the corpus directly into the prompt |
Format¶
Per the llmstxt.org spec, llms.txt
is a Markdown file with:
- An H1 with the project name.
- An optional blockquote with a one-line summary.
- Free-form narrative sections.
- H2-delimited sections of link lists, each with one-line annotations.
- An optional
## Optionalsection that consumers may drop when context budget is tight.
LazyBridge's llms.txt opens with the project name + summary, then
six sections matching the docs site nav: Concepts, Guides,
Recipes, Decisions, Reference, Errors.
Example (excerpt — full version at the URL above):
# LazyBridge
> Zero-boilerplate multi-provider LLM agent framework.
> Engine + Tools + State, everything is a tool.
## Concepts
- [Mental model](https://core.lazybridge.com/concepts/mental-model/)
- [Everything is a tool](https://core.lazybridge.com/concepts/everything-is-a-tool/)
- [Progressive complexity](https://core.lazybridge.com/concepts/progressive-complexity/)
- [Canonical vs sugar](https://core.lazybridge.com/concepts/canonical-vs-sugar/)
## Guides
- [Agent](https://core.lazybridge.com/guides/basic/agent/)
- [Tool](https://core.lazybridge.com/guides/basic/tool/)
- ...
Who reads it¶
A growing list of AI coding tools and LLM-side fetchers, including
agents that resolve llms.txt automatically when they see the
domain. The convention is best-effort: a tool that doesn't
support llms.txt still works against the regular HTML pages, and
a tool that does support it gets a more economical fetch path.
Major adoptions tracked in llmstxt.org's directory.
When to use which¶
llms.txtwhen the consuming tool fetches linked pages on demand (Claude Code, Cursor, Windsurf, Mintlify-hosted assistants, etc.). The index is small (~80 lines); the tool resolves only the pages it needs.llms-full.txtwhen the consuming tool can't dispatch per-page fetches. Paste the file into a long-context model (Anthropic 200K, Gemini 1M, OpenAI 1M tier) and ask the question directly.- Skill (Claude only) when you want enforcement — canonical- form rules, anti-pattern blacklist, trigger-driven loading. See Claude Skill install.
Generation¶
llms.txt and llms-full.txt are produced by the
mkdocs-llmstxt
plugin during mkdocs build. The plugin is configured in
mkdocs.yml:
plugins:
- llmstxt:
full_output: llms-full.txt
sections:
Concepts: ["concepts/*.md"]
Guides: ["guides/**/*.md"]
Recipes: ["recipes/*.md"]
Decisions: ["decisions/*.md"]
Reference: ["reference/*.md"]
Errors: ["errors.md"]
Re-runs on every push to main via .github/workflows/docs.yml.
You don't need to do anything to keep them up to date — they're
always current with the published site.
Caveats¶
llms-full.txtis large. Currently in the 500-800 KB range and growing each release; expect ~150-220k tokens after tokenisation. Comfortable on 200K+ context models, infeasible on 8K-32K window models — either chunk it or fall back to the per-page index.- The format is best-effort. Not every consumer respects
the
## Optionalsection convention or the "skip H1 narrative" hint. When in doubt, fetch the regular HTML pages. - Versioning. The corpus reflects the docs site at deploy time; if you need a stable historical version, fetch the GitHub-releases tarball of the docs branch.
See also¶
- For LLM assistants — overview — three surfaces (Skill / llms.txt / llms-full.txt) and when to use which.
- Claude Skill install — the skill alternative for Claude environments.
- llmstxt.org spec — the upstream convention.