# AGENT.md — enBoxer Contract for this repo. The **plan** lives in [PLAN.md](PLAN.md). Tickets live in [TASKS.md](TASKS.md). Do not mix roles. ## Roles | Role | Who | Job | | --- | --- | --- | | Designer + project manager + reviewer | Grok | Own the product. Write `PLAN.md` and every ticket for a phase **before** the worker runs that phase. After the worker finishes the phase, check the diff against the tickets. If wrong, file a smaller ticket and send it back. Do not implement worker tickets. | | Worker | OpenCode | Implement **one** open ticket at a time. Must load **ponytail** (`opencode.json`). Must not use `--pure`. Must not run ponytail-review. | ## Sequence (do not skip) 1. Grok **finishes giving tasks** (all tickets for the phase are on the Open list in `TASKS.md`). 2. OpenCode works those tickets. 3. Grok does **not** run ponytail-review until step 1 is done **and** the worker has closed those tickets (or blocked). 4. Grok reviews against tickets (ordinary accept / bounce). 5. Only when Grok accepts the phase does **Grok** run ponytail-review. 6. Then Grok pushes the git remote. While OpenCode is running, Grok does not edit the same source files. ## OpenCode 1. Directory: `~/git/enBoxer` 2. Plugin: `@dietrichgebert/ponytail` via this repo’s `opencode.json` 3. No `--pure` 4. Read `PLAN.md` + `TASKS.md`; first **Open** ticket only (or the tickets named in the run prompt, in order) 5. Leave ponytail on 6. `cargo test` green before stop 7. No extra features ```bash opencode run --dir /home/en/git/enBoxer --auto --title "enBoxer tickets" \ "Read AGENT.md, PLAN.md, TASKS.md. Ponytail plugin required. Do open tickets in order. Do not run ponytail-review." ``` ## Product Mapped keys to several WoW windows on Hyprland. Unmapped keys stay on the primary. `passthrough` is optional (example ESDF). No injection. Macros, not addons. Video FX is a crop with hover pass-through. ## Review (Grok, after the worker, still not ponytail) - Diff matches the tickets - `cargo test` green - Example `passthrough` still ESDF; empty list still means no skip - No game injection - No new deps without a ticket