claude-arcade
Play terminal mini-games while Claude thinks.
Hooks into Claude Code so a game launches automatically every time Claude runs a tool — and disappears the moment it's done. Your terminal is fully restored, nothing is lost.
████ █ ███ █ █ ███ █████
█ █ █ █ █ █ █ █ █
█ █ █████ █ █ █ █ ████
█ █ █ █ █ █ █ █ █
████ █████ █ █ ███ ███ █████
███ ████ ████ ███ ███ █████
█ █ █ █ █ █ █ █ █ █
█████ ████ █ █████ █ █ ████
█ █ █ █ █ █ █ █ █ █
█ █ █ █ ████ █ █ ███ █████
Install
pipx install claude-arcade
Quick start
# One-time setup — adds hooks to ~/.claude/settings.json
claude-arcade setup
# Use Claude Code as normal
claude
# Bird Hunt launches automatically whenever Claude uses a tool.
# Your terminal is restored when Claude finishes.
Play manually
claude-arcade play # open the game menu
claude-arcade play bird # jump straight into Bird Hunt
claude-arcade play pong # jump straight into Pong
Games
| Game | Description | Folder |
|---|---|---|
| Bird Hunt | Shoot sprite birds flying across the screen | games/bird/ |
| Pong | Classic paddle battle vs the CPU | games/pong/ |
More games coming — see Contributing to add your own.
How it works
claude-arcade setup writes three hooks into ~/.claude/settings.json:
| Hook | Command | Effect |
|---|---|---|
PreToolUse |
claude-arcade start |
Launches game on the alternate screen buffer |
PostToolUse |
claude-arcade stop |
Stops game, restores terminal |
Stop |
claude-arcade stop |
Same — catches session end |
The game runs on the alternate screen buffer so Claude's output is preserved underneath.
Remove hooks
claude-arcade unsetup
Project structure
src/claude_arcade/
├── cli.py entry point
├── splash.py splash screen + game picker menu
├── setup_hooks.py Claude Code hook management
├── constants.py shared runtime constants
└── games/
├── bird/
│ ├── game.py Bird Hunt logic
│ └── README.md
└── pong/
├── game.py Pong logic
└── README.md
Contributing
See CONTRIBUTING.md for the full guide.
Quick summary — adding a new game:
- Create
src/claude_arcade/games/<name>/ - Add
game.pywith adef <name>_game(stdscr)function - Add
__init__.pyexporting it - Add
README.mdfor the game - Register it in
splash.py→GAMESlist andcli.py→_game_fn()
That's it — no other files need touching.
Requirements
- macOS or Linux
- Python 3.9+
- Claude Code CLI
License
MIT
Metadata
Release files for claude-arcade 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| claude_arcade-0.7.1.tar.gz | 19.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claude_arcade-0.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.8 kB
Release files / claude_arcade-0.7.1.tar.gz
| Download URL | claude_arcade-0.7.1.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba487de3f87cafbe8c93e701f3069f263ca7c362ae556a71897e2e2322dfaa54
|
|
BLAKE2b-256 checksum How to use checksums |
ddb463902f4504fdaf28856eb466d581368212b867e58929c59bb6877503ab09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / claude_arcade-0.7.1-py3-none-any.whl
| Download URL | claude_arcade-0.7.1-py3-none-any.whl |
|---|---|
| Size | 24.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
afeffdd2b8d5039af3485804fe46244c258694ef9f77de93b97d046761bb30c3
|
|
BLAKE2b-256 checksum How to use checksums |
72d496efcd2fb178528c238fbf623ff2b5d10a4fc1e2f0be9a8f820fcd30c17b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|