any-buddy 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,14 +12,14 @@ That's it. Follow the prompts to choose your species, rarity, eyes, hat, and nam
12
12
  Claude Code assigns you a deterministic pet based on your account ID — you can't change it through normal means. This tool lets you choose your own species, rarity, eyes, and hat, then patches the Claude Code binary to make it happen.
13
13
 
14
14
  <p align="center">
15
- <img src="assets/demo.svg" alt="Demo of claude-code-any-buddy" width="700">
15
+ <img src="assets/demo.svg" alt="Demo of any-buddy" width="700">
16
16
  </p>
17
17
 
18
18
  ## How it works
19
19
 
20
20
  Claude Code's companion system generates your pet's visual traits (species, rarity, eyes, hat) by hashing your user ID with a salt string (`friend-2026-401`), then feeding that hash into a deterministic PRNG (Mulberry32). The result is always the same pet for the same user — and it's recalculated on every launch, so you can't override it through config files.
21
21
 
22
- **claude-code-any-buddy** works by:
22
+ **any-buddy** works by:
23
23
 
24
24
  1. **You pick** your desired species, rarity, eyes, and hat through an interactive TUI
25
25
  2. **Brute-force search** finds a replacement salt string that produces your chosen pet when combined with your real user ID (typically takes <100ms)
@@ -70,28 +70,28 @@ npm install -g any-buddy
70
70
 
71
71
  ```bash
72
72
  # Interactive pet picker (default) — pick your pet and apply
73
- claude-code-any-buddy
73
+ any-buddy
74
74
 
75
75
  # Show your current pet
76
- claude-code-any-buddy current
76
+ any-buddy current
77
77
 
78
78
  # Browse and preview pets without applying
79
- claude-code-any-buddy preview
79
+ any-buddy preview
80
80
 
81
81
  # Re-apply saved pet after a Claude Code update
82
- claude-code-any-buddy apply
82
+ any-buddy apply
83
83
 
84
84
  # Silent re-apply (used by the SessionStart hook)
85
- claude-code-any-buddy apply --silent
85
+ any-buddy apply --silent
86
86
 
87
87
  # Restore original pet
88
- claude-code-any-buddy restore
88
+ any-buddy restore
89
89
 
90
90
  # Delete companion so Claude Code re-hatches a fresh one on next /buddy
91
- claude-code-any-buddy rehatch
91
+ any-buddy rehatch
92
92
 
93
93
  # Non-interactive with flags (skip prompts you already know the answer to)
94
- claude-code-any-buddy --species dragon --rarity legendary --eye '✦' --hat wizard --name Draco --yes
94
+ any-buddy --species dragon --rarity legendary --eye '✦' --hat wizard --name Draco --yes
95
95
  ```
96
96
 
97
97
  ### CLI flags
@@ -208,7 +208,7 @@ When you choose to install the hook, it adds this to `~/.claude/settings.json`:
208
208
  "hooks": [
209
209
  {
210
210
  "type": "command",
211
- "command": "claude-code-any-buddy apply --silent"
211
+ "command": "any-buddy apply --silent"
212
212
  }
213
213
  ]
214
214
  }
@@ -220,7 +220,7 @@ When you choose to install the hook, it adds this to `~/.claude/settings.json`:
220
220
  The hook is **optional and defaults to No** — you'll be asked during the interactive flow. If you prefer, just run `any-buddy apply` manually after Claude Code updates.
221
221
 
222
222
  On every Claude Code session start, this runs `apply --silent` which:
223
- 1. Reads your saved salt from `~/.claude-code-any-buddy.json`
223
+ 1. Reads your saved salt from `~/.any-buddy.json`
224
224
  2. Checks if the current binary already has the correct salt (fast `Buffer.indexOf`)
225
225
  3. If not (Claude updated), re-patches — same string replacement, same logic
226
226
  4. Silent mode: produces no output unless a patch was actually applied
@@ -250,7 +250,7 @@ A backup is always created at `<binary-path>.anybuddy-bak` before the first patc
250
250
  | File | Purpose |
251
251
  |---|---|
252
252
  | `~/.claude.json` | Read-only — your user ID is read from here |
253
- | `~/.claude-code-any-buddy.json` | Stores your chosen salt and pet config |
253
+ | `~/.claude-code-any-buddy.json` | Stores your chosen salt and pet config (legacy name kept for compatibility) |
254
254
  | `~/.claude/settings.json` | SessionStart hook is added here (optional) |
255
255
  | `<binary>.anybuddy-bak` | Backup of the original binary |
256
256
 
@@ -258,7 +258,7 @@ A backup is always created at `<binary-path>.anybuddy-bak` before the first patc
258
258
 
259
259
  ```bash
260
260
  # Restore original pet and remove the hook
261
- claude-code-any-buddy restore
261
+ any-buddy restore
262
262
  ```
263
263
 
264
264
  This patches the salt back to the original, removes the SessionStart hook, and clears the saved config.
@@ -40,5 +40,5 @@
40
40
  </style>
41
41
  </defs>
42
42
  <svg id="screen" width="480" height="272" viewBox="0 0 480 272" preserveAspectRatio="xMidYMin slice">
43
- <rect class="background" height="100%" width="100%" x="0" y="0"/><defs><g id="g1"><text x="0" textLength="184" font-weight="bold" class="foreground"> claude-code-any-buddy</text></g><g id="g2"><text x="0" textLength="288" class="foreground"> Pick any Claude Code companion pet</text></g><g id="g3"><text x="0" textLength="208" class="foreground"> User ID: d6242b55-d9f...</text></g><g id="g4"><text x="0" textLength="336" class="color2"> Default pet (original salt): mushroom &#9733;&#9733;</text></g><g id="g5"><text x="0" textLength="400" class="color2"> Rarity: uncommon Eyes: &#176; Hat: crown Shiny: no</text></g><g id="g6"><text x="0" textLength="128" class="color2"> \^^^/ </text></g><g id="g7"><text x="0" textLength="128" class="color2"> .-o-OO-o-. </text></g><g id="g8"><text x="0" textLength="128" class="color2"> (__________)</text></g><g id="g9"><text x="0" textLength="128" class="color2"> |&#176; &#176;| </text></g><g id="g10"><text x="0" textLength="128" class="color2"> |____| </text></g><g id="g11"><text x="0" textLength="8" class="background"> </text></g></defs><g><use xlink:href="#g1" y="17"/><use xlink:href="#g2" y="34"/><use xlink:href="#g3" y="68"/><use xlink:href="#g4" y="102"/><use xlink:href="#g5" y="119"/><use xlink:href="#g6" y="153"/><use xlink:href="#g7" y="170"/><use xlink:href="#g8" y="187"/><use xlink:href="#g9" y="204"/><use xlink:href="#g10" y="221"/><rect x="0" y="255" width="8" height="17" class="foreground"/><use xlink:href="#g11" y="255"/></g></svg>
43
+ <rect class="background" height="100%" width="100%" x="0" y="0"/><defs><g id="g1"><text x="0" textLength="184" font-weight="bold" class="foreground"> any-buddy</text></g><g id="g2"><text x="0" textLength="288" class="foreground"> Pick any Claude Code companion pet</text></g><g id="g3"><text x="0" textLength="208" class="foreground"> User ID: d6242b55-d9f...</text></g><g id="g4"><text x="0" textLength="336" class="color2"> Default pet (original salt): mushroom &#9733;&#9733;</text></g><g id="g5"><text x="0" textLength="400" class="color2"> Rarity: uncommon Eyes: &#176; Hat: crown Shiny: no</text></g><g id="g6"><text x="0" textLength="128" class="color2"> \^^^/ </text></g><g id="g7"><text x="0" textLength="128" class="color2"> .-o-OO-o-. </text></g><g id="g8"><text x="0" textLength="128" class="color2"> (__________)</text></g><g id="g9"><text x="0" textLength="128" class="color2"> |&#176; &#176;| </text></g><g id="g10"><text x="0" textLength="128" class="color2"> |____| </text></g><g id="g11"><text x="0" textLength="8" class="background"> </text></g></defs><g><use xlink:href="#g1" y="17"/><use xlink:href="#g2" y="34"/><use xlink:href="#g3" y="68"/><use xlink:href="#g4" y="102"/><use xlink:href="#g5" y="119"/><use xlink:href="#g6" y="153"/><use xlink:href="#g7" y="170"/><use xlink:href="#g8" y="187"/><use xlink:href="#g9" y="204"/><use xlink:href="#g10" y="221"/><rect x="0" y="255" width="8" height="17" class="foreground"/><use xlink:href="#g11" y="255"/></g></svg>
44
44
  </svg>
@@ -40,5 +40,5 @@
40
40
  </style>
41
41
  </defs>
42
42
  <svg id="screen" width="640" height="935" viewBox="0 0 640 935" preserveAspectRatio="xMidYMin slice">
43
- <rect class="background" height="100%" width="100%" x="0" y="0"/><defs><g id="g1"><text x="0" textLength="184" font-weight="bold" class="color14"> claude-code-any-buddy</text></g><g id="g2"><text x="0" textLength="360" class="foreground"> Pick any Claude Code companion pet you want</text></g><g id="g3"><text x="0" textLength="128" font-weight="bold" class="foreground"> All 18 Species</text></g><g id="g4"><text x="0" textLength="640" class="foreground"> &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; </text></g><g id="g5"><text x="0" textLength="80" class="foreground">&#9472; &#9472; &#9472; &#9472;</text></g><g id="g6"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="32" font-weight="bold" class="foreground">duck</text><text x="48" textLength="160" class="foreground"> </text><text x="208" textLength="40" font-weight="bold" class="foreground">goose</text><text x="248" textLength="152" class="foreground"> </text><text x="400" textLength="32" font-weight="bold" class="foreground">blob</text><text x="432" textLength="160" class="foreground"> </text></g><g id="g7"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> __ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> (&#183;&gt; </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> .----. </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g8"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> &lt;(&#183; )___ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> || </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g9"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( ._&gt; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> _(__)_ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g10"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> `--&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> ^^^^ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `----&#180; </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g11"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="24" font-weight="bold" class="foreground">cat</text><text x="40" textLength="168" class="foreground"> </text><text x="208" textLength="48" font-weight="bold" class="foreground">dragon</text><text x="256" textLength="144" class="foreground"> </text><text x="400" textLength="56" font-weight="bold" class="foreground">octopus</text><text x="456" textLength="136" class="foreground"> </text></g><g id="g12"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> /\_/\ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g13"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#183; &#183;) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> /^\ /^\ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> .----. </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g14"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#969; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> &lt; &#183; &#183; &gt; </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g15"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> (")_(") </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> ( ~~ ) </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> (______) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g16"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> `-vvvv-&#180; </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> /\/\/\/\ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g17"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="24" font-weight="bold" class="foreground">owl</text><text x="40" textLength="168" class="foreground"> </text><text x="208" textLength="56" font-weight="bold" class="foreground">penguin</text><text x="264" textLength="136" class="foreground"> </text><text x="400" textLength="48" font-weight="bold" class="foreground">turtle</text><text x="448" textLength="144" class="foreground"> </text></g><g id="g18"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> /\ /\ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> _,--._ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g19"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ((&#183;)(&#183;)) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> .---. </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g20"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &gt;&lt; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> (&#183;&gt;&#183;) </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> /[______]\ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g21"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> `----&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> /( )\ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `` `` </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g22"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> `---&#180; </text><text x="304" textLength="288" class="foreground"> </text></g><g id="g23"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="40" font-weight="bold" class="foreground">snail</text><text x="56" textLength="152" class="foreground"> </text><text x="208" textLength="40" font-weight="bold" class="foreground">ghost</text><text x="248" textLength="152" class="foreground"> </text><text x="400" textLength="56" font-weight="bold" class="foreground">axolotl</text><text x="456" textLength="136" class="foreground"> </text></g><g id="g24"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> &#183; .--. </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6">}~(______)~{</text><text x="496" textLength="96" class="foreground"> </text></g><g id="g25"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> \ ( @ ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> .----. </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6">}~(&#183; .. &#183;)~{</text><text x="496" textLength="96" class="foreground"> </text></g><g id="g26"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> \_`--&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> / &#183; &#183; \ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( .--. ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g27"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ~~~~~~~ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> | | </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> (_/ \_) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g28"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> ~`~``~`~ </text><text x="304" textLength="288" class="foreground"> </text></g><g id="g29"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="64" font-weight="bold" class="foreground">capybara</text><text x="80" textLength="128" class="foreground"> </text><text x="208" textLength="48" font-weight="bold" class="foreground">cactus</text><text x="256" textLength="144" class="foreground"> </text><text x="400" textLength="40" font-weight="bold" class="foreground">robot</text><text x="440" textLength="152" class="foreground"> </text></g><g id="g30"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g31"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> n______n </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> n ____ n </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> .[||]. </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g32"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> | |&#183; &#183;| | </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> [ &#183; &#183; ] </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g33"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( oo ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> |_| |_| </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> [ ==== ] </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g34"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> `------&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> | | </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `------&#180; </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g35"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="48" font-weight="bold" class="foreground">rabbit</text><text x="64" textLength="144" class="foreground"> </text><text x="208" textLength="64" font-weight="bold" class="foreground">mushroom</text><text x="272" textLength="128" class="foreground"> </text><text x="400" textLength="40" font-weight="bold" class="foreground">chonk</text><text x="440" textLength="152" class="foreground"> </text></g><g id="g36"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> (\__/) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> /\ /\ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g37"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> .-o-OO-o-. </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g38"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> =( .. )= </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6">(__________)</text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( .. ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g39"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> (")__(") </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> |&#183; &#183;| </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `------&#180; </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g40"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> |____| </text><text x="304" textLength="288" class="foreground"> </text></g><g id="g41"><text x="0" textLength="8" class="background"> </text></g></defs><g><use xlink:href="#g1" y="17"/><use xlink:href="#g2" y="34"/><use xlink:href="#g3" y="68"/><use xlink:href="#g4" y="85"/><use xlink:href="#g5" y="102"/><use xlink:href="#g6" y="136"/><use xlink:href="#g7" y="153"/><use xlink:href="#g8" y="170"/><use xlink:href="#g9" y="187"/><use xlink:href="#g10" y="204"/><use xlink:href="#g11" y="238"/><use xlink:href="#g12" y="255"/><use xlink:href="#g13" y="272"/><use xlink:href="#g14" y="289"/><use xlink:href="#g15" y="306"/><use xlink:href="#g16" y="323"/><use xlink:href="#g17" y="357"/><use xlink:href="#g18" y="374"/><use xlink:href="#g19" y="391"/><use xlink:href="#g20" y="408"/><use xlink:href="#g21" y="425"/><use xlink:href="#g22" y="442"/><use xlink:href="#g23" y="476"/><use xlink:href="#g24" y="493"/><use xlink:href="#g25" y="510"/><use xlink:href="#g26" y="527"/><use xlink:href="#g27" y="544"/><use xlink:href="#g28" y="561"/><use xlink:href="#g29" y="595"/><use xlink:href="#g30" y="612"/><use xlink:href="#g31" y="629"/><use xlink:href="#g32" y="646"/><use xlink:href="#g33" y="663"/><use xlink:href="#g34" y="680"/><use xlink:href="#g35" y="714"/><use xlink:href="#g36" y="731"/><use xlink:href="#g37" y="748"/><use xlink:href="#g38" y="765"/><use xlink:href="#g39" y="782"/><use xlink:href="#g40" y="799"/><rect x="0" y="833" width="8" height="17" class="foreground"/><use xlink:href="#g41" y="833"/></g></svg>
43
+ <rect class="background" height="100%" width="100%" x="0" y="0"/><defs><g id="g1"><text x="0" textLength="184" font-weight="bold" class="color14"> any-buddy</text></g><g id="g2"><text x="0" textLength="360" class="foreground"> Pick any Claude Code companion pet you want</text></g><g id="g3"><text x="0" textLength="128" font-weight="bold" class="foreground"> All 18 Species</text></g><g id="g4"><text x="0" textLength="640" class="foreground"> &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; &#9472; </text></g><g id="g5"><text x="0" textLength="80" class="foreground">&#9472; &#9472; &#9472; &#9472;</text></g><g id="g6"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="32" font-weight="bold" class="foreground">duck</text><text x="48" textLength="160" class="foreground"> </text><text x="208" textLength="40" font-weight="bold" class="foreground">goose</text><text x="248" textLength="152" class="foreground"> </text><text x="400" textLength="32" font-weight="bold" class="foreground">blob</text><text x="432" textLength="160" class="foreground"> </text></g><g id="g7"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> __ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> (&#183;&gt; </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> .----. </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g8"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> &lt;(&#183; )___ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> || </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g9"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( ._&gt; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> _(__)_ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g10"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> `--&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> ^^^^ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `----&#180; </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g11"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="24" font-weight="bold" class="foreground">cat</text><text x="40" textLength="168" class="foreground"> </text><text x="208" textLength="48" font-weight="bold" class="foreground">dragon</text><text x="256" textLength="144" class="foreground"> </text><text x="400" textLength="56" font-weight="bold" class="foreground">octopus</text><text x="456" textLength="136" class="foreground"> </text></g><g id="g12"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> /\_/\ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g13"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#183; &#183;) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> /^\ /^\ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> .----. </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g14"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#969; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> &lt; &#183; &#183; &gt; </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g15"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> (")_(") </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> ( ~~ ) </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> (______) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g16"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> `-vvvv-&#180; </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> /\/\/\/\ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g17"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="24" font-weight="bold" class="foreground">owl</text><text x="40" textLength="168" class="foreground"> </text><text x="208" textLength="56" font-weight="bold" class="foreground">penguin</text><text x="264" textLength="136" class="foreground"> </text><text x="400" textLength="48" font-weight="bold" class="foreground">turtle</text><text x="448" textLength="144" class="foreground"> </text></g><g id="g18"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> /\ /\ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> _,--._ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g19"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ((&#183;)(&#183;)) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> .---. </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g20"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &gt;&lt; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> (&#183;&gt;&#183;) </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> /[______]\ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g21"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> `----&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> /( )\ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `` `` </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g22"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> `---&#180; </text><text x="304" textLength="288" class="foreground"> </text></g><g id="g23"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="40" font-weight="bold" class="foreground">snail</text><text x="56" textLength="152" class="foreground"> </text><text x="208" textLength="40" font-weight="bold" class="foreground">ghost</text><text x="248" textLength="152" class="foreground"> </text><text x="400" textLength="56" font-weight="bold" class="foreground">axolotl</text><text x="456" textLength="136" class="foreground"> </text></g><g id="g24"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> &#183; .--. </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6">}~(______)~{</text><text x="496" textLength="96" class="foreground"> </text></g><g id="g25"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> \ ( @ ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> .----. </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6">}~(&#183; .. &#183;)~{</text><text x="496" textLength="96" class="foreground"> </text></g><g id="g26"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> \_`--&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> / &#183; &#183; \ </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( .--. ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g27"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ~~~~~~~ </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> | | </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> (_/ \_) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g28"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> ~`~``~`~ </text><text x="304" textLength="288" class="foreground"> </text></g><g id="g29"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="64" font-weight="bold" class="foreground">capybara</text><text x="80" textLength="128" class="foreground"> </text><text x="208" textLength="48" font-weight="bold" class="foreground">cactus</text><text x="256" textLength="144" class="foreground"> </text><text x="400" textLength="40" font-weight="bold" class="foreground">robot</text><text x="440" textLength="152" class="foreground"> </text></g><g id="g30"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g31"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> n______n </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> n ____ n </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> .[||]. </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g32"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> | |&#183; &#183;| | </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> [ &#183; &#183; ] </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g33"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( oo ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> |_| |_| </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> [ ==== ] </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g34"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> `------&#180; </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> | | </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `------&#180; </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g35"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="48" font-weight="bold" class="foreground">rabbit</text><text x="64" textLength="144" class="foreground"> </text><text x="208" textLength="64" font-weight="bold" class="foreground">mushroom</text><text x="272" textLength="128" class="foreground"> </text><text x="400" textLength="40" font-weight="bold" class="foreground">chonk</text><text x="440" textLength="152" class="foreground"> </text></g><g id="g36"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> (\__/) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> /\ /\ </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g37"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> .-o-OO-o-. </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( &#183; &#183; ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g38"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> =( .. )= </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6">(__________)</text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> ( .. ) </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g39"><text x="0" textLength="16" class="foreground"> </text><text x="16" textLength="96" class="color6"> (")__(") </text><text x="112" textLength="96" class="foreground"> </text><text x="208" textLength="96" class="color6"> |&#183; &#183;| </text><text x="304" textLength="96" class="foreground"> </text><text x="400" textLength="96" class="color6"> `------&#180; </text><text x="496" textLength="96" class="foreground"> </text></g><g id="g40"><text x="0" textLength="208" class="foreground"> </text><text x="208" textLength="96" class="color6"> |____| </text><text x="304" textLength="288" class="foreground"> </text></g><g id="g41"><text x="0" textLength="8" class="background"> </text></g></defs><g><use xlink:href="#g1" y="17"/><use xlink:href="#g2" y="34"/><use xlink:href="#g3" y="68"/><use xlink:href="#g4" y="85"/><use xlink:href="#g5" y="102"/><use xlink:href="#g6" y="136"/><use xlink:href="#g7" y="153"/><use xlink:href="#g8" y="170"/><use xlink:href="#g9" y="187"/><use xlink:href="#g10" y="204"/><use xlink:href="#g11" y="238"/><use xlink:href="#g12" y="255"/><use xlink:href="#g13" y="272"/><use xlink:href="#g14" y="289"/><use xlink:href="#g15" y="306"/><use xlink:href="#g16" y="323"/><use xlink:href="#g17" y="357"/><use xlink:href="#g18" y="374"/><use xlink:href="#g19" y="391"/><use xlink:href="#g20" y="408"/><use xlink:href="#g21" y="425"/><use xlink:href="#g22" y="442"/><use xlink:href="#g23" y="476"/><use xlink:href="#g24" y="493"/><use xlink:href="#g25" y="510"/><use xlink:href="#g26" y="527"/><use xlink:href="#g27" y="544"/><use xlink:href="#g28" y="561"/><use xlink:href="#g29" y="595"/><use xlink:href="#g30" y="612"/><use xlink:href="#g31" y="629"/><use xlink:href="#g32" y="646"/><use xlink:href="#g33" y="663"/><use xlink:href="#g34" y="680"/><use xlink:href="#g35" y="714"/><use xlink:href="#g36" y="731"/><use xlink:href="#g37" y="748"/><use xlink:href="#g38" y="765"/><use xlink:href="#g39" y="782"/><use xlink:href="#g40" y="799"/><rect x="0" y="833" width="8" height="17" class="foreground"/><use xlink:href="#g41" y="833"/></g></svg>
44
44
  </svg>
package/bin/cli.mjs CHANGED
@@ -70,18 +70,18 @@ try {
70
70
 
71
71
  function printHelp() {
72
72
  console.log(`
73
- claude-code-any-buddy — Pick any Claude Code companion pet
73
+ any-buddy — Pick any Claude Code companion pet
74
74
 
75
75
  Usage:
76
- claude-code-any-buddy Interactive pet picker
77
- claude-code-any-buddy --species dragon Skip species prompt
78
- claude-code-any-buddy -s cat -r legendary -e ✦ -t wizard -y
79
- Fully non-interactive
80
- claude-code-any-buddy preview Browse pets without applying
81
- claude-code-any-buddy current Show your current pet
82
- claude-code-any-buddy apply [--silent] Re-apply saved pet after update
83
- claude-code-any-buddy restore Restore original pet
84
- claude-code-any-buddy rehatch Delete companion to re-hatch via /buddy
76
+ any-buddy Interactive pet picker
77
+ any-buddy --species dragon Skip species prompt
78
+ any-buddy -s cat -r legendary -e ✦ -t wizard -y
79
+ Fully non-interactive
80
+ any-buddy preview Browse pets without applying
81
+ any-buddy current Show your current pet
82
+ any-buddy apply [--silent] Re-apply saved pet after update
83
+ any-buddy restore Restore original pet
84
+ any-buddy rehatch Delete companion to re-hatch via /buddy
85
85
 
86
86
  Options:
87
87
  -s, --species <name> Species (duck, goose, blob, cat, dragon, octopus, owl,
package/lib/config.mjs CHANGED
@@ -133,7 +133,7 @@ export function saveClaudeSettings(settings) {
133
133
  writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
134
134
  }
135
135
 
136
- const HOOK_COMMAND = 'claude-code-any-buddy apply --silent';
136
+ const HOOK_COMMAND = 'any-buddy apply --silent';
137
137
 
138
138
  // Claude Code hooks schema: { "SessionStart": [{ "matcher": "", "hooks": [{ "type": "command", "command": "..." }] }] }
139
139
  function findHookEntry(matchers) {
package/lib/tui.mjs CHANGED
@@ -44,7 +44,7 @@ function colorize(text, rarity) {
44
44
  }
45
45
 
46
46
  function banner() {
47
- console.log(chalk.bold('\n claude-code-any-buddy'));
47
+ console.log(chalk.bold('\n any-buddy'));
48
48
  console.log(chalk.dim(' Pick any Claude Code companion pet\n'));
49
49
  }
50
50
 
@@ -114,7 +114,7 @@ export async function runPreview(flags = {}) {
114
114
  export async function runApply({ silent = false } = {}) {
115
115
  const config = loadPetConfig();
116
116
  if (!config?.salt) {
117
- if (!silent) console.error('No saved pet config. Run claude-code-any-buddy first.');
117
+ if (!silent) console.error('No saved pet config. Run any-buddy first.');
118
118
  process.exit(silent ? 0 : 1);
119
119
  }
120
120
 
@@ -373,7 +373,7 @@ export async function runInteractive(flags = {}) {
373
373
  hat: desired.hat,
374
374
  appliedAt: new Date().toISOString(),
375
375
  });
376
- console.log(chalk.dim(' Salt saved. Apply later with: claude-code-any-buddy apply\n'));
376
+ console.log(chalk.dim(' Salt saved. Apply later with: any-buddy apply\n'));
377
377
  return;
378
378
  }
379
379
 
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "any-buddy",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Pick any Claude Code companion pet you want",
5
5
  "type": "module",
6
6
  "bin": {
7
- "any-buddy": "./bin/cli.mjs",
8
- "claude-code-any-buddy": "./bin/cli.mjs"
7
+ "any-buddy": "./bin/cli.mjs"
9
8
  },
10
9
  "files": [
11
10
  "bin/",