The problem
Learning Claude Code, macOS shortcuts, and Git felt like grinding through flashcards — and flashcards are forgettable. The commands only stick when your hands have run them under pressure. I wanted a way to turn command memorization into something you’d actually want to come back to, without any server, account, or install.
The approach
I built an original arcade game from scratch in vanilla JS: no frameworks, no build step, one file you can open in any browser. The Phantom — an original character I designed — floats through a synthwave cabinet. Four command tokens appear each round; capture the right one, dodge the wrong ones. Wrong answers cost a spirit life. The constraint of zero dependencies forced every feature to be exactly as heavy as it needed to be, nothing more.
Designing the Phantom was as important as the game loop. A mascot with personality keeps you playing. I went through six character iterations before landing on the neon ghost silhouette — distinct, playful, and readable at small sizes.
What shipped
Fifty-six command cards spanning Claude Code, macOS, and Git — organized so earlier rounds are forgiving, later rounds are unforgiving. WCAG AA-accessible: keyboard-navigable, sufficient contrast throughout, no motion traps. One-file deploy to GitHub Pages; no backend, no account, no tracking. The Phantom is entirely original.
Reflection
The best constraint I gave myself was “zero dependencies.”
It eliminated every architectural debate and forced the game to be exactly what it needed to be. I’d reach for that constraint more often.


