# llms.txt examples: advanced files explained

> Complex llms.txt setups explained: several languages, versions, monorepo packages and services, the full-text file, a CI build, and real files from well-known sites

Page: https://llms-full-txt.ru/en/examples/advanced/
Site index: https://llms-full-txt.ru/en/llms.txt

One file in the root suits a small site. When a project has several languages, versions, packages or services, there are several files, and the [second edition of the proposal](https://llmstxt.org/) says how an agent chooses between them: the most specific file that covers the page wins.

Below are six scenarios. Each has a diagram, a file structure, an example and a typical mistake.

| Scenario | How many files | Main idea |
|---|---|---|
| [Several languages](#several-languages) | one per language | a language file sits in the language subpath |
| [Several versions](#several-versions) | one per version | the root file leads to the current one |
| [Monorepo](#monorepo) | root and packages | the root is a table of contents, details live in packages |
| [Microservices](#microservices) | root and services | one entry, then by service |
| [Index and full text](#index-and-full-text) | two | the index is required, the full text is not |
| [Build in CI](#build-in-ci) | as many as needed | the file is rebuilt on every change |

## Several languages

- The site has several language versions in subpaths: /ru/, /es/.
- Putting all languages into one root file. An agent gets a mix and cannot tell which version it needs.
- The proposal does not define the language of the root file on a multilingual site: it is an open question (issue 147 in the repository).

- **llms.txt** the English version, covers the whole site
- ru/
  - **llms.txt** the Russian version, covers /ru/
- es/
  - **llms.txt** the Spanish version, covers /es/

**/llms.txt**

```markdown title="llms.txt"
# Documentation Hub

> Comprehensive guides and API reference for developers.

## Getting Started

- [Quick Start](https://docs.example.com/en/quickstart.md): 5-minute setup guide
- [Installation](https://docs.example.com/en/install.md): System requirements

## API Reference

- [REST API](https://docs.example.com/en/api/rest.md): HTTP endpoints
```

**/ru/llms.txt**

```markdown title="ru/llms.txt"
# Документация

> Подробные руководства и справочник API для разработчиков.

## Начало работы

- [Быстрый старт](https://docs.example.com/ru/quickstart.md): настройка за 5 минут
- [Установка](https://docs.example.com/ru/install.md): системные требования

## Справочник API

- [REST API](https://docs.example.com/ru/api/rest.md): HTTP-методы
```

## Several versions

- The documentation keeps several product versions: /docs/v3/, /docs/v2/.
- Leaving links to an old version in the root file. An agent will write code for an outdated API.

- What an agent reads
- A question without a version
- Root file
- /llms.txt
- Current version
- /docs/v3/
- A question about an old version
- Version file
- /docs/v2/llms.txt
- Pages of that version
- /docs/v2/

```markdown title="llms.txt"
# MyLibrary v3.0

> Modern JavaScript utility library (current stable).

## Documentation

- [Migration from v2](https://mylib.dev/docs/v3/migration.md): Breaking changes
- [API Reference](https://mylib.dev/docs/v3/api.md): Complete API docs

## Optional

- [v2 llms.txt](https://mylib.dev/docs/v2/llms.txt): Previous stable version
- [v1 llms.txt](https://mylib.dev/docs/v1/llms.txt): Deprecated
```

## Monorepo

- One site documents several packages, each with its own section.
- Listing every page of every package in the root. The file stops fitting into the context.
- OpenAI: a root file and nested indexes for /api, /codex and /commerce.

- **llms.txt** table of contents: one line per package
- core/
  - **llms.txt** everything about the core
- cli/
  - **llms.txt** everything about the command line
- plugins/
  - **llms.txt** everything about plugins

```markdown title="llms.txt"
# Acme Platform

> Monorepo containing all Acme packages and services.

## Packages

- [Core](https://acme.dev/core/llms.txt): Core library and shared utilities
- [CLI](https://acme.dev/cli/llms.txt): Command-line interface
- [Plugins](https://acme.dev/plugins/llms.txt): Plugin system

## Guides

- [Getting Started](https://acme.dev/guides/quickstart.md): First steps
- [Architecture](https://acme.dev/guides/architecture.md): How the packages fit together
```

## Microservices

- The documentation describes a set of services with different APIs.
- Mixing public and internal services. Only what is open to everyone goes into the file: llms.txt does not restrict access.

- One entry, then by service
- Agent
- looks for how to accept a payment
- Root file
- /llms.txt
- the list of services
- Service file
- /billing/llms.txt
- billing pages
- The page
- /billing/payments.md

```markdown title="llms.txt"
# Platform API Documentation

> Microservices platform for e-commerce operations.

## Services

- [Auth](https://docs.platform.io/auth/llms.txt): Authentication and authorization
- [Users](https://docs.platform.io/users/llms.txt): User management
- [Orders](https://docs.platform.io/orders/llms.txt): Order processing
- [Billing](https://docs.platform.io/billing/llms.txt): Payments and invoices

## Optional

- [Status Page](https://status.platform.io): Service health
```

## Index and full text

- An agent sometimes needs the whole documentation text in one request.
- Treating llms-full.txt as part of the proposal. It is a practice of documentation platforms, and the file is not required.
- Stripe does without the full file. At Cloudflare it takes 67 MB.

- What each file holds
- llms.txt
- links
- section -> link -> link
- Read first
- Kilobytes
- llms-full.txt
- the page text itself
- page -> page -> page
- Read when the whole corpus is needed
- From hundreds of kilobytes to tens of megabytes

**llms.txt**

```markdown title="llms.txt"
# Framework Documentation

> Full-stack web framework for building modern applications.

## Core

- [Getting Started](https://framework.dev/docs/start.md): Installation and first app
- [Routing](https://framework.dev/docs/routing.md): File-based routing
- [Middleware](https://framework.dev/docs/middleware.md): Request and response middleware

## Optional

- [Full text](https://framework.dev/llms-full.txt): All pages in one file
```

**llms-full.txt**

```markdown title="llms-full.txt"
# Framework Documentation

> Full-stack web framework for building modern applications.

## Getting Started

Install the framework:

    npm install framework

Create the first application...

## Routing

Routes are created from files in the pages directory...

## Middleware

Middleware functions have access to the request and the response...
```

## Build in CI

- The documentation changes often, and the file cannot be kept by hand.
- Rebuilding the file once a quarter. Links die sooner: three examples in the previous version of this page already answered 404.

- The file is built together with the site
- Change
- docs/**
- a page edit
- Build
- the generator reads the sitemap
- Check
- every link answers 200
- Publish
- public/llms.txt

```yaml title=".github/workflows/llms.yml" {16-19}
name: Update llms.txt

on:
  push:
    paths:
      - 'docs/**'
  schedule:
    - cron: '0 0 * * 0'

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Generate llms.txt
        run: |
          npx llmstxt gen https://docs.example.com/sitemap.xml \
            -ep "**/blog/**" -t "My Docs" > public/llms.txt

      - name: Commit and push
        run: |
          git config user.name "GitHub Action"
          git config user.email "action@github.com"
          git add public/llms.txt
          git diff --staged --quiet || git commit -m "Update llms.txt"
          git push
```

The generator commands are described on the [llmstxt CLI](https://llms-full-txt.ru/en/tools/llmstxt-cli/) page.

## Real files

Every address opened on the day of the check. For each one we say what the file shows and what it does not prove.

- [OpenAI](https://developers.openai.com/llms.txt): A root index plus nested files for /api, /codex, /commerce. Does not prove: that chatgpt reads other sites’ llms.txt.
- [Anthropic](https://platform.claude.com/llms.txt): A docs index and the full text in one file. Does not prove: that claude reads other sites’ llms.txt.
- [Cloudflare](https://developers.cloudflare.com/llms.txt): A very large index: the full text takes 67 MB. Does not prove: that a file this big is usable by an agent as a whole.
- [Stripe](https://docs.stripe.com/llms.txt): llms-full.txt is not required: an index and Markdown pages are enough. Does not prove: that skipping the full file is a general rule.
- [Cursor](https://cursor.com/llms.txt): The only measured site with rel=describedby from the second edition. Does not prove: that the second edition is widely adopted.
- [GitHub Docs](https://docs.github.com/llms.txt): An index without a full file on large docs. Does not prove: that copilot relies on this file.
- [Mintlify](https://www.mintlify.com/docs/llms.txt): The platform generates the files automatically for every site it hosts. Does not prove: the quality of each generated file.
- [Yandex Cloud](https://yandex.cloud/llms.txt): An example on a Russian site. Does not prove: that yandex search uses such files.

Checked October 3, 2026.

## What next

- [Basic examples](https://llms-full-txt.ru/en/examples/basic/) - where a small site starts.
- [File format](https://llms-full-txt.ru/en/specification/format/) - the rules of the second edition.
- [Best practices](https://llms-full-txt.ru/en/guides/best-practices/) - a checklist.
