Keep vibecoding fun, every merge yells ship It full screen for 2 sec, add mp3
not yet reviewed by publik. It is live now; the founder has not reviewed this version yet.
Ship It
open source · on publik
Every step written out. No terminal experience needed. Pick your setup.
A full-screen SHIP IIIIITTTT flashes across every monitor whenever something gets merged.
It catches merges two ways, so it works in every Claude Code session and for merges made on GitHub:
| Trigger | Catches | Speed |
|---|---|---|
Claude Code hook (hook.js) | git merge … (incl. --squash), gh pr merge … (incl. --squash) and merge MCP tools that Claude runs in any session | instant |
GitHub watcher (watch.js) | any PR of yours merged anywhere: the GitHub button, auto-merge, cloud agents, other machines | ~30 s |
If both catch the same merge you still get just one overlay at a time.
Windows only (the overlay is PowerShell + WinForms). Needs Node.js and, for the watcher, the GitHub CLI logged in (gh auth login).
Preview the overlay without merging anything:
powershell -NoProfile -STA -ExecutionPolicy Bypass -File shipit.ps1
Test the real thing: open a pull request in this repo and merge it. Within about 30 seconds the overlay should hit your screen. watch.log shows what the watcher saw; a FIRE line means it triggered, followed by overlay exit 0. shipit.log records every overlay run (screens it covered, skips, errors).
The overlay must be started by launch.js (or from a shell), never as a detached process: Windows PowerShell started without a console exits without running the script, which is why it once showed nothing.
Drop an MP3 named shipit.mp3 next to shipit.ps1. It plays with the overlay, and the overlay stays up as long as the clip (2.2 s minimum, 8 s maximum). The file is git-ignored.
Everything is in shipit.ps1: the text and timing in the [ShipItOverlay]::Run(...) call, colors and font in OnPaint.
node uninstall.js
Removes the hook, the logon launcher, and stops the watcher.
shipit.ps1: the overlay (click-through, never steals focus, one at a time)launch.js: starts the overlay correctly (hidden console, survives the caller exiting)hook.js: Claude Code PostToolUse hookwatch.js: GitHub merge watcherinstall.js / uninstall.js: set up and remove everythingMIT
Merge test: merging this PR should flash SHIP IIIIITTTT.
Merge test 2.