Files
2026-03-30 09:31:20 +03:00

262 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STRUCTURE.md — Инструкция по структуре курсов
Этот файл описывает формат и правила работы с курсами.
Прочитай его перед созданием нового курса или началом обучения.
---
## Структура директорий
```
~/courses/
├── CLAUDE.md # Точка входа для Claude Code → ссылка на AGENTS.md
├── AGENTS.md # Оркестрация: старт, режимы, права на файлы
├── TUTOR.md # Поведение тьютора: тон, адаптация, диалог
├── PROFILE.md # Профиль ученика (опыт, стиль, предпочтения)
├── STRUCTURE.md # Этот файл — правила и формат
├── <slug-курса>/ # Папка курса (kebab-case, латиница)
│ ├── course.md # План, метаданные, прогресс
│ ├── summary.md # Итоговое саммари (создаётся при завершении курса)
│ └── modules/
│ ├── 01-<slug-модуля>/ # Создаётся при создании курса
│ │ ├── lesson.md # Тезисы и ключевые концепции
│ │ └── notes.md # Заметки ученика (создаётся при обучении)
│ ├── 02-<slug-модуля>/ # Создаётся когда ученик готов перейти к модулю
│ │ ├── lesson.md
│ │ └── notes.md
│ └── ...
```
### Правила именования
- Папка курса: `kebab-case`, латиница, без пробелов. Примеры: `dns-deep-dive`, `linux-networking`, `python-async`
- Папки модулей: `NN-slug`, где NN — порядковый номер с ведущим нулём. Примеры: `01-basics`, `02-record-types`, `13-advanced-topics`
- Обязательные файлы: `course.md`, `lesson.md`, `notes.md`, `summary.md` — форматы описаны ниже
- Практические артефакты (код, конфиги, скрипты) могут находиться в папке курса или модуля без ограничений
---
## Создание нового курса
### Шаг 1 — Сбор контекста
Прочитай `PROFILE.md`. Затем выясни у ученика:
1. **Тема**: что конкретно хочет изучить
2. **Цель**: что хочет уметь делать после курса (не "знать", а "уметь")
3. **Уровень входа**: что уже знает по этой теме
4. **Фокус**: какие аспекты особенно важны или интересны
5. **Антифокус**: что можно пропустить или дать обзорно
Если ученик пришёл с готовым планом — пропусти интервью, переходи к шагу 2.
### Шаг 2 — Составление плана
Предложи план из **512 модулей**. Каждый модуль — это одна учебная сессия на 30–90 минут. Придерживайся принципов:
- От простого к сложному
- Каждый модуль опирается на предыдущие
- Практические модули чередуются с теоретическими
- Последний модуль — интеграция знаний или реальный проект
Покажи план ученику, обсуди, скорректируй. Только после согласования — создавай файлы.
### Шаг 3 — Создание файлов
Создай только начальную структуру:
1. Папку курса `~/courses/<slug>/`
2. `course.md` — по формату ниже (с полным планом всех модулей)
3. Папку первого модуля `modules/01-slug/`
4. `lesson.md` первого модуля — по формату ниже
5. **Не создавай** папки и lesson.md остальных модулей — они создаются по мере прохождения курса
6. **Не создавай** `notes.md` заранее — он появится при обучении
### Создание следующего модуля
Папка и lesson.md следующего модуля создаются **только по команде ученика**:
"далее", "следующий модуль", "переходим к модулю N" и т.п.
При создании lesson.md учитывай контекст пройденного обучения:
1. Прочитай notes.md всех завершённых модулей — вопросы, ошибки, инсайты
2. Учти, какие темы потребовали больше объяснений, а что далось легко
3. Скорректируй глубину, акценты и примеры в lesson.md нового модуля
4. Создай папку `modules/NN-slug/` и `lesson.md`
План модулей в course.md (названия и порядок) остаётся ориентиром, но содержание lesson.md адаптируется под ученика.
### Изменение плана на ходу
course.md — живой документ. По ходу курса план можно адаптировать:
- Добавить модуль, если тема оказалась сложнее или шире ожидаемого
- Убрать модуль, если тема уже покрыта или неактуальна
- Переформулировать модуль с учётом хода обучения
Любые изменения плана — только с согласия ученика.
---
## Формат course.md
```markdown
# <Название курса>
## Метаданные
- Создан: <YYYY-MM-DD>
- Цель: <что ученик сможет делать после курса>
- Уровень входа: <что ученик уже знает по теме>
- Ожидаемое время: <примерная оценка в часах>
## Прогресс
- [ ] 01 — <Название модуля>: <краткое описание в 5–10 слов>
- [ ] 02 — <Название модуля>: <краткое описание>
- [ ] 03 — <Название модуля>: <краткое описание>
...
## Заметки
<Свободное поле: зачем ученик начал курс, что важно помнить, контекст>
```
### Правила для course.md
- Прогресс — это чеклист в формате `- [ ]` / `- [x]`
- Номер в прогрессе совпадает с номером папки модуля
- Описание после тире — то же, что title в lesson.md
- Раздел "Заметки" — для контекста, не для трекинга
---
## Формат lesson.md
```markdown
# Модуль NN: <Название>
## Ключевые концепции
### <Концепция 1>
- Тезис или факт
- Тезис или факт
- Важный нюанс или ограничение
### <Концепция 2>
- Тезис или факт
- Связь с другими концепциями
- Частая ошибка или заблуждение
...
## Практика
- <Конкретное задание или действие>
- <Что попробовать руками>
- <Что проверить или исследовать>
## Связи с другими модулями
- Модуль NN: <как связан>
- Модуль NN: <как связан>
```
### Правила для lesson.md
- **Формат: тезисы, не конспект.** Каждый пункт — одно утверждение или факт. Без воды, вводных слов и переходов. Агент раскроет детали в диалоге.
- **Концепции, а не шаги.** Lesson.md описывает *что нужно понять*, а не *что агент должен рассказать*. Это карта знаний, не сценарий урока.
- **Практика обязательна.** Каждый модуль содержит хотя бы одно задание, которое ученик может выполнить.
- **Связи обязательны.** Указывай, как модуль связан с другими. Это помогает и ученику, и агенту.
- **Техническая терминология** — оригинальная (английская), с пояснением при первом использовании в рамках курса.
- **Объём** — 15–40 тезисов на модуль. Если больше — разбей модуль на два.
---
## Формат notes.md
```markdown
# Заметки: Модуль NN — <Название>
## Заметки ученика
- <Записи, добавленные по явной просьбе ученика во время обучения>
## Саммари модуля
- **Вопросы**: какие вопросы возникали
- **Легко**: что далось без затруднений
- **Сложно**: что потребовало дополнительных объяснений
- **Ошибки**: что не получилось на проверке
- **Наблюдения**: другая информация для рефлексии
```
### Правила для notes.md
- Создаётся **только во время обучения**, не заранее
- **Заметки ученика** — добавляются только по явной просьбе ученика ("запиши", "запомни", "добавь в заметки"). Агент не записывает заметки по своей инициативе
- **Саммари модуля** — пишет агент при завершении модуля, перед переходом к следующему. Это рефлексия по итогам прохождения: что спрашивал, что было легко/сложно, где ошибался, что важно учесть дальше
- notes.md — собственность ученика. Не удаляй содержимое, только дополняй
---
## Формат summary.md
Создаётся при завершении курса (все модули отмечены `[x]`). Располагается рядом с `course.md`.
```markdown
# Итоги курса: <Название>
## Что изучено
- <Ключевые знания и навыки, которые ученик получил>
## Что было сложным
- <Темы или концепции, которые потребовали больше усилий>
## Что далось легко
- <Темы, которые ученик освоил быстро>
## Рекомендации
- <Что изучить дальше, какие темы углубить, какие смежные области посмотреть>
```
### Правила для summary.md
- Создаётся **только при завершении курса**, не раньше
- Агент пишет summary.md на основе всех notes.md и хода обучения
- Раздел "Рекомендации" — конкретные направления, не общие фразы
---
## Отметка прогресса
### Когда модуль считается завершённым
Модуль отмечается `[x]` в `course.md` когда выполнены **оба условия**:
1. **Материал разобран** — ученик прошёл через все концепции из lesson.md
2. **Проверка пройдена** — ученик верно ответил на 3–5 вопросов разного типа:
- Концептуальный: "Почему X работает именно так?"
- Практический: "Какой командой / каким способом сделать Y?"
- Сценарный: "Что произойдёт, если Z?"
### Как отмечать
В `course.md` заменить `- [ ]` на `- [x]` для соответствующего модуля:
```
До: - [ ] 03 — Процесс резолвинга: рекурсия, итерация, кэширование
После: - [x] 03 — Процесс резолвинга: рекурсия, итерация, кэширование
```
### Когда НЕ отмечать
- Ученик попросил "просто расскажи" без проверки — не отмечай
- Ученик не смог ответить на проверочные вопросы — объясни заново, попробуй позже
- Ученик явно пропустил модуль ("это я знаю, дальше") — можно отметить, но сначала задай 2 быстрых вопроса для подтверждения
### Снятие отметки
Если при ревизии (режим review) ученик не помнит материал пройденного модуля — сними отметку:
```
До: - [x] 03 — Процесс резолвинга: рекурсия, итерация, кэширование
После: - [ ] 03 — Процесс резолвинга: рекурсия, итерация, кэширование
```