upgrade-a-live-service-safelylisted
Install: claude install-skill TechNickAI/hermes-skills
# Upgrade a Live Service Safely
**Mission:** upgrade a service without taking it down — and when something does
go wrong, recover fast with a rollback you prepared _before_ you needed it.
🔴 **Load this skill and its `scripts/` BEFORE writing any deploy tooling.** On
One run spent ~40 minutes hand-rolling staging commands, skipped the test-port
smoke entirely, and was about to cut over to production before anyone checked
whether a packaged procedure already existed. It did: the bundled
`scripts/stage_and_smoke.sh` already contained the test-port instance, the
DB-copy isolation, the live-`MainPID` invariant, and the real-inference smoke —
none of which the hand-rolled version had. **Reach for the packaged script
before improvising one.** Adapting a proven script is faster than writing a
worse one, and the parts you would have skipped are exactly the parts that catch
problems.
The governing rule: **never let the build and the running service share a
directory, a CPU budget, or an SSH session.** Every serious outage in this class
comes from violating one of those three.
**The strongest version of that rule: don't build on the box at all.** Build in
CI (free arm64 runners on public repos), ship an artifact, unpack to a new
release dir, smoke it on a test port, then swap. Proven end-to-end —
see `references/ci-offload-build-and-stage.md`, with a copy-and-adapt
`templates/ci-standalone-build.yml` and `scripts/stage_and_smoke.sh`.
Filling that template in for a specific service