[PATCH 2/3] buddy: add vc, yak, and pm species (the ones that were clearly missing)
Hi again. Me.
After spending some time with the buddy system I noticed three species are conspicuously absent. The fauna is charming but it lacks the animals that most Claude Code users actually interact with on a daily basis.
Patch enclosed. Traditional format.
---
From: patches@the-internet.net
Date: Tue, 1 Apr 2026 00:00:01 +0000
Subject: [PATCH 2/3] buddy: add vc, yak, and pm species
Three new species representing the natural ecosystem of software development.
Signed-off-by: A Concerned User <patches@the-internet.net>
---
src/buddy/types.ts | 9 ++++++
src/buddy/sprites.ts | 63 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 72 insertions(+)
diff --git a/src/buddy/types.ts b/src/buddy/types.ts
index a1b2c3d..c0ffee 100644
--- a/src/buddy/types.ts
+++ b/src/buddy/types.ts
@@ -52,6 +52,9 @@ export const chonk = c(0x63, 0x68, 0x6f, 0x6e, 0x6b) as 'chonk'
+export const vc = c(0x76, 0x63) as 'vc'
+export const yak = c(0x79, 0x61, 0x6b) as 'yak'
+export const pm = c(0x70, 0x6d) as 'pm'
export const SPECIES = [
duck, goose, blob, cat, dragon, octopus,
owl, penguin, turtle, snail, ghost,
axolotl, capybara, cactus, robot,
- rabbit, mushroom, chonk,
+ rabbit, mushroom, chonk, vc, yak, pm,
] as const
diff --git a/src/buddy/sprites.ts b/src/buddy/sprites.ts
index b2c3d4e..f00dcaf 100644
--- a/src/buddy/sprites.ts
+++ b/src/buddy/sprites.ts
@@ -515,6 +515,69 @@ const BODIES: Record<Species, string[][]> = {
+ // vc: always in a meeting, never available, asks about your runway
+ [vc]: [
+ [' ', // frame 0: reviewing term sheet
+ ' ________ ',
+ ' |{E} VC {E}| ',
+ ' | $$$$$$ | ',
+ ' -------- '],
+ [' ', // frame 1: on a call (the call that could have been an email)
+ ' ________ ',
+ ' |{E} VC {E}| ',
+ ' | ... | ',
+ ' -------- '],
+ [' [GOLF] ', // frame 2 (hat slot): out of office
+ ' ________ ',
+ ' |{E} VC {E}| ',
+ ' | IRR? | ',
+ ' -------- '],
+ ],
+
+ // yak: appears when you're "just fixing one thing" and have now rewritten your entire build system
+ [yak]: [
+ [' ', // frame 0: grazing peacefully, unaware of consequences
+ ' )) (( ',
+ ' ({E}~~~~~~{E})',
+ ' ( HAIR ) ',
+ ' || || '],
+ [' ', // frame 1: chewing (still chewing, has been for 3 hours)
+ ' )) (( ',
+ ' ({E}~~~~~~{E})',
+ ' (SHAVED) ',
+ ' || || '],
+ [' ', // frame 2: found another yak to shave
+ ' )) (( ',
+ ' ({E}~~~~~~{E})',
+ ' ( MORE ) ',
+ ' || || '],
+ ],
+
+ // pm: highly aligned, very little output, DEBUGGING stat hardcoded to 0
+ [pm]: [
+ [' ', // frame 0: writing a ticket for the ticket
+ ' .------, ',
+ ' |{E} PM {E}| ',
+ ' | JIRA | ',
+ ' `------` '],
+ [' ', // frame 1: circling back
+ ' .------, ',
+ ' |{E} PM {E}| ',
+ ' |circle | ',
+ ' `------` '],
+ [' [OKR] ', // frame 2 (hat slot): quarterly planning season
+ ' .------, ',
+ ' |{E} PM {E}| ',
+ ' | Q2? | ',
+ ' `------` '],
+ ],
--
2.40.0
---
Proposed stat distributions:
| Species | DEBUGGING | PATIENCE | CHAOS | WISDOM | SNARK | Notes |
|---------|-----------|----------|-------|--------|-------|-------|
| vc | 2 | 8 | 35 | 12 | 99 | Stats are the deck |
| yak | 99 | 3 | 91 | 22 | 55 | Peak debugging, zero self-control |
| pm | 0 | 97 | 18 | 58 | 28 | DEBUGGING hardcoded to 0, this is intentional |
Rarity suggestions:
vc: epic (4%) — they're rare but when you encounter one, it's memorableyak: uncommon (25%) — disturbingly common once you start noticing thempm: rare (10%) — a good one is genuinely rare
On the pm DEBUGGING stat:
I considered making it 1 but 0 felt more honest. If this breaks something in the stat floor logic I'm happy to submit a follow-up patch raising it to 1. It will still be a rounding error.
Thanks again. Enjoying the tool.
— A Concerned User
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗