Learn to Build
If you want to learn about Agentic Engineering through this bot project, you've come to the right place
Agentic Engineering
I barely wrote the code for the bot and the website by hand. I used the coding agents Codex (OpenAI) and Claude (Anthropic), and I think the result is pretty good, right? If you want to learn how to do it as well, read the following guide.
I used the agentic coding tool "Claude Code" from Anthropic, but you can use any other one, or even a local LLM, as well (I'm not sure if they are capable enough for this right now, but maybe soon).
Recommended
- Git & a GitHub account (for version control)
Once your setup is running, dig into the code. bot.log (found under runtime/logs/bot.log) is the bot's own debug output, and Player.log is MTGA's game log that the bot reads as its primary state source, both are your best friends when something breaks. Found a bug or have an idea for a feature? Fork the repo, make your changes, and open a pull request on GitHub. Every contribution helps the project grow.
Claude Code reads a CLAUDE.md file at the start of each session (you find the file in the bot directory). It's a plain Markdown file at the repo root where you write down the house rules the agent should follow without being asked every single time, for example our git workflow, when README.md must be updated, and how to debug the bot. Keep it current and every new session starts on the same page instead of you re-explaining context from scratch.
If you're mixing agents, note that CLAUDE.md is Claude Code specific. Other tools such as OpenAI's Codex, Cursor, or GitHub Copilot instead read AGENTS.md, a vendor-neutral format that has become the broader standard. Neither file is picked up by the other tool automatically, so the common approach is to keep the actual rules in AGENTS.md and let CLAUDE.md import it, adding only Claude-specific extras like skills on top.
Debugging has moved on from grepping bot.log by hand. While the bot plays, it now writes its own evidence into a local runtime/ folder: a per-decision snapshot of the board state and the move it chose, a per-click log with the raw and arena-mapped click points, a bundle of the screenshot and click attempts whenever a "Choose One" dialog is left unanswered, and a separate watchdog process with its own alert log that survives even a hard crash. Reading those artifacts first, before the raw log, is now the fastest way to find out why the bot made a specific play.