Yoink: Fancy Claude Code Notification Hooks
WSL notifications with animated Claude mascots and 9 themes
While working on the next itenium AI session āExtending Your Harnessā, I was working on the slides of the plugin primitives and hooks are definitely a very important one. You donāt ask the model nicely to run the tests or to adhere to your linting conventions and pray that it actually doesā¦
No! For that kind of backpressure you want to be fully deterministic – with hooks!
Category:
ai
Tags:
Share this article on:
The Marketplace
For the session, I turned the slidev deck into itās own tutorial marketplace + plugin. Not very useful for actual installation, but useful as a teaching mecanism: the powerpoint repository IS a Claude Plugin!
It contains super handy skills like the /greeter which really is more involved as youād expect, as it teaches about $ARGUMENTS, running commands (! whoami), and it even incorporates a dependency from an external marketplace (to render a fancy ASCII greeting).
The Hook
For the hooks primitive I first added a PostToolUse for linting. Because the repository doesnāt really contain much code, this turned out to be a json validator.
Since I need to burn as many tokens as possible, as quickly as possible, Iām typically running several Claude Code sessions at the same time and back in the olden days when I was still starting Claude from my trusted PowerShell I had added some quick & dirty notification hooks to inform me when my input was needed somewhere.
Because of PowerShell vs Bash friction, I have since switched to WSL (maybe CLAUDE_CODE_USE_POWERSHELL_TOOL=1 could have elevated that pain but I only recently learned of this Claude env variable) and I havenāt had notifications since.
Yoink
So I quickly started Claude-Notify, later renamed to Yoink to have super fancy notifications. The usual scope explosion happened again of course – I mean these days I just know itās going to happen, resistance is futile.
Some interesting features:
The notification appears on the screen where the Claude Terminal is located at
Clicking the notification activates that Terminal window
Displays interesting context like the current branch, the last model output etc
And then the scope explosion:
9 different themes: š¦, š, š, šø, š, š³, š“, š¤ and š»
Animated Claude mascot!!
75 carefully selected sounds (sound is optional of course)
Fully configurable: the themes, the sounds, the colors, gradients, different scenes per theme, the texts (with replacements)
A settings-editor.ps1 so you can edit Yoinks settings.json and see the result right away
A marketing website!
The Demo
Check the marketing website for all 9 themes and the different Claude mascot animations in action!
The Installation
After all that sidetracking, this was still supposed to be part of the AI session, so actually packaging it as a plugin and exposing it as a marketplace was mandatory :D