From thrashr888-agent-kit
Manage Homebrew taps for distributing CLI tools and macOS apps. Use when creating or updating Homebrew formulas and casks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/thrashr888-agent-kit:homebrew-tapThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and maintain Homebrew taps for distributing CLI tools (Formulas) and macOS apps (Casks).
Create and maintain Homebrew taps for distributing CLI tools (Formulas) and macOS apps (Casks).
homebrew-myproject/
├── Formula/
│ └── mytool.rb # CLI tools (binaries)
├── Casks/
│ └── myapp.rb # macOS apps (.app bundles)
└── README.md
# Create tap repository
mkdir homebrew-myproject
cd homebrew-myproject
git init
# Create directories
mkdir -p Formula Casks
# Create README
cat > README.md << 'EOF'
# Homebrew Tap for MyProject
## Installation
```bash
brew tap username/myproject
brew install mytool
EOF
git add . git commit -m "Initial tap setup" gh repo create homebrew-myproject --public --source=. --push
## Formula (CLI Tools)
### Basic Formula
```ruby
# Formula/mytool.rb
class Mytool < Formula
desc "Brief description of the tool"
homepage "https://github.com/username/mytool"
version "1.0.0"
license "MIT"
on_macos do
on_arm do
url "https://github.com/username/mytool/releases/download/v#{version}/mytool-macos-aarch64"
sha256 "SHA256_HASH_FOR_ARM"
end
on_intel do
url "https://github.com/username/mytool/releases/download/v#{version}/mytool-macos-x86_64"
sha256 "SHA256_HASH_FOR_INTEL"
end
end
on_linux do
on_arm do
url "https://github.com/username/mytool/releases/download/v#{version}/mytool-linux-aarch64"
sha256 "SHA256_HASH_FOR_LINUX_ARM"
end
on_intel do
url "https://github.com/username/mytool/releases/download/v#{version}/mytool-linux-x86_64"
sha256 "SHA256_HASH_FOR_LINUX_INTEL"
end
end
def install
bin.install Dir["mytool*"].first => "mytool"
end
def caveats
<<~EOS
MyTool has been installed!
Quick start:
mytool --help
Documentation: https://github.com/username/mytool
EOS
end
test do
system "#{bin}/mytool", "--version"
end
end
class Mytool < Formula
desc "Tool with dependencies"
homepage "https://github.com/username/mytool"
version "1.0.0"
license "MIT"
depends_on "openssl@3"
depends_on "sqlite"
# ... rest of formula
end
# Casks/myapp.rb
cask "myapp" do
version "1.0.0"
sha256 "SHA256_HASH_FOR_DMG"
url "https://myapp.example.com/downloads/#{version}/MyApp.dmg"
name "MyApp"
desc "Description of the app"
homepage "https://myapp.example.com"
depends_on macos: ">= :ventura"
app "MyApp.app"
zap trash: [
"~/Library/Application Support/MyApp",
"~/Library/Preferences/com.example.MyApp.plist",
"~/Library/Caches/com.example.MyApp",
]
end
cask "myapp" do
version "1.0.0"
sha256 "SHA256_HASH"
url "https://myapp.example.com/downloads/#{version}/MyApp.dmg"
name "MyApp"
desc "App with auto-updates"
homepage "https://myapp.example.com"
livecheck do
url "https://myapp.example.com/downloads/appcast.xml"
strategy :sparkle
end
auto_updates true
depends_on macos: ">= :ventura"
app "MyApp.app"
end
# For remote file
curl -sL https://example.com/download/file | shasum -a 256
# For local file
shasum -a 256 /path/to/file
# Update version and SHA256
cd ~/Workspace/homebrew-mytool
# Edit Formula/mytool.rb
# - Update version "X.Y.Z"
# - Update sha256 hashes for each platform
# Commit and push
git add Formula/mytool.rb
git commit -m "Update mytool to X.Y.Z"
git push
HOMEBREW_TAP := $(HOME)/Workspace/homebrew-mytool
VERSION := 1.0.0
SHA256_FILE := $(BUILD_DIR)/MyApp.dmg.sha256
brew-update: sha256
@test -d "$(HOMEBREW_TAP)" || \
(echo "Error: Homebrew tap not found at $(HOMEBREW_TAP)" && exit 1)
@SHA=$$(cat $(SHA256_FILE)) && \
sed -i '' "s/version \".*\"/version \"$(VERSION)\"/" $(HOMEBREW_TAP)/Casks/myapp.rb && \
sed -i '' "s/sha256 \".*\"/sha256 \"$$SHA\"/" $(HOMEBREW_TAP)/Casks/myapp.rb
@echo "Updated $(HOMEBREW_TAP)/Casks/myapp.rb to version $(VERSION)"
@echo "Don't forget to commit and push the homebrew tap!"
# Install from local tap
brew install --build-from-source ./Formula/mytool.rb
# Or tap locally and install
brew tap username/mytool ~/Workspace/homebrew-mytool
brew install mytool
# Install from local cask
brew install --cask ./Casks/myapp.rb
brew audit --strict ./Formula/mytool.rb
# Tap the repository
brew tap username/myproject
# Install formula
brew install mytool
# Install cask
brew install --cask myapp
# Update
brew upgrade mytool
brew upgrade --cask myapp
For projects with multiple binaries:
class Mytools < Formula
desc "Collection of tools"
homepage "https://github.com/username/mytools"
version "1.0.0"
license "MIT"
# ... url and sha256 ...
def install
bin.install "tool1"
bin.install "tool2"
bin.install "tool3"
end
test do
system "#{bin}/tool1", "--version"
system "#{bin}/tool2", "--version"
end
end
Re-download and recalculate:
curl -sL <url> | shasum -a 256
For unsigned binaries:
xattr -d com.apple.quarantine /usr/local/bin/mytool
brew update
brew upgrade mytool
Newer Homebrew requires third-party taps (including your own) to be explicitly trusted before installing or upgrading from them:
brew trust thrashr888/tap # or: brew trust --formula thrashr888/tap/mytool
Document this in the tap's install instructions — every new user hits it once.
brew upgrade worksnpx claudepluginhub thrashr888/thrashr888-agent-kitCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.