← ClaudeAtlas

shiplisted

Open a PR and merge it in one step — combines `bin/pr.sh` create with `bin/wait-for-pr-checks.sh` polling and `gh pr merge`. Default mode enables GitHub's native auto-merge so the terminal returns immediately; `--client-side` polls in the foreground and merges when CI goes green. TRIGGER when the user says "ship this PR", "ship it", "open and merge", "PR and merge", "create PR and auto-merge it", "wait for CI then merge", "block until merged", "/nyann:ship". Do NOT trigger on "open a PR" alone (no merge intent) — that's the `pr` skill. Do NOT trigger on "merge this existing PR #N" — ship is PR-creation + merge, not standalone merge of an already-open PR. Do NOT trigger on "release X.Y.Z" — that's the `release` skill, which tags a merged commit rather than creating one.
thettwe/nyann · ★ 6 · Code & Development · score 71
Install: claude install-skill thettwe/nyann
# ship Wraps `bin/ship.sh`. The script composes `bin/pr.sh` (PR creation), `bin/wait-for-pr-checks.sh` (poll), and `gh pr merge` (merge) into a single ShipResult. The output schema is at `schemas/ship-result.schema.json`. ## 0. Drift check (quick, non-blocking) Run `bash bin/session-check.sh --flow=ship`. If it produces output, surface the line to the user verbatim. Do not block the flow. ## 1. Pick the mode up front Two modes, decided at invocation. They have very different terminal behavior, so confirm with the user when it isn't obvious which they want. | Mode | Default | Terminal behavior | Use when | |---|---|---|---| | `auto-merge` | yes | returns ~instantly with `outcome:"queued"` | repo allows auto-merge, user wants to walk away | | `client-side` (`--client-side`) | opt-in | blocks until ship-or-fail | repo doesn't allow auto-merge, or user wants the wait surfaced | If the user says "ship it and let me know when it's in" or "block until merged", use `--client-side`. If they say "queue it for merge" or "ship and I'll come back later", use the default. When the user's intent doesn't clearly map to either mode, **you MUST call the `AskUserQuestion` tool** (not plain text): ```json { "questions": [ { "question": "How should this PR be merged after CI passes?", "header": "Ship mode", "multiSelect": false, "options": [ { "label": "Auto-merge (Recommended)", "description": "Returns immediately; GitHub merges when checks pass" },