Automation

A collection of 16 articles

Install Plannotator for Claude Code Without Touching Global Config

Plannotator gives Claude Code a browser UI for marking up plans, files, and pull requests. It ships as three separate things—a CLI, a Claude Code plugin, and a set of skills—and the obvious install path for each one drops it into your user-level environment, where it loads in every project forever. You can keep the whole thing inside one repo instead. Trying it out shouldn’t cost you a permanent resident in ~/.claude.

Updated  •  6 min read

Forwarding Desktop Notifications to Pushover

I already forwarded mako notifications to Pushover on Linux. The hook is tiny: mako runs a command with the notification id, the script reads makoctl list -j, skips loops and Pushover itself, and POSTs to the Pushover API. Windows has no equivalent of on-notify=exec. I wanted one binary, dn-pushover, that does the same job on both desktops: titles become [DN][hostname] … so a notification that bounces back is easy to drop. Linux stayed simple. Windows did not.

Updated  •  5 min read

A Practical Guide to gh-stack for AI-Assisted Development

Stacked pull requests let you review a feature in logical slices rather than one enormous diff. The challenge is managing the branches, synchronizing PRs, and surviving rebases without breaking the chain. gh-stack handles the scaffolding. It tracks your branch stack in a local JSON file, generates PRs that base each one to its parent, and works on any GitHub repo regardless of whether your organization has enabled native stacked PR support.

Updated  •  3 min read

Fix Claude Desktop PATH with CLAUDE_ENV_FILE

Claude Code runs tools and shell commands on your behalf. Launched from a terminal, the CLI inherits your shell environment and everything just works. But under Claude Desktop, Claude Code is spawned from a GUI/desktop session that never sourced your interactive shell config—so if you rely on version managers like mise, asdf, or nix, the tools they install may not be on Claude’s PATH. The fix is a single setting: CLAUDE_ENV_FILE.

Updated  •  3 min read