# Ship It

> Validate, commit, push, and open a pull request, then monitor deployment after an explicitly authorized merge. Use for "ship it", "commit and deploy", "push and deploy", or "land this".

- Skill: `learntocloud/ship-it` (Agent Skill)
- Install (CLI): `npx skillmds@latest add learntocloud/ship-it`
- Raw SKILL.md: https://api.skillmd.com/api/skills/learntocloud/ship-it/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: learntocloud (https://skillmd.com/u/learntocloud)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/learntocloud/ship-it

---


# Ship It

Deliver the current task without absorbing unrelated worktree changes.

1. Confirm `gh` authentication and inspect the branch and worktree. Never commit
   on `main`; create an appropriately prefixed branch from `main` when needed.
2. Stage only files belonging to the task, then run `uv run poe check`. Run any
   additional CI-equivalent checks required by the changed surfaces (Terraform,
   migrations, curriculum artifacts, or workflow commands).
3. Review the staged diff, following the `validate` skill's unused-argument and
   unnecessary-async guidance. Trace changed signatures through callers and
   mocks; preserve dependency side effects and required callback interfaces.
   Ruff enforces `ARG001` and `RUF029` across all workspace packages; manually
   review new code in the documented callback-exception files for those rules.
   Commit with a conventional message plus required repository trailers.
4. Push without force. If histories diverge, stop rather than rebasing or
   rewriting history automatically.
5. Open a PR to `main` and watch its checks.

Merging is a separate action requiring explicit user intent. If authorized,
prefer squash merge and respect branch protection.

Deployment runs only after deploy-relevant changes merge to `main`. Find the
`app-deploy.yml` push run by merge SHA and watch it with
`gh run watch --exit-status`. Infrastructure changes run through the reusable
`infra-deploy.yml` job before application deployment. Verify `/health` and
`/ready` after success. A skills/docs-only merge may correctly trigger no
deployment.

Use `debug-deploy` for nontrivial failures. Never bypass a failed quality gate,
force-push, or silently include unrelated files.

