Collectible companion creatures for Claude Code — discover, catch, and level up Buddymon through your coding sessions
Find a file
pyr0ball caa655ab9a feat: session handoff — persist last-session summary across CC restarts
session-stop.sh writes ~/.claude/buddymon/handoff.json with: buddy id,
XP earned, commit count, languages touched, caught monsters, challenge
state, any active encounter, and manual notes (for future /buddymon note).

session-start.sh reads handoff.json on next session start, injects a
'📬 From your last session' block into additionalContext, then removes
the file so it only fires once.

Closes #1 on Circuit-Forge/buddymon.
2026-04-02 23:15:01 -07:00
.claude-plugin fix: plugin registration and reload survival 2026-04-01 16:52:09 -07:00
hooks fix: add matcher field to UserPromptSubmit hook (semgrep pattern) 2026-04-01 23:13:27 -07:00
hooks-handlers feat: session handoff — persist last-session summary across CC restarts 2026-04-02 23:15:01 -07:00
lib feat: evolution system — prestige to evolved form at Lv.100 2026-04-02 23:08:32 -07:00
skills/buddymon feat: per-session buddy isolation via PGRP-keyed state files 2026-04-02 23:11:19 -07:00
.gitignore feat: initial Buddymon plugin 2026-04-01 15:11:46 -07:00
install.sh feat: buddymon statusline widget 2026-04-02 22:31:37 -07:00
LICENSE feat: initial Buddymon plugin 2026-04-01 15:11:46 -07:00
README.md docs: companion widget note is user-configured, not Anthropic-shipped 2026-04-02 11:22:50 -07:00

🐾 Buddymon

A Claude Code extension that turns your coding sessions into a creature-collecting game.

Buddymon are discovered, caught, and leveled up through real development work — not separate from it.

How it works: Buddymon uses Claude Code's hook and plugin system — it is not a UI mod. Notifications (encounters, XP, session summaries) appear as system-injected context in the chat thread, visible to both you and Claude. They do not appear in Thrumble's speech bubble or any other CC UI widget.

Companion widgets and Buddymon

Claude Code supports personal companion widgets — small characters that sit beside the input box and comment in a speech bubble. These are user-configured, not built into CC by Anthropic. Buddymon is a separate community plugin and has no relationship to any specific companion.

The CC plugin API does not expose a hook to drive companion speech bubbles, so Buddymon cannot make your companion announce encounters. If Anthropic ships a companion speech API in a future release, Buddymon will adopt it.

Until then, Buddymon notifications arrive as chat context rather than companion barks. All game state (XP, encounters, roster) works regardless.


What it does

  • Bug monsters spawn from error output during your session (TypeErrors, CORS errors, race conditions, etc.)
  • Buddymon are companions you assign to sessions — they gain XP and propose challenges
  • Challenges are proactive goals your buddy sets at session start (write 5 tests, implement a feature in 30 min, net-negative lines)
  • Encounters require you to fight or catch — catch rate improves if you write a failing test, isolate the repro, or add a comment

Requirements

  • Claude Code CLI
  • Python 3 (already required by Claude Code)
  • bash

Install

Clone the repo anywhere and run the install script:

git clone https://git.opensourcesolarpunk.com/Circuit-Forge/buddymon.git
cd buddymon
bash install.sh

Then restart Claude Code and run:

/buddymon start

The install script:

  • Creates a local circuitforge marketplace under ~/.claude/plugins/marketplaces/circuitforge/ (required — CC validates plugin names against the marketplace index)
  • Symlinks the repo into ~/.claude/plugins/cache/circuitforge/buddymon/<version>/
  • Registers the plugin in ~/.claude/plugins/installed_plugins.json and ~/.claude/plugins/known_marketplaces.json
  • Enables it in ~/.claude/settings.json
  • Creates ~/.claude/buddymon/ state directory with initial JSON files

Because it uses a symlink, any git pull in the repo is immediately live — no reinstall needed.

Mirrors

You can clone from any of the three remotes:

# Forgejo (primary)
git clone https://git.opensourcesolarpunk.com/Circuit-Forge/buddymon.git

# GitHub
git clone https://github.com/CircuitForgeLLC/buddymon.git

# Codeberg
git clone https://codeberg.org/CircuitForge/buddymon.git

Uninstall

bash install.sh --uninstall

Removes the symlink, deregisters from installed_plugins.json, and removes the enabledPlugins entry. Your ~/.claude/buddymon/ state (roster, XP, encounters) is left intact.


Commands

One command, all subcommands:

Usage Description
/buddymon Status panel — active buddy, XP, challenge, encounter
/buddymon start Choose your starter (first run only)
/buddymon assign <name> Assign a buddy to this session
/buddymon fight Fight the current bug monster
/buddymon catch Attempt to catch the current bug monster
/buddymon roster View full roster
/buddymon help Show command list

Bug Monsters

Spawned from error output detected by the PostToolUse hook:

Monster Trigger Rarity
👻 NullWraith NullPointerException, AttributeError: NoneType Common
😈 FencepostDemon IndexError, ArrayIndexOutOfBounds Common
🔧 TypeGreml TypeError, type mismatch Common
🐍 SyntaxSerpent SyntaxError, parse error Very common
🌐 CORSCurse CORS policy blocked Common
♾️ LoopLich Timeout, RecursionError, stack overflow Uncommon
👁️ RacePhantom Race condition, deadlock, data race Rare
🗿 FossilGolem DeprecationWarning, legacy API Uncommon
🔒 ShadowBit Security vulnerability patterns Rare — catch only
🌫️ VoidSpecter 404, ENOENT, route not found Common
🩸 MemoryLeech OOM, memory leak Uncommon

Buddymon (Starters)

Buddy Affinity Discover trigger
🔥 Pyrobyte Speedrunner Starter choice
🔍 Debuglin Tester Starter choice
✂️ Minimox Cleaner Starter choice
🌙 Noctara Nocturnal Late-night session (after 10pm, 2+ hours)
🗺️ Explorah Explorer First time writing in a new language

State

All state lives in ~/.claude/buddymon/ — never in the repo.

~/.claude/buddymon/
├── roster.json        # owned Buddymon, XP, levels
├── encounters.json    # encounter history + active encounter
├── active.json        # current session assignment + challenge
└── session.json       # session stats (reset each session)

A CircuitForge LLC project. MIT license.