For Agents
/llms.txt — Page Index
llmstxt.org-style enumeration of every page on this docs site.
/llms.txt is an enumeration of every page on this docs
site, in the llmstxt.org plain-text format.
curl https://docs.tryharbor.ai/llms.txtFormat
# Harbor Documentation
> Shared workspace to make AI agents faster, deterministic, and token-efficient.
## Agent skills (canonical, machine-readable)
- [Harbor meta skill](https://docs.tryharbor.ai/.well-known/agent-skills/harbor/SKILL.md)
- [Plugins](https://docs.tryharbor.ai/.well-known/agent-skills/harbor/harbor-plugins.md)
- ...
## Documentation
- [Welcome to Harbor](https://docs.tryharbor.ai/documentation/overview) — Shared workspace to make AI agents faster, deterministic, and token-efficient.
- [Why Harbor](https://docs.tryharbor.ai/documentation/why-harbor) — Models change. The context layer should not.
- ...What's in it
- Agent skills section — links to the canonical
/.well-known/agent-skills/harbor/*.mdsurface. - Documentation section — every MDX page on the site, with its title and one-line description.
The list is generated from the page tree at build time, so it stays in sync as we add or remove pages.
How to use it
// In an agent host: enumerate before crawling
const resp = await fetch("https://docs.tryharbor.ai/llms.txt");
const lines = (await resp.text()).split("\n");
const pages = lines
.filter((l) => l.startsWith("- ["))
.map((l) => {
const m = l.match(/^- \[(.+?)\]\((.+?)\)(?: — (.+))?$/);
return m ? { title: m[1], url: m[2], description: m[3] ?? "" } : null;
})
.filter(Boolean);Then fetch the specific page bodies you care about by URL.
A /llms-full.txt (every page body, concatenated) is on the roadmap. For
now, fetch what you need by URL.
Cache headers
content-type: text/plain; charset=utf-8
cache-control: public, max-age=300, s-maxage=86400, stale-while-revalidate=2592000You can cache aggressively. The page tree changes when we ship new docs.