Native macOS menu bar app for Claude Code: skills, auto-memory, hooks, and env vars.
See PRD.md for the spec.
- Skills tab: browse, search, open, and trash skills under
~/.claude/skills/. - Memory tab: browse Claude auto-memory entries (
~/.claude/projects/<project>/memory/*.md) per project, with type badges and edit/delete. - Hooks tab: browse hooks across
~/.claude/settings.jsonand per-project.claude/settings.json/settings.local.json, with scope filter and edit/delete. - Env tab: toggle individual env vars on/off without losing values (disabled vars stash in
~/.claude/skillbox-env-stash.json); add new vars with autocomplete from a built-in catalog of well-known Claude Code env vars. - Insights button (⌘I): runs
claude -p "/insights"headlessly in the background, footer shows a spinner during the run, then opens the resulting HTML report (the skill's own~/.claude/usage-data/report.htmlif it produced one, otherwise a markdown-rendered fallback at~/Library/Caches/Skillbox/) in your default browser. - Toggle tabs with ⌘1 / ⌘2 / ⌘3 / ⌘4.
Grab the latest Skillbox-vX.Y.Z.zip from Releases, unzip, and drag Skillbox.app to /Applications.
The app is ad-hoc signed, not notarized. On first launch macOS Gatekeeper will refuse to open it. Either right-click → Open and confirm, or strip the quarantine attribute:
xattr -dr com.apple.quarantine /Applications/Skillbox.appRequires macOS 14+, Swift 6 toolchain (Command Line Tools is enough).
make bundle # produces ./Skillbox.app, ad-hoc signed
make run # builds and opens
make install # copies to /Applications
make cleanRun tests with swift test.
The app has three layers under Sources/Skillbox/:
- Models -
Skill,Memory,Hook,EnvVar.FileBackedItemStore<Item>is the generic single-root store poweringSkillStoreandMemoryStore;HookStoreandEnvVarStoreare bespoke because they aggregate from multiplesettings.jsonfiles across scopes (andEnvVarStorealso manages a private stash file for disabled values). - Services - leaf utilities (
SkillScanner,SkillsCLI,SkillRegistry,EditorLauncher,DirectoryWatcher) and one deep module:RemoteSkillServiceowns the install / update / check-for-updates lifecycle behind a small interface.Ports.swiftdefines the protocols views talk to so tests can substitute in-memory adapters. - Views - SwiftUI views.
PopoverViewis the menu-bar entry point; sheets likeInstallFromURLSheetandRegistryViewroute through aSkillsTabRouteenum.
For the quickest tour of what the app does, read Tests/SkillboxTests/AppTourTest.swift.
Bump CFBundleShortVersionString in Sources/Skillbox/Resources/Info.plist.template, then:
VERSION=v0.1.0-beta.2 # adjust
make clean bundle
ditto -c -k --keepParent Skillbox.app Skillbox-$VERSION.zip
git tag -a $VERSION -m "$VERSION"
git push origin $VERSION
gh release create $VERSION --prerelease --title "$VERSION" --notes "..." Skillbox-$VERSION.zip
rm -f Skillbox-$VERSION.zipDrop --prerelease once you tag a stable vX.Y.Z (no -beta/-rc suffix).