Ship
When to Use
- Use when the user asks to ship this Consult repository or explicitly invokes
$ship.
- Use only for this repository's maintainer release flow: commit, merge to
main, bump release artifacts, validate, and push.
When NOT to Use
- Do not use for ordinary commits; use the
commit skill instead.
- Do not use for release preparation by itself; use the
release skill.
- Do not use outside this repository.
Iron Law
DO NOT RUN THE WHOLE SHIP FLOW UNATTENDED; STOP AT EVERY CONFIRMATION GATE.
Repo Facts
- Main branch is
main; remote is origin.
- There are two independent release streams. Never bump them in lockstep.
- Plugin version lives in
plugin/.claude-plugin/plugin.json,
plugin/.codex-plugin/plugin.json, plugin/.cursor-plugin/plugin.json,
.claude-plugin/marketplace.json, and .cursor-plugin/marketplace.json.
plugin/plugin.json should match these too; reconcile drift when bumping.
- The
consult npm package version lives in consult/package.json. Bump it
only when the diff changes the published package.
- Root
package.json is private tooling and is not versioned for release.
- Version marker is the
CHANGELOG.md header ## [X.Y.Z] (YYYY-MM-DD).
Promote ## [Unreleased] into a dated version section and leave a fresh
empty ## [Unreleased] above it.
- Releases are not git-tagged in this repo. Do not create or push a tag unless
the user explicitly asks.
- Commit messages use imperative subjects and no author-attribution trailers.
Workflow
- Pre-flight: run
git status and git rev-parse --abbrev-ref HEAD. If the
working tree is clean and already on main, report that there is nothing to
ship and stop.
- Commit: review
git diff and git diff --cached, group uncommitted changes
into logical commits, propose the grouping, and get user approval before
committing on the current branch.
- Merge to main, only when not already on
main: run git fetch origin, bring
main up to date, get user approval, then merge the current branch into
main. On conflicts, stop and show the conflicted files.
- Bump the version on
main: use the release skill to classify the bump from
the merged diff, or use the user's explicit patch, minor, or major
override. Confirm the proposed version before writing. Update the relevant
release artifacts and commit the bump as Release <version>.
- Validate and push: run the project validation gate before pushing. Abort on
failure. Get user approval before
git push origin main.
Before Saying Done
Report the branch shipped, merge result, old and new version per release stream,
validation result, pushed commit, skipped release streams, and any remaining
publishing or plugin-sync work.
Verification
1---2name: ship3description: Run Consult's guarded maintainer flow for commit, merge, version bump, validation, and push.4---56# Ship78## When to Use910- Use when the user asks to ship this Consult repository or explicitly invokes11 `$ship`.12- Use only for this repository's maintainer release flow: commit, merge to13 `main`, bump release artifacts, validate, and push.1415## When NOT to Use1617- Do not use for ordinary commits; use the `commit` skill instead.18- Do not use for release preparation by itself; use the `release` skill.19- Do not use outside this repository.2021## Iron Law2223`DO NOT RUN THE WHOLE SHIP FLOW UNATTENDED; STOP AT EVERY CONFIRMATION GATE.`2425## Repo Facts2627- Main branch is `main`; remote is `origin`.28- There are two independent release streams. Never bump them in lockstep.29- Plugin version lives in `plugin/.claude-plugin/plugin.json`,30 `plugin/.codex-plugin/plugin.json`, `plugin/.cursor-plugin/plugin.json`,31 `.claude-plugin/marketplace.json`, and `.cursor-plugin/marketplace.json`.32 `plugin/plugin.json` should match these too; reconcile drift when bumping.33- The `consult` npm package version lives in `consult/package.json`. Bump it34 only when the diff changes the published package.35- Root `package.json` is private tooling and is not versioned for release.36- Version marker is the `CHANGELOG.md` header `## [X.Y.Z] (YYYY-MM-DD)`.37 Promote `## [Unreleased]` into a dated version section and leave a fresh38 empty `## [Unreleased]` above it.39- Releases are not git-tagged in this repo. Do not create or push a tag unless40 the user explicitly asks.41- Commit messages use imperative subjects and no author-attribution trailers.4243## Workflow44451. Pre-flight: run `git status` and `git rev-parse --abbrev-ref HEAD`. If the46 working tree is clean and already on `main`, report that there is nothing to47 ship and stop.482. Commit: review `git diff` and `git diff --cached`, group uncommitted changes49 into logical commits, propose the grouping, and get user approval before50 committing on the current branch.513. Merge to main, only when not already on `main`: run `git fetch origin`, bring52 `main` up to date, get user approval, then merge the current branch into53 `main`. On conflicts, stop and show the conflicted files.544. Bump the version on `main`: use the `release` skill to classify the bump from55 the merged diff, or use the user's explicit `patch`, `minor`, or `major`56 override. Confirm the proposed version before writing. Update the relevant57 release artifacts and commit the bump as `Release <version>`.585. Validate and push: run the project validation gate before pushing. Abort on59 failure. Get user approval before `git push origin main`.6061## Before Saying Done6263Report the branch shipped, merge result, old and new version per release stream,64validation result, pushed commit, skipped release streams, and any remaining65publishing or plugin-sync work.6667## Verification6869- [ ] The skill stopped at each approval gate before committing, merging,70 versioning, and pushing.71- [ ] Release-stream bumps matched the actual changed surface.72- [ ] `CHANGELOG.md` and every relevant manifest agreed after the version bump.73- [ ] Validation ran before push, or the skipped validation is clearly reported.