---
name: hp-master-style
description: >
  Управление файлом master_style_framework.md — неизменяемым каркасом
  визуального стиля всей книги. Создание из шаблона, валидация, расширение
  для новой книги. Используй этот skill когда пользователь просит:
  создать master style, настроить стиль проекта, проверить master style,
  подготовить стиль для новой книги, или когда нужно инициализировать
  проект иллюстрирования. Также используй при упоминании «master style»,
  «каркас стиля», «визуальный стиль проекта», «style framework».
---

# HP Master Style Manager

Скилл для управления жизненным циклом `master_style_framework.md` —
центрального документа визуального стиля проекта иллюстрирования Гарри Поттера.

## Зачем нужен отдельный скилл

`master_style_framework.md` используется **двумя** скиллами в пайплайне:

- **hp-chapter-style** — читает каркас, чтобы поглавные стайлы были совместимы с ним
- **hp-generate-image** — читает каркас как приоритетный источник стиля для промтов

Этот скилл отвечает за то, чтобы файл существовал, был корректным
и лежал в правильном месте (Project Knowledge).

## Где живёт master_style_framework.md

```
┌─────────────────────────────────────────────────────┐
│  hp-master-style/references/                        │
│    master_style_framework_default.md  ← ШАБЛОН      │
│    (дефолтная версия, не редактировать)              │
└──────────────────┬──────────────────────────────────┘
                   │  команда «создать»
                   ▼
┌─────────────────────────────────────────────────────┐
│  Project Knowledge                                  │
│    master_style_framework.md  ← РАБОЧАЯ ВЕРСИЯ      │
│    (единственный источник правды для всех скиллов)  │
└─────────────────────────────────────────────────────┘
```

**Правило:** другие скиллы всегда ищут `master_style_framework.md`
через Project Knowledge (project_knowledge_search). Локальных копий
в references других скиллов быть не должно.

---

## Команды

### 1. Создать (`create`)

**Когда:** начало нового проекта или первый запуск.

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

1. Прочитать шаблон: `references/master_style_framework_default.md`
2. Спросить пользователя:
   - Какая книга? (номер и название)
   - Есть ли кастомизации стиля? (обычно нет при первом запуске)
3. Если кастомизаций нет — скопировать шаблон как есть
4. Если есть — внести изменения, **не нарушая структуру секций**
5. Сохранить как `/mnt/user-data/outputs/master_style_framework.md`
6. Показать пользователю через `present_files`
7. Напомнить: **«Добавьте этот файл в Project Knowledge вашего проекта»**

### 2. Проверить (`validate`)

**Когда:** пользователь просит проверить существующий master style,
или перед запуском hp-chapter-style / hp-generate-image при сомнениях.

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

1. Найти `master_style_framework.md` через `project_knowledge_search`
2. Проверить наличие обязательных секций:
   - [ ] I. Философия проекта
   - [ ] II. Общий художественный стиль (Техника, Линия, Палитра, Освещение)
   - [ ] III. Абсолютные запреты
   - [ ] V. Правила магии
   - [ ] VI. Уровни проявления магии (1, 2, 3)
   - [ ] VIII. Диагностика ошибок
3. Проверить консистентность:
   - Запреты в III не противоречат стилю в II
   - Уровни магии в VI описывают все три уровня
   - Палитра в II не содержит запрещённых в III цветов
4. Вывести отчёт: ✅ пройдено / ⚠️ предупреждения / ❌ ошибки

### 3. Расширить для новой книги (`extend`)

**Когда:** переход от одной книги к другой. Каркас по сути неизменяем,
но может потребовать дополнений.

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

1. Найти текущий `master_style_framework.md` через `project_knowledge_search`
2. Спросить пользователя: какая книга следующая?
3. Оценить, нужны ли изменения:
   - Новые типы локаций? (напр., книга 2 — Нора, Косой переулок)
   - Расширение шкалы магии? (обычно нет — три уровня покрывают всё)
   - Новые запреты? (напр., специфичные для книги существа)
4. Если изменения нужны — добавить секцию:

```markdown
## IX. Дополнения для книги {N}

### Новые типы локаций
...

### Специфические запреты
...
```

5. **Никогда не менять секции I–VIII**, только дополнять.
6. Сохранить обновлённый файл и напомнить обновить Project Knowledge.

### 4. Показать (`show`)

**Когда:** пользователь хочет посмотреть текущий каркас.

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

1. Найти через `project_knowledge_search`
2. Если найден — показать содержимое
3. Если не найден — сообщить и предложить команду `create`

---

## Структура секций master_style_framework.md

Файл состоит из пронумерованных секций. Нумерация намеренно имеет пропуски
(нет IV и VII) — это место для будущих расширений.

| Секция | Назначение | Статус |
|---|---|---|
| I | Философия проекта | Неизменяемая |
| II | Общий художественный стиль | Неизменяемая |
| III | Абсолютные запреты | Неизменяемая |
| IV | *(зарезервирована)* | — |
| V | Правила магии | Неизменяемая |
| VI | Уровни проявления магии | Неизменяемая |
| VII | *(зарезервирована)* | — |
| VIII | Диагностика ошибок | Неизменяемая |
| IX+ | Дополнения для конкретных книг | Расширяемая |

---

## Взаимодействие с другими скиллами

### hp-chapter-style

В Шаге 0 hp-chapter-style написано: «Найди master_style_framework.md
в Project Knowledge». Если не найден — hp-chapter-style предлагает
запустить hp-master-style с командой `create`.

### hp-generate-image

hp-generate-image получает master_style_framework.md как один из трёх входов.
Он ищет файл в Project Knowledge. Если не найден — аналогично отсылает
к hp-master-style.

### Схема зависимостей

```
  hp-master-style
  (управляет файлом)
        │
        │ master_style_framework.md
        │ (в Project Knowledge)
        │
        ├──────────────────┐
        ▼                  ▼
  hp-chapter-style    hp-generate-image
  (читает каркас)     (читает каркас)
```

---

## Принципы

- **Один файл — один источник правды.** master_style_framework.md
  существует только в Project Knowledge. Нет локальных копий в других скиллах.
- **Шаблон ≠ рабочая версия.** В references/ лежит дефолт. В PK — актуальная версия.
- **Ядро неизменяемо.** Секции I–VIII не редактируются. Расширения — только через IX+.
- **Файл принадлежит пользователю.** Скилл помогает создать и проверить,
  но пользователь сам добавляет файл в Project Knowledge.
