# LLM-Readable Docs

These docs are built to be read by agents as easily as by people. Every
page has a markdown twin, and the whole corpus is published in the
formats LLM tooling already looks for — so you can point Claude (or any
agent) at Lakeshore and have it answer accurately.

## Fetch a single page

Append `.md` to any docs URL to get the raw markdown — no nav, no chrome:

```bash
curl https://lakeshore.dreamlake.ai/get-started/quick-start.md
```

The path mirrors the HTML route exactly; the site root is `/index.md`.
Every page also advertises its markdown twin in the HTML head:

```html
<link rel="alternate" type="text/markdown" href="/get-started/quick-start.md" />
```

## The whole site, two ways

- **[`/llms.txt`](https://lakeshore.dreamlake.ai/llms.txt)** — a short,
  linked index of every page, grouped by section, each with its
  one-line description ([llmstxt.org](https://llmstxt.org) standard).
  The entry point an agent reads first to decide what to fetch.
- **[`/llms-full.txt`](https://lakeshore.dreamlake.ai/llms-full.txt)** —
  every page concatenated into one markdown file, each preceded by a
  `Source:` line naming its canonical URL. Drop the entire product into
  a context window in a single request.

## Import it as a skill

The docs are also packaged as an
[Agent Skill](https://lakeshore.dreamlake.ai/skills/lakeshore.zip) — a
`SKILL.md` index plus one markdown reference file per page. Install it
so your agent loads Lakeshore knowledge on demand:

```bash
# Claude Code: drop it into your project (or ~/.claude) skills directory
curl -L https://lakeshore.dreamlake.ai/skills/lakeshore.zip -o lakeshore.zip
unzip lakeshore.zip -d .claude/skills/
```

The archive expands to `lakeshore/SKILL.md` plus `lakeshore/reference/`,
so the command above lands it at `.claude/skills/lakeshore/`.

## How the surfaces are generated

All four surfaces come from one script, `docs/scripts/gen-llms.mjs`,
which reads `docs/pages/**/+Page.mdx` and nothing else. It runs during
`pnpm build`, after the prerender and before the search index.

Two behaviours worth knowing when you read the output:

- **MDX is flattened to plain markdown.** `import` lines are dropped,
  `> **Note:** ` becomes a `> **Note:**` / `> **Warning:**` blockquote,
>   `` is unwrapped to its children, and any other capitalized JSX
>   tag is stripped. Code fences and tables pass through untouched.
> - **Internal links are rewritten per target.** In the `.md` pages and
>   `llms-full.txt` a link to `/get-started/queues` becomes
>   `/get-started/queues.md`; in the skill it becomes
>   `reference/get-started-queues.md`. Anchors survive. Links to paths that
>   are not published pages are left alone.
> 
> Pages marked `noindex: true` in their frontmatter are internal and are
> excluded from every artifact — the `.md` twin, both `llms` files, and the
> skill.
> 
> 
> **Always current.** Every surface above is regenerated from the same
> source on each deploy, so none of them can drift from what you read on
> the site. `pnpm --filter docs check:llms` reports whether the committed
> `skills/lakeshore/` tree is stale relative to the pages.
