Skip to content

About

Releases for coding agents: cut a release, wait for its CI, and confirm it reached every channel

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

agent-ship

Release tooling for coding agents: check, make and publish a release to every channel a project ships to, from one config file per repository

CI License

agent-ship releases a project to its GitHub release, npm and a Homebrew tap from the project's ship.toml.

  • agent-ship check judges whether HEAD is ready to release and changes nothing.
  • agent-ship release bumps the version by what the Conventional Commits since the previous tag warrant, commits and tags it, and prints the command that pushes it; the owner pushes.
  • The pushed tag runs the project's release.yml, which calls agent-ship's reusable workflow to publish to each channel.
  • agent-ship status <tag> says whether each channel serves the version, and agent-ship doctor reports each credential the channels need and where it comes from.

SPEC.md states what the commands and the workflow must do.

Install

agent-ship ships builds for two platforms: darwin-arm64, macOS on Apple silicon, and linux-x64.

With Homebrew:

brew install cniska/tap/agent-ship

With npm, which installs the package for your platform and needs no Bun:

npm install --global @cniska/agent-ship

From a GitHub release, verify the tarball before you unpack it:

gh release download --repo cniska/agent-ship --pattern 'agent-ship-linux-x64.tar.gz' --pattern SHA256SUMS.txt
shasum -a 256 --check --ignore-missing SHA256SUMS.txt
gh attestation verify agent-ship-linux-x64.tar.gz --repo cniska/agent-ship
tar -xzf agent-ship-linux-x64.tar.gz

Then put agent-ship on your PATH.

For Claude Code, the cniska-ship plugin tells each session how a release maps to these commands:

claude plugin install cniska-ship@cniska

To run it from a checkout with Bun, follow Development.

Why

A project that ships to a GitHub release, npm and a Homebrew tap repeats the same release flow in scripts of its own: gate the tree, bump the version, commit, tag, then build, attest, publish and repin in CI. Each copy drifts from the others. agent-ship holds the flow once, so each repository keeps only its ship.toml and a release.yml that calls the reusable workflow.

A release needs credentials on the machine and in CI. ship.toml names each one a channel reads and holds no secret, doctor reports where each one comes from without printing it, and the workflow masks each value it reads.

Commands

Command Does
agent-ship check [<app>] Judge whether HEAD is ready to release and report the bump its commits warrant, changing nothing
agent-ship release [<patch|minor|major|<version>>] [<app>] [--dry-run] Bump the version, commit and tag the release, and print the push command, or with --dry-run print what it would do
agent-ship status <tag> Wait on the runs the tag started and say whether each channel serves the tag's version
agent-ship doctor Check git, gh and each credential the channels need, with the fix for each that fails
agent-ship, agent-ship --help List the commands and flags
agent-ship --version Print the version

Commands lists every command, its output, its refusals and ship.toml.

Docs

  • Commands: every command, its output and refusals, and ship.toml.
  • Releasing: the reusable release workflow, how a project calls it, and the owner's setup.
  • Development: setup, checks and rules, for working on this repo.
  • Contributing: how outside contributors propose a change.

Related

agent-ship works on its own in any agent workflow, and is one of the optional add-ons to agent-skills, engineering skills for coding agents. The other add-ons:

  • agent-task: task tracking for coding agents, the tasks running, in review and waiting to run
  • agent-record: a session record for coding agents, every past session queryable and joined to its commits
  • agent-gates: commit gates for coding agents, git hooks and CI checks that refuse a bad commit
  • agent-worktree: task worktrees for coding agents, one checkout per task, set up and torn down by the project's own commands

About

Releases for coding agents: cut a release, wait for its CI, and confirm it reached every channel

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages