███████╗██╗ ██╗██╗██████╗ ██╗████████╗
██╔════╝██║ ██║██║██╔══██╗██║╚══██╔══╝
███████╗███████║██║██████╔╝██║ ██║
╚════██║██╔══██║██║██╔═══╝ ██║ ██║
███████║██║ ██║██║██║ ██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚═╝
Shipit is a Rust command line interface for managing merge requests, changelogs, tags, and releases using a plan and apply interface. Built with coding agent integration in mind. | gitshipit.net
Most release tools execute immediately. Shipit uses a plan/apply pattern that separates "gather and review" from "execute." You see exactly what will be created before anything is pushed, which makes it safe to hand off to an AI agent without fear of a surprise tag or PR.
- Agent-native by design. Deterministic plan files and
--yamloutput make shipit a first-class citizen in agentic coding workflows while still being a standalone tool meant for humans. - Claude Code skill included. Run
shipit claudeto install the shipit skill globally. Then type/shipitin any Claude Code session to load the full workflow guide. No per-project setup required. - GitHub, GitLab, and more platforms to come in one binary. No plugins, no config switching, and no git platform lock-in. Platform is detected automatically from your remote URL.
- Multi-repo releases. Coordinate releases across multiple repositories in a defined order from a single config file using an agent or write your own script.
- Commit enrichment. Fetches PR/MR titles from the platform API so your changelogs read like release notes, not raw git log output.
- No runtime required. Single compiled Rust binary with no Node, Python, or dependency installation.
curl -fsSL gitshipit.net/install | bashcargo install shipit --lockedbrew tap trollefson/shipit && brew install shipitgit clone https://github.com/trollefson/shipit
cd shipit
cargo build --release --lockedSee the releases page for the binaries installed by gitshipit.net/install
shipit claudeThe /shipit skill loads the full workflow guide into Claude's context. Claude will confirm your intent, generate a plan (title, description, and commit list) before touching anything, and ask for your approval before creating any PR/MR or tag.
/shipit create a merge request
Claude will run shipit b2b plan to collect commits between your source and target branches, enrich the description from PR/MR titles, present the plan for review, and open the pull/merge request only after you approve.
/shipit create a tag
Claude will run shipit b2t plan to collect commits since the last tag, suggest the next semantic version, present the annotated tag plan for review, and push the tag only after you approve.
/shipit run a multi-project release
Claude will check for a .shipit/multi-release.yml config (creating one interactively on first run), walk through each project and pipeline step in order, present every plan before applying it, and produce a Markdown release summary with links to every PR/MR and tag created. These summaries are a great way to build a static site of release notes.
| Platform | Architecture | Status |
|---|---|---|
| Linux | x86_64 | ✅ |
| macOS | x86_64 | ✅ |
| macOS | aarch64 | ✅ |
| Windows | x86_64 | ✅ |
See CONTRIBUTING.md for local development setup, coverage, and pre-commit hooks.

