A 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 | Rename companion |
/buddy eye | Change eye style |
/buddy hat | Change hat |
/buddy species | 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.
共 1 个版本