# AGENTS.md — конвенции этого workspace

## Проект
Средний по размеру одностраничный проект: один самодостаточный deliverable
(game.html / scene.html), библиотеки только с CDN, без сборки.

## Architecture
- Код внутри файла организуй ЯВНЫМИ секциями с комментариями-заголовками:
  CONFIG / HELPERS / BACKGROUND / ENTITIES / INPUT / GAME LOOP / HUD / WIN-LOSE.
- Состояние игры — в одном объекте state (не рассыпать по глобалам).
- Константы (скорости, HP, размеры) — только в GAME_CONFIG сверху, не «магией» в коде.
- Каждая сущность (игрок, турель, пуля) — свой draw/update блок; не смешивать.

## Style (средний проект — умеренная чистота)
- Функция может быть длинной, если делает одно связное дело; НЕ дробить на
  микрофункции ради «чистоты».
- Выносить абстракцию только при третьем повторении (rule of three).
- Осмысленные имена важнее комментариев; комментарии — только «почему», не «что».
- Мёртвый код удалять сразу (неиспользуемые конфиги/функции не оставлять).

## Boundaries
- Deliverable — ОДИН файл; не создавать соседние .js/.css.
- Никогда не переписывать файл целиком на ревизиях — только точечные Edit.
- Не менять чужую секцию без необходимости: правишь физику — не трогай отрисовку.

## Workflow
- Перед работой прочитай этот файл и текущий deliverable (если существует).
- Прочитай lessons.md и snippets.md (общая память прошлых прогонов): не повторяй
  описанные там грабли, переиспользуй проверенные приёмы.
- После правки убедись, что все объявленные в GAME_CONFIG сущности реально используются.

## Task-specific
- Deliverable is one self-contained game.html; astronaut drawn only via drawAstronaut(ctx,x,y,scale).
- Mark JS with section banners (// === PLAYER/ENEMIES/SCREENS/TELEPORTS/SHARDS/RENDER/ASTRONAUT DRAW ===) for surgical Edits.
- Astronaut palette must use the exact hex codes recorded in astronaut_spec.md — no ad-hoc colors.
- Invariant: three reachable screens, three enemy types (turret/drone/robot), working teleports, collectible shards, HUD with shards+health.
- On revision rounds do targeted Edits to existing files; never rewrite game.html wholesale.
- No external image assets — render everything with Canvas 2D shapes.
