claudemon▌

zamarrowski.github.io · 2026-08-04 · by Long Nguyen ·generic
Wild Pokemon appear while you work in Claude Code. Your prompts are steps through the grass. The original 151, fully local, in a terminal tab of its own.

claudemon▌

claudemon

The idea

The walking happens while Claude does, not the moment you press enter: a prompt buys you the steps and the turn takes them, so anything that jumps out does it with the grass already moving. So is the waiting — every twenty seconds Claude spends working is another step, because that is the half of the session you actually have free.

One at a time, and only for half a minute: a Pokemon that appears while you are busy wanders off if you leave it there, so a long session never leaves a queue of battles waiting for you.

The original 151. Fully local — no account, no backend, nothing about you leaving the machine.

Screens

The home screen: an activity line reading Claude is working, Read, 3m09s, someone standing in a band of grass, and a team of five listed below

Home — waiting, which is most of it. The walk only moves while Claude does, so you can tell from across the desk without reading anything.

A battle: a wild Venonat facing your Squirtle, both drawn as pixel sprites, with health bars and a FIGHT / BAG / POKÉMON / RUN menu

Battle — critical hits, the type chart, status conditions, PP. A ◓ by the foe's name means it is already in your Pokédex.

The Pokédex: the list of all 151 down the left with seen and caught markers, and Charmander on the right with its base stats, catch rate and what it evolves into

Pokédex — seen and caught are tracked apart, and the stats fill in for the ones you caught.

The team screen: five Pokémon listed on the left, and Ditto on the right with its health, experience, stats and moves

Team — details, moves, experience, `enter` to change your lead, and the box behind it.

Install

Typed inside Claude Code. Nothing to clone.

1. Add the marketplace and install the plugin — that puts the hooks that make Pokemon appear in place. /plugin marketplace add zamarrowski/claudemon /plugin install claudemon@claudemon COPY 2. Restart Claude Code. It only picks up a plugin's commands and hooks at startup, so until you restart, the next line does not exist yet. 3. Run the setup. It installs the `claudemon` command, the status line and the sprites, printing a line per step and saying so if one of them did not work. /claudemon-setup COPY 4. Restart Claude Code once more, so the new status line loads. 5. In a second terminal tab, run `claudemon`. It asks for a name and a starter the first time, and after that it sits there waiting. claudemon COPY Bulbasaur, drawn as a pixel sprite BULBASAUR Charmander CHARMANDER Squirtle SQUIRTLE

Then send a longish prompt in the Claude tab and watch the status line.

What you need first

| Requirement | How to check | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Claude Code | You are already in it | | Node.js 18+ | node --version. The game and the hooks run on it, and Claude Code ships as its own binary so it does not bring one. Nothing else to install — no dependencies, no build step | | A truecolor terminal | iTerm2, Ghostty, WezTerm, Kitty, Alacritty, VS Code's terminal and macOS Terminal are all fine |

From a clone instead

For hacking on it, a clone works the same way and takes precedence over the installed copy.

git clone https://github.com/zamarrowski/claudemon cd claudemon node tools/install.mjs

COPY

The 151 Pokemon ship with the plugin, so the only thing the install downloads is the sprites — 1.2 MB, a few seconds. Updating and uninstalling are in the README.

What's in it

  • The original 151, with real base stats, types, catch rates and Red/Blue movesets.
  • Battles with critical hits, the type chart, status conditions, PP, one-hit KOs, fleeing and switching Pokemon mid-fight.
  • Catching, where weakening and status genuinely help.
  • Levelling, learning moves, and evolution by level or by stone.
  • A Pokédex tracking seen and caught separately and counting how many of each you have faced, a team screen with the box behind it and the bag inside it, and a shop. Items are used on whoever you have picked, which is the only way a stone gets used at all.
  • A line telling you whether Claude is working, which tool it is on and for how long — and a bell when it finishes or gets stuck on a permission prompt, so the game tab is somewhere you can actually sit and wait.
  • A patch of grass with someone walking through it, who only walks while Claude is working. Something you can catch out of the corner of your eye.
  • HEAL greyed out for as long as Claude has the keyboard, and a blackout that leaves your team down rather than picking it up. Healing is a rest, and a rest is the half of the session Claude is not using — so a team back at full health is something you pick up in the gaps, not something you farm between two tool calls.
  • Blips as you move through the menus, and a theme that plays from the first frame of a battle to the last — off in one place if you would rather work in silence.

Controls

Arrow keys move, `enter` confirms, `esc` goes back, `q` quits. Any key advances a battle message. That is the whole scheme — it is the same everywhere.

zamarrowski.github.io · 9 images · 3 links

Comments (0)

No comments yet