Ship banner
Weaverse Weaverse

Ship

Git community intermediate

Description

Create a pull request from the current working branch to `main`, ensure the version is bumped, and draft a GitHub release. The user will review, merge, and publish manually.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

Repository README

This is the README for Weaverse/.agents, shared by 7 entries in this directory. It describes the repository, not this entry specifically.


description: Create a release PR to main with version bump and draft a GitHub release argument-hint: "[optional version number or extra notes]"

Ship

Create a pull request from the current working branch to `main`, ensure the version is bumped, and draft a GitHub release. The user will review, merge, and publish manually.

Usage

  • /ship — auto-detect versioning scheme and walk through the process
  • /ship 2.5.0 — use a specific version
  • /ship patch — shorthand for semver bump type

Process

Step 1: Preflight checks

Run these commands in parallel to understand the current state:

git status
git branch --show-current
git log main..HEAD --oneline
gh auth status

Verify:

  • There are no uncommitted changes. If there are, warn the user and stop.
  • The current branch is NOT main. If it is, warn the user and stop.
  • There is at least one commit ahead of main. If not, inform the user there is nothing to ship.
  • gh CLI is authenticated. If not, inform the user and stop.

Step 2: Collect all changes since main

git log main..HEAD --pretty=format:"%h %s (by @%an)" --no-merges

Also gather PR numbers if commits came from merged PRs:

git log main..HEAD --pretty=format:"%h %s" --no-merges

For each commit, check if it is associated with a PR:

gh api repos/{owner}/{repo}/commits/{sha}/pulls --jq '.[0].number' 2>/dev/null

Build a list of all changes with their authors and references (commit hash or PR number).

Step 3: Check version and detect versioning scheme

Read the current version from `package.json`:

node -p "require('./package.json').version"

Detect the versioning scheme:

Scheme Pattern Examples
Semver MAJOR.MINOR.PATCH 2.5.0, 1.0.3, 0.9.1
Calendar versioning Contains year/month/date-like segments 2026.3.18, 25.03.1

**If `$ARGUMENTS` provides a version or bump type**, use it:

  • Exact version (e.g., 2.5.0) — use as-is
  • Bump type (major, minor, patch) — calculate the next version from current

**If `$ARGUMENTS` does not specify a version**, check if the version was already bumped compared to `main`:

git show main:package.json | node -p "JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')).version"
  • If the version is the same as main, a bump is required — ask the user (see below).
  • If the version is already different from main:
    • Semver: the version is already bumped. Use the current version and skip to Step 4.
    • Calendar versioning: the version may be stale (bumped days or weeks ago). Always ask the user to confirm — see the calver prompt below.

**For semver** (when bump is needed), present the options:

Current version: `2.4.1`

What version bump do you need?

  • patch -> 2.4.2 (bug fixes, small changes)
  • minor -> 2.5.0 (new features, backward compatible)
  • major -> 3.0.0 (breaking changes)