Agent Skills: In Gentleman.Dots repo

>

UncategorizedID: gentleman-programming/gentleman.dots/homebrew-release

Install this agent skill to your local

pnpm dlx add-skill https://github.com/Gentleman-Programming/Gentleman.Dots/tree/HEAD/GentlemanClaude/skills/homebrew-release

Skill Files

Browse the full folder contents for homebrew-release.

Download Skill

Loading file tree…

GentlemanClaude/skills/homebrew-release/SKILL.md

Skill Metadata

Name
homebrew-release
Description
>

When to Use

  • User asks to "release", "bump", "publish", or "update homebrew"
  • User mentions a new version number
  • User says "homebrew-tap" or "formula"
  • After creating a git tag in GGA or Gentleman.Dots repos

Supported Projects

| Project | Repo | Formula | Tag Format | Type | |---------|------|---------|------------|------| | GGA | gentleman-guardian-angel | gga.rb | V{version} (e.g., V2.6.2) | Tarball (builds from source) | | Gentleman.Dots | Gentleman.Dots | gentleman-dots.rb | v{version} (e.g., v2.5.1) | Pre-built binaries |


Gentleman.Dots Release Process (Pre-built Binaries)

Step 1: Build Binaries

cd installer
GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o gentleman-installer-darwin-amd64 ./cmd/gentleman-installer
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o gentleman-installer-darwin-arm64 ./cmd/gentleman-installer
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o gentleman-installer-linux-amd64 ./cmd/gentleman-installer
GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o gentleman-installer-linux-arm64 ./cmd/gentleman-installer

Step 2: Commit, Tag, and Push

git add -A
git commit -m "feat/fix: description"
git push origin main
git tag v{VERSION}
git push origin v{VERSION}

Step 3: Create GitHub Release

gh release create v{VERSION} \
  installer/gentleman-installer-darwin-amd64 \
  installer/gentleman-installer-darwin-arm64 \
  installer/gentleman-installer-linux-amd64 \
  installer/gentleman-installer-linux-arm64 \
  --title "v{VERSION}" \
  --notes "## Changes
- {description of changes}"

Step 4: Get SHA256 of Binaries

shasum -a 256 installer/gentleman-installer-darwin-arm64 installer/gentleman-installer-darwin-amd64 installer/gentleman-installer-linux-amd64 installer/gentleman-installer-linux-arm64

Step 5: Update Formula

Update homebrew-tap/Formula/gentleman-dots.rb:

class GentlemanDots < Formula
  desc "Interactive TUI installer for Gentleman.Dots development environment"
  homepage "https://github.com/Gentleman-Programming/Gentleman.Dots"
  version "{VERSION}"
  license "MIT"

  on_macos do
    on_arm do
      url "https://github.com/Gentleman-Programming/Gentleman.Dots/releases/download/v#{version}/gentleman-installer-darwin-arm64"
      sha256 "{SHA256_DARWIN_ARM64}"
    end
    on_intel do
      url "https://github.com/Gentleman-Programming/Gentleman.Dots/releases/download/v#{version}/gentleman-installer-darwin-amd64"
      sha256 "{SHA256_DARWIN_AMD64}"
    end
  end

  on_linux do
    on_intel do
      url "https://github.com/Gentleman-Programming/Gentleman.Dots/releases/download/v#{version}/gentleman-installer-linux-amd64"
      sha256 "{SHA256_LINUX_AMD64}"
    end
  end

  def install
    if OS.mac? && Hardware::CPU.arm?
      bin.install "gentleman-installer-darwin-arm64" => "gentleman-dots"
    elsif OS.mac? && Hardware::CPU.intel?
      bin.install "gentleman-installer-darwin-amd64" => "gentleman-dots"
    elsif OS.linux? && Hardware::CPU.intel?
      bin.install "gentleman-installer-linux-amd64" => "gentleman-dots"
    end
  end

  test do
    system "#{bin}/gentleman-dots", "--help"
  end
end

Step 6: Commit to Both Repos

# In Gentleman.Dots repo
git add homebrew-tap/Formula/gentleman-dots.rb
git commit -m "chore(homebrew): bump version to v{VERSION}"
git push origin main

# In homebrew-tap repo
cd /tmp && rm -rf homebrew-tap
git clone git@github.com:Gentleman-Programming/homebrew-tap.git
cp {path-to}/Gentleman.Dots/homebrew-tap/Formula/gentleman-dots.rb /tmp/homebrew-tap/Formula/
cd /tmp/homebrew-tap
git add -A
git commit -m "chore: bump gentleman-dots to v{VERSION}"
git push origin main

GGA Release Process (Tarball - Builds from Source)

Step 1: Verify Tag Exists

git tag --list | tail -5

Step 2: Get SHA256 of Tarball

curl -sL https://github.com/Gentleman-Programming/gentleman-guardian-angel/archive/refs/tags/V{VERSION}.tar.gz | shasum -a 256

Step 3: Update Formula

Update homebrew-tap/Formula/gga.rb:

url "https://github.com/Gentleman-Programming/gentleman-guardian-angel/archive/refs/tags/V{VERSION}.tar.gz"
sha256 "{NEW_SHA256}"
version "{VERSION}"

Step 4: Commit and Push

cd ~/work/homebrew-tap
git add -A
git commit -m "chore: bump gga to V{VERSION}"
git push

Quick Reference Commands

# Build Gentleman.Dots binaries
cd installer && GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o gentleman-installer-darwin-amd64 ./cmd/gentleman-installer && GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o gentleman-installer-darwin-arm64 ./cmd/gentleman-installer && GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o gentleman-installer-linux-amd64 ./cmd/gentleman-installer && GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o gentleman-installer-linux-arm64 ./cmd/gentleman-installer

# SHA256 for binaries
shasum -a 256 installer/gentleman-installer-*

# SHA256 for GGA tarball
curl -sL https://github.com/Gentleman-Programming/gentleman-guardian-angel/archive/refs/tags/V{VERSION}.tar.gz | shasum -a 256

# Create GitHub release with binaries
gh release create v{VERSION} installer/gentleman-installer-* --title "v{VERSION}" --notes "## Changes"

Checklist

Gentleman.Dots

  • [ ] Binaries built for all platforms (darwin-amd64, darwin-arm64, linux-amd64, linux-arm64)
  • [ ] Changes committed and pushed to main
  • [ ] Tag created and pushed (v{VERSION})
  • [ ] GitHub release created with binaries attached
  • [ ] SHA256 computed for all binaries
  • [ ] Formula updated in Gentleman.Dots repo
  • [ ] Formula copied to homebrew-tap repo and pushed

GGA

  • [ ] Tag exists (V{VERSION})
  • [ ] SHA256 computed from tarball
  • [ ] Formula updated in homebrew-tap
  • [ ] Committed and pushed