Danil Iarosh ca52efbedc Initial commit: Exchanger Theme DLC Builder
Godot 4.7 project for authoring, previewing, validating, and building Exchanger PCK themes. Includes the example and space-pixel themes, binding contracts, editor tooling, validation/build scripts, and project documentation.
2026-09-22 11:43:13 +03:00

102 lines
11 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.

# Инструкции для ИИ-агентов
Этот файл — единственный авторитетный набор агентских правил для проекта
`ExchangerThemeDlcBuilder`. Перед любым изменением прочитайте его полностью.
## Назначение и границы проекта
- Проект создаёт, проверяет, показывает и собирает внешние PCK-темы Exchanger.
- Рабочая область агента по умолчанию ограничена этой папкой. Соседний проект Exchanger можно
читать для сверки host-контракта, но нельзя менять без отдельного явного поручения пользователя.
- Код бизнес-логики, оплаты, COM-контроллера и настроек автомата принадлежит Exchanger. Темы
считаются доверенными и могут содержать собственную GDScript-логику визуальных и вспомогательных
runtime-компонентов, но прямые зависимости от внутренних узлов host нужно документировать.
- Перед изменениями прочитайте [README.md](README.md), [docs/PROJECT_CONTEXT.md](docs/PROJECT_CONTEXT.md)
и профильный документ из [docs/README.md](docs/README.md). Для сцен обязательно прочитайте
[docs/BINDING_CONTRACT.md](docs/BINDING_CONTRACT.md).
## Обязательная долговременная память
- MCP-сервер `agentmemory` используется постоянно. Канонический project id:
`exchanger-theme-dlc-builder`.
- Первое действие с инструментами в каждой задаче — `memory_recall` или `memory_smart_search` по
затрагиваемой подсистеме. Повторите поиск перед работой с незнакомой частью проекта или при
противоречии памяти и файлов.
- После каждого устойчивого открытия, решения, изменения архитектуры/контракта/структуры,
найденной ошибки и законченного блока QA сохраняйте атомарную запись через `memory_save`.
- Записывайте назначение файлов, связи, команды и фактические результаты проверок, а не сырые логи.
Репозиторий и свежий запуск имеют приоритет над устаревшей памятью.
- Перед финальным ответом обязательно сохраните итоговое состояние, изменённые файлы, проверки и
незакрытые вопросы. При делегировании передайте подагенту эти же требования.
## Godot и инструменты
- **Ziva-Godot категорически запрещён без исключений.** Нельзя использовать сервер, tools,
plugins, skills, ресурсы или документацию с этим именем даже для чтения и диагностики.
- Для Godot Editor разрешён только MCP-сервер `godot-ai`. Перед работой со сценами проверьте
сессию, сведения о проекте, открытую иерархию и журнал. Если `godot-ai` недоступен, используйте
безопасные shell-команды и файловое редактирование, но не Ziva-Godot.
- Текстовые файлы меняйте точечно через `apply_patch`. Не перезаписывайте пользовательские файлы
shell-трюками и не запускайте форматирование всего проекта без необходимости.
- Сохраняйте чужие и незавершённые изменения. Перед удалением, переносом или массовой генерацией
точно проверьте цель. `themes/<id>/package/` является единственным исходником и не должен
очищаться неявно. Постоянного корневого staging-каталога нет.
## Неподвижные правила темы
- Целевой формат preview: `720×1280`, портретная ориентация.
- Внутри тематических сцен разрешены обычные возможности Godot: GDScript, сигналы, анимации,
шейдеры, частицы, аудио, видео и процедурные визуальные эффекты.
- Production-содержимое — только `themes/<id>/package/`. `source/`, references и preview tooling
не должны попадать в PCK. Канонический namespace `res://exchanger_theme_dlc/` создаётся только
внутри изолированного временного build-workspace и готового PCK.
- Все девять production-сцен имеют канонические пути/имена/root metadata из manifest v2.
- Production-сцены и их вложенные сцены могут содержать доверенный GDScript и любые необходимые
Godot-узлы, включая `Timer`, `AudioStreamPlayer*` и `HTTPRequest`. Скрипты темы исполняются и в
preview, и после инстанцирования PCK в Exchanger.
- Каждый обязательный элемент содержит уникальный `exchanger_binding_id`, точный тип и ID из
`contracts/screen_bindings.v2.json`. Каталог v2 содержит 9 экранов и 481 биндинг; его
package-копия должна совпадать байт-в-байт.
- При любом добавлении, удалении, переименовании или изменении binding ID, пути, типа, fallback,
структуры binding-каталога либо правил разрешения биндингов обязательно в рамках той же задачи
обновите `E:\Danil\Projects\Godot\ExchangerThemeDlcBuilder\docs\BINDING_CONTRACT.md`. Изменение
биндингов не считается завершённым, пока документ не соответствует фактическому контракту и не
проверен вместе с `contracts/screen_bindings.v2.json` и host-контрактом Exchanger.
- Production-сцена владеет каждым визуальным узлом, включая состояния Home, кнопки готовых сумм
и фиксированные строки настроек. Exchanger не должен добавлять, удалять, переносить или
стилизовать `Control` внутри внешнего ThemeView: host только находит существующие узлы,
подключает сигналы и обновляет значения/видимость/доступность.
- SETTINGS содержит заранее созданные скрытые панели текстовой и цифровой экранных клавиатур.
Host может менять подписи/видимость/доступность клавиш и подключать сигналы, но не создаёт и не
перестраивает их визуальное дерево.
- SETTINGS также содержит theme-owned раздел «Сервис» и скрытый диалог учёта жетонов. Заголовки
обоих хопперов имеют отдельные binding-id для точных остатков. Host меняет только остатки,
тексты, видимость/доступность и подписывает кнопки; создавать или перестраивать
эти элементы в runtime запрещено.
- Видимый русский текст должен быть естественным и понятным владельцу автомата. Используйте
«промо» и «промо-ролик», не «реклама». Внутренние English identifiers не переименовывайте.
## Рабочий цикл
1. Восстановите контекст из agentmemory и документов.
2. Активируйте нужную тему: `./activate-theme.ps1 -ThemeId <id>`.
3. Меняйте `themes/<id>/package/` напрямую; preview загружает эти же файлы без промежуточной копии.
4. Проверяйте binding overlay и все девять вкладок preview в `720×1280`; сохраняйте статический
фон и центрирование содержимого.
5. Выполните `./tools/Test-PackagedBindingContract.ps1`, затем
`./test-theme.ps1 -ThemeId <id>`.
6. Соберите `./build-theme.ps1 -ThemeId <id>`. Установка в пользовательский каталог Exchanger —
отдельное внешнее изменение и выполняется только когда оно входит в поручение.
7. Через `godot-ai` проверьте preview и runtime-журнал. При изменении host-контракта отдельно
проверьте PCK в Exchanger.
8. Обновите относящиеся к изменению docs и agentmemory.
## Делегирование и критерии готовности
- Делегируйте только независимые, чётко ограниченные задачи. Укажите рабочую папку, запрет
Ziva-Godot, обязательную память, допустимые файлы и проверки. Не позволяйте нескольким агентам
одновременно править одни и те же файлы.
- Задача готова, когда исходники находятся в правильной теме, contract check и validator проходят,
preview smoke и визуальная проверка девяти экранов не выявляют ошибок, production PCK не содержит
builder tooling/референсов, документация соответствует фактам, а результат сохранён в памяти.