Правила оформления документов
Версия: 1.0 Дата: 25.04.2026 Статус: Готов к обсуждению
Единые правила оформления MD-документов в системе документации. Действуют для всех проектов. Создавался на основе реального опыта работы с Docusaurus + Decap CMS + DocMap MCP, после ряда инцидентов, где неверное оформление ломало сборку, индексацию или CMS-редактор.
Принцип
Каждый создаваемый или правленый документ должен работать с первого раза:
- собираться Docusaurus (
npm run buildбез ошибок MDX); - открываться в Decap CMS (
/admin/index.html) для редактирования; - индексироваться DocMap MCP (
docs_searchнаходит его); - читаться человеком как связный русский текст.
Это достигается соблюдением чек-листа при создании и правке.
1. Frontmatter — обязательный шаблон
В начале каждого MD-документа:
---
title: "Название документа на русском (английский термин в скобках при необходимости)"
draft: false
---
Обязательные требования:
title:в двойных кавычках. Кавычки нужны, если в названии есть двоеточие, дефис рядом с кириллицей, кавычки внутри. Безопаснее — всегда в кавычках.draft: falseобязателен. Без него документ не виден в production build (npm run build) и в публичном экспорте. Decap CMS schema требует это поле.- Парные разделители
---сверху и снизу frontmatter. - Кодировка UTF-8 без BOM.
- Никаких legacy-полей:
sidebar_position,sidebar_label,id,slug— кроме редких случаев, когда документ требует особого порядка в сайдбаре с явным обоснованием.
Черновики (видны только в dev-сервере, не в production):
---
title: "Черновик"
draft: true
---
2. Шапка документа — обязательная после H1
После заголовка H1, через пустую строку — шапка с метаданными:
# Название документа на русском
**Версия:** 1.0
**Дата:** ДД.ММ.ГГГГ
**Статус:** Готов к обсуждению
Обязательные требования:
- H1 идентичен
title:во frontmatter (без кавычек). - Между H1 и
**Версия:**обязательная пустая строка. Без неё Decap CMS body parser не отделяет шапку от заголовка, и редактирование в CMS-админке выдаёт визуальные артефакты. **Версия:**повышается при существенных изменениях документа.**Дата:**обновляется при каждом существенном изменении (формат ДД.ММ.ГГГГ).**Статус:**— один из:Черновик— документ в работе, концепция не зафиксирована.Готов к обсуждению— концепция оформлена, ждёт ревью или утверждения.Утверждён— концепция принята, изменения только через явное согласование.Черновик (архивная версия)— документ переведён в архив, актуальная версия в другом файле.
Исключения (шапка не нужна):
index.mdпроекта — генерируется скриптомtools/build_project_index.sh._category_.json— JSON-конфиг, не MD-документ.- Навигационные
index.mdотдельных разделов — если есть.
3. Язык
3.1. Только русский в основном тексте
Все новые и обновляемые документы пишутся только на русском языке в человеко-читаемом формате оборотов речи.
3.2. Запрет смешения языков в одном предложении
Нельзя:
«platform должна различать quoted promise и settlement-relevant figures».
Нужно:
«Платформа должна различать зафиксированное коммерческое обещание (quoted promise) и величины, значимые для взаиморасчётов (settlement-relevant figures)».
3.3. Английские термины — обязательно с расшифровкой в скобках
При первом упоминании в документе и в каждом ключевом контексте — обязательная пара «русское пояснение (английский термин)»:
- «поверхность взаимодействия (surface)»;
- «коммерческая фиксация (quote, quoted promise)»;
- «повторная проверка (revalidation) и пересчёт цены (repricing)»;
- «взаиморасчёт с поставщиком (supplier settlement)»;
- «тенантная изоляция (tenant isolation)»;
- «учёт потребления (metering) и квоты (quotas)».
При повторном упоминании в одном документе допустимо использовать только русское пояснение или только английский термин — но не смешанный оборот.
3.4. Названия документов и заголовки — на русском
Заголовки H1–H6, названия разделов, label в _project_.json и _category_.json — на русском. Английский — в скобках как пояснение.
Примеры:
- ❌
# Tour Builder Domain — Композиция, черновики и публикации - ✅
# Домен сборки тура (Tour Builder) — композиция, черновики и публикации
3.5. Имена сущностей в коде — на английском
Имена сущностей в JSON, YAML, кода — оставляются на английском (как в реальной системе): Property, Offer, Quote, Booking, pending_supplier_confirmation. В русском тексте — обязательное пояснение: «коммерческая фиксация (Quote)», «состояние ожидания подтверждения поставщика (pending_supplier_confirmation)».
3.6. Исключения
- Цитаты внешних источников (контракты поставщиков на английском) — оригинал + перевод.
- Нормативы (GDPR, EU TOMS, Package Travel Directive 2015/2302, PSD2 SCA) — официальное английское название + русская расшифровка.
- Имена технологий и протоколов (PostgreSQL, Redis, Kubernetes, OpenAPI, AsyncAPI, gRPC, JSON, MDX) — без перевода.
4. MDX-безопасное написание
DocMap-индексируемые документы рендерятся Docusaurus с MDX-парсером. MDX трактует любой < за которым идёт цифра или буква как начало JSX-тега. Это ломает сборку.
Опасные конструкции:
- ❌
<2s,<500ms,<1.5s,<15 min— парсер ищет JSX-тег<2s>. - ❌
>2 сервиса— обычно работает, но небезопасно. - ❌
<TagName>— если не намеренный JSX, парсится как открытие компонента.
Безопасные формы:
- ✅
<2s,<500ms— HTML-entity, визуально идентично, парсер не путает. - ✅
< 2s— с пробелом, если стилистически уместен. - ✅
`<2s`— внутри backtick-кода MDX не парсит JSX. - ✅ Внутри
``` ```(fenced code block) — всё безопасно.
Обязательная проверка после записи документа:
grep -nE '<[0-9]' путь/к/файлу.md # должно быть пусто
grep -nE '>[0-9]' путь/к/файлу.md # обычно пусто
При совпадениях — массовая замена:
sed -i 's/<\([0-9]\)/\<\1/g' путь/к/файлу.md
Подробности и причины — в MDX-безопасное написание.
5. Имена файлов
- Имя файла на русском с пробелами допустимо:
Правила оформления документов.md,Деплой на VPS — Docker + Traefik.md. Это договорённость существующих документовcms-system. - Расширение
.mdобязательно. - Без точек в имени кроме расширения.
- Архивные документы — суффикс
-old-YYYY-MM-DD:Имя документа-old-2026-04-25.md.
В технических slug-папках (docs/<project-slug>/, assets/, <section>/) — только латиница строчная, цифры, дефис: vitiana-api-platform, compliance-and-legal. Пробелы и кириллица в slug запрещены.
6. Размещение документа
Документ кладётся в один из четырёх стандартных разделов проекта:
overview/— зачем существует проект, контекст, архитектура, ключевые решения, манифест.reference/— точные спецификации, схемы, контракты, конфиги, доменные модели.operations/— как запускать, деплоить, обслуживать, чинить, runbook, SLA, DR.development/— роадмап, ADR, планы, история изменений, ТЗ подрядчику, governance.
В корне проекта (docs/<slug>/) лежат только _project_.json, index.md (генерируемый), assets/ (медиа). Документы в корне проекта запрещены.
В корне docs/ лежат только папки проектов. Документы в корне docs/ запрещены.
7. Связанная документация — обязательная секция в конце
В конце каждого документа — секция ## Связанная документация с явными markdown-ссылками на верхнеуровневые документы и соседние reference-документы:
## Связанная документация
- [Закон 00000 — платформа главенствует над поставщиками](../development/Закон%2000000%20—%20платформа%20главенствует%20над%20поставщиками.md) — высший приоритет.
- [MDX-безопасное написание](MDX-безопасное%20написание.md) — техника безопасности при правке.
Никаких «висящих» утверждений без обоснования и ссылки.
8. Картинки и медиафайлы
Источник правды — папка assets/ внутри папки проекта:
docs/
vitiana-api-platform/
assets/
architecture.jpg
Скрипт tools/sync_assets.sh синхронизирует assets/ → static/<slug>/ перед каждой сборкой. Папка static/<slug>/ — производная, не редактировать вручную.
Синтаксис вставки в MD-документ:

Путь начинается с / — абсолютный от корня сайта. Тег <img> не использовать — создаёт проблемы компиляции MDX.
Запрещено:
- Картинки в
static/напрямую — синхронизация затрёт. - Картинки в
docs/_uploads/(временная папка для CMS-загрузок, в.gitignore).
9. Создание нового документа — порядок
- Определить раздел:
overview//reference//operations//development/. docs_search(тема, project="<slug>")— найти соседние документы для контекста.docs_get_section— прочитать релевантные секции соседей.- Спроектировать структуру нового документа (заголовки H2/H3).
docs_create_fileсо стандартным frontmatter и шапкой.- Развернуть содержание секциями.
- Секция
## Связанная документацияв конце. - После записи:
grep -nE '<[0-9]'для MDX-safe. - После записи:
docs_search(ключевое_слово)— документ должен появиться в результатах (DocMap watcher переиндексировал). - Если новый файл изменил структуру разделов —
tools/build_project_index.sh <slug>для перегенерацииindex.mdпроекта.
10. Правка существующего документа — порядок
docs_get_section— прочитать текущее содержимое нужной секции.docs_links(section_id, direction="both")— получить forward-links и backlinks.- Прочитать соседние документы из backlinks (контекст связанных логик).
- Обновить только нужное через
docs_patch_section(тело секции, заголовок не меняется). - Поднять
**Версия:**и**Дата:**в шапке при существенных изменениях. - После записи:
grep -nE '<[0-9]'для MDX-safe на новом теле. - После записи:
docs_linksдля проверки целостности обратных ссылок.
11. Архивация документа
Если документ заменяется новой версией — переводить в архив, не удалять содержимое:
docs_rename_file <file>.md → <file>-old-YYYY-MM-DD.md.docs_patch_sectionшапки — поменять frontmatter и шапку:
---
title: "Оригинальное название (архивная версия 2.0)"
draft: false
---
# Оригинальное название (архивная версия 2.0)
**Версия:** 2.0 (архивная)
**Дата:** [исходная дата] (создание), ДД.ММ.ГГГГ (архивация)
**Статус:** Черновик (архивная версия)
> ⚠ **Этот документ переведён в архивный режим [дата].** Актуальная версия — [Имя нового документа](Имя%20нового%20документа.md). Документ сохранён как историческая запись.
Никогда не удалять содержимое архивного документа.
Подробности — в Архивация документов — никогда не удалять.
12. Запрещённые паттерны
- ❌ Запись документа без
draft: falseво frontmatter. - ❌ Запись документа без пустой строки между H1 и шапкой.
- ❌ Запись документа без MDX-safe проверки.
- ❌ Документ в корне проекта или в корне
docs/(только вoverview/reference/operations/development/). - ❌ Картинки в
static/напрямую. - ❌
index.mdпроекта вручную (только черезtools/build_project_index.sh). - ❌
_project_.jsonaccess[]вручную (только черезtools/add_user.sh). - ❌
static/admin/index.htmlCREDENTIALS_HASHвручную (только черезtools/add_user.sh --admin). - ❌
docusaurus.config.tsurl/titleвручную (только черезcms-config.json). - ❌ Удаление содержимого архивного документа (только rename + статус Черновик).
- ❌ Смешение русского и английского в одном предложении.
- ❌ Английский термин без русской расшифровки при первом упоминании.
Связанная документация
- Стандарт работы с системой документации — настройка, потоки работы, структура папок, деплой.
- MDX-безопасное написание — голый
<ломает Docusaurus. - Архивация документов — никогда не удалять — правила архивации.
- Чек-лист — создавать так чтобы сразу работало — обязательные проверки до и после записи.
- Диагностика CMS — порядок проверок — алгоритм при ошибках CMS.
- ИИ-агент — Свод законов — общие законы поведения агента в системе документации.
- ИИ-агент — Настройка и интеграция — хук, защита системных файлов.