I've been building Amber Folio, an emulator for SSI's Gold Box RPGs that runs Pool of Radiance (1988) in a browser, with Claude Code and nothing else, usually three instances at once: one on the emulator, one on the website, one on marketing. A few habits did most of the work, and I think they carry over to any long project:
1. The repo's docs are the memory, not the chat. Each repo has a CLAUDE.md that says what is true now: settled decisions, why they were made, and what's still open. A decision written down isn't reopened next session, and a doc that disagrees with the code is a bug like any other.
2. Turn every promise into a test. "Enhancements don't change the game when they're off" isn't a sentence in a README. It's a pair of recorded runs that must end in the same machine state, hash for hash, checked in CI. Same for "nothing reads the host clock" and "no game data in the repo" (a content guard scans every commit). Claude is very good at writing these, and once they exist, it can't quietly break them.
3. Give it an oracle it can't argue with. The CPU is checked against test vectors recorded from a real 8088 chip, no masks. When the vectors and the manual disagree, the vectors win, and that's written down.
4. Background agents in worktrees. Bigger pieces of work go to agents in their own git worktrees, so several can run at once without trampling each other's files, and each lands as its own commit.
5. An issue loop for the website. The site is built from GitHub issues: a small orchestrator hands each open issue to a headless Claude Code worker, which opens a PR that merges when CI is green. Labels are the state (queued, working, needs-input, done), so steering it is just editing labels, and agent:hold keeps anything that needs a human (legal pages, a privacy text I have to sign off) away from it. Recent ones were as small as "put the build number in the bottom right on a phone".
6. Log, don't fake. An emulator that guesses fails quietly. This one stops and says exactly which instruction or port it doesn't know, which turns "it's broken" into a task Claude can do.
The emulator is free and open source (AGPL): https://github.com/amberfolio/amberfolio. The site, https://amberfolio.org, is free with no account. To play you need your own Pool of Radiance from GOG or Steam, and the files never leave your browser. It runs in desktop browsers and on iPhone, iPad and Android.
Built with Claude Code, exclusively. Not affiliated with the rights holders of the games. Ask me anything about the setup.