← ClaudeAtlas

dogfooding-shipitlisted

Running ShipIt inside ShipIt: the manual `dev` Compose preview, the inner orchestrator's RUNTIME_MODE=local limitations, which credentials to set (and which to leave unset), repo seeding, and driving the inner instance over its HTTP API. Load when working on the dogfood loop, debugging the inner ShipIt UI, or touching local-mode behavior.
nikzlabs/shipit · ★ 7 · Code & Development · score 74
Install: claude install-skill nikzlabs/shipit
# Dogfooding ShipIt in ShipIt Opening the ShipIt repo in production ShipIt surfaces the `dev` Compose service as a **manual** preview — a whole second orchestrator, plus a `Dockerfile.dogfood` build, so it starts on demand rather than every boot. It shares the agent container's `/workspace/node_modules` (populated by `agent.install` at session boot) and runs Vite's **dev server** on the exposed port 3000, proxying `/api`, `/ws`, and `/preview` to the inner orchestrator on internal port 4000. It does **not** run its own `npm install` or a production `vite build` — the Compose file explains why that would be redundant and unsafe. Start it with `shipit service start dev`. A first start may take minutes; a `start` that times out is still running — re-check with `shipit service list`. **Start it whenever your change can be seen in the inner UI.** A few minutes of start time buys a check unit tests cannot make, so "that needs the dogfood instance" is never a reason to ship a UI change unverified, or to hand the decision back to the user. If the container is *paused*, `start` fails with `cannot start a paused container, try unpause instead`; `shipit service restart dev` recovers it. **Leave it running when you are done — never `shipit service stop dev`.** Stopping it by hand buys nothing: archiving the session stops the service anyway. And the user often opens the inner UI after you report, so a stopped service only makes them wait through another start. Say that it is running an