Pokémon that live above your Claude Code prompt
A free Claude Code plugin. Your party roams a tiny pixel world while you work: they run when Claude is busy, cheer when your tests pass, faint when they fail, and evolve as you ship.
Run both inside Claude Code, then start a new session. Needs Claude Code 2.1.287 or newer and a terminal with 24-bit color.
They react to your work
Nothing to set up. Your party watches what Claude is doing and reacts on its own.
Only real failures make them faint. A grep that finds nothing isn't a failure, so a plain
command has to fail three times in a row before anyone keels over. Leave Claude idle for five minutes and
they doze off.
Even the spinner joins in, and each turn closes with a Poké Ball:
✻ Searching tall grass… (17m 46s · thinking) ◓ Caught for 18m 2s
Raise them into legends
Every Pokémon in your party earns XP from the work you and Claude get done.
| Claude finishes a reply | +2 |
| A test run passes | +5 |
| A commit goes through | +10 |
A test run and a commit in one command (npm test && git commit) earn both. Levels
stop at Lv 100, as in the games.
What? Charmander is evolving! They evolve the way they do in the games:
- at a level: Charmander at Lv 16
- with a stone: Pikachu with a Thunder Stone, Eevee with a Water Stone
- by trade: Onix with a Metal Coat, Haunter with a Linking Cord
- with friendship, after 10 hours together: Pichu, Togepi, Riolu
- by the clock: Rockruff into Midnight Lycanroc at night
Stones and trade items come from the PokéMart. Regional forms evolve the way their region does, and gender matters where it does in the games.
You decide when: a Pokémon that can evolve waits with gold motes rising around it until you run
/pokemon evolve <name>, and picks its branch or form if it has more than one.
/pokemon evolve auto lets them evolve by themselves.
Each evolution gets its own screen, as in the games: the old and new forms swap in silhouette, faster and
faster, a burst of light, and Congratulations! Pick the one you grew up with:
/pokemon evolution rays (the default, Gen 4–5), white (Gen 1–2) or
gradient (Gen 3).
The screen waits for a wild visitor to leave, and needs a band at least 8 rows tall; below that the Pokémon flashes in place. On a narrow band its message shortens and keeps both names. The prompt keeps working meanwhile: a command that evolves another one answers at once, and its screen plays next.
905 Pokémon from Gen 1 to 8, 424 alternate forms, and a 1 in 32 chance of a shiny on every catch. Names are written as in the games, Farfetch'd, Mr. Mime, Nidoran♀, and you can type them without the punctuation.
Welcome to the PokéMart!
Your work pays in Pokédollars as well as XP. Click 🛒 ₽ in the band's corner and the Mart opens
right there in the band: pick a tab, pick an item, set how many, buy. Thank you, come again!
Earn ₽ as you ship
| Claude finishes a reply | ₽20 |
| A test run passes | ₽50 |
| A commit goes through | ₽100 |
| You start with, as in Red and Blue | ₽3,000 |
On the shelves
Ten evolution stones for ₽3,000. The trade items (Metal Coat, Dragon Scale, Up-Grade and the rest), the Linking Cord, Galar's apples and pots, the two Scrolls, Black Augurite, Peat Block, the Galarica Cuff and Wreath for ₽5,000. Rare Candy, a Lucky Egg for half as much XP again (rounded down), and a Soothe Bell that makes time together count one and a half times.
No clicks in your terminal? /pokemon buy fire stone 3 shops by typing. Clicking needs
Claude Code's fullscreen mode, and the Mart takes its keys once you click into it. Type a command and it
closes, and the command goes to your prompt. Enter right after a buy asks first, so nothing is bought
twice by accident. It fits a band from 40 columns wide.
/pokemon give a stone or trade item and it works at once, on
its own evolution screen. A hold item is held, one per Pokémon, and /pokemon bag shows who
holds what.
Twenty landscapes, on your clock
Meadow, hills, mountains, lake or forest: a new one every hour, at dawn, day, dusk or night by your local time. This shows the time of day it is for you right now.
Who wanders by
Every 10 to 20 minutes a wild Pokémon steps out of the tall grass, and who it is depends on where and when you are. On average a Pidgey turns up about once in 190 visits and a Dratini about once in 1,900, ten Pidgey for every Dratini. Legendaries, mythicals and Ultra Beasts together come about once in 100 visits, and a Pokémon you've never seen is 2.5 times as likely. A fitting place makes a type 4 times as likely and a fitting hour twice, but anyone can still wander anywhere.
Click it to throw a Poké Ball, in Claude Code's fullscreen mode (/config). Catches join
your party, twins welcome, or your PC box when it's full.
Where and when
- by the lake: Water, Ice, Flying, Bug
- in the mountains: Rock, Ground, Steel, Ice, Dragon, Fighting, Flying
- on the hills: Ground, Normal, Fighting, Fire, Rock, Flying
- at the forest's edge: Bug, Grass, Poison, Fairy, Normal, Dark
- in the meadow: Normal, Grass, Bug, Electric, Fairy, Flying
- at night: Ghost, Dark, Poison, Psychic, Fairy; by day: Fire, Grass, Bug, Normal
- at dawn: Flying, Psychic; at dusk: Flying, Psychic, Ghost
Commands
Type them straight into Claude Code.
A battle HUD for your status line
Optional and separate from the plugin: a status line script with your model as a nametag, the context window left as an HP bar, and your effort as a level. Setup is in the README.
Questions
Does it slow Claude Code down?
Hardly. It draws about 20 frames a second while things move and drops to 5 when nothing does, and it never touches Claude's work. For the half minute or so a wild Pokémon can be aimed at, the band is drawn as coloured text and costs about 20 to 35% CPU against about 10%. Every command answers within a few seconds: one held up by a slow download says "Still working on it…" and tells what it did in a notification, or that a list is ready to run again.
Does it send my code anywhere?
No. It only downloads sprites and evolution data, then caches them. It looks at which commands Claude runs and whether they succeed, and none of that leaves your machine.
I installed it and nothing shows up.
It's a Claude Code mod, and mods are on by default from Claude Code 2.1.287, so update Claude Code if
you're on an older version and start a new session. Then run /plugin: the line under the
tabs should list pokemon among the active mods. Settings such as
disableAllHooks, --safe-mode or an organization's policy can turn mods off.
The party is drawn in a terminal, not in the Desktop app or the VS Code chat panel.
Which terminals work best?
iTerm2, Ghostty, kitty, WezTerm and Windows Terminal draw the pixel art crisply. In the VS Code or
Cursor terminal, set terminal.integrated.minimumContrastRatio to 1. macOS Terminal.app
works but shows thin lines between rows.
Can I use it in several windows at once?
Yes. They share one party, and all of them earn XP for it. Two windows changing it at once keep both changes; only two writes within the same few milliseconds can lose one. After upgrading, restart every open window: one still running an older version writes the save its own way, and 1.2.0 erases your Bag, held items and ₽.
What doesn't it do yet?
It's made on macOS and tested on Linux; Windows hasn't been tried yet. Clicks (Poké Balls, the ₽ button, the Mart) need Claude Code's fullscreen mode, and pixel-exact aim needs a terminal that reports where in a cell you clicked (kitty, Ghostty, iTerm2, WezTerm, foot). Pokémon end at Gen 8, so Gen 9 isn't in. The README has the full list.