# AGENTS.md Guidance for coding agents working in this repository. ## Mission Build `left4me` according to the two implementation plans: - `docs/superpowers/plans/2026-04-22-l4d2-host-lib-v1.md` - `docs/superpowers/plans/2026-04-23-l4d2-web-app-v1.md` Do not invent architecture outside these plans unless explicitly requested. ## Current Project State - `l4d2host/` and `l4d2web/` implementation directories exist. - Implementation plans remain the source of truth for contract changes and task sequencing. ## Non-Negotiable Constraints ### Workspace and tools - Do not use git worktrees. - Repo is a uv workspace; Python is pinned to 3.13 via `.python-version`. After fresh checkout: install `uv` (`brew install uv` / `curl -LsSf https://astral.sh/uv/install.sh | sh`), then `direnv allow` (or `uv sync` directly). See README **Local development** for details. ### Modals: inline vs routed Two coexisting modal mechanisms, one module (`l4d2web/l4d2web/static/js/modals.js`). When adding a new modal, decide which pipeline it belongs to: **Inline modal** — the dialog markup is pre-rendered into the page HTML. Content is whatever's already there; the JS just calls `showModal()` / `close()` on a specific `` by id. Use when: - It's a confirmation (delete, overwrite, reset) - It's a transient prompt mid-flow (conflict resolution during upload) - It's a form whose URL state would be noise (rename, new-folder, new-server) - The content has no standalone-page equivalent Hooks: `