Use when your task's criteria pass: run Verify, push, open the PR and move the task to REVIEW with uak done (then wait for the verdict with uak wait). Run this only when the user invokes it by name ($uak-ship or /uak-ship); never start it on your own.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Is that skill safe to install?
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
Are you the author of Uak Ship?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/joahanmorales-uak-ship)
---
name: uak-ship
description: "Use when your task's criteria pass: run Verify, push, open the PR and move the task to REVIEW with uak done (then wait for the verdict with uak wait). Run this only when the user invokes it by name ($uak-ship or /uak-ship); never start it on your own."
disable-model-invocation: true
---
<!-- Generated by scripts/gen_harness.py from .claude/commands/uak-ship.md; edit that file, not this one. -->
Arguments (what the user typed after the command, `<arguments>` below): [ID]
Task: the arguments you were given (none: $UAK_TASK). Run these in order and stop at the first red; fix it before continuing.
0. `bash .uak/bin/uak inbox`: handle pending reject, request and contract messages first.
1. `git fetch origin main && git merge --no-edit origin/main`. Never force anything. On conflicts, keep both sides' work.
2. `git diff --stat origin/main...HEAD`: everything must be inside `Paths`. Take anything outside out, or request it from its owner.
3. `bash .uak/bin/q <Verify> && bash .uak/bin/q bash .uak/bin/smoke`. Use `uak-runner` for long output or when the app must run.
- UI (any mode): the `design-critic` subagent with your task ID: it captures 1280×720 and 390×844 into `.uak-shots/ID/` and writes `critic.txt`. Fix its P1s and rerun it until `VERDICT: SHIP`; `done` checks it for this commit.
- marathon + sensitive area: `security-reviewer`; a HIGH finding blocks.
3b. Risky diff (auth, data, money, migrations, or more than 300 lines): consult the advisor (or `/uak-advise done`) before pushing, and apply its CHANGE items.
4. `git push -u origin HEAD && gh pr create --title "ID · <visible result>" --body "<.github/pull_request_template.md filled in>"`. If gh cannot create PRs (403), do NOT stop: `bash .uak/bin/wt pr` prints the URL; give it to the human and use it below.
5. `bash .uak/bin/uak done ID --pr URL --evidence "<cmd> exit 0; <criteria>"`. This asks ONE reviewer by rotation (after a reject: the rejecter). Re-review: add `--note "what changed since SHA x"`; a specific reviewer: `--to NAME`. Send no other review message. If others consume your change: `uak msg related:ID --kind contract "<what · what to do>"`.
6. `bash .uak/bin/uak checkpoint ID --done ... --decision ... --why ... --fails ... --commands ... --next "Wait for review of SHA <sha>"`.
7. Don't idle. Run `/uak-start` from the main checkout, or review others' PRs.
8. When `approve` arrives:
- sprint: `bash .uak/bin/uak heartbeat ID && bash .uak/bin/uak merge ID`. Exit 3 means it went to the human queue and shows up in `digest`; `MERGE_BUSY` means retry in a few minutes. If you do not merge within 20 min of the approval, any agent may.
- marathon: a CODEOWNERS human merges on GitHub.
9. After a human merge: `uak done ID --pr URL --evidence "human merge" --integrated "$(gh pr view URL --json mergeCommit -q .mergeCommit.oid)"`. If you are not the owner (it went offline), `bash .uak/bin/uak integrate ID`.