Skip to content
reporailsPublic

About

Classic desktop games as Claude Code mods, played in a pane while Claude works. Made by Reporails.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

arcade

Classic desktop games as Claude Code mods, played in a pane while Claude works.

Minefield docked beside a Claude Code session: the board in big tiles, the face looking over at Claude's answer

               1  ▆▆ ▆▆ ▆▆
               2  ⚑  ▆▆ ▆▆
               2  ▆▆ ▆▆ ▆▆
               1  1  ▆▆ ▆▆
1  1  1           1  ▆▆ ⚑
▆▆ ▆▆ 2  2  1  1  1  ▆▆ ▆▆
▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆
▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆
▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆ ▆▆

 ▄▄▄▄▄▄▄
  ●   ●    Mines 8 · Time 0:17 · Best 0:42 · By Reporails
    ω      34 safe cells left.
 ▀▀▀▀▀▀▀
Game What it is
minefield Minesweeper. Click or use the keys to clear the board, with a best time and a face that watches the cursor and glances over at the transcript now and then. Run /mines.
brickfall A loud brick breaker after Arkanoid: steer with the mouse, catch thirteen kinds of capsule (laser, split, lightning, giant ball, barrier...) and gems toward a FEVER, set off chains of volt bricks, over a shimmering iridescent backdrop. A real picture in kitty and Ghostty, block characters elsewhere. Run /bricks.
doom Doom, as Freedoom on the doomgeneric engine: a real picture in kitty and Ghostty, block characters elsewhere. Walk with the keys, turn with the mouse or the keys. Prebuilt engines for Linux, macOS and Windows; played on Linux so far. Run /doom.

Doom docked beside a Claude Code session in kitty: Freedoom's first level in the pane, Claude's answer in the transcript (rendered from the session's screen cells and the engine's frame)

Each game is its own plugin, so you install only the ones you want.

Install

In a Claude Code session:

/plugin marketplace add reporails/arcade
/plugin install minefield@reporails-arcade

Or from your shell, then /reload-plugins in any session already open:

claude plugin marketplace add reporails/arcade
claude plugin install minefield@reporails-arcade

Then run the game's command, such as /mines.

Requirements

  • Claude Code 2.1.287 or later, where mods are on by default. Each game's README says what to check if one does not start.
  • A terminal, or the Claude Code desktop app. VS Code and claude -p have nothing to draw a board on; the game says so.
  • For the side pane and the mouse, the fullscreen layout: start Claude Code with CLAUDE_CODE_NO_FLICKER=1. Without it the pane sits above the prompt and the games are played with the keys alone.

What a game can see

These mods draw a pane and keep their state in their own store. They hook no tool or attachment and read nothing the model sees. Run claude plugin validate <game> to list exactly what a game hooks and calls, before any of its code runs.

  • minefield hooks no prompt and makes no network calls.
  • brickfall hooks no prompt and makes no network calls; the game runs inside the mod.
  • doom runs its engine as a child process and talks to it on your machine only, over a Unix socket or 127.0.0.1 with a per-run token. While you play it hooks the prompt box, so game keys that land there go to Doom instead; type / to have the prompt back. Its engine is GPL-2.0-or-later and its game data BSD; see its README.

What the model does read is your CLAUDE.md and the rest of your instructions. To see which of them Claude actually follows: reporails.com.

Develop

The games are strict TypeScript. Each game folder is a complete plugin:

claude --plugin-dir ./minefield              # play it from the checkout
claude -p "/plugin-types" < /dev/null        # write the typings for your Claude Code build into .claude/types/
npx -p typescript@5.9.3 tsc -p .             # typecheck every game and its tests
claude plugin validate --strict ./minefield  # what it hooks and calls, and anything the engine would refuse
claude plugin test ./minefield               # its tests

/plugin-types runs without a login on 2.1.285, behind CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1; from 2.1.287 claude -p asks for one. So CI (.github/workflows/check.yml) runs on every push to main and every pull request, in two jobs: the typecheck, validation and tests on 2.1.285, and the validation and tests again on 2.1.288, where mods are on by default. The typings are generated, never committed: Claude Code's own license does not allow redistributing them.

A new game is a new folder plus one entry in .claude-plugin/marketplace.json.

License

MIT. Made by Reporails, diagnostics for the instructions that steer Claude Code.

About

Classic desktop games as Claude Code mods, played in a pane while Claude works. Made by Reporails.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages