Ship — Commit & Push

SkillDev tools

Ship — 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.

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 — the protect-main-push.sh hook 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 -A or git 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>
TypeUsage
featNew feature
fixBug fix
refactorRefactoring (no feature or fix)
testTests only
docsDocumentation only
choreMaintenance, dependencies
styleFormatting (no logic change)
perfPerformance improvement
ciCI/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 --force push
  • NEVER push to master directly (hook enforces this)
  • NEVER use --no-verify or bypass hooks
  • NEVER commit .env, credentials, or secrets
  • NEVER stage with git add -A or git 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