The Hermes desktop app ships with an achievements plugin. Badges unlock as you use the agent. Build a skill, set up a cron job, finish a project, the app quietly records it. I liked the idea, but the original plugin felt quiet. A badge would appear and nothing happened. No fanfare, no sense of progress, no way to look back at what I had earned.
So I opened the code.
That is the whole origin of this project. I did not plan to build anything big. I just wanted the badges to feel earned, and the only way to make that happen was to improve the plugin myself.
I just wanted the badges to feel earned, and the only way to make that happen was to improve the plugin myself.Cliff
What The Original Plugin Did
The original Hermes desktop achievements plugin by Tony Simons was a solid foundation. It tracked unlocks, displayed earned badges, and hooked into the bundled Hermes achievements API. Zero backend work needed, which made it a clean base to build on.
What it did not have was any moment. A badge unlocked and the app moved on. There was no notification, no celebration, no history, and no way to show off what you had earned. The data was there. The experience was flat.
The Feature List That Got Out Of Hand
I started with one idea: a notification when a badge unlocks. Then I kept going, because every addition made the plugin feel closer to what I actually wanted:
- Unlock notifications: a toast, a chime, and tier-colored confetti the moment a badge lands
- Discord announcements: an optional webhook that posts every unlock and milestone
- Tier-specific sounds: a chime for the low tiers, a five-note fanfare for gold and milestones
- Unlock history: a chronological timeline with dates and evidence sessions
- Custom achievements: user-defined personal badges, celebrated on completion
- Settings panel: toggles for confetti, sound, haptic, and the webhook URL
- Milestone celebrations: a bigger party at every ten unlocks
- Weekly mini-stats: unlocks this week, busiest day, tier counts
- Export badges: download your collection as Markdown or JSON
- Replay celebrations: re-fire the confetti from any badge
- Share cards: a 1200 by 630 canvas PNG for any badge, ready to post
- Per-session context: badges earned in the active session, tagged as new
The plugin also got a smarter statusbar chip with a next-up tooltip and a progress strip, plus search and filter tabs so you can find anything in your history.
All of it sat on top of the existing achievements API. Zero new backend. The unlock watcher polls every fifteen seconds and diffs against a persisted set, so restarts never replay old unlocks.
Zero new backend. The unlock watcher polls every fifteen seconds and diffs against a persisted set, so restarts never replay old unlocks.
The Moment I Decided To Give It Back
The plugin was mine at that point, living in my fork. It worked. I could have kept it private and moved on. But the original author had built the foundation I improved, and it felt wrong to keep the work walled off.
So I opened a pull request back to the original repository. The PR added fourteen features, touched four files, and grew the plugin by over thirteen hundred lines. The license header stayed intact, with credit to the original author.
The original author had built the foundation I improved, and it felt wrong to keep the work walled off.Cliff
What Happened Next
Tony reviewed it and merged it.
That is the part worth talking about. The Hermes ecosystem runs on people building small things and handing them back. The original plugin by Tony Simons got better because someone took it seriously, and the improvement is now available to everyone who installs the plugin. The pull request is public, merged, and part of the project history.
The community around Hermes Agent is exactly this. Open source work, shared in the open, credited properly. My fork remains available with the same improvements if you want to see the full history.


Why Contribution Matters
There are a few reasons I keep doing this, and they apply to any tool you use heavily:
- The tool gets better for everyone. One person’s improvement is not a fork that dies in a corner. It becomes part of the thing the whole community uses.
- You learn the codebase. Reading the source of a tool you use daily teaches you more than any tutorial. You find the seams, the shortcuts, and the design decisions.
- It builds a track record. A public contribution history says more about your skills than any profile page. Anyone can see the work, the code, and the merge.
How You Can Do The Same
You do not need to be a plugin author. The pattern works at any scale:
- Pick a tool you use constantly.
- Read its source until you understand one part of it.
- Fix one small thing that annoys you.
- Send it back as a pull request with a clear description.
The first contribution is the hardest. After that, it becomes a habit. My own first merge started with a quiet badge notification, and it turned into a fourteen feature release.
The first contribution is the hardest. After that, it becomes a habit. Start with one small fix, not a fourteen feature release.
What I Would Do Differently
I would write the tests earlier. The plugin works, and I verified it live across many sessions, but automated tests would have caught edge cases before I shipped them. I would also keep the first pull request smaller. Fourteen features in one PR is a lot to review, and a smaller first contribution is easier for a maintainer to accept.
The version of me that opened that pull request was learning as I went. That is fine. Contribution is a skill, and like every skill, you build it by doing.
Keep your first pull request small. Fourteen features in one PR is a lot to review. A smaller first contribution is easier for a maintainer to accept.
Start Small
The badge plugin is one example, but the idea carries. Every tool you use has seams where an improvement would help. Find one, make it better, and hand it back.
That is how a community becomes more than the sum of its parts.
What You Learned From The Theme Pack Article
The last article covered how I built the Hermes theme pack with contrast-checked skins and a Theme Switcher. The achievements contribution is the same instinct applied to a different target: take something the community uses, make it better, and share the result.
Part Of The Hermes Agent Series
This article is one piece of a bigger story. Read the whole series in order and get the complete picture of what Hermes Agent can do.

Comments