---
name: hebrew-homework-solve
description: |
  Выполнение домашних заданий по ивриту на основе разобранного урока и грамматической шпаргалки.
  Используй этот скил, когда пользователь просит сделать домашнее задание по ивриту, выполнить упражнения из урока, решить задания по ивриту, заполнить пропуски в предложениях на иврите, перевести предложения с русского на иврит или с иврита на русский, вставить глаголы в нужной форме.
  Триггеры: «домашнее задание», «ДЗ», «упражнения», «сделать задания», «выполнить задания», «слайды», «страницы с заданиями», «תרגיל», «תרגילים», а также любые запросы на выполнение конкретных упражнений из уроков иврита.
  Скил также срабатывает, если пользователь указывает номера слайдов/страниц с заданиями.
---

# Hebrew Homework — Выполнение домашних заданий по ивриту

## Обзор

Этот скил выполняет упражнения из уроков иврита. На выходе — markdown-файл с выполненными заданиями, готовый к конвертации в docx.

---

## Выходной файл

### Имя файла

```
ДЗ_урок_{N}_часть_{M}_слайды_{СЛАЙДЫ}.md
```

Где `{СЛАЙДЫ}` — компактная запись номеров слайдов:

- **Дефис** `-` означает диапазон (от и до)
- **Подчёркивание** `_` — разделитель между элементами списка
- Каждый элемент — либо отдельный номер, либо диапазон `X-Y`

| Пользователь указал | Суффикс | Пример имени файла |
|---|---|---|
| слайды 25-28 | `_слайды_25-28` | `ДЗ_урок_13_часть_3_слайды_25-28.md` |
| слайды 25, 26 | `_слайды_25_26` | `ДЗ_урок_13_часть_3_слайды_25_26.md` |
| слайды 25-28, 30 | `_слайды_25-28_30` | `ДЗ_урок_13_часть_3_слайды_25-28_30.md` |
| слайды 25-28, 30, 33-35 | `_слайды_25-28_30_33-35` | `ДЗ_урок_13_часть_3_слайды_25-28_30_33-35.md` |
| все слайды (не указаны) | без суффикса | `ДЗ_урок_13_часть_3.md` |

---

## Шаг 1. Сбор входных данных

### Обязательные входные данные

1. **Разобранный материал урока** — выход скила `hebrew-lesson-extract`
   - ZIP-архив `урок_N_часть_M_extracted.zip`, внутри которого:
     - `урок_N_часть_M_extracted.md` — структурированный markdown с классифицированными слайдами
     - `images/` — извлечённые изображения из презентации
   - Содержит: структуру презентации, тексты слайдов, упражнения, грамматику, новые слова, таблицы спряжения
   - Если скил `hebrew-lesson-extract` ещё не выполнялся — предложить пользователю сначала запустить его на PPTX-файле урока
   - **Где искать**: в загруженных файлах пользователя (`/mnt/user-data/uploads/`) — может быть в zip-архиве. Также искать в Project Knowledge через `project_knowledge_search`

2. **Обогащённая грамматическая шпаргалка** — выход скила `hebrew-lesson-enrich`
   - Файл `Шпаргалка_по_{N}_уроку_{M}_часть.md`
   - Содержит: подробные объяснения грамматики, таблицы спряжения с огласовками, списки новых слов с переводами, отглагольные существительные
   - Если скил `hebrew-lesson-enrich` ещё не выполнялся — предложить пользователю сначала запустить его на extracted-файле урока
   - **Где искать**: в загруженных файлах пользователя, в Project Knowledge, или в файлах проекта (`/mnt/project/`)

3. **Номера слайдов/страниц с заданиями**
   - **ВСЕГДА спрашивать у пользователя**, даже если в материале урока видны все упражнения
   - Пользователь указывает конкретные номера слайдов, которые нужно выполнить

### Алгоритм поиска входных данных

```
1. Проверить /mnt/user-data/uploads/ на наличие zip-архивов и md-файлов
2. Если файлы не найдены — искать через project_knowledge_search
3. Если файлы не найдены — проверить /mnt/project/
4. Если файлы всё ещё не найдены — запросить у пользователя
5. ВСЕГДА спросить у пользователя номера слайдов с заданиями
```

---

## Шаг 2. Анализ заданий

Перед выполнением нужно **прочитать материал урока и шпаргалку целиком**, чтобы:
- Знать все новые слова урока (для правильной расстановки огласовок)
- Знать таблицы спряжения (для правильных глагольных форм)
- Знать грамматические правила урока (для осмысленного выполнения)
- Знать отглагольные существительные (שם פעולה) и их формы

### Инвентаризация пунктов упражнения (обязательно)

Перед тем как приступать к выполнению конкретного слайда-упражнения, **зафиксировать количество пунктов** в этом упражнении по исходному `extracted.md`:

1. Найти максимальный номер пункта (`N.` в начале строки) в пределах слайда — от заголовка `## Слайд X` до следующего заголовка `## Слайд`
2. Запомнить это число как ожидаемое количество пунктов для слайда
3. После выполнения — сверить: в выходной таблице должно быть столько же пунктов с таким же максимальным номером

Длинные однородные списки (15+ пунктов) особенно склонны к тихому усечению посреди слайда — инвентаризация обязательна именно для защиты от этого.

### Типы упражнений

Из структуры презентации и заголовков слайдов определить тип каждого упражнения:

| Маркер в extracted.md | Тип упражнения | Описание |
|---|---|---|
| упражнение (вставить) | fill-in | Вставить слово/глагол в правильной форме |
| упражнение (перевод) | translation | Перевести предложения (рус→ивр или ивр→рус) |
| упражнение (таблица) | table | Заполнить таблицу спряжения |
| упражнение (выбор) | choice | Выбрать правильное слово из вариантов |
| упражнение (אוגד) | copula | Вставить связку (הוא/היא/הם/הן) |
| текст | text-reading | Текст для чтения — расставить огласовки и перевести |
| анекдоты | jokes | Анекдоты / юмор — прочитать, выбрать концовку |
| картинка / задание по картинке | picture-diff | Найти различия между двумя картинками и описать на иврите |

---

## Шаг 3. Выполнение заданий

### Общие правила оформления

Прочитай файл `references/formatting-rules.md` для подробных правил оформления markdown.

### Правила для каждого типа упражнения

#### A. Упражнение «вставить слово» (fill-in)

1. Определить требуемое время/форму из инструкции задания (הווה / עבר / עתיד)
2. Определить подлежащее (лицо, род, число) из контекста предложения
3. Проспрягать указанный глагол в нужной форме, используя таблицы из шпаргалки
4. Вставить глагол В ПРАВИЛЬНОЙ ФОРМЕ с огласовками вместо пропуска
5. Расставить огласовки в остальном тексте предложения по общим правилам (см. `references/nikud-rules.md`)
6. Под каждым предложением на иврите — перевод на русский

**Формат — markdown-таблица:**

```
| Текст | № |
|---|---|
| אני **מוֹסִיף** כל יום מילה חדשה לַמַּחְבֶּרֶת שלי כדי לְהַעֲשִׁיר את אוֹצַר הַמִּילִים שלי. (להוסיף) | 1 |
| Я добавляю каждый день новое слово в свою тетрадь, чтобы обогатить свой словарный запас. |   |
| הַזַּמֶּרֶת **מוֹפִיעָה** הערב בַּפֶּסְטִיבָל גדול מול אלפי אנשים שמחכים לה בשמחה. (להופיע) | 2 |
| Певица выступает сегодня вечером на большом фестивале перед тысячами людей, которые ждут её с радостью. |   |
```

Правила таблицы:
- Колонка «Текст» — широкая (левая в markdown, правая в docx), содержит иврит (первая строка) и перевод (вторая строка)
- Колонка «№» — узкая (правая в markdown, левая в docx), только номер пункта (строки продолжения — пустая ячейка)
- Порядок колонок в markdown обратный: сначала «Текст», потом «№» — чтобы в docx без зеркалирования получился правильный RTL-порядок (номер справа → текст слева)
- Каждый пункт упражнения занимает 2 строки таблицы

#### B. Упражнение «перевод» — с русского на иврит

1. Перевести предложение на иврит
2. Под каждым переведённым предложением на иврите — исходное предложение на русском
3. Использовать лексику и грамматические конструкции из урока

**Формат — markdown-таблица:**

```
| Текст | № |
|---|---|
| אני מוֹסִיפָה סוּכָּר לקפה כל בוקר, אחרת הוא מַר מדי. | 1 |
| *Я добавляю сахар в кофе каждое утро, иначе он слишком горький.* |   |
| הוֹסַפְנוּ עוד כמה פרטים למכתב, כדי שייראה יותר מקצועי. | 2 |
| *Мы добавили ещё несколько деталей в письмо, чтобы оно выглядело профессиональнее.* |   |
```

Правила таблицы:
- Колонка «Текст» — широкая, перевод на иврит (первая строка) и исходное русское предложение курсивом (вторая строка)
- Колонка «№» — узкая, только номер пункта (строки продолжения — пустая ячейка)
- Каждый пункт занимает 2 строки таблицы

#### C. Упражнение «перевод» — с иврита на русский

1. Перевести предложение на русский близко к тексту
2. Перевод помещается под ивритским предложением в той же таблице
3. Огласовки в ивритском предложении — по общим правилам (см. `references/nikud-rules.md`)

**Формат — markdown-таблица:**

```
| Текст | № |
|---|---|
| הַמּוֹרָה **הוֹרִידָה** את הַתַּלְמִיד מהַכִּיתָּה כי הוא הִפְרִיעַ. | 1 |
| Учительница вывела ученика из класса, потому что он мешал. |   |
| אנחנו **מוֹרִידִים** את הַמִּזְוָדוֹת מהַמָּכוֹנִית. | 2 |
| Мы снимаем чемоданы с машины. |   |
```

Каждый пункт занимает 2 строки таблицы: иврит + русский перевод.

#### D. Упражнение «таблица спряжения» (table)

1. Заполнить все пустые ячейки таблицы
2. Все вписанные формы — с огласовками
3. Воспроизвести таблицу в markdown

#### E. Упражнение «выбор» (choice)

1. Выбрать правильный вариант из предложенных
2. Объяснить выбор кратко
3. Под предложением — перевод на русский

**Формат — markdown-таблица:**

```
| Текст | № |
|---|---|
| האריה רצה, שהזאב **יְחַלֵּק** (חילק, יחלק, לחלק) את השָׁלָל. | 1 |
| Выбрано: **יחלק** — после ש + רצה требуется будущее время (сослагательное значение) |   |
| Лев хотел, чтобы волк разделил добычу. |   |
| החיילים יצאו ל**מַסָּע** (טיול, דרך, מסע) ארוך וקשה. | 2 |
| Выбрано: **מסע** — «поход, экспедиция» подходит к контексту солдат и тяжёлого пути |   |
| Солдаты отправились в долгий и тяжёлый поход. |   |
```

Правила таблицы:
- Каждый пункт занимает 3 строки: иврит с вариантами, строка «Выбрано: ...», перевод на русский
- Номер только в первой строке пункта, остальные — пустая ячейка «№»

#### F. Упражнение «אוגד» (copula)

1. Определить род и число подлежащего
2. Вставить соответствующее местоимение: הוא / היא / הם / הן
3. Под предложением — перевод на русский

**Формат — markdown-таблица:**

```
| Текст | № |
|---|---|
| הַסֵּפֶר הזה **הוא** מעניין מאוד. | 1 |
| Эта книга — очень интересная. |   |
| הַתַּעֲרוּכָה **היא** חשובה לְאָמָּנוּת הַיִּשְׂרְאֵלִית. | 2 |
| Выставка важна для израильского искусства. |   |
```

Каждый пункт занимает 2 строки таблицы: иврит + перевод.

#### G. Текст для чтения (text-reading)

Это **не упражнение с пропусками**, а связный текст. Задача — расставить огласовки и дать перевод.

**Алгоритм:**

1. Разбить текст на абзацы (по абзацам оригинала)
2. В каждом абзаце расставить огласовки по стандартным правилам (см. Шаг 4)
3. После каждого абзаца на иврите — абзац перевода на русский
4. Перевод должен быть **близким к тексту**, но читаемым по-русски
5. Если текст имеет заголовок — вынести его как `###` с огласовками

**Что огласовывать в тексте для чтения:**
- Все новые слова урока, встречающиеся в тексте
- Глаголы из сводной таблицы урока
- Имена собственные (מֵאִיר, שַׁפִּירָא, סוֹנְיָה, דִּיזֶנְגוֹף)
- Географические названия (תֵּל אָבִיב, יִשְׂרָאֵל, דֶּטְרוֹיְט)
- Книжную и литературную лексику (סִמְטָה, פְּלוֹנִי, אַלְמוֹנִי, חָזוֹן)
- Заимствования и иноязычные слова (אִינְקוֹגְנִיטוֹ, פְּרוֹסְפֵּרִיטִי, דְיוֹנִיסוֹס)
- Слова с неочевидным произношением
- Редкие слова
- Глаголы в формах, которые ученик мог ещё не встречать (הֶעֱמִיד, הִשְׁאִירָה)
- Конструкции из урока (אַף עַל פִּי כֵן)

**Что НЕ огласовывать в тексте:**
- Стандартные базовые слова (הוא, היא, של, על, בית, אדם, כסף и т.д.)
- Простые глаголы в обычных формах (היה, בנה, חשב, רצו, יצאה, נתן)
- Местоимения, частицы, артикли

**Формат:**

```markdown
### סִיפּוּרִים של פעם — סִמְטָה פְּלוֹנִית

במרכז תֵּל אָבִיב יש שני רחובות קטנים מאוד, שתי סִמְטָאוֹת, שיוצאות מרחוב המלך גִ׳יוֹרְגִ׳י.

В центре Тель-Авива есть две очень маленькие улицы, два переулка, которые выходят с улицы Короля Георга.
```

#### H. Анекдоты / юмор (jokes)

1. Прочитать текст анекдота
2. Расставить огласовки по стандартным правилам
3. Если задание — выбрать правильную концовку: выбрать и объяснить
4. После каждого анекдота — перевод на русский

#### I. Задание по картинке — найди отличия (picture-diff)

Как правило, это первый слайд домашнего задания: две похожие картинки (верхняя и нижняя), нужно найти и описать различия.

**Алгоритм:**

1. **Загрузить картинку** из папки `images/` (путь указан в extracted.md как `![Изображение](images/slide_N_img_1.png)`)
2. **Проанализировать изображение** — внимательно сравнить верхнюю и нижнюю части картинки
3. **Проверить уже найденные различия** — в extracted.md после описания картинки могут быть перечислены предварительно найденные различия. Проверить каждое из них по картинке
4. **Дополнить список до 10–15 различий** — если на картинке есть ещё не замеченные различия, добавить их. Если различий меньше 10, написать столько, сколько реально видно
5. **Составить описание на иврите** в формате краткого сравнения: למעלה — ... למטה — ...
6. **Добавить перевод на русский** под каждым ивритским описанием

**Инструкция перед таблицей:**

Всегда генерировать стандартную инструкцию (независимо от содержимого слайда):

```
מִצְאוּ הֶבְדֵּלִים בֵּין שְׁתֵּי הַתְּמוּנוֹת
```

**Стиль описания различий на иврите:**

Краткое сравнение — למעלה (наверху) и למטה (внизу):

```
למעלה — כובע כתום עם סרט אדום; למטה — כובע קש צהוב עם סרט כחול.
```

**Огласовки:** по стандартным правилам скила (новые слова урока, слова с неочевидным произношением, редкие слова — огласовать; базовые слова — нет).

**Формат — markdown-таблица:**

```
| Текст | № |
|---|---|
| למעלה — כּוֹבַע כָּתוֹם עם סֶרֶט אָדוֹם; למטה — כּוֹבַע קַשׁ צָהוֹב עם סֶרֶט כָּחוֹל. | 1 |
| Наверху — оранжевая шляпа с красной лентой; внизу — жёлтая соломенная шляпа с голубой лентой. |   |
| למעלה — לַיֶּלֶד יש מִשְׁקָפַיִם; למטה — אין מִשְׁקָפַיִם. | 2 |
| Наверху — у мальчика есть очки; внизу — очков нет. |   |
```

Правила таблицы:
- Каждый пункт — 2 строки: иврит (краткое сравнение) + перевод на русский
- Номер только в первой строке пункта

---

## Шаг 4. Правила огласовок (никуд)

**Это критически важный раздел. Прочитай файл `references/nikud-rules.md` для полных правил.**

### Краткая сводка

**ОГЛАСОВЫВАТЬ:**
- Вставляемое слово (глагол в нужной форме, существительное и т.д.) — **всегда**, в любом типе упражнения
- Остальной текст предложения — по общим правилам nikud-rules (новые слова урока, глаголы из таблиц, имена собственные, географические названия и т.д.)
- Новые слова урока (из таблицы «מילים חדשות»)
- Глаголы из сводной таблицы глаголов урока
- Имена собственные
- Географические названия
- Литературная и книжная лексика
- Слова с неочевидным произношением
- Редко встречающиеся слова

**НЕ ОГЛАСОВЫВАТЬ:**
- Местоимения: אני, אתה, את, הוא, היא, אנחנו, הם, הן, זה, זאת
- Частицы и союзы: של, על, אל, את (дополнения), כי, ש-, -ב, -ל, -מ, אם, או, גם, אבל, אז, עוד, כמו
- Базовые глаголы: אמר, היה, יש, אין, בא, הלך, רוצה, יודע, עשה, נתן, לקח, ראה, שמע
- Простые существительные: בית, יום, שנה, איש, ילד, אדם, עולם, דבר, שם, יד, ראש
- Простые прилагательные: טוב, גדול, קטן, חדש, ישן, רגיל
- Числительные, общие наречия, артикль ה и предлоги-приставки

**Принцип:** если слово легко прочитает ученик уровня алеф-бет без огласовок — не огласовывать. Если есть сомнения — огласовать.

**ВАЖНО:** При добавлении огласовок никогда не удалять буквы! Matres lectionis (ו, י, א, ה) сохраняются.

---

## Шаг 5. Формирование выходного файла

### Структура markdown

```markdown
# Домашнее задание — Урок N, часть M

## Слайд X — [тип упражнения]

[инструкция на иврите из оригинала]

| Текст | № |
|---|---|
| [выполненное предложение на иврите] | 1 |
| [перевод на русский] |   |
| [выполненное предложение на иврите] | 2 |
| [перевод на русский] |   |

---

## Слайд Y — [тип упражнения]

...
```

### Правила markdown для конвертации в docx

- Использовать заголовки `#`, `##` для структуры
- Упражнения со списками (fill-in, translation, choice, copula, picture-diff) оформляются как markdown-таблицы с двумя колонками: «Текст» и «№»
- Порядок колонок в markdown: сначала «Текст», потом «№» — чтобы в docx без зеркалирования получился правильный RTL-порядок
- Колонка «Текст» — широкая, содержит иврит, перевод, объяснение на отдельных строках
- Колонка «№» — узкая, содержит только номер пункта в первой строке; строки продолжения (перевод, объяснение) — пустая ячейка
- Таблицы спряжения — стандартный markdown-синтаксис (без изменений)
- Тексты для чтения и анекдоты — абзацы (без таблиц, без изменений)
- НЕ выделять жирным ивритские предложения (если не указано иначе)
- Вставляемое слово можно выделить **жирным** внутри предложения

---

## Проверка выхода

Перед сохранением проверить:

- [ ] Все указанные слайды обработаны
- [ ] **Для каждого обработанного слайда количество пунктов в выходе = количеству пунктов в исходном `extracted.md`** (сверить по максимальному номеру — см. «Инвентаризация пунктов упражнения» в Шаге 2). Особенно важно для длинных слайдов (15+ пунктов) — они склонны к тихому усечению посреди списка.
- [ ] Глаголы вставлены в правильной форме (время, лицо, род, число) по таблицам из шпаргалки
- [ ] Вставляемое слово выделено **жирным**
- [ ] Огласовки расставлены по правилам: новые слова и глаголы — да, базовые слова — нет
- [ ] Под каждым предложением на иврите — перевод на русский
- [ ] Формат таблицы `| Текст | № |` соблюдён для всех упражнений со списками
- [ ] Тексты для чтения оформлены абзацами (не таблицей)
- [ ] Имя файла соответствует конвенции из раздела «Выходной файл»

---

## Шаг 6. Сохранение и выдача

1. Сформировать имя файла по конвенции из раздела «Выходной файл» (с суффиксом слайдов)
2. Сохранить markdown в `/mnt/user-data/outputs/{имя_файла}`
3. Использовать `present_files` для выдачи файла пользователю
4. Если пользователь попросит docx — использовать скил `hebrew-homework-docx` для конвертации
