ship
GitHub自动化执行多仓库代码检查、提交、推送及Docker镜像构建,并监控CI状态直至通过。用于处理发布流程中的验证与部署任务。
Trigger Scenarios
Install
npx skills add yannicschuller/flowplan --skill ship -g -y
SKILL.md
Frontmatter
{
"name": "ship",
"description": "Ship finished work in the Flowplan repositories – run the repo's checks, commit with the right trailers, push main and the session branch in every changed repo, build the :beta image when the server changed, wait until CI, Visual regression, Docker and CodeQL are green, root-cause anything red, and report in one short German message. Use when the user types \/ship or says \"push das\", \"bau die Beta\", \"schick das raus\"."
}
/ship – checks, push, beta, green
The maintainer is Yannic Schuller (GitHub yannicschuller). Talk to him in German. Optional argument: repo names to limit the run (/ship flowplan-admin). Without one, ship every repo under /home/user with changes.
1. Find what is to ship
For each repo (flowplan, flowplan-docs, flowplan-website, flowplan-app, flowplan-desktop, flowplan-admin, flowplan-push): git status --short and commits ahead of origin/main. Unmerged worktree branches under .claude/worktrees/ are not shipped – mention them.
Tool noise is never committed: restore next-env.d.ts and a reformatted tsconfig.json (git checkout) – Next's dev server rewrites them.
2. Check before pushing
| Repo | Checks |
|---|---|
flowplan |
npx tsc --noEmit -p ., npm test, relevant npx playwright test … for UI changes (dev server: FLOWPLAN_DATA_DIR=<scratch> APP_URL=http://127.0.0.1:<port> npx next dev --hostname 127.0.0.1 -p <port>; Chromium /opt/pw-browsers/chromium) |
flowplan-docs |
npm test; docs changed → run npm run help-docs in flowplan and commit lib/ai/help-docs.json there too |
flowplan-admin |
npm test, npm run -s lint (biome; npx biome check --write formats), npx tsc --noEmit -p . |
flowplan-app |
npm test (imports without .ts) |
flowplan-desktop |
npm run check, npm test (needs xvfb-run -a without a display) |
flowplan-website |
its package.json scripts (lint, typecheck, test) |
Red locally → fix first. Never skip or disable a test.
3. Commit and push
Commit messages say what changed and why; they end with the trailers from CLAUDE.md plus the attribution lines the session's system prompt gives. Then per repo:
git push -q origin HEAD:main && git push -q -f origin HEAD:<session-branch>
(flowplan's "Bypassed rule violations" remote message is expected.) Never force-push main, never rewrite pushed history.
4. Build
flowplanchanged → dispatchdocker.ymlonmainwithout a version (→:beta, deployed to Coolify by the workflow). One build at the end, not per commit.flowplan-websiteandflowplan-docsbuild their images on push by themselves.flowplan-app/flowplan-desktop: no build here – that is/app-releaseor the desktop release (only on request).
5. Wait for green
Watch the runs of the pushed commit (/repos/<owner>/<repo>/actions/runs?head_sha=<sha>) with Monitor (one line per finished run, exit when CI, Visual regression and Docker image are done) – never sleep loops in the foreground. Red → read the failing job's log (mcp__github__get_job_logs), root-cause, fix, push again. A failure that is red on main before your change too: say so, don't hide it. Visual tests that changed on purpose: visual.yml with update=true, then fast-forward origin/visual-baselines into main.
The Docker run's scan job prints Trivy (HIGH/CRITICAL with a fix). New findings → /security.
6. Report (German, short)
Per repo: commit, what it does in one line, checks, run results (CI / Visual / Docker / CodeQL), anything Yannic must do (redeploy in Coolify for flowplan-admin/flowplan-push, …). No file dumps.
Rules
- Tokens and secrets never in chat or code. Kill processes only by exact PID.
- No PRs, no merging PRs, no releases from this skill.
Version History
- 84c9b3c Current 2026-11-07 08:54


