Bump, tag, and release cli-toolbox binaries. Use when the user says "publish", "release", "bump version", or invokes /cli-toolbox_publish.
Bump versions, push tags, trigger CI releases, and optionally install locally — handling all the friction points of the cli-toolbox release process.
This is for the productiveio/cli-toolbox workspace. It has 5 independent binaries: tb-prod, tb-sem, tb-bug, tb-lf, tb-devctl. Each is versioned and released independently using git tags in <crate>-v<version> format.
Critical: GitHub Actions does NOT trigger individual workflows when multiple tags are pushed in a single git push --tags. Tags MUST be pushed one at a time with a small delay between them.
Parse $ARGUMENTS to determine:
tb-prod), multiple names, or --all for all 50.2.0--install: after releases complete, install binaries locally via scripts/install.sh--with-skill: when installing, also install Claude Code skills (passed through to install.sh)Valid tool names: tb-prod, tb-sem, tb-bug, tb-lf, tb-devctl
If --all is used and no version is specified, read each crate's current version from crates/<tool>/Cargo.toml and suggest a patch bump for each. Ask the user to confirm.
Before any version bumps, run quality gates:
cargo fmt --checkcargo clippy --workspace -- -D warningscargo test --workspaceIf any fail, stop and fix before proceeding.
For each tool to publish, run scripts/bump.sh <tool> <version>.
This will:
crates/<tool>/Cargo.tomlcargo check -p <tool><tool>: bump version to <version>Push all bump commits at once:
git push
For each tool, create the tag locally:
git tag <tool>-v<version>
Tags must only be created on main after bump commits have been pushed (or merged via PR).
This is the critical step. Push each tag individually, not with git push --tags:
git push origin refs/tags/<tool>-v<version>
Do this for each tool, one at a time. This ensures each tag triggers its own GitHub Actions workflow.
After pushing all tags, monitor the release pipelines:
gh run list --limit <n> to see all triggered runsIf a pipeline fails, show the failure details and ask the user how to proceed.
For each tool, verify the GitHub Release was created with binaries:
gh release view <tool>-v<version>
Report: tool name, version, assets (macos-arm64, linux-x86_64).
If --install was requested, run:
scripts/install.sh [--with-skill] <tool1> <tool2> ...
Or with --all:
scripts/install.sh --all [--with-skill]
Report installed versions.
At the end, print a summary table:
=== Published ===
Tool Version Release Installed
tb-prod 0.2.0 ✓ ✓
tb-sem 0.2.0 ✓ —
tb-bug 0.2.0 ✓ ✓
tb-lf 0.2.0 ✓ —