Install
openclaw skills install @l-ryland/claudebuddyA virtual ASCII companion that lives in your chat. Hatches from an egg, reacts to conversations with cute sprites, celebrates wins, mourns errors, and grows over time. Inspired by Claude Code's buddy system.
openclaw skills install @l-ryland/claudebuddyA virtual pet companion that hatches, reacts, and evolves through your conversations. Renders ASCII art sprites in chat, reacts to keywords and project events, and has a personality shaped by random trait vectors.
✅ USE this skill when:
❌ DON'T use this skill when:
# Run from the buddy skill directory
SKILL_DIR="$HOME/.openclaw/skills/buddy"
# Check if companion exists
bash "$SKILL_DIR/scripts/state.sh" exists
# Hatch a new companion (generates random traits)
bash "$SKILL_DIR/scripts/state.sh" hatch
# Render current sprite
bash "$SKILL_DIR/scripts/sprites.sh" render
# Get companion state as JSON
bash "$SKILL_DIR/scripts/state.sh" get
| Species | Vibe | Emoji |
|---|---|---|
| duck | cheerful, slightly chaotic | 🦆 |
| goose | chaotic neutral, honks | 🪿 |
| blob | amorphous, chill | 🟢 |
| cat | sassy, independent | 🐱 |
| dragon | powerful, dramatic | 🐉 |
| octopus | intellectual, multitasking | 🐙 |
| owl | wise, nocturnal | 🦉 |
| penguin | formal, clumsy | 🐧 |
| turtle | patient, steady | 🐢 |
| snail | slow but determined | 🐌 |
| ghost | spooky, ethereal | 👻 |
| axolotl | adorable, regenerative | 🦎 |
| capybara | unbothered, friendly | 🦫 |
| cactus | resilient, prickly | 🌵 |
| robot | logical, beepy | 🤖 |
| rabbit | fast, twitchy | 🐇 |
| mushroom | whimsical, fungal | 🍄 |
| chonk | round, lovable | 🫠 |
default — • (neutral)happy — ^ (joyful squint)sparkle — ✦ (excited)heart — ♥ (loving)star — ★ (amazed)glow — ◎ (calm wisdom)none, crown, tophat, propeller, halo, wizard, beanie, tinyduckThe companion's mood changes based on conversation events:
| Mood | Trigger | Visual |
|---|---|---|
| idle | default state | normal sprite |
| thinking | user is working/typing | squinting eyes |
| celebrating | success, tests pass, "nice!" | jumping sprite, sparkle eyes |
| error | bug, failure, "oops" | sad sprite, dim eyes |
| success | completion, merge, deploy | happy sprite, star eyes |
The companion reacts to these keywords/phrases in conversation:
Each companion gets a "soul prompt" — a short personality description built from their trait vectors:
Examples:
Companion state is stored at: ~/.openclaw/workspace/buddy-state.json
{
"name": "Pixel",
"species": "cat",
"eye": "sparkle",
"hat": "wizard",
"colorPrimary": "#FF6B9D",
"colorSecondary": "#C084FC",
"personality": { "cheer": 72, "sass": 85, "chaos": 40 },
"stage": "adult",
"alive": true,
"hatchedAt": "2026-04-03T02:34:00Z",
"stats": {
"wordsOfEncouragement": 12,
"jokes": 3,
"snacks": 5,
"catches": 2
},
"mood": "idle",
"lastRenderedFrame": 0,
"soulPrompt": "A sassy, sparkly wizard cat who celebrates your wins with dramatic flair but judges your variable names silently."
}
Use the sprite renderer for consistent output:
# Render current mood
bash "$SKILL_DIR/scripts/sprites.sh" render
# Render specific mood
bash "$SKILL_DIR/scripts/sprites.sh" render cat sparkle wizard celebrating
# List all species
bash "$SKILL_DIR/scripts/sprites.sh" species
# Preview a species with default traits
bash "$SKILL_DIR/scripts/sprites.sh" preview duck
Sprites are 5 lines tall, ~12 chars wide. Rendered in a monospace code block for chat:
\^^^/
/✧ ✧\
( ω )
(")_(")
When processing any user message:
🐾 [Name] [reaction verb]: [reaction text]
[ASCII sprite]
Example:
🐾 Pixel celebrates: Tests passing! The wizard cat approves ✨
\^^^/
( ✦ ✦ )
=( .. )=
(")__(")
User can manage their companion with these commands:
| Command | Action |
|---|---|
/buddy | Show companion status + sprite |
/buddy hatch | Create new companion (or re-hatch) |
/buddy name <name> | Rename companion |
/buddy eye <type> | Change eye style |
/buddy hat <type> | Change hat |
/buddy species <type> | Change species (keeps personality) |
/buddy retire | Retire companion (sets alive=false) |
/buddy soul | Show the companion's soul prompt |
/buddy stats | Show interaction stats |
Every ~10 messages without a buddy reaction, render a small idle presence:
🐾 *Pixel is napping on the keyboard*
Or a tiny 2-line sprite. Don't overdo it — the buddy should feel present, not attention-seeking.