SimakovIgor/pixel-buddy/tree/main/pixel-buddy
Pixel Buddy — a pixel pet for your Claude Code footer
A Claude Code plugin that hatches a pixel pet in the footer next to the status line, where it eats snacks dropped by your work, levels up, earns trophies, naps and reacts to tool calls.
About this mod
Pixel Buddy is a Claude Code mod that places an animated pixel pet in the terminal footer. A buddy hatches with a species, rarity, shiny variant and five stats, then gains xp when Claude answers, tests pass, commits land or plans finish. It tracks mood (joyful, content, tired, lonely, hungry), naps after inactivity, does per-species tricks while Claude thinks, reacts to failed commands and subagents, and dresses up seasonally. Rare work moments award trophies, and a nest keeps up to twelve buddies per machine. Everything is local: hooks only observe events and pass them through unchanged, no network or model calls are made, and the clipboard is used only for the explicit share command. Install via /plugin install pixel-buddy --marketplace SimakovIgor/pixel-buddy; MIT licensed.
Installation
Check the author's README for the marketplace and plugin name first. Commands may change as the repository evolves.
claude plugin marketplace add SimakovIgor/pixel-buddy claude plugin install pixel-buddy@simakovigor
Original text / README
Pixel Buddy
Ship code, feed your buddy.
A pixel pet for Claude Code. It hatches in the footer next to your status line, eats what your work drops, levels up, earns rare trophies, does tricks while Claude thinks, naps when you are away and plays with you on clicks.
![]()
Install
At the prompt of a terminal session, then answer y and pick the user scope to have it in every session:
/plugin install pixel-buddy --marketplace SimakovIgor/pixel-buddy
- From a shell:
claude plugin install pixel-buddy --marketplace SimakovIgor/pixel-buddy - In the desktop app: + next to the prompt box, Plugins, Add marketplace
SimakovIgor/pixel-buddy, Add plugin - Update:
/plugin, Installed,pixel-buddy, Update now. Or turn on auto-update forsimakovigoron the Marketplaces tab - Remove:
/plugin uninstall pixel-buddy. Your buddies stay in~/.claude/plugins/store, delete thepixel-buddyfile there to start from a new egg
Sessions opened before the install get it after /reload-plugins.
Requirements
- Claude Code 2.1.318 or later, in the terminal or in the Code tab of the desktop app
- a terminal with 24-bit color. Clicks need a terminal that reports the mouse: iTerm2, Ghostty, kitty, WezTerm, Warp
- 130 columns or more to sit in the footer. A narrower terminal shows the buddy above the prompt
Meet the buddies
![]()
A buddy hatches with a name, a rarity and five stats, all rolled once:
- Rarity: common 60%, uncommon 25%, rare 10%, epic 4%, legendary 1%. Rarer buddies roll higher stats
- Stats: DEBUGGING, PATIENCE, CHAOS, WISDOM and SNARK. The highest sets its personality: with CHAOS or SNARK on top it teases you, otherwise it cheers you on
- Shiny: 1 egg in 100 hatches in other colors and twinkles
Feed it with your work
Each answer from Claude drops a cookie into the strip, green tests drop a fish, a commit or a finished plan drops a cake. The buddy walks over and eats it. Snacks give xp, xp gives levels, and each level needs ten xp more than the last.
It never starves: the belly empties over a night, a hungry buddy asks for a snack, and a berry from the menu fills it.
Its mood
The card tells the mood and what helps:
| Mood | When | What it does | What helps | | --- | --- | --- | --- | | joyful ♪ | green tests, a commit or a new level in the last half hour | hums, hops, does tricks twice as often | keep shipping | | content · | fed, petted, rested | its usual self | nothing | | tired zz | two hours of work without a ten minute break | walks slower, half shuts its eyes, suggests a stretch | a short break | | lonely ? | nobody pets it for a day | asks for a click | pet it, play ball | | hungry ~ | the belly is low | asks for a snack | a berry from the menu |
Your nest
Every buddy you hatch stays in your nest with its level, belly and love, up to 12. A new egg never replaces anyone,
and a buddy resting in the nest does not get hungry or lonely. Each window keeps its own buddy, also after
claude --resume. A new window shows your last pick.
Trophies
Rare moments of your work earn trophies. Each one brings a gold cup and fireworks in its rarity color, and a toast says what it was for.
![]()
| Trophy | Rarity | For | | --- | --- | --- | | Night Owl | rare | a commit between 2 and 5 at night | | Friday Deploy | rare | a commit on a Friday after 6 in the evening | | Comeback | rare | green tests soon after three failures in a row | | Ball Champ | rare | ten balls caught in one minute | | Regular | epic | a snack every day for a week | | All Grown Up | epic | a buddy at level 10 | | Shiny! | legendary | a shiny buddy in your nest | | Legend | legendary | a legendary buddy in your nest |
Six more are secret: they show a question mark until you find them. The code is open, but finding them yourself is more fun.
trophies in the menu or /buddy trophies opens your trophy case above the prompt. Each trophy is a pixel badge:
round for rare, a hexagon for epic, a shield for legendary. In the desktop app the case shows each trophy's emoji
instead.
![]()
Show it off. share in the menu puts a card of your buddy on the clipboard, drawn in colored squares that every
chat shows:
Noodle, my legendary octopus · level 3
⬜⬜⬜🟪🟪🟪🟪⬜⬜⬜
⬜⬜🟪🟪🟪🟪🟪🟪⬜⬜
⬜⬜🟪⬛🟪🟪⬛🟪⬜⬜
⬜⬜🟪🟪🟪🟪🟪🟪⬜⬜
⬜🟥⬜🟥⬜⬜🟥⬜🟥⬜
🟥⬜🟥⬜⬜⬜⬜🟥⬜🟥
🏆 3 of 14 trophies: 👑 🦉 ⚽
Pixel Buddy for Claude Code: github.com/SimakovIgor/pixel-buddy
What else it does
![]()
- Stays out of the way. It sits at the right end of the footer: the spinner stays above the prompt and the footer keeps its height
- Reacts to the session. Thinking dots while Claude works, a jolt on a failed command, dizzy after three failures in a row, happy on a commit, green tests or a finished plan. A little one runs next to it for every subagent
- Does tricks while you wait, about every half a minute, each species its own
- Comes and goes in its own way: an egg, a puff of smoke, a rocket, a belly slide, ink, bubbles
- Naps when you are away. After three quiet minutes it lies down under a palm, the ninja under a sakura
- Dresses for the season: a witch hat and bats around Halloween, a Santa hat and snow in December
It lives on clicks
![]()
| Do | What happens | | --- | --- | | click it | pet it | | double click | its own move: the ninja teleports in smoke, the robot flies over, the penguin slides on its belly | | drag it | carry it along the strip | | click an empty spot | throw a ball, it runs to catch it. The ninja parries a shuriken | | click a snack | it hurries over and eats it | | right click | the menu |
The menu
A right click opens it. Its first line sums the buddy up: name, level, belly, love and mood.
![]()
| Item | What it does |
| --- | --- |
| card | its card in a frame above the prompt: portrait, mood, level, belly, love and the trophy shelf |
| feed | a berry. A full buddy says no thanks |
| buddies | your nest: bring any buddy back to this window or hatch a new egg |
| trophies | your trophy case above the prompt |
| share | a card of your buddy and its trophies on the clipboard |
| theme | calendar, winter, halloween or off |
| hide | hides it in this window. /buddy on brings it back |
Commands
| Command | What it does |
| --- | --- |
| /buddy | its full card in the chat, stats and personality included |
| /buddy trophies | opens the trophy case |
| /buddy share | the share card, copied and printed |
| /buddy name <name> | rename it |
| /buddy feed | a berry |
| /buddy on | bring it back after hide |
| /buddy demo | every reaction in 25 seconds |
| /buddy help | clicks and commands |
What it runs and sends
- Nothing leaves your machine. No network calls, no model calls, no tokens spent. It runs no programs and reads no files
- Your conversation stays out of it. It reads no prompts, answers or thread titles. It looks at tool calls only to react, for example to a Bash command that runs tests, and keeps none of them
- What it keeps, on this machine only, in the plugin store of Claude Code: your buddies with their stats, xp, belly and love, which buddy each of your last 50 sessions shows, the trophies with their dates, how many days in a row it ate, the theme
- The clipboard only when you ask:
sharecopies its card, nothing else - Hooks only watch. Every hook passes its event on unchanged: the buddy never edits your prompts, tool calls, permissions or settings
How it works
Pixel Buddy is a Claude Code mod:
hooks/register.tsxlistens to the session, decides the mood and what to say five times a second, and draws the strip at the right of the footer, or above the prompt where the footer has no roomhooks/band-client.tsxanimates the strip at 20 frames a second and skips frames that did not changehooks/scene.tspaints with half-block pixels, two per terminal cellhooks/species.tsthe sprites,hooks/buddy.tsstats and the card,hooks/lines.tswhat it says,hooks/trophies.tsthe trophies,hooks/badges.tstheir pixel badges,hooks/share.tsthe share card
Development
The plugin is in pixel-buddy/, its tests in tests/, so installing the plugin does not bring the tests along:
| Task | Command |
| --- | --- |
| run it in a session, reloading on save | claude --plugin-dir pixel-buddy |
| run the tests on a temporary copy | sh tests/run.sh |
| check the manifest and the hooks module | claude plugin validate --strict pixel-buddy |
Troubleshooting
- It sits above the prompt, not in the footer: the terminal is narrower than 130 columns
- Clicks do nothing: the terminal does not report the mouse to Claude Code
cardshows nothing: the panel above the prompt is folded. Click the line▸ plugin panel hiddenright above the prompt to unfold it- Something looks off:
/buddy debugshows how it draws, the last click and menu press and the last error
License
MIT
Get a badge
Is this your project? Add this badge to your README or website. It links back to this page.


