Shapeshifter Shrimp
Was a string a second ago. Swears it.
A TypeError, fixed.
Grows into Morphing Prawn → Polymorph Lobster
Every bug Claude fixes is a creature for the Bugdex, every fix a battle you can watch, and the work you already do earns XP: 84 bugs in 12 habitats, 99 levels and 102 trophies. It can't be fooled, and nothing is for sale.
While a bug is loose, Claude's work on it plays out on the seabed of its own habitat. Each move is something Claude really did: reading round is Scout, an edit is Patch, and running the failing command again is where the real damage is. Nothing but the proven fix knocks it out.
Have a go. This runs Shellby's own battle engine, the same code the app uses. In the app, Claude makes the moves for you.
A wild bug appeared!
A TypeError is a Shapeshifter Shrimp, ENOENT a hermit crab that lost its shell, a merge conflict a crab with two heads, a flaky test a ghost. You don't catch one by seeing it: it goes in a jar when the fix is proven. Catch a kind 5 times and it evolves, 15 times again, 40 times for a master's crown.
Was a string a second ago. Swears it.
A TypeError, fixed.
Grows into Morphing Prawn → Polymorph Lobster
There's nothing there. That's the problem.
Something was null or undefined, fixed.
Grows into Voidfish → Abyssal Nullshark
Nobody declared it. It came anyway.
A ReferenceError: something not defined, fixed.
Left a bracket open in 2019.
A SyntaxError, fixed.
Grows into Grammar Sea Hare → Linguist Nudibranch
Counts its arms from zero. Gets seven.
An index out of range (RangeError), fixed.
Calls itself. Calls itself. Calls itself.
Maximum call stack size exceeded, fixed.
Said it would resolve. Didn't.
An unhandled promise rejection, fixed.
Ate every byte. Still hungry.
Out of memory, fixed for real (not just a bigger heap).
Its file was right here a minute ago.
A file that wasn't there (ENOENT), fixed.
Grows into Squatter Hermit → Homeowner Hermit
Clamped shut. Asks for permission it'll never get.
Permission denied (EACCES / EPERM), fixed.
This file is being used by another process. Its.
A file busy or locked by another process (EBUSY), fixed.
Thought it was a folder. It was a file.
A file where a folder should be (ENOTDIR / EISDIR), fixed.
No space left. Not even for air.
A full disk (ENOSPC), fixed.
Knocked. Nobody home.
Connection refused (ECONNREFUSED), fixed.
Got there first. Won't move.
A port already in use (EADDRINUSE), fixed.
Grows into Port Warden → Harbour Master
Still on its way.
A timeout, fixed (not just by waiting longer).
Hung up on you. Rude.
A connection reset or socket hang up, fixed.
Can't find where it's going. Or where it is.
A hostname that wouldn't resolve (ENOTFOUND), fixed.
Your origin isn't on the list.
A CORS error, fixed.
Delivered to an address that doesn't exist.
An HTTP 404, fixed.
Something went wrong. On their end. Probably.
An HTTP 500, fixed.
Both heads are right. That's the problem.
A merge conflict, resolved.
Grows into Three-Way Crab → Octopus Merge
Sent it. The sea sent it back.
A rejected git push, sorted out.
Checks every commit at the door.
A failing pre-commit hook, passed properly.
Another git process seems to be running. It's this one.
A stuck git index.lock, cleared.
The whole bay went red. Then it didn't.
A red CI build Shellby helped turn green.
Fine on two systems. Bit the third.
A CI matrix red on just one OS, turned green.
Launched. Sank. Refloated.
A failed deploy check, turned green.
No wind. Six hours. Cancelled.
A CI check that timed out, fixed.
Every check, red. Every one, green again.
Legendary: three or more red checks on a PR, all fixed in one push.
Swam off from node_modules and never came back.
A module that couldn't be found, fixed.
Grows into Module Mackerel → Monorepo Marlin
Its peer dependencies have peer dependencies.
A dependency conflict (ERESOLVE and friends), fixed.
Built it. Watched it fall. Built it again.
A failed build, fixed.
Grows into Rebuilt Keep → Citadel
Small. Annoying. Everywhere.
Lint errors, fixed (not silenced).
Ran aground on npm run dev.
A dev server that crashed, back up and running.
Grows into Refloated Whale → Humpback of Uptime
Only runs on the version it grew up with.
An unsupported engine or version mismatch, fixed.
Punched a string into a number slot.
A type mismatch the type checker caught, fixed.
Property 'fin' does not exist on type 'Pipefish'.
A property that doesn't exist on a type, fixed.
Could not find a declaration file. It is one.
A missing declaration file, fixed.
Accepts anything. Trusts nothing.
An implicit any, typed properly.
Possibly undefined. Definitely long.
An "object is possibly undefined" error, fixed.
Its hints and its code disagree.
A Python type-hint error (mypy, pyright), fixed.
error TS-something. It all looks the same in the kelp.
A TypeScript error, fixed (not suppressed).
Grows into Kelp Knot → Generic Grouper
Looked up a key that was never in the dict.
A Python KeyError, fixed.
Four spaces. No, a tab. No, four spaces.
An IndentationError, fixed.
Imports the module that imports it.
A circular import, untangled.
Has no attribute. Has a lot of teeth.
A Python AttributeError, fixed.
Right type. Wrong value.
A Python ValueError, fixed.
Shared the pie with nobody.
A division by zero, fixed.
Hermit crabs borrow shells. Not two at once.
A Rust borrow-checker error, fixed.
Compiles eventually. Eventually.
A Rust compile error, fixed.
Called unwrap() on None. Is now unwell.
A Rust panic, fixed.
Dereferenced the void. The void didn't like it.
A Go nil pointer dereference, fixed.
All goroutines are asleep. These two especially.
A deadlock, fixed.
Touched memory it doesn't own. Inked everywhere.
A segmentation fault, fixed.
Red. Then green. Then snapped up.
A failing test, passing again.
Grows into Ripening Snapper → Evergreen Snapper
Expected one thing. Received another. Said so loudly.
A failed assertion, passing again.
Doesn't look like it used to.
A snapshot mismatch, fixed (not just re-recorded).
Its pearl was an API key. Now it's in .env.
A secret caught before a push and moved somewhere safe.
Known vulnerabilities. Known, now fixed.
A vulnerable dependency, patched.
Its certificate expired at sea.
A TLS certificate error, fixed (without switching checks off).
Fails when you look away. Not any more.
A flaky test, made steady.
Grows into Poltergeist → Banshee
Observed it. It changed. Caught it anyway.
Legendary: a flake that haunted you for days, gone for good.
Arrives before itself.
A data race, fixed.
Lives in the cache. Rent-free.
A stale cache, cleared.
Its parent left. It didn't.
A leftover process that wouldn't let go, laid to rest.
Expected JSON. Got a web page.
Text that wouldn't parse as JSON, fixed.
Rendered. Changed. Rendered. Changed.
A render loop (maximum update depth), fixed.
Grew one way on the server and another in the browser.
A hydration mismatch, fixed.
Already exists. Swears it's a different fish.
A duplicate key or unique constraint, fixed.
Went to sit at its table. There was no table.
A database table or column that wasn't there, fixed.
Too many requests. Every one of them a sardine.
Rate limited (429 Too Many Requests), fixed.
Not a git repository. Not anyone's.
Git outside a repo, or histories that never met, fixed.
Your local changes would be overwritten. It was.
Git refused to overwrite local changes, settled.
Points confidently at a branch that isn't there.
A branch, ref or pathspec git couldn't find, fixed.
Carries every container. Won't leave the dock.
A Docker daemon or image that wouldn't cooperate, fixed.
Its name had one accent. Now it has three odd letters.
A text encoding error (UnicodeDecodeError), fixed.
Declared. Never used. Go won't build around it.
A Go variable or import declared and not used, fixed.
Dozed off halfway through the test.
A test that timed out, fixed (not just given longer).
All passed. None ran.
A test run that found no tests, fixed.
Knocked with the wrong key. Twice.
A 401 or 403 (not allowed in), fixed.
Missing an arm. The arm was an env var.
A missing environment variable or secret, fixed.
Permission denied (publickey). It has a key. Wrong one.
Git or SSH wouldn't authenticate, fixed.
This one isn't in any book.
Not in any habitat. Something glitchy.
Every habitat has a boss. Beat it for that habitat's badge. Then come the Deep Four, the hardest bugs in the sea, and the champion. Catch every boss and the whole league, in any order, and you're in the Hall of Fame.
🌊 The Shallows
Boss: Heap Leviathan
🕳️ The Burrows
Boss: Overstuffed Pufferfish
🌀 The Currents
Boss: Meltdown Medusa
🪢 Tangled Nets
Boss: Two-Headed Crab
🗼 The Lighthouse
Boss: Matrix Hydra
🛠️ The Reef Workshop
Boss: Tangled Tree Crab
🌿 The Kelp Maze
Boss: Optional Oarfish
🐍 The Sea-Snake Pool
Boss: Circular Sea Snake
🌑 The Deep Trench
Boss: Knotted Eels
🧪 The Proving Pools
Boss: Mirror Mullet
🔐 The Sunken Vault
Boss: Cert Cuttlefish
👻 The Haunted Wreck
Boss: Race Wraith
A new title, badge colour or shell at least every five levels. He grows into new shells as he goes, and the badge by his name changes colour every ten.
Shipping, green tests, fixed bugs, deploys. Nothing pays for cheaper tasks, shorter replies or doing fewer of them, and nothing is ever for sale.
Three small goals a day, the same three on every PC, like "Turn failing tests green". Each pays XP, and clearing all three pays 50 more.
A streak adds 5% a week, up to +25%. Coming back after three days or more away doubles your next 150 XP.
A short quest line that shows you what he can do. Finish it for 150 XP.
Point at the exact line instead of describing where it is. Your comments go back to him as one review.
Not quite right? He takes another run at your last message in a new tab, with its own copy of the files.
Work in a copy never touches your checkout until you say so. Happy with it? One click merges it back.
Near your usage limit? Queue the heavy work and it runs the moment your window resets.
The rubber duck arrives when you let him run a script he wrote, the barnacles after seven days together. 23 of them are secret: you'll know when you find one.
Finish your first task
Party Hat + Confetti
Finish 10 tasks
Hard Hat + Keycap
Finish 25 tasks
Top Hat + Dog Tag
Finish 100 tasks
Crown + Medal
Send out your first helper agent
Captain's Hat + Whistle
Have 3 helpers working at once
Pirate Bandana + High-Vis
Send out 25 helpers in total
Jolly Roger + Tiny Sail
Shellby learns his first new trick
Graduation Cap + Stack of Books
Shellby learns 5 new tricks
Wizard Hat + Bonsai
Approve running a script Shellby wrote
Wrench + Rubber Duck
Run your first routine
Pocket Watch + Pager
Run 3 conversations at the same time
Headphones + Cursors
Answer 25 permission prompts
Safety Goggles + Face Shield
Approve a plan from Plan mode
Monocle + Reading Glasses
Drop a file on Shellby
Paper Plane + Backpack
Use Shellby on 7 different days
Rainbow Scarf + Barnacles
Look at your PC's vitals in the Health view
Stethoscope + Scanner Visor
Share your crab card
Camera + Pearls
Free up space after a low-disk warning
Broom + Toadstool
Finish 5 focus sessions
Guard Helmet + Welding Mask
A friend's crab drops by
Sea Glass + Friendship Cord
Wave to friends 5 times
Message in a Bottle
Fix a failing build on one of your pull requests
Green Flag
Shellby climbs up onto one of your windows
Spyglass
Drag a window 2,000 px with Shellby riding it
Racing Goggles
Shellby climbs the side of your screen 10 times
Climbing Helmet
Ship a project and earn its sticker
Sticker Sheet
Ship 10 different projects
Spray Can
Ship one project often enough that its sticker goes holo
Holo Visor
Release version 1.0 of something
Rocket
Put stickers on 3 different shells
Luggage Tag
A visiting friend's crab leaves you one of their stickers
Trade Binder
Shellby digs you up his first gift
Sand Pail
Shellby digs you up 25 gifts
Metal Detector
Complete a set of finds on the shelf
Treasure Chest
Become best friends with Shellby
Friendship Locket
Find Shellby in hide and seek
Leafy Disguise
Play fetch with Shellby 10 times
Tennis Ball
Catch Shellby in 10 different little scenes
Bubble Pipe
Your crab chats with visiting crabs 5 times
Tin Can Phone
Feed Shellby his first snack
Snack Bowl
Feed Shellby 100 snacks
Napkin Bib
Give Shellby 25 rinses
Bath Sponge
Tuck Shellby in 10 times
Sleepy Teddy
Deploy or publish something
Mission Patch
Turn failing tests green 10 times
Test Tube
Take an issue all the way to a pull request
Ship's Wheel
Get a clean dependency audit
Clipboard
Turn off a plugin or MCP server that sits idle
Feather Duster
Start a crowded conversation fresh with a summary
Fresh Page
Keep a 7-day streak going
Flame Scarf
Reach level 10
Coral Laurel
Put the first piece of decor in his tank
Have 15 pieces in his tank at once
A friend's crab drops by while his tank is on your calling card
Have 5 different plants in his tank at once
Put 3 complete sets of finds on display in his tank
Move him into the 30 gallon tank
Catch your first bug for the Bugdex
Bug Net + Specimen Jar
Catch 10 different kinds of bug
Magnifier
Catch every bug in one habitat of the Bugdex
Catch 40 different kinds of bug
Field Researcher's Cap
Catch 100 bugs
Bug Sprayer
Catch 3 different ghosts from the wreck
Ghost Jar
Finish Harvest Moon while it's on
Finish The Haunting while it's on
Finish Frostbite while it's on
Finish Pen Pal Week while it's on
Finish Spring Clean while it's on
Finish Low Tide while it's on
Win 6 tide event medals
Find your first sparkly one, find or bug
Find 5 sparkly ones
Sparkle Trail
A friend hatches one of your eggs
5 friends hatch your eggs
Hatch a friend's egg
Baby Bib
Swap a find with a friend
Finish a set with a swap
Top the friends' board for a month
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
A secret.
Critical hit! when one turn takes a red suite all the way to green; Clean landing when a copy comes home green first try. Rare, never for speed, never for skipping tests.
Every kind of helper agent is a crew member with a name and a record. They earn hats at levels 1, 3, 5, 8, 12, 16 and 20, and specialise in the bugs they beat most.
Shipping, Rigour, Craft and Tidiness, worked out from the XP he already keeps, and a class from the highest.
Six a year, each with four goals, its own bug and two finds. Finish every goal while it's on for a medal with the year on it.
Every Friday: what you shipped, your streak, XP for each day and the week's stickers, ready to share.
Share your Bugdex and see friends' books and a monthly board. There are no battles between friends: that would rank people by how many bugs they had.
Free for Windows 10 and 11. Bring your Claude Pro or Max plan, or just keep him for company.