VanguardReMaster/AGENTS.md

121 lines
8.8 KiB
Markdown
Raw 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.

# Правила работы
Это общие правила для ассистента и будущих сессий. Детали проекта — в Skill
`vanguard-remaster`; здесь только обязательный процесс.
## Общение
- Отвечай **кратко, по существу и на русском**, если не попросили другой язык.
- Не пересказывай задачу, прочитанные файлы и очевидные действия.
- Не пиши длинные вступления, заключения и отчёты по каждому шагу.
- Сообщай только: изменённые файлы, результаты проверок, важные решения и
блокеры.
- Подробные объяснения давай по запросу или если без них можно сделать
неверный вывод.
## Контекст и Skill
- Перед любой задачей по правилам, картам, способностям, ходам, состоянию
матча, архитектуре, протоколу, клиенту или тестам **загружай Skill
`vanguard-remaster`**.
- В Skill есть отдельные документы:
- `game-rules.md` — подтверждённые правила ККИ;
- `architecture.md` — фактическая архитектура и границы систем;
- `card-implementation.md` — реализация карт и эффектов;
- `workflow-and-decisions.md` — соглашения, антипаттерны и открытые вопросы.
- Перед началом работы читай `docs/SESSION-STATE.md`, затем
`docs/HANDOFF.md` и `docs/client-visual-direction.md`; при работе с
правилами — `docs/game-rules.md`, с картами — `docs/ability-implementation.md`.
- Не пересказывай в ответе то, что уже сохранено в этих документах.
## Никаких выдумок
- Не выдумывай правила игры, карты, эффекты, API, классы, пути и пакеты.
- Не считай правила других ККИ правилами этого проекта.
- Не превращай предположение в договорённость. В Skill и документах явно
разделяй: подтверждённое решение, фактическое устройство кода, предположение,
открытый вопрос.
- Перед реализацией изучай существующий код и найденные договорённости.
- Если решение не определено и от него зависит реализация — сначала спроси.
## Вопросы
- Для существенной неопределённости используй специальный инструмент
`question` (если он недоступен — задай вопрос обычным сообщением).
- Предлагай 2–4 коротких варианта с рекомендацией и возможность своего ответа.
- Дождись ответа, прежде чем принимать зависящее от него решение.
- Не спрашивай о том, что уже однозначно установлено кодом, документацией или
историей. Не прерывай работу ради мелочей.
## Изменения
- Сначала найди существующую реализацию и связанные зависимости.
- Делай минимальные изменения; не переписывай работающие системы без причины.
- Не создавай дубликаты существующих классов, эффектов, оверлеев и сервисов.
- Не меняй несвязанный код, сцены и префабы.
- Сохраняй совместимость существующих механик и контрактов.
- Учитывай побочные эффекты: пул карт, `InputLockService`, порядок событий,
скрытую информацию и авторитет сервера.
- Если ранее согласованное правило расходится с кодом, не выбирай молча:
зафиксируй расхождение и задай вопрос.
## Игровые проверки
- **Геймплей вручную проверяет пользователь.** Не запускай тестовый бой и не
объявляй игровую механику принятой по собственному прохождению.
- Автоматические проверки правил, клиентские EditMode-тесты, `validate`,
`translations check` и smoke-проверки запускать можно и нужно.
- Не заявляй об успешной проверке, если она не запускалась. Указывай, что
именно проверено, а что осталось на ручную проверку.
## Окружение
- **Не запускай `dotnet` и Docker на рабочем ПК.** Серверные тесты, `validate`
и `translations check` — только на `ssh home` / Docker.
- **Не открывай второй экземпляр Unity с тем же проектом.** Для batch-проверок
делай копию проекта без `Library`.
- `Vanguard.Rules` остаётся чистой библиотекой: без сети, БД, Orleans, Unity и
файлового I/O.
- `Vanguard.Shared` — только DTO/протоколы; `netstandard2.1`-сборка
используется Unity. При изменении протокола пересобирай и заменяй
`client/Assets/Plugins/Vanguard.Shared/Vanguard.Shared.dll`.
- Клиент не является источником истины: состояние матча, RNG и скрытые данные
остаются на сервере.
## UI и взаимодействие
- Выбор карты, круга, зоны или цели — **клик/драг по объекту на поле**, а не
список кнопок в интерфейсе.
- Кнопки — только глобальные действия и подтверждения: завершить ход, сдаться,
отмена, принять/пропустить optional, подтвердить оплату.
- Информационные оверлеи не перехватывают клики и не дублируют выбор кнопками.
- Верхний `CombatStats` strip считается допустимым HUD; world-space
Power/Shield — отложенный долг.
- Для multi-target стоимости требуется отдельный `CostPaymentOverlay`; текущая
панель «Действия» считается промежуточной реализацией, а не отменой требования.
## Карты и способности
- Каждая текстовая способность карты имеет ровно одну реализацию: `CardScript`
(`Abilities`/`Continuous`/`Activated`), общий движок или флаг данных.
- Не добавляй новую универсальную систему эффектов без подтверждённой
необходимости.
- После правок способностей проверяй весь реестр `CardScripts.Default`, тесты
правил, `validate` и `translations check`.
- Точные паттерны AUTO/ACT/CONT, стоимости, выборы целей и частые ошибки —
в Skill `card-implementation.md` и `docs/ability-implementation.md`.
## Проверки и завершение блока
После существенного блока:
1. клиентские EditMode-тесты — в копии проекта;
2. серверные тесты — на `ssh home`/Docker;
3. `validate` и `translations check`;
4. при клиентских изменениях — smoke и при необходимости standalone;
5. коммит и push.
Состояние и следующие шаги — в `docs/SESSION-STATE.md`, подробная история — в
`docs/HANDOFF.md`. Не дублируй одни и те же правила в нескольких местах:
обновляй Skill, если пользователь согласовал новое долговременное правило.