/ship
Build, commit, push & version bump workflow - automates the complete release cycle
$ npx -y skills add rtk-ai/rtk --skill ship --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/ship
Context preview
The summary Claude sees to decide when to auto-load this skill.
Build, commit, push & version bump workflow - automates the complete release cycle
SKILL.md
ship.SKILL.mddescription: Build, commit, push & version bump workflow - automates the complete release cycle
allowed-tools: Read Write Edit Bash Grep Glob
Ship Release
Systematic release workflow for RTK: build verification, version bump, changelog update, git tag, and push to trigger CI/CD.
When to Use
- **Manual invocation**: When ready to release a new version
- **After feature completion**: Before tagging and publishing
- **Before version bump**: To automate the release checklist
Pre-Release Checklist (Auto-Verified)
Before running `/ship`, verify:
1. Quality Checks Pass
cargo fmt --all --check # Code formatted
cargo clippy --all-targets # Zero warnings
cargo test --all # All tests pass
2. Performance Benchmarks Pass
hyperfine 'target/release/rtk git status' --warmup 3
# Should show <10ms mean time
/usr/bin/time -l target/release/rtk git status
# Should show <5MB maximum resident set size
3. Integration Tests Pass
cargo install --path . --force # Install locally
cargo test --ignored # Run integration tests
4. Git Clean State
git status # Should show "nothing to commit, working tree clean"
Release Workflow
Step 1: Determine Version Bump
**Semantic Versioning** (MAJOR.MINOR.PATCH):
- **MAJOR** (v1.0.0): Breaking changes (rare for RTK)
- **MINOR** (v0.X.0): New features, new filters, new commands
- **PATCH** (v0.0.X): Bug fixes, performance improvements
**Examples**:
- New filter added (`rtk pytest`) → **MINOR** bump (v0.16.0 → v0.17.0)
- Bug fix in `git log` filter → **PATCH** bump (v0.16.0 → v0.16.1)
- Breaking CLI arg change → **MAJOR** bump (v0.16.0 → v1.0.0)
Step 2: Update Version
**Files to update**: 1. `Cargo.toml` (line 3): `version = "X.Y.Z"` 2. `README.md` (if version mentioned)
> **Note**: `CHANGELOG.md` is auto-generated by release-please from conventional commit messages — do not edit manually.
**Example**:
# Cargo.toml (before)
[package]
name = "rtk"
version = "0.16.0" # Current version
# Cargo.toml (after - MINOR bump)
[package]
name = "rtk"
version = "0.17.0" # New version
**CHANGELOG.md template**:
## [0.17.0] - 2026-02-15
### Added
- `rtk pytest` command for Python test filtering (90% token reduction)
- Support for `pytest` JSON output parsing
- Integration with `uv` package manager auto-detection
### Fixed
- Shell escaping for PowerShell on Windows
- Memory leak in regex pattern caching
### Changed
- Updated `cargo test` filter to show test names in failures
Step 3: Build and Verify
# Clean build
cargo clean
cargo build --release
# Verify binary
target/release/rtk --version
# Should show new version
# Run full quality checks
cargo fmt --all --check
cargo clippy --all-targets
cargo test --all
# Benchmark performance
hyperfine 'target/release/rtk git status' --warmup 3
# Should still be <10ms
Step 4: Commit Version Bump
# Stage version files
git add Cargo.toml Cargo.lock README.md
# Commit with version tag
git commit -m "chore(release): bump version to v0.17.0
- Updated Cargo.toml version
- Verified all quality checks pass
- Benchmarked performance (<10ms startup)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
Step 5: Create Git Tag
# Create annotated tag with changelog excerpt
git tag -a v0.17.0 -m "Release v0.17.0
Added:
- rtk pytest command (90% token reduction)
- Support for uv package manager
Fixed:
- Shell escaping for PowerShell
- Memory leak in regex caching
Performance: <10ms startup, <5MB memory"
Step 6: Push to Remote
# Push commit and tags
git push origin main
git push origin v0.17.0
# Trigger GitHub Actions release workflow
# (CI/CD will build binaries, create GitHub release, publish to crates.io if configured)
Post-Release Verification
After pushing, verify:
1. GitHub Actions CI/CD Pass
# Check GitHub Actions workflow status
gh run list --limit 1
# Watch latest run
gh run watch
2. GitHub Release Created
# Check if release created
gh release view v0.17.0
# Should show:
# - Release notes from git tag
# - Binaries attached (macOS, Linux x86_64/ARM64, Windows)
# - Checksums for verification
3. Installation Verification
# Test installation from release
curl -sSL https://github.com/rtk-ai/rtk/releases/download/v0.17.0/rtk-macos-latest -o rtk
chmod +x rtk
./rtk --version
# Should show v0.17.0
Rollback Plan
If release has critical issues:
Option 1: Patch Release (Preferred)
# Fix issue in new branch
git checkout -b hotfix/v0.17.1
# Apply fix
cargo test --all
git commit -m "fix: critical issue in pytest filter"
# Release v0.17.1 (PATCH bump)
# Follow release workflow above
Option 2: Yank Release (crates.io only)
# Yank broken version from crates.io
cargo yank --vers 0.17.0
# Users can't download yanked version, but existing installs work
Option 3: Revert Tag (Last Resort)
# Delete tag locally
git tag -d v0.17.0
# Delete tag on remote
git push origin :refs/tags/v0.17.0
# Delete GitHub release
gh release delete v0.17.0 --yes
# Revert commit
git revert HEAD
git push origin main
Automated Release Script (Optional)
Save as `scripts/ship.sh`:
#!/bin/bash
set -euo pipefail
# Parse version argument
if [ $# -ne 1 ]; then
echo "Usage: $0 <version>"
echo "Example: $0 0.17.0"
exit 1
fi
NEW_VERSION=$1
echo "🚀 Starting release workflow for v$NEW_VERSION"
# 1. Quality checks
echo "📦 Running quality checks..."
cargo fmt --all --check
cargo clippy --all-targets
cargo test --all
# 2. Update version
echo "🔢 Updating version to $NEW_VERSION..."
sed -i '' "s/^version = .*/version = \"$NEW_VERSION\"/" Cargo.toml
# 3. Build
echo "🔨 Building release binary..."
cargo build --release
# 4. Verify version
echo "✅ Verifying version..."
target/release/rtk --version | grep "$NEW_VERSION"
# 5. CRead more
description: Build, commit, push & version bump workflow - automates the complete release cycle allowed-tools: Read Write Edit Bash Grep Glob
Ship Release
Systematic release workflow for RTK: build verification, version bump, changelog update, git tag, and push to trigger CI/CD.
When to Use
- **Manual invocation**: When ready to release a new version
- **After feature completion**: Before tagging and publishing
- **Before version bump**: To automate the release checklist
Pre-Release Checklist (Auto-Verified)
Before running `/ship`, verify:
1. Quality Checks Pass
cargo fmt --all --check # Code formatted cargo clippy --all-targets # Zero warnings cargo test --all # All tests pass
2. Performance Benchmarks Pass
hyperfine 'target/release/rtk git status' --warmup 3 # Should show <10ms mean time /usr/bin/time -l target/release/rtk git status # Should show <5MB maximum resident set size
3. Integration Tests Pass
cargo install --path . --force # Install locally cargo test --ignored # Run integration tests
4. Git Clean State
git status # Should show "nothing to commit, working tree clean"
Release Workflow
Step 1: Determine Version Bump
**Semantic Versioning** (MAJOR.MINOR.PATCH):
- **MAJOR** (v1.0.0): Breaking changes (rare for RTK)
- **MINOR** (v0.X.0): New features, new filters, new commands
- **PATCH** (v0.0.X): Bug fixes, performance improvements
**Examples**:
- New filter added (`rtk pytest`) → **MINOR** bump (v0.16.0 → v0.17.0)
- Bug fix in `git log` filter → **PATCH** bump (v0.16.0 → v0.16.1)
- Breaking CLI arg change → **MAJOR** bump (v0.16.0 → v1.0.0)
Step 2: Update Version
**Files to update**: 1. `Cargo.toml` (line 3): `version = "X.Y.Z"` 2. `README.md` (if version mentioned)
> **Note**: `CHANGELOG.md` is auto-generated by release-please from conventional commit messages — do not edit manually.
**Example**:
# Cargo.toml (before) [package] name = "rtk" version = "0.16.0" # Current version # Cargo.toml (after - MINOR bump) [package] name = "rtk" version = "0.17.0" # New version
**CHANGELOG.md template**:
## [0.17.0] - 2026-02-15 ### Added - `rtk pytest` command for Python test filtering (90% token reduction) - Support for `pytest` JSON output parsing - Integration with `uv` package manager auto-detection ### Fixed - Shell escaping for PowerShell on Windows - Memory leak in regex pattern caching ### Changed - Updated `cargo test` filter to show test names in failures
Step 3: Build and Verify
# Clean build cargo clean cargo build --release # Verify binary target/release/rtk --version # Should show new version # Run full quality checks cargo fmt --all --check cargo clippy --all-targets cargo test --all # Benchmark performance hyperfine 'target/release/rtk git status' --warmup 3 # Should still be <10ms
Step 4: Commit Version Bump
# Stage version files git add Cargo.toml Cargo.lock README.md # Commit with version tag git commit -m "chore(release): bump version to v0.17.0 - Updated Cargo.toml version - Verified all quality checks pass - Benchmarked performance (<10ms startup) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
Step 5: Create Git Tag
# Create annotated tag with changelog excerpt git tag -a v0.17.0 -m "Release v0.17.0 Added: - rtk pytest command (90% token reduction) - Support for uv package manager Fixed: - Shell escaping for PowerShell - Memory leak in regex caching Performance: <10ms startup, <5MB memory"
Step 6: Push to Remote
# Push commit and tags git push origin main git push origin v0.17.0 # Trigger GitHub Actions release workflow # (CI/CD will build binaries, create GitHub release, publish to crates.io if configured)
Post-Release Verification
After pushing, verify:
1. GitHub Actions CI/CD Pass
# Check GitHub Actions workflow status gh run list --limit 1 # Watch latest run gh run watch
2. GitHub Release Created
# Check if release created gh release view v0.17.0 # Should show: # - Release notes from git tag # - Binaries attached (macOS, Linux x86_64/ARM64, Windows) # - Checksums for verification
3. Installation Verification
# Test installation from release curl -sSL https://github.com/rtk-ai/rtk/releases/download/v0.17.0/rtk-macos-latest -o rtk chmod +x rtk ./rtk --version # Should show v0.17.0
Rollback Plan
If release has critical issues:
Option 1: Patch Release (Preferred)
# Fix issue in new branch git checkout -b hotfix/v0.17.1 # Apply fix cargo test --all git commit -m "fix: critical issue in pytest filter" # Release v0.17.1 (PATCH bump) # Follow release workflow above
Option 2: Yank Release (crates.io only)
# Yank broken version from crates.io cargo yank --vers 0.17.0 # Users can't download yanked version, but existing installs work
Option 3: Revert Tag (Last Resort)
# Delete tag locally git tag -d v0.17.0 # Delete tag on remote git push origin :refs/tags/v0.17.0 # Delete GitHub release gh release delete v0.17.0 --yes # Revert commit git revert HEAD git push origin main
Automated Release Script (Optional)
Save as `scripts/ship.sh`:
#!/bin/bash
set -euo pipefail
# Parse version argument
if [ $# -ne 1 ]; then
echo "Usage: $0 <version>"
echo "Example: $0 0.17.0"
exit 1
fi
NEW_VERSION=$1
echo "🚀 Starting release workflow for v$NEW_VERSION"
# 1. Quality checks
echo "📦 Running quality checks..."
cargo fmt --all --check
cargo clippy --all-targets
cargo test --all
# 2. Update version
echo "🔢 Updating version to $NEW_VERSION..."
sed -i '' "s/^version = .*/version = \"$NEW_VERSION\"/" Cargo.toml
# 3. Build
echo "🔨 Building release binary..."
cargo build --release
# 4. Verify version
echo "✅ Verifying version..."
target/release/rtk --version | grep "$NEW_VERSION"
# 5. CCLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
Repo: rtk-ai/rtk
Other skills on rtk.
- /code-simplifier
Review RTK Rust code for idiomatic simplification. Detects over-engineering, unnecessary allocations, verbose patterns. Applies Rust idioms without changing behavior.
Open skill - /design-patterns
Rust design patterns for RTK. Newtype, Builder, RAII, Trait Objects, State Machine. Applied to CLI filter modules. Use when designing new modules or refactoring existing ones.
Open skill - /issue-triage
Issue triage: audit open issues, categorize, detect duplicates, cross-ref PRs, risk assessment, post comments. Args: "all" for deep analysis of all, issue numbers to focus (e.g. "42 57"), "en"/"fr" for language, no arg = audit only in French.
Open skill - /performance
CLI performance optimization - startup time, memory usage, token savings benchmarking
Open skill - /pr-review
Batch review des PRs RTK par ordre de complexité croissante (XS → S → M → L). Pour chaque PR : vérifie l'état (conflits, CLA, reviews), lit le diff complet, analyse le code en contexte, présente un résumé avec lien + taille + recommandation. Attend validation explicite avant
Open skill - /pr-triage
PR triage: audit open PRs, deep review selected ones, draft and post review comments. Args: "all" to review all, PR numbers to focus (e.g. "42 57"), "en"/"fr" for language, no arg = audit only in French.
Open skill

