Files
slm-design/CONTRIBUTING.md

122 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

# Правила работы над документацией
Мета-документ: как устроен проект, как писать и редактировать разделы.
## О проекте
Сайт-документация архитектуры SLM Design с лендингом.
- Лендинг: React + Vite
- Документация: VitePress
- Язык: русский
- Документация: `docs/architecture/`
## Команды
| Команда | Что делает |
|---------|-----------|
| `npm run dev` | Локальный сервер лендинга |
| `npm run build` | Сборка лендинга |
| `npm run docs:dev` | Локальный сервер документации |
| `npm run docs:build` | Сборка документации |
| `npm run generate` | Генерация артефактов (llms.txt, llms-full.txt, ARCHITECTURE.md, ZIP, README) |
## Структура файлов
```
docs/
├── index.md # Страница навигации по документации
└── architecture/ # Разделы архитектуры
├── index.md # Обзор SLM Design
├── layers.md # Слои
├── modules.md # Модули
└── segments.md # Сегменты
.vitepress/
├── config.ts # Конфигурация VitePress, сайдбар
public/
├── llms.txt # Карта документации для LLM
├── llms-full.txt # Полная документация в одном файле
└── ARCHITECTURE.md # Единый файл архитектуры
generate.ts # Скрипт генерации артефактов
src/ # Исходники лендинга (React + Vite)
```
### Добавление нового раздела
1. Создать `.md`-файл в `docs/architecture/`.
2. Добавить пункт в сайдбар — `.vitepress/config.ts`.
3. Добавить `description` в frontmatter файла — используется для `llms.txt`.
4. Запустить `npm run generate` для обновления артефактов.
## Frontmatter
Каждый `.md`-файл начинается с YAML frontmatter:
```yaml
---
title: Название раздела
description: Краткое описание для llms.txt
---
```
- `title` — совпадает с `h1`-заголовком в файле.
- `description` — кратное описание содержимого страницы, используется при генерации `llms.txt`.
## Структура страницы документации
Каждая страница начинается одинаково:
1. **Заголовок** (`h1`) — совпадает с `title` из frontmatter.
2. **Описание раздела** — 12 строки сразу после заголовка. Говорит, что это за раздел, какую информацию он описывает и что читатель в нём получит.
3. **Определение** (`## Определение`) — для справочных страниц, посвящённых одному термину. Короткая формулировка жирным: что это за сущность и какую роль она играет.
4. **Контент** — остальные `h2`-подразделы.
## Конвенции оформления
### Заголовки
- Один `h1` на файл — совпадает с `title` из frontmatter.
- Сразу после `h1` — описание раздела (12 предложения).
- Основные секции — `h2`.
- Подсекции внутри `h2``h3`.
- `h4` не используется.
### Примеры кода
- Блоки кода с указанием языка: ` ```tsx `, ` ```css `, ` ```bash `, ` ```text `.
- Путь к файлу указывается перед блоком кода текстом или комментарием внутри блока.
- Дерево файлов — ` ```text ` с символами `├──`, `└──`, `│`.
### Блоки «Хорошо / Плохо»
Используются для контрастного сравнения правильного и неправильного подхода.
```markdown
**Хорошо:**
\`\`\`tsx
// правильный код
\`\`\`
**Плохо:**
\`\`\`tsx
// неправильный код
\`\`\`
```
### Таблицы
Используются для структурированных перечислений: настройки, команды, соответствия.
Формат — стандартный Markdown: `| Ключ | Описание |`.
### Ссылки между разделами
Раздел может ссылаться на другие разделы, но не дублирует их содержимое.
## Принципы
1. **Не дублировать.** Одна мысль живёт в одном месте. Остальные ссылаются.
2. **Пустые секции не создавать.** Если для раздела нет специфики — секция не создаётся.
3. **Примеры обязательны.** Раздел без примеров кода — незавершён.