← ClaudeAtlas

dw-shiplisted

Ship the landed change: push — straight to the default branch when that's where you are, else PR → squash-merge — then tear down the worktree and branch and pull. Runs the closing pass first when the change doc is still there. Explicit-invoke only — merging is your call, never the model's.
dominikwozniak/dw-solo-skills · ★ 1 · AI & Automation · score 77
Install: claude install-skill dominikwozniak/dw-solo-skills
# dw-ship — push, merge, clean up One command for both endings of a change: the small serial edit that just gets pushed, and the worktree branch that goes out through a PR and leaves nothing behind. Everything before the merge is reversible, right up to the HARD STOP. ## What it reads The branch state, and `## Git conventions` for the default branch and push rules — every git mechanic here (commit format, PR title and body, no attribution footers) is done the way `dw-git` does it. This skill writes **no `.ai/` artifact**: its output is pushed history and a removed worktree. ## Workflow ### 1. Preconditions - Clean tree (`git status --porcelain`) — leftover work gets committed the way `dw-git` does, or deliberately stashed; never shipped around. - **Landed first.** If a `CHANGE.md` still matches this branch (the same grep `dw-next` uses), the change hasn't been closed: run `dw-land` now — verdict, your go, close — and come back. The promotion commit has to ride this branch; shipping before it exists strands the durable residue. ### 2. Pick the path - Already **on the default branch** (resolved the way `dw-git` does) and it isn't protected → **fast path**: plain `git push`. Done — there's no worktree to clean. **The push is irreversible here too** — nothing sits between it and the default branch — so if the change skipped `dw-check`, say so and offer it before pushing. The nudge at step 3 belongs to both endings, not just the PR one; a fast path that reach