# AGENTS.md Read **[GOALS.md](GOALS.md)** first. That is what the user wants. Then [PLAN.md](PLAN.md), [AGENT.md](AGENT.md), [TASKS.md](TASKS.md). ## Hard rules - Product: Rust Hyprland rewrite of a Windows multibox GUI, then extras (Video FX, mapped-key routing). Path `~/git/enBoxer`. Remote HTTPS `https://gitea.nettsi.de/en/enBoxer`. - **No game injection. No required WoW addon in v1.** - **Do not crash Hyprland.** Never `hyprctl dispatch` float/move/resize/pin/close on the user’s session. Never `enboxer layout-apply` or swap/reset against live windows unless the user opted in. Layout code is gated on `ENBOXER_ALLOW_LAYOUT=1`. - Do not launch Steam or unrelated apps. - Do not hardcode WASD; passthrough is the user’s list (example ESDF). - User does not test until they choose to. Prefer unit tests. ## Roles | Role | Who | | --- | --- | | Designer / PM / reviewer | Grok — owns GOALS.md and tickets | | Worker | OpenCode — ponytail plugin on, never `--pure`, never ponytail-review | Grok implements when the user says to keep going without OpenCode.