Cranking Out Tray-Resident Windows Tools with Claude and Vibe Coding
"It would be handy to have, but no matter how I search, nothing quite fits" — use Windows long enough and small frustrations like this pile up. Close Photoshop and Adobe CC's background processes keep running. I want to switch wallpaper and screensaver together in one go. My CPU feels hot, but I can't tell why.
Over the past few months, I've turned these "itches you can't scratch" into tools one after another through vibe coding with Claude. This article is a roundup of that, along with the development patterns that solidified as I kept at it.
What I Built
PS-CC-Cleanup (AutoHotkey v2)
A tray-resident tool that detects when Photoshop exits and automatically terminates the leftover Adobe CC background processes. Written in AHK v2, compiled, and kept running in the background. It resolved the "I closed Photoshop but the fan keeps spinning" problem.
WallpaperProfileHub (.NET 8 / WPF)
A tool that saves wallpaper and screensaver combinations as "profiles" and switches between them with one click from the tray. It integrates with my own SlideShowScreenSaver.scr (a slideshow-style screensaver built on .NET Framework 4.8). It uses a mutex for single-instance control, and I also prepared an Inno Setup installer for distribution.
ThermalDetector (.NET 8 / WinForms)
A tray-resident diagnostic tool that monitors CPU/GPU temperature and memory pressure. The interesting part is that it embeds the Anthropic API: it hands the collected diagnostic data to Claude and has it explain, in natural language, "is this state normal right now, and what could be the cause?" The tool itself was made by AI, and the tool itself also uses AI — a nested structure.
WUHistoryTray (.NET 8 / WinForms)
A tray tool that records and browses update history using the Windows Update COM API. During development I ran into a false positive from McAfee, and I investigated the workaround for that together with Claude. How to get along with security software when distributing and routinely running your own tools on Windows turned out to be a piece of knowledge in its own right.
WmiMonitorTray (.NET 8 / WinForms)
A tool that monitors CPU and memory spikes in WmiPrvSE.exe and service hosts (Winmgmt, wuauserv, BITS, SysMain). By using WMI's Win32_Process query to obtain process information, it avoids the access-denied errors that tend to occur with the ordinary APIs.
VideoSticky (Electron)
An app that sticks video files onto the desktop like "sticky notes." To handle cases where H.264 can't be played back directly, I added a mechanism that converts to WebM with ffmpeg-static and caches it. I've also built Electron wrappers for Google Calendar and Trello along the same lines (tray-resident + auto-start + Windows notifications + NSIS installer).
Development Patterns That Solidified Through Repetition
As I built more of these, a set of conventions took shape with Claude — ones that spare me from giving the same explanation every time.
- The install location is always
%LocalAppData%\Programs\<app name>\. Standardized on a per-user install that requires no administrator privileges. - Auto-start is a shortcut placed in
shell:startup. I don't drop the exe there directly. - Anything that needs to launch silently is wrapped in a VBS wrapper or compiled AHK.
- For distribution, Inno Setup (NSIS for Electron).
- PowerShell scripts use UTF-8 BOM + CRLF. A lesson learned from hitting garbled text (mojibake) in a PowerShell 5.1 environment.
Handing these "conventions" to Claude in advance yields something that works with almost no fixes on the first generation. I feel that the productivity of vibe coding hinges as much on articulating your own conventions as on the model's cleverness.
What I Learned from Vibe Coding
- Because getting something working comes so fast, the operational design — "where to put it," "how to launch it," "how to remove it" — becomes the relative bottleneck.
- Tray-resident apps are ideal as subject matter. The UI is small, they serve as study material for OS APIs, and since you use them daily the feedback loop is fast.
- The "realities of Windows" — security-software false positives, UAC, character encodings — can be knocked down one at a time by asking the AI. Being able to move forward just by pasting an error message is a big deal.
Closing
Each one is a small tool, but taken together they've made my own Windows environment decidedly more comfortable. More than anything, the cycle itself — being able to turn a frustration into a tool the same day — is fun.
This article was written in collaboration with Claude.