Машинные выходы
Документация отдаётся в четырёх машинных видах. Все четыре собираются той же сборкой, что и сайт, из тех же файлов — не отдельным скриптом сбоку. Приделанное сбоку расходится с сайтом на третьем заходе, и расходится молча.
Точка входа: /llms.txt #
Карта разделов: заголовок, одна строка описания на раздел и перечень страниц со ссылками и описаниями. Небольшой файл, с которого модели стоит начинать.
curl -s https://docs-school.sersidteh.ru/llms.txt
Страницы, которые ещё не написаны, помечены прямо в списке — [страница ещё не написана].
Это сделано намеренно: модель, которая знает, что раздела нет, скажет об этом, а не
придумает содержимое.
Всё сразу: /llms-full.txt #
Вся документация одним текстом, страницы подряд, у каждой указан её адрес. Нужен, когда агент читает целиком и не хочет обходить страницы по одной.
curl -s https://docs-school.sersidteh.ru/llms-full.txt
Спецификация API: /openapi.draft.json #
OpenAPI 3.1. Из него собран Каталог ресурсов, из него же будут собраны клиентские библиотеки и MCP-сервер.
curl -s https://docs-school.sersidteh.ru/openapi.draft.json
Обратите внимание на имя файла. /openapi.json — конвенция: агент, который его
скачал, обоснованно считает, что перед ним рабочее API, и начинает дёргать адреса.
Здесь так делать нельзя, и поэтому конвенциональное имя не занято:
- публичного API в продукте ещё нет — маршрутов
/v1/*ноль; - спецификация собрана машинным разбором проектного документа, а не из кода;
- 60 путей из 226 выведены эвристикой из сокращённой записи каталога и помечены
x-lms-shorthand: true— эти адреса могут оказаться другими; - тел запросов и состава полей в ответах нет: у таких операций стоит
x-lms-unspecified.
У всего документа стоит x-lms-provisional: true. Проверять этот признак — самый дешёвый
способ не построить интеграцию на несуществующем API.
Когда API будет написано, спецификация начнёт собираться из zod-валидаторов и переедет
на /openapi.json. Адреса страниц справочника при этом не изменятся.
Подробнее — Чего в справочнике ещё нет.
Исходник любой страницы #
К адресу страницы добавляется .md — и вместо разметки сайта отдаётся её исходный текст.
curl -s https://docs-school.sersidteh.ru/api/errors.md
Работают оба написания: /api/errors.md и /api/errors/index.md. В <head> каждой
страницы на этот же файл стоит ссылка:
<link rel="alternate" type="text/markdown" href="/api/errors.md">
Почему сайт статический #
Содержимое отдаётся готовым HTML и не собирается скриптом в браузере. Причина простая: страница, пустая без JavaScript, для модели пустая. Из этого же следует остальное устройство сайта:
- заголовки и якоря стабильные — на них ссылаются и люди, и агенты, и ссылка не должна протухать от того, что мы переставили абзац;
- одна страница — одна тема: гигантская страница «всё про API» плоха и для поиска, и для контекста модели;
- поиск работает офлайн: индекс лежит рядом с сайтом, внешнего сервиса нет;
- ничего важного не спрятано в картинку — скриншот иллюстрирует, но не несёт сведений, которых нет в тексте.
Версия #
Каждая сборка называет версию продукта, на которой собрана: в подвале каждой страницы,
в шапке /llms.txt и в поле info.version спецификации.
Эта сборка — версия 0.1.0, сборка из коммита 933ad56 от 8 августа 2026.
Публичный сайт всегда показывает последнюю версию. Если у вас коробка другой версии, её собственный справочник лежит внутри установки и собран на её версии — внешняя документация врала бы половине покупателей.