release-sidecar
Release new versions of sidecar. Covers version tagging with semver, td dependency updates, go.mod validation, CHANGELOG updates, GoReleaser automation, Homebrew tap updates, and verification steps. Use when preparing or executing a release.
Install
mkdir -p .claude/skills/release-sidecar && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6514" && unzip -o skill.zip -d .claude/skills/release-sidecar && rm skill.zipInstalls to .claude/skills/release-sidecar
About this skill
Releasing a New Version
Prerequisites
- Go installed matching go.mod version
- Clean working tree (
git statusshows no changes) - All tests passing (
go test ./...) - GitHub CLI authenticated (
gh auth status) - No
replacedirectives in go.mod - GoReleaser configured (
.goreleaser.ymlin repo root) HOMEBREW_TAP_TOKENsecret exists in GitHub repo settings
Beware of go.work: A parent go.work file can silently use local dependencies instead of published versions. Always use GOWORK=off when updating dependencies and testing builds.
Release Process
1. Determine Version
Follow semantic versioning:
- Major (v2.0.0): Breaking changes
- Minor (v0.2.0): New features, backward compatible
- Patch (v0.1.1): Bug fixes only
git tag -l | sort -V | tail -1
2. Update td Dependency
Sidecar embeds td as a Go module. Always update to latest before releasing:
GOWORK=off go get github.com/marcus/td@latest
GOWORK=off go mod tidy
3. Verify go.mod
Ensure no replace directives (they break go install):
grep replace go.mod && echo "ERROR: Remove replace directives before releasing!" && exit 1
4. Verify Build Without go.work
GOWORK=off go build ./...
If this fails with "undefined" errors, the required dependency version hasn't been published yet.
5. Update CHANGELOG.md
## [vX.Y.Z] - YYYY-MM-DD
### Features
- New feature description
### Bug Fixes
- Fix description
### Dependencies
- Dependency update description
git add CHANGELOG.md
git commit -m "docs: Update changelog for vX.Y.Z"
6. Create and Push Tag
git tag vX.Y.Z -m "Brief description of release"
git push origin main && git push origin vX.Y.Z
7. GitHub Release (Automated)
Pushing the tag triggers GitHub Actions GoReleaser, which:
- Creates the GitHub Release with changelog
- Builds and attaches binaries for darwin/linux (amd64/arm64)
- Generates checksums
⚠️ GoReleaser does NOT update the Homebrew tap automatically. The tap uses source-build formulas (to avoid macOS Gatekeeper warnings on pre-built binaries), which GoReleaser doesn't support. You MUST manually update the tap.
7b. Update Homebrew Tap (REQUIRED — Manual Step)
The Homebrew tap at marcus/homebrew-tap must be updated for every release.
If you skip this, users will see "update available" but brew upgrade won't find it (see #122).
# Get the source tarball SHA256
curl -sL "https://github.com/marcus/sidecar/archive/refs/tags/vX.Y.Z.tar.gz" | shasum -a 256
# Edit the formula (local tap is at /opt/homebrew/Library/Taps/marcus/homebrew-tap/)
# Update: url (tag version) and sha256
cd /opt/homebrew/Library/Taps/marcus/homebrew-tap
# Edit Formula/sidecar.rb — update version in URL and sha256
# Commit and push
git add Formula/sidecar.rb
git commit -m "sidecar: bump to vX.Y.Z"
git push
Also bump td and nightshift formulas if releasing those.
8. Verify
# Check workflow succeeded
gh run list --workflow=release.yml --limit=1
# Check release exists with binaries
gh release view vX.Y.Z
# Test Homebrew install
brew install marcus/tap/sidecar
sidecar --version
# Test go install (critical!)
GOWORK=off go install github.com/marcus/sidecar/cmd/sidecar@vX.Y.Z
sidecar --version
# Should output: sidecar version vX.Y.Z
# Test update notification
go build -ldflags "-X main.Version=v0.0.1" -o /tmp/sidecar-test ./cmd/sidecar
/tmp/sidecar-test
# Should show toast: "Update vX.Y.Z available!"
Version in Binaries
Version is embedded at build time via ldflags:
go build -ldflags "-X main.Version=v0.2.0" ./cmd/sidecar
go install -ldflags "-X main.Version=v0.2.0" ./cmd/sidecar
Without ldflags, version falls back to:
- Go module version (if installed via
go install) - Git revision (
devel+abc123) devel
Update Mechanism
On startup, sidecar checks https://api.github.com/repos/marcus/sidecar/releases/latest, compares tag_name against current version, and shows a toast if newer. Results cached for 3 hours. Pre-release suffixes (-rc1, -beta) are stripped for comparison. Dev versions skip the check.
Recovery: Fixing a Bad Release
- Publish a new patch release with fixes
- For critical bugs, release immediately
- Delete unpublished GitHub release:
gh release delete vX.Y.Z - Keep git tags to preserve history
- If GoReleaser workflow fails, re-run locally:
goreleaser release --clean
Install Methods
- Setup script:
curl -fsSL https://raw.githubusercontent.com/marcus/sidecar/main/setup.sh | bash - Homebrew:
brew install marcus/tap/sidecar - Download binary: from GitHub Releases page
- From source:
go install github.com/marcus/sidecar/cmd/sidecar@latest
Checklist
- Tests pass
- Working tree clean
- td dependency updated (
GOWORK=off go get github.com/marcus/td@latest) - No
replacedirectives in go.mod - Build works without go.work (
GOWORK=off go build ./...) - CHANGELOG.md updated
- Version follows semver
- Tag created and pushed
- GitHub Actions workflow completed
- Binaries attached to release
- Homebrew tap updated (MANUAL — see step 7b, GoReleaser does NOT do this)
- Installation verified (
GOWORK=off go install ...@vX.Y.Z) - Update notification verified
You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversConvert lat long or GPS data easily with GIS Operations. Perform coordinate transformations, MGRS, and military grid con
Sonatype: component intelligence with version tracking, security analysis, and Trust Score recommendations to secure and
Get expert React Native software guidance with tools for component analysis, performance, debugging, and migration betwe
Easily search npm and other repositories with Package Manager. Get package, version, and dependency info fast. Supports
astro-airflow-mcp: AI assistant access to Apache Airflow REST API for DAG management, task monitoring, logs, and diagnos
Query package ecosystem data and package metadata across 40+ registries with fast local SQLite lookups and API fallback
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.