Документация: сборка, публикация, синхронизация
Что это
Публичная база знаний — сайт на Docusaurus в каталоге website/. Она часть продукта: контент
синхронизируется с кодом и проверяется в CI. Ручной сайдбар не ведётся — навигация
генерируется из дерева папок и файлов _category_.json (website/sidebars.ts), поэтому добавить
статью — значит создать один Markdown-файл.
Где что лежит
website/docs/**— статьи (Markdown/MDX), сгруппированные по папкам-разделам.website/docusaurus.config.ts— конфигурация сайта, локали, тема, ссылки.website/package.json— npm-скрипты сборки и проверок.scripts/docs/— генератор reference и линтеры документации..github/workflows/docs.yml— проверки и публикация в CI.
Локальный запуск
Из каталога website/:
npm install # или npm ci для точной установки из lock-файла
npm start # dev-сервер с горячей перезагрузкой
npm run build # продакшн-сборка
npm run serve # отдать уже собранный сайт
Сборка строгая: onBrokenLinks, onBrokenAnchors и onBrokenMarkdownLinks установлены в
throw (website/docusaurus.config.ts), поэтому любая битая ссылка валит npm run build.
Поиск полностью локальный (плагин docusaurus-search-local), без обращений к сети.
Генератор reference
scripts/docs/gen_reference.py — единственный источник машинных reference-страниц
(дерево CLI, флаги функций, типы узлов workflow, UI-маршруты, Agents/Skills HTTP API и
метаданные реестра схем). Он
не пишет прозу — только выгружает контракты, которые уже есть в коде.
python3 scripts/docs/gen_reference.py --write # (пере)сгенерировать страницы
python3 scripts/docs/gen_reference.py --check # упасть, если страницы устарели
Каждая сгенерированная страница несёт баннер «Generated — do not edit». Правьте контракт в коде, затем перегенерируйте; вручную такие страницы не редактируют.
Проверки качества
Помимо сборки сайта запускаются три линтера (в website/package.json они также доступны как
npm-скрипты check:reference, check:coverage, check:frontmatter):
scripts/docs/coverage_check.py— сопоставляет реальные поверхности (CLI-команды, веб-маршруты, флаги, реестр схем) со страницами и ловит недокументированный маршрут, «страницу-сироту», пропущенную CLI-команду и не раскрытый отключённый по умолчанию флаг.scripts/docs/frontmatter_lint.py— проверяет обязательный frontmatter и статус, уникальность слагов, реальность флагов/команд и разрешимость ссылок, ищет абсолютные пути и утечки секретов.scripts/docs/docs_impact_check.py— падает, если изменение публичной поверхности не тронулоwebsite/docs/**; escape-hatch — обоснованныйdocs-not-needed.
Правило синхронизации
Проектная политика проста: не держать вторую копию правил. CLAUDE.md указывает читать
AGENTS.md, а не заводить параллельный свод политик. Практическое следствие для документации:
публичные изменения документируются в том же change set (см.
Участие в разработке), а отключённые по умолчанию функции
описываются как off и через какой шлюз включаются, а не как рабочие (см.
Что отключено по умолчанию).
Публикация на GitHub Pages
CI-процесс — .github/workflows/docs.yml. На PR и пуш в main выполняется job проверок
(генератор --check, три линтера, npm ci, npm run build). Job публикации выполняется
только на пуше в main и шлюзован:
- Владелец репозитория включает GitHub Pages.
- Канонический GitHub owner —
romarayt; каноническое имя репозиторияraytsystem-public-osуже задано по умолчанию. Значения можно переопределить черезDOCS_ORG/DOCS_REPO/DOCS_URL/DOCS_BASE_URL.
Не публикуйте без разрешения: деплой не запускается на форках и на PR, только на main после
прохождения всех проверок.
Пример
python3 scripts/docs/gen_reference.py --check # reference актуален?
python3 scripts/docs/coverage_check.py # поверхности покрыты?
npm --prefix website run build # сборка со строгой проверкой ссылок
Ожидаемый результат
gen_reference.py --checkи три линтера завершаются без ошибок.npm run buildсобирает статический сайт вwebsite/buildбез битых ссылок.- Публикация происходит автоматически только после мёржа в
mainпри включённых Pages.
Ограничения и безопасность
- Генератор reference читает только публичные контракты и никогда не выводит абсолютные пути
или секреты; значения-по-умолчанию, похожие на локальный путь, скрываются
(
scripts/docs/gen_reference.py). - Не вставляйте в статьи абсолютные пути файловой системы, ключи или PII —
frontmatter_lint.pyих отклонит. - Пока плейсхолдеры не заменены, сайт собирается локально, но не должен публиковаться наружу.
Частые ошибки
- Ручная правка сгенерированной reference-страницы: изменения потеряются, а
--checkупадёт. - Ссылка на несуществующий слаг:
npm run buildпадает из-заonBrokenLinks: throw. - Изменили публичную поверхность без обновления
website/docs/**: падаетdocs_impact_check.py.
Связанные страницы
- Участие в разработке
- Покрытие документации
- Что отключено по умолчанию
- Справочники: CLI, флаги функций, маршруты, HTTP API Agents/Skills
Источники истины
website/docusaurus.config.tswebsite/package.jsonwebsite/sidebars.tsscripts/docs/gen_reference.pyscripts/docs/coverage_check.pyscripts/docs/frontmatter_lint.pyscripts/docs/docs_impact_check.py.github/workflows/docs.yml