A native macOS app that shows every AI-agent skill and MCP server configured on your
machine — across Claude Code, OpenCode, Codex, Cursor, and Pi — at both the global and
project level, with tight integration to the skills.sh / npx skills
ecosystem.
Stop digging through dotfiles to see what each agent is actually loaded with.
Clean-room, MIT-licensed. Informed by
RESEARCH.md(verified ecosystem research) and by Chops (Shpigford/chops) as a UX reference only — no code or assets are copied.
Via Homebrew (the zackbart/tap/loadout shorthand taps automatically):
brew install --cask zackbart/tap/loadoutOr tap first, then install by name:
brew tap zackbart/tap
brew install --cask loadoutUpgrade to the latest release with brew upgrade --cask loadout, and remove with
brew uninstall --cask loadout.
The app is signed and notarized, so it opens with a normal double-click — no Gatekeeper right-click dance. Requires macOS 26+.
- Scans each agent's global skill directories plus the
~/.agents/skillscanonical store. - Dedupes by canonical (symlink-resolved) path — one skill, with badges for every agent that references it.
- Parses
SKILL.mdfrontmatter with a real YAML parser (Yams). - Reads
~/.agents/.skill-lock.jsonfor provenance (source repo, hash, timestamps). - Surfaces declared-vs-wired drift: skills the
skillsCLI declares for an agent but that aren't actually symlinked on disk. - Full-text search across name, description, and body.
- Project scope (walk cwd → git root across
.claude/skills,.opencode/skills,.agents/skills,.codex/skills,.pi/skills). - Live FSEvents watching.
- Built-in
SKILL.mdeditor. - Active-state resolution (OpenCode permission rules, Pi project trust).
- Two-way mutations via the
skillsCLI (add / remove / update / init).
brew install xcodegen # one-time
xcodegen generate # generates Loadout.xcodeproj from project.yml
open Loadout.xcodeproj # then ⌘RThe Xcode project is generated — edit project.yml, not the .xcodeproj.
- macOS 14+, Xcode 16+. Sole dependency: Yams (via SPM).
- Runs non-sandboxed to read agent dotfiles in your home directory.
Releases are tag-driven. Pushing a loadout-v* tag runs the repository release workflow, which builds,
signs (Developer ID), notarizes, and publishes a notarized .dmg to GitHub Releases.
Tags are only cut from a release-bump merge — never off a random commit:
- Open a "Release vX.Y.Z" PR that bumps
MARKETING_VERSIONinproject.yml, and merge it tomain. - Tag that merge commit and push the tag:
git tag loadout-v0.1.3
git push origin loadout-v0.1.3CI injects the version from the tag at build time, so the project.yml bump is just the human
marker that makes the release commit self-describing. Release notes are auto-generated from commits.
One-time setup (already done): seven repo secrets. Six hold the Apple credentials —
BUILD_CERTIFICATE_BASE64, P12_PASSWORD, AC_API_KEY_BASE64, AC_API_KEY_ID,
AC_API_ISSUER_ID, APPLE_TEAM_ID (regenerate if the Developer ID cert (≈5 yr) or the App Store
Connect API key is rotated). The seventh, HOMEBREW_TAP_TOKEN, lets the update-tap job push the
cask to zackbart/homebrew-tap (non-expiring). See DECISIONS.md (D6).
MIT — see LICENSE.