one week: a leaderboard, squads, and a status bar
2026-06-11Some weeks you fix one bug. Some weeks the project grows three limbs. This was the second kind, so here is the log before I forget how it happened.
june 4: the leaderboard
Shipped in four phases over one long day: a local profile foundation, the worker backend with ranking and anti fraud, client side publishing with GitHub verification, and public pages at /leaderboard plus /u/<handle> for every profile.
Verification matters here. Anyone can claim a handle, so claiming one you want to keep means proving you own the GitHub account behind it, via a gist you create and the worker checks. Stats stay opt in: nothing is published until you run claude-rpc profile publish.
june 7: the bug bash i did not run
I wired the repo so that @claude can pick up issues, push fixes, and open PRs. Then I filed everything that annoyed me and went to do other things. It closed around ten issues in a day, including a genuinely subtle one: the SSE file watcher died after atomic renames because it watched an inode that no longer existed. The fix watches the parent directory instead. I reviewed and merged each PR, but I wrote almost none of the code that day.
A Discord presence for Claude Code, debugged by Claude Code, feels like the project working as intended.
june 11: v0.14 and a status bar
v0.14.0 landed with pause and export commands, party size on the card, worktree aware git detection, and support for the new Fable 5 model. Alongside it, the first non terminal surface: a VS Code extension that shows the same live stats in your status bar, published on the Marketplace as rarfile.claude-rpc-presence. It reads the same state files the daemon writes, so it costs nothing extra.
what i learned
- Phased shipping beats one giant branch, even solo. Each leaderboard phase was usable on its own.
- Letting the agent work the issue queue is a real multiplier, but only with review. Two of the ten PRs needed changes.
- Every new surface should read existing state, not invent its own. The VS Code extension was small because the daemon already did the work.
Next up: making sure anyone outside this site actually hears about any of this.