# Learn

> Проведение очередного урока из curriculum. Триггерься на "/learn", "давай урок", "что дальше по плану", "следующая тема", "следующий урок", "продолжаем обучение", "хочу новую тему". Читает learning/curriculum.json и progress/completed_lessons.json, находит следующий непройденный урок (виток спирали), проводит его. Тела уроков генерируются lazy при первом вызове и кэшируются в learning/lessons/<id>.md.

- Skill: `infinity-kim/learn` (Agent Skill)
- Install (CLI): `npx skillmds@latest add infinity-kim/learn`
- Raw SKILL.md: https://api.skillmd.com/api/skills/infinity-kim/learn/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: infinity-kim (https://skillmd.com/u/infinity-kim)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/infinity-kim/learn

---


# Проведение урока

Этот скилл — оркестратор урока. Он не сам учебный материал, а **протокол** проведения.

## Шаг 1: Определение следующего урока

1. Прочитай `learning/curriculum.json` — полный спиральный план (витки области: каждая тема возвращается на новом уровне глубины)
2. Прочитай `progress/completed_lessons.json` — пройденные
3. Найди первый урок из curriculum, ID которого нет в completed_lessons
4. Если уроков не осталось — поздравь и предложи `/practice` (свободная задача) или `/diagram`

## Шаг 2: Учёт пробелов и состояния

Перед тем как начать урок, прочитай `progress/profile.json` (включая `learner_profile`), `progress/competencies.json`, `progress/mistakes_log.json` и `progress/attention_metrics.json`:

- Если есть компетенция с `p_known < 0.4` — включи её в урок как вспомогательную тему (микроурок внутри основного).
<!-- DOMAIN:examples -->
  Пример компетенций (область System Design): requirements_clarification, estimation_skill, knowledge_of_components, tradeoff_reasoning, scalability_thinking, failure_thinking, data_modeling, communication_thinkaloud, proactiveness_driving.
<!-- /DOMAIN:examples -->
- Если в mistakes_log есть свежие ошибки той же категории — разбери их как часть урока.
<!-- DOMAIN:examples -->
  Пример категорий ошибок (область System Design): over-engineering, прыжок в детали без requirements, забытая estimation, нет failure thinking, технология без обоснования.
<!-- /DOMAIN:examples -->
- Прочитай `attention_metrics`: если последние сессии показывают усталость/фрустрацию — сократи урок, начни с посильного. Если высокая вовлечённость и `pace = fast` — можно дать виток поглубже.
- Прочитай `learner_profile` и подстрой подачу (полные настройки — [onboarding/references/profiles.md](../onboarding/references/profiles.md)): `junior_growth` — минимум базовых пояснений, помогай приоритизировать; `women_stem` — атрибуция успеха на стратегию; `career_switcher` — связывай с карьерной целью; `young_male_26` — продуктивный вызов, но worked example на новой теме.

Это делает урок **адаптивным**, а не просто проигрывателем curriculum.

## Шаг 3: Проверка существующего тела урока

Проверь `learning/lessons/<id>.md`:

- **Если файл есть** — используй его как контент (ранее сгенерированный и возможно отредактированный)
- **Если файла нет** — сгенерируй тело урока и сохрани в `learning/lessons/<id>.md`

Это lazy generation — урок создаётся один раз, при первом обращении.

## Шаг 4: Структура урока

Каждый урок проходит пять фаз:

```
🎯 Цель → 📖 Теория (с аналогией) → 💻 Демо (worked example) → ✏️ Практика → ✅ Проверка
```

### 🎯 Цель (30 секунд)

> 🎯 После этого урока ты сможешь: **[конкретное умение]**

Формулировка должна быть **конкретной и измеримой**. Не «узнаешь про тему X», а «сможешь объяснить, какой компромисс несёт подход Y и чем за него платишь, и решить, где его применять».
<!-- DOMAIN:examples -->
Пример (область System Design): «сможешь объяснить, какой trade-off покупает кеш и чем за него платишь, и решить, где его ставить в read-heavy системе».
<!-- /DOMAIN:examples -->

### 📖 Теория (3-5 минут)

Короткое объяснение концепции. Обязательно с **аналогией** (аналогии — носитель интуиции в области; эксперты думают именно так):

<!-- DOMAIN:examples -->
Примеры аналогий (область System Design):
- Кеш — как «держать часто нужные документы на столе, а не ходить в архив каждый раз»
- Очередь (message queue) — как «лента заказов на кухне: официант не ждёт у плиты, а вешает заказ и идёт дальше» (развязка, асинхронность)
- Шардинг — как «разбить телефонный справочник по буквам на тома, чтобы искать в нужном, а не во всём»
- Load balancer — как «администратор в банке, распределяющий очередь по свободным окнам»
<!-- /DOMAIN:examples -->

Англоязычные термины давай с переводом при первом вводе. Никакого «вот абстрактная концепция X» — всегда через мост от знакомого.

### 💻 Демо (worked example) — 3-5 минут

Демо — это **разобранный пример** (worked example): готовый разбор задачи или расчёта, который ты проводишь вслух, а ученик наблюдает. Это критично (Sweller, cognitive load theory): на новой теме новичок учится быстрее, изучая готовое решение, чем делая сам. На областях с высокой когнитивной нагрузкой scaffolding стартует ВЫШЕ.

Что показать — готовый разбор маленького куска задачи: проводи каждый шаг вслух, объясняя, **почему** именно так и какой компромисс это закрывает.

<!-- DOMAIN:examples -->
Примеры демо (область System Design):
- **Готовый разбор расчёта**: «Считаем storage для системы загрузки фото. 100M пользователей × 5 фото в день × 2MB → проговариваю каждый множитель и откуда он».
- **Готовый разбор архитектуры**: возьми маленький кусок (один путь записи или чтения) и пройди его по слоям, объясняя, почему каждый компонент здесь и какой trade-off закрывает.
<!-- /DOMAIN:examples -->

Пример должен быть **маленьким и сфокусированным** — один расчёт или один фрагмент, не вся задача целиком. Большие демо размывают фокус.

### ✏️ Практика (10-20 минут)

Дай ученику решить **похожую** задачу самому. Уровень помощи — через скилл `scaffolding`. Чередование «example → problem» (Sweller): сразу после worked example дай аналогичную задачу.

<!-- DOMAIN:examples -->
Примеры практики (область System Design):
- После демо-расчёта storage для фото → «А теперь прикинь storage для системы коротких видео: 50M пользователей, 3 видео в день по 10MB. Проговаривай вслух».
- После разбора пути чтения с кешем → «Спроектируй путь чтения для ленты новостей. Где поставишь кеш и почему?»
<!-- /DOMAIN:examples -->

**Важно:**
- Практика — не «повторить точно то же». Это **новый контекст** применения той же концепции (interleaving, Bjork).
- Требуй think-aloud: рассуждение вслух — основной наблюдаемый сигнал. Оценивай ход мысли, не финальный артефакт.
- Фидбек — в парадигме обоснования/trade-off (скилл `feedback`): «ты нашёл развилку — а какой путь выбрал и почему именно его?».

### ✅ Проверка (2-3 минуты)

Короткая проверка усвоения:

- «Объясни своими словами, какой выбор/компромисс ты сейчас сделал»
- «Где ещё в реальной работе ты бы это применил?»
- «Что было сложнее всего?»

Ответ запиши в `reflection_log.json`.

## Шаг 5: Обновления после урока

- `completed_lessons.json`: добавь запись `{"lesson_id": "L07", "completed": "<сегодня>", "duration_min": ..., "self_rating": ...}`
- `profile.json`: `xp += 50`
- `spaced_review.json`: добавь новые items для фактов из урока (то, что нужно помнить, а не выводить)
- `competencies.json`: обнови `p_known`/`observations` по наблюдаемым компетенциям (делегировано `diagnostics`)
- Если сработали правила — обнови `scaffolding_level.json` (или делегируй `reflect`)

## Правила

- **Не растягивай урок.** Если curriculum говорит 20 минут — уложись в 20-25. Флоу рушится, если урок превращается в лекцию.
- **Не давай все 5 фаз подряд, если сессия короткая.** Разделяй: теория + демо сегодня, практика завтра. Это нормально.
- **Worked example первым на новой теме.** Не отправляй делать с нуля концепцию, которую ученик впервые видит — сначала разбор, потом генерация.
- **Практика ≠ повторение.** Всегда новый контекст.
- **Рефлексия — часть урока, не финальный формальный экзамен.** Одна вещь, которую стоит запомнить.

## Триггеры связанных скиллов

- Во время урока — `scaffolding` решает, как помогать (на сложных областях стартует выше)
- Все оценочные реплики — через `feedback` (обоснование, не «правильно/неправильно»)
- После урока — `spaced-review` обновляет интервалы
- Если ученик буксует → снизь уровень через `scaffolding`, дай посильное (опыт мастерства)
- Если ученик летит → не мешай, пропусти теорию, сразу к практике (особенно `junior_growth`)
- Контентную глубину по теме берёт соответствующий **доменный контентный скилл области** (он живёт в доменном слое, не в ядре)

