Ship Changes
Ship runs a pre-launch gate before committing. By default: validate-code + safe-repo. The gate ensures nothing broken or unsafe leaves the working tree.
Arguments
--fast— skip the pre-launch gate. Only for hotfixes, disposable branches (spike/prototype/CI), or when the gate already passed manually this session. Never on main/release. State the reason in the commit body.
Workflow
Phase 1 — Pre-launch gate (skipped if --fast)
- Validate code: invoke the validate-code skill. Auto-fixes formatting, verifies types, runs tests.
- If
validate-codereturns FAIL → report errors, STOP. Do not commit or push.
- If
- Sensitive data scan: invoke the safe-repo skill against the staged + unstaged diff only (not the whole repo).
- If sensitive data found → report findings, STOP. Do not commit or push.
Phase 2 — Commit
- Review all changes from status and diff
- Analyze recent commit style from log
- Group changed files by logical concern using commit grouping rules
- For each group: stage specific files by name, commit with HEREDOC format
- If all changes form one logical unit, stage files by name (never
git add -Aorgit add .)
Phase 3 — Push
- Push:
git push(current branch) - Run
git statusafter to verify
Rules
- Pre-launch gate runs by default; only skip via
--fastwith a stated reason; never--faston main/release branches - Group changes into atomic commits when they serve distinct purposes
- NEVER force push (
-for--force)
Error Handling
- If
git pushis rejected (non-fast-forward) → rungit pull --rebasethen retry push once - If pre-commit hook fails → fix reported issues, re-stage, create a NEW commit (never
--amend) - If
--fastis used → log "Pre-launch gate skipped via --fast" in agent output for traceability