Agent skill
homebrew-formula-maintenance
Homebrew formula maintenance workflows for Python CLIs and taps, including version bumps, SHA/resource updates, testing, audits, and releases.
Install this agent skill to your Project
npx add-skill https://github.com/bobmatnyc/claude-mpm-skills/tree/main/toolchains/universal/infrastructure/homebrew-formula-maintenance
SKILL.md
Homebrew Formula Maintenance
Overview
Use this workflow to keep Homebrew formulas in sync with PyPI releases for Python CLIs. The pattern in your taps is: update version + sha, refresh resource blocks when needed, run brew install/test/audit, then push the tap update (manually or via CI).
Quick Start (manual bump)
- Verify the PyPI release exists and grab the sdist URL + SHA256.
- Update the
urlandsha256in the formula. - Refresh
resourcestanzas if the formula usesvirtualenv_install_with_resources. - Test:
brew install --build-from-source+brew test+brew audit --strict. - Update changelog/tag and push the tap repo.
Local Scripts You Already Use
homebrew-claude-mpm/scripts/update_formula.sh <version>- Verifies PyPI, updates url/sha, regenerates resources, optional brew test/audit.
homebrew-claude-mpm/scripts/generate_resources.py- Emits Python dependency
resourceblocks from PyPI.
- Emits Python dependency
homebrew-claude-mpm/scripts/test_formula.sh- End-to-end brew install/test/audit/style.
mcp-vector-search/scripts/update_homebrew_formula.py- End-to-end tap update with
--dry-run,--version,--tap-repo-pathandHOMEBREW_TAP_TOKEN.
- End-to-end tap update with
Standard Workflow
1. Confirm PyPI Release
- Check the sdist is available and capture URL/SHA.
- Typical command:
curl -s https://pypi.org/pypi/<package>/<version>/json.
2. Update Formula URL + SHA
- Replace
urlandsha256inFormula/<name>.rb. - Keep the formula version implicit via the sdist URL (your taps do this).
3. Refresh Resources (Python Virtualenv Formula)
If the formula uses Language::Python::Virtualenv and virtualenv_install_with_resources:
- Regenerate
resourcestanzas after dependency changes. - Use
generate_resources.pyor equivalent; review output before pasting.
4. Test and Audit
Run these in the tap repo:
brew install --build-from-source ./Formula/<name>.rb
brew test <name>
brew audit --strict ./Formula/<name>.rb
brew style ./Formula/<name>.rb
5. Commit and Push
- Update
CHANGELOG.mdif the tap repo tracks releases. - Commit, tag, and push as required by the tap workflow.
Formula Patterns (From Your Taps)
Full Virtualenv Formula (claude-mpm)
include Language::Python::Virtualenvvirtualenv_install_with_resources- Large
resourceblocks to pin dependencies test douses CLI commands like--versionand subcommands
Minimal Venv Formula (mcp-vector-search)
- Create venv explicitly and
pip install -v buildpath bin.install_symlinkfor CLI entrypoint- Minimal
test douses--versionand--help
CI Automation Pattern
Your GitHub Actions workflow for Homebrew updates follows this flow:
- Trigger on tag or
workflow_runafter CI succeeds. - Run
scripts/update_homebrew_formula.py. - Require
HOMEBREW_TAP_TOKEN(and optionalHOMEBREW_TAP_REPO). - On failure, open an issue with manual update steps.
Troubleshooting
- PyPI release missing: verify tag push and publish step completed.
- SHA mismatch: re-fetch sdist SHA from PyPI JSON.
- brew audit failures: confirm dependency resource blocks match the sdist and
python@x.ydependency is present. - Install failures: verify
python@x.ydependency andvirtualenv_install_with_resourcesusage.
Related Skills
toolchains/universal/infrastructure/github-actionstoolchains/universal/infrastructure/docker
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
bad-example-skill
ANTI-PATTERN - Example showing violations of self-containment (DO NOT COPY)
example-framework-skill
Example of a properly self-contained skill following all best practices
systematic-debugging
Systematic debugging methodology emphasizing root cause analysis over quick fixes
verification-before-completion
Run verification commands and confirm output before claiming success
Root Cause Tracing
Systematically trace bugs backward through call stack to find original trigger
Brainstorming Ideas Into Designs
Interactive idea refinement using Socratic method to develop fully-formed designs
Didn't find tool you were looking for?