一键导入
zerg-ship
Zerg/Longhouse full ship cycle — test, deploy, QA, verify. Use when pushing changes to production or doing a full dev→deploy iteration.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Zerg/Longhouse full ship cycle — test, deploy, QA, verify. Use when pushing changes to production or doing a full dev→deploy iteration.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Zerg local dev workflow (make dev, logs, debug, stop). Use when running or troubleshooting this repo.
Longhouse managed provider CLI control paths for Claude, Codex, Antigravity, and similar CLIs. Use when investigating or changing managed sessions, provider binary ownership, `longhouse claude`, `longhouse codex`, bridge/relay/hook behavior, local-health liveness, reattach behavior, stale provider runtimes, or AGENTS.md guidance about managed vs unmanaged sessions.
Refresh and ship the Longhouse landing hero video, poster, and supporting product screenshots from realistic demo data, then verify the responsive composition visually.
Zerg testing workflow (unit + E2E). Use when running or debugging tests.
Diagnose slow or inconsistent managed Longhouse sessions by separating provider-loop latency, local hook/control-path health, hosted ingest lag, and runtime-state mismatches.
Debug hosted Longhouse instances on the runtime host. Use when investigating a hosted tenant / live prod behavior, control-plane-managed tenants, managed session state, hosted auth, or tenant SQLite state.
| name | zerg-ship |
| description | Zerg/Longhouse full ship cycle — test, deploy, QA, verify. Use when pushing changes to production or doing a full dev→deploy iteration. |
https://longhouse.ai — Coolify app longhouse-demohttps://control.longhouse.ai — private repo/service; public deploys only health-check ithttps://<subdomain>.longhouse.ai — reprovisioned runtime container managed by the control planelonghouse.ai is a demo-mode Longhouse runtime, not a static landing page.
Do not blur these lanes:
longhouse CLI from
the GitHub release wheel used by scripts/install.sh. Existing users do not
get this from a hosted deploy. They need a new install or upgrade:
uv tool upgrade longhouse or rerun the installer.If a change touches longhouse claude, local hook install, local launcher
behavior, connect --install, or other code that runs on the user's machine,
do not say "deployed" as if hosted users now have it. That kind of change
needs a CLI/package release, and sometimes users must rerun
longhouse connect --install after upgrading.
For launch readiness, use the exact-SHA verifier after the hosted and release lanes have both run:
make launch-readiness SHA="<full-sha>"
This is stricter than hosted deploy success: it also checks latest release and PyPI package build identity so the public installer cannot silently point at old code.
If a tool or workflow already gives you a completion event or a blocking wait primitive, use it once and move on. Do not burn tool calls on pgrep, repeated curls, or ad hoc status polling loops while a background task is running.
Unchanged wait output is not a model decision seam. If the harness re-enters the model whenever a blocking wait yields, do not generate repeated status turns. Keep the durable run ID, report the pending operation once, and resume only when the wait becomes terminal or new user input requires judgment.
Good:
gh run watch <id> --exit-status
./scripts/ops/coolify-deploy.sh longhouse-demo --timeout 900
Bad:
while pgrep -f playwright; do sleep 5; done
while true; do curl .../health; sleep 5; done
Changed paths typically include server/**, web/**, engine/**, config/**, docker/runtime.dockerfile.
What ships:
latest plus the full commit SHAPrimary automation:
SHA="$(git rev-parse HEAD)"
make ship SHA="$SHA"
GitHub then runs at least:
runtime-image.ymldeploy-and-verify.ymlOther push workflows may also appear for the same SHA depending on touched paths.
For agent use, always prefer the explicit-SHA forms:
make ship SHA="<full-sha>"
make ship-watch SHA="<full-sha>"
This skill is the single source of truth for the repo's cowbell ship flow.
When the maintainer says cowbell, the agent owns the whole ship loop:
make ship SHA="<task-sha>"make ship exitsmake ship in a short outer shell timeout; the monitor already has its own timeout, but the normal runtime lane is designed to return in a few minutesmain: a newer main push cancels older in-flight deploy verification instead of waiting behind itdeploy-and-verify.yml waits for the exact-SHA runtime image, deploys that
image to demo and canary in parallel, runs fast health/config/auth gate smoke,
and dispatches full hosted live QA asynchronously. Full CI remains an async
quality signal on normal pushes so the hot ship path is image, parallel deploy,
and fast smoke; set the repo variable DEPLOY_WAIT_FULL_CI=true only when a
temporary conservative gate is needed. Workflow/script-only deploy verification
reuses the current latest image. Manual dispatch stays isolated for recovery
use.
Before pushing runtime/UI work, run the cheapest load-bearing local tier you can:
usually make test-e2e-core for launch-surface changes plus the matching unit
tier. After pushing, do not foreground-babysit branch-latest CI; use the
exact-SHA ship/watch commands and consume their completion signal while moving
on to the next useful task.
If make ship returns non-zero for the target SHA, ship failed. You may explain why you think it failed, including suspected pre-existing drift, but do not relabel that outcome as success.
Manual fallback:
./scripts/ops/coolify-deploy.sh longhouse-demo \
--docker-image ghcr.io/cipher982/longhouse-runtime \
--docker-tag <full-commit-sha> \
--timeout 900
make reprovision IMAGE="ghcr.io/cipher982/longhouse-runtime:<full-commit-sha>"
make qa-live
The hosted control plane is no longer shipped from this public repo. Treat it
as an external service that runtime deploys depend on through
CONTROL_PLANE_URL.
Runtime deploys may still wait for https://control.longhouse.ai/health and
use the hosted instance helpers to reprovision canary instances. That is a
service dependency check, not a public control-plane source deploy.
If the control-plane service itself needs changes, switch to the private
control-plane repo and use its deploy instructions. Do not recreate
control-plane/** or deploy-control-plane.yml here.
If a commit touches both public runtime code and the external hosted control plane, ship and verify each repository independently. Do not assume the public runtime workflow deploys the control plane for you.
If a commit also changes local CLI/install behavior, that is a third concern: hosted deploys may still be needed, but they do not replace publishing a new CLI/package release.
make qa-live
QA_INSTANCE_URL=https://other.longhouse.ai make qa-live
make qa-live-conversations
qa-live covers auth + timeline, forum redirect, session detail, health,
agents API, AI search toggle, recall, briefings, continuation readiness, and
auth refresh. It is now an async post-promote verifier for normal runtime
ships; failures still matter, but they should not block the fast deploy return
path.
Two auth systems:
longhouse_session cookie/api/agents/*: device token → X-Agents-Tokenmake reprovision
make reprovision SUBDOMAIN=other
Data survives reprovision. Hosted tenant SQLite lives at /var/app-data/longhouse/<subdomain>/longhouse.db on the host and /data/longhouse.db in the container.
ssh <runtime-host> 'docker logs longhouse-<subdomain> --tail 50'
coolify app logs longhouse-demo
coolify app logs longhouse-control-plane
Hosted ship does NOT update the maintainer's laptop. The longhouse CLI,
longhouse-engine daemon, and Longhouse.app menu bar are installed
into his system and only move when rebuilt locally. If you forget this
step, the menu bar will show "restart pending" and the maintainer is stuck
dogfooding old code.
After a successful make ship, run this when the task changes a locally
installed Longhouse component: CLI/package code, engine, Desktop App,
installer/connect/onboarding, hooks, or other machine-side behavior.
make dogfood-refresh
launchctl kickstart -k gui/$(id -u)/ai.longhouse.app
Skip this for web/**-only, docs-only, test-only, and hosted-runtime-only
changes; those do not alter the installed CLI, engine, or menu bar. For a
qualifying change, it rebuilds+reinstalls CLI/engine and restarts the menu bar
so it picks up the new engine-status.json.
Shortcut: for Python-CLI-only changes under server/zerg/cli/,
cd server && uv tool install -e . is ~5s vs ~60s. This is narrow —
does not apply to engine, hooks, connect, desktop app, or iOS.
If the change touched ios/, tell the maintainer explicitly at the end of
the ship: iOS has no TestFlight/App Store path yet. He has to plug
his phone in via USB and build via Xcode. Do not claim "shipped"
for iOS changes without calling this out.
Always end a successful ship by reporting:
make dogfood-refresh ran (or why you skipped it)make test-ci passed before pushmake test-e2e passed before push when UI/runtime changedmake dogfood-refresh ran + menu bar restarted (always)ios/ changed