# 🐾 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](https://claude.ai/code) CLI - Python 3 (already required by Claude Code) - bash --- ## Install Clone the repo anywhere and run the install script: ```bash 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//` - 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: ```bash # 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 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 ` | 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](https://circuitforge.tech) project. MIT license.*