---
name: make-3d
description: >-
  Делает 3D-модель для сцены (предмет, комната, робот, офис) через несколько вариантов: каждый вариант строит свой исполнитель в копии сцены, все сдают одинаковые листы, человек выбирает по картинкам, выбранный вариант переезжает в канон на настоящих данных. Применять по /make-3d, «сделай варианты модели», «как это может выглядеть в 3D», «нарисуй варианты предмета».
---

# make-3d: 3D-модель через варианты

Скилл про форму работы, а не про решение. На входе уже известно, какая модель нужна, какие у неё состояния и 2–3 кандидата формы. Если это ещё не решено, сначала разбери с человеком через `/grill-me` и возвращайся сюда.

**Вариант** — одна форма модели, построенная целиком одним исполнителем. **Лист** — снимок варианта по общему шаблону. **Канон** — исходник сцены, который видит человек; до выбора его не трогает никто.

## Шаги

1. **Сцена.** Найди исходник сцены, команду сборки, где рисуются объекты, откуда берутся данные и адрес живой страницы. Сними, как сцена выглядит сейчас, и покажи снимок в чате картинкой. Готово: знаешь файлы объектов, команду сборки и живой адрес. Правила сцены (что где стоит, что нельзя закрывать, стиль) читай в её каноне (`DESIGN.md`, `CONTEXT.md`, README) и неси в бриф.

2. **Демо-данные.** Один набор на все варианты, где встречается каждое состояние модели и крайние случаи: ноль, один, много, каждый цвет. Готово: по набору можно проверить любое правило состояния.

3. **Копии сцены.** У каждого варианта своя папка-копия вне канона (`node_modules` симлинком на оригинал), свой порт и свой кеш сборщика. Папку для листов заведи постоянную, в репозитории человека (например `artifacts/<дата>-<модель>/<вариант>/`), чтобы листы пережили перезапуск сессии.

4. **Бриф.** Один шаблон на все варианты; различается только описание формы и её состояний. В брифе:
   - своя папка, свой порт, что трогать нельзя (канон, установленные скиллы, данные человека), останавливать только свои процессы по PID;
   - стиль сцены сохранить;
   - форма и каждое её состояние словами;
   - демо-данные и их формат;
   - листы (шаг 6) и путь для них;
   - «посмотри на листы сам; если деталь не читается или закрывает соседнее, поправь и сними заново»;
   - отчёт: пути к листам, изменённые файлы, формат данных одной строкой.

5. **Запуск.** Один исполнитель на вариант, все параллельно, в фоне. По умолчанию исполнитель — Codex CLI:

   ```sh
   codex exec -C <копия> --skip-git-repo-check -m <модель> -o <итог.md> - < <бриф.md>
   ```

   Модель — самая сильная из доступных Codex. Если CLI отвечает «model not supported», CLI устарел: возьми более новый (например тот, что поставляется с приложением) или обнови пакет. Codex недоступен — тот же бриф субагенту-исполнителю.

6. **Листы.** У каждого варианта один и тот же набор, одна камера и один свет, чтобы варианты сравнивались один к одному:
   - `general.png` — вся сцена, модель в контексте;
   - `states.png` — сетка состояний, у каждого номер и подпись в одну строку;
   - `detail.png` — крупный план детали, от которой зависит читаемость.

   Снимать после реальной задержки, когда анимации отыграли. Готово: у каждого варианта три листа, и на `general.png` модель различима без зума.

7. **Показ.** Листы варианта отправляй в чат картинками, как только вариант готов, не дожидаясь остальных. Когда готовы все: сравнение в 2–4 строки (что читается сильнее, что ближе к смыслу, где риск) и твоя рекомендация. Выбирает человек.

8. **Канон.** Выбранный вариант переносится в исходник сцены без демо-обвязки (подписи «эскиз», коллажи, демо-набор). Демо-данные заменяются настоящими: скан или источник, который сцена уже читает. Правила состояний закрываются тестами. Сборка и тесты зелёные, коммит только своих путей. Финальные листы на настоящих данных — в чат. Живую страницу открой сам и сверь с листами; если видишь старую версию, перезагрузи с обходом кеша. Если у проекта есть словарь терминов, добавь туда модель и её состояния.

## Данные человека на сцене

Модель показывает факт, а не содержимое: имена файлов и флаги состояния. Содержимое файлов, значения переменных и адреса репозиториев на сцену не попадают. Если сцена уходит другим людям (урок, общий экран), новые поля идут туда только по слову человека.
