.
|\.
| \.
__|__\.__
\________/
~~~~~~~~~~~ ship
A Claude Code skill that ships your changes in one command.
/ship # ship everything
/ship PD-5183 # ship with a ticket reference
/ship https://jira.com/PD-5183 # works with URLs too
One-liner (global):
curl -fsSL https://raw.githubusercontent.com/leandroh/ship/main/install.sh | bashOne-liner (per-project):
curl -fsSL https://raw.githubusercontent.com/leandroh/ship/main/install.sh | bash -s -- --localFrom a cloned repo:
./install.sh # global (~/.claude/skills/ship/)
./install.sh --local # per-project (.claude/skills/ship/)| Step | What happens | Stops if |
|---|---|---|
| 1. Pre-flight | Checks gh CLI, detects base branch, verifies there's something to ship |
No changes, no remote, no gh |
| 2. Branch | Creates a conventional branch (fix/PD-5183-peer-address) if on main |
|
| 3. Stage | Adds changed files, skips secrets and credentials | |
| 4. Merge main | Fetches and merges base branch so tests run against latest | Merge conflicts |
| 5. Lint | Auto-detects linter, auto-fixes when possible | Unfixable lint errors |
| 6. Test | Finds and runs tests for changed files only | Test failures |
| 7. Commit | Creates bisectable conventional commits | |
| 8. Review | Checks diff against security/quality checklist | Critical findings |
| 9. Push | Pushes with upstream tracking | Diverged remote |
| 10. PR | Creates PR with structured description, outputs URL |
| Linter | Test runner | Test conventions | |
|---|---|---|---|
| JS/TS | ESLint, Biome, Prettier | npm test, vitest, jest | *.test.ts, *.spec.ts, __tests__/ |
| Python | Ruff, Black | pytest | test_*.py, *_test.py |
| Ruby | RuboCop | RSpec, Minitest | *_spec.rb, *_test.rb |
| Go | golangci-lint | go test | *_test.go |
package.json scripts and Makefile targets take precedence.
## Problem
Why this change is needed.
## Pre-landing review
Findings from the automated review, or "No issues found."
## Test plan
- [x] Unit tests pass (12 tests, 0 failures)
- [ ] CI passes
Refs: [PD-5183](https://jira.example.com/browse/PD-5183)Refs: only appears when a ticket is provided. No emoji, no AI attribution.
Drop a .claude/review-checklist.md in your project. Use two severity levels:
## Critical (blocks shipping)
- SQL injection: raw queries with string interpolation
- Hardcoded secrets in source code
## Informational (noted in PR, doesn't block)
- Unused imports or dead codeFull template at review-checklist.md.
- Never stages
.env, private keys, credentials, or tokens - Never uses
--no-verify - Never force pushes
- Never skips existing tests or the pre-landing review
- Stops immediately on any failure