Skip to main content

shipmill

The open-source AI software factory for GitHub. Agents triage your issues, fix them, and land the pull requests; release lanes cut, publish, deploy, and roll back by a policy you write. Everything runs on GitHub, and you stay in charge.

PyPI Python CI License: MIT

issue ─▶ triage ─▶ fix ─▶ review & land ─▶ release ─▶ deploy ─▶ watch
          agent     agent      agent         policy     policy    agent

Why shipmill

Coding agents can write a fix. Getting that fix to users is the rest of the work: deciding which issues deserve one, reviewing the pull request, waiting for green CI, cutting a release, publishing it, telling the reporter, and noticing when production breaks. shipmill does that rest, end to end, on any GitHub repository.

  • Issue to release, not just issue to PR. One pipeline from a new issue to a published, deployed, and announced release
  • Policy, not prompts, decides what ships. A single file, .github/shipmill.toml, says which lanes release and when (dev, rc, stable, hotfix), what gates hold them, and how far automation may go
  • You stay in control. Each stage runs at observe, propose, or act; one shipmill-hold issue, opened from your phone, stops everything
  • No server, no state of its own. GitHub is the database: issues, labels, pull requests, tags, deployments; nothing lives outside your repository
  • Releases you can trust. CI runs on the exact release commit before it is tagged; a stable release ships the code a pre-release already soaked; a failing deploy rolls back and opens an incident

How it works

Stage Done by What happens
Intake product-intake skill Feature requests and discussions grouped into opportunities you accept or decline
Triage github-issue-triage skill A verdict on every issue (implement, feature, postpone, clarify), a comment, labels, one PR per fix; a feature gets a spec first
Fix github-issue-resolve skill One issue verified against main, fixed with a regression test, opened as a PR
Land github-pr-triage skill Each PR reviewed in its own worktree, small problems fixed, merged only on green CI
Release shipmill workflows The release cut on its lane when the policy says one is due, CI run on it, tagged, published
Deploy shipmill operate Health checks, bake time, promotion between environments, automatic rollback
Watch github-ship-watch skill A stalled release, a missing upload, an unannounced fix, an untriaged issue: reported and finished

The skills run in Claude Code, on demand or unattended on a schedule. The release side is plain GitHub Actions plus the shipmill CLI, and works without the agents.

Quickstart

You need a GitHub repository with a CHANGELOG.md that has an ## [Unreleased] section, the gh CLI signed in, uv, and Claude Code. From the root of your repository:

claude plugin marketplace add shipmill/shipmill && claude plugin install shipmill@shipmill && claude "/shipmill:shipmill-setup"

The shipmill-setup skill inspects the repository, asks which lanes to run, and wires everything on a branch, ending with a pull request. Releases start in dry-run mode until you switch them on.

Then ask what needs you:

uv tool install shipmill  # once; `uv tool upgrade shipmill` after a release
shipmill status

Without the install, uvx --from git+https://github.com/shipmill/shipmill@v0 shipmill status runs it from git, resolving it again on each call.

It answers STUCK, WAITS ON YOU, WORKING, or IDLE, with a link to each item that waits on you.

Prefer to set it up by hand, or want only the release lanes without agents? Follow docs/install.md.

Release lanes at a glance

Lane Version Released from Typical trigger
dev 1.5.0.dev412 main's head after every batch of merges
rc 1.5.0rc2 main's head each workday morning
stable 1.5.0 an rc that soaked without a blocker weekly, a milestone, or by hand
hotfix 1.4.1 release/1.4 plus the pull requests you name by hand only

Every pull request adds its own CHANGELOG entry; the entries decide the next version. Installers skip dev and rc unless asked, so a user who needs a fix today pins the pre-release while everyone else gets stable releases that real users already ran.

Documentation

Read For
Install Prerequisites, every setup step, and how to pause or remove shipmill
Flow What to say to run each stage, alone or all at once
Release lanes The policy file, environments, operate, autonomy, versions, the CLI, and limits
Decisions The rules shipmill follows and why
Changelog What changed in each release

Status

shipmill is alpha and releases itself with its own workflows, so every release you see on PyPI went through the pipeline described above. Expect the policy keys to change between minor versions; the CHANGELOG says how.

Contributing

Issues and pull requests are welcome. A new feature starts as a spec in docs/specs/; every pull request adds its own entry under ## [Unreleased] in the CHANGELOG. The checks CI runs are listed in CLAUDE.md.

License

MIT

Metadata

Release files for shipmill 0.33.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shipmill 0.33.2
File Size Uploaded
shipmill-0.33.2.tar.gz 588.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shipmill 0.33.2
File Interpreter ABI Platform
shipmill-0.33.2-py3-none-any.whl Python 3 none any Details

Total release size: 917.2 kB

Release files / shipmill-0.33.2.tar.gz

Download URL shipmill-0.33.2.tar.gz
Size 588.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5f5f2a6155339e32d6fd50d3b421f0faad1d9c5ff4fac5d3faac399e7af57fea
BLAKE2b-256 checksum
How to use checksums
578c64f193b7237d764c982299550dd83197125b9c890d5f3ad65d4cb36af363
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / shipmill-0.33.2-py3-none-any.whl

Download URL shipmill-0.33.2-py3-none-any.whl
Size 328.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6917e32063ddfc037d4d271781456c5577b809c354edeb1504b5f5c13ded706e
BLAKE2b-256 checksum
How to use checksums
86688821cfdb05ae000d4450a7e4328b05689750b0e8c171a7c07503e8c54648
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.33.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page