Ship — Commit & Push
SkillDev toolsShip — commit and push in one command. Chains quality gates, conventional commit, push, and optional PR creation + merge. Use when the user says "ship", "commit and push", "/ship", or wants to finalize a branch.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Ship — Commit & Push skill
What this skill tells your AI
The instructions your AI receives, as published by dgouron/review-flow in .claude/skills/ship/SKILL.md and read by ahel’s review.
Activation
This skill activates with /ship. It chains verification, commit, push, and optionally PR creation and merge.
Optional arguments
/ship # Commit + push (no PR)
/ship pr # Commit + push + gh pr create
/ship pr merge # Commit + push + gh pr create + gh pr merge --admin --squash
Workflow
Step 0: Quality Gates (BLOCKING)
BEFORE any commit, run:
yarn verify
yarn verify runs: TypeScript check + Biome lint + Vitest tests.
If it fails: display the errors and STOP. Do not proceed until all quality gates pass.
Step 1: Analysis
git status --short
git branch --show-current
git log --oneline -5
Guards:
- If branch =
master: STOP — theprotect-main-push.shhook blocks push to master. Create a feature branch first. - If nothing to commit: inform and stop.
Step 2: Staging
- If files are not staged, list them and add them by name (never
git add -Aorgit add .) - NEVER include
.env, credentials, secrets, or lock files unless explicitly requested - NEVER include files unrelated to the current change
Preferred pattern:
git add src/usecases/foo.usecase.ts src/tests/units/usecases/foo.usecase.test.ts
Step 3: Commit
Infer the message from the staged changes. Follow Conventional Commits:
<type>(<scope>): <description>
| Type | Usage |
|---|---|
feat | New feature |
fix | Bug fix |
refactor | Refactoring (no feature or fix) |
test | Tests only |
docs | Documentation only |
chore | Maintenance, dependencies |
style | Formatting (no logic change) |
perf | Performance improvement |
ci | CI/CD changes |
Rules:
- Header max 72 characters
- Description in lowercase, no trailing period
- Scope optional in parentheses, must match bounded context name when applicable
Commit via heredoc (preserves formatting):
git commit -m "$(cat <<'EOF'
feat(webhook): add GitHub signature validation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
EOF
)"
The pre-commit-gate.sh and verify-spec-updated.sh hooks run automatically. If they fail, fix the issue and retry — never use --no-verify.
Step 4: Push
git push -u origin <branch>
The protect-main-push.sh hook blocks push to master and force push. If it triggers, verify you are on a feature branch.
Step 5 (if pr or pr merge): Create PR
gh pr create --title "<type>(<scope>): <description>" --body "$(cat <<'EOF'
## Summary
- <bullet point 1>
- <bullet point 2>
## Test plan
- [ ] yarn verify passes
- [ ] Acceptance tests green
🤖 Generated with Claude Code
EOF
)"
Base branch: master.
Step 6 (if pr merge only and user explicitly requested): Merge PR
gh pr merge --admin --squash
ONLY if the user explicitly asked for merge. Never merge without explicit confirmation.
Step 7: Summary
SHIP
Branch : <branch>
Commit : <type>(<scope>): <description>
Push : origin/<branch>
Gates : yarn verify — green
PR : <url or "not created">
Merge : <squash merged or "not merged">
Security Rules
- NEVER use
--forcepush - NEVER push to
masterdirectly (hook enforces this) - NEVER use
--no-verifyor bypass hooks - NEVER commit
.env, credentials, or secrets - NEVER stage with
git add -Aorgit add . - ALWAYS verify you are on a feature branch before pushing
Signals
- GitHub stars
- 43
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
ship-dgouron- Source
- github.com/dgouron/review-flow