Zettel Permanent

A collection of 42 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