axiom-macos — Claude Code skill for macOS app development
A skill for macOS work: windows, menus, sandboxing, distribution, AppKit bridging and the SwiftUI differences that matter on Mac.
npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a claude-codeWhat axiom-macos does
The skill loads when your agent writes or edits macOS app code. Topics are split into separate references: skills/windows.md for windows and scenes, skills/menus-and-commands.md for menus and keyboard shortcuts, skills/swiftui-differences.md for Table, Inspector and focus, skills/sandbox-and-file-access.md for App Sandbox and security-scoped bookmarks, skills/direct-distribution.md for Developer ID, notarization and Sparkle updates. AppKit bridging lives in skills/appkit-interop.md, AppKit modernization in skills/appkit-modernization.md, plus files for ScreenCaptureKit and bringing an iOS app to Mac with Catalyst.
A decision tree routes the agent: it picks the area first, then opens the matching file. Some topics sit in neighbouring skills — navigation and animation in axiom-swiftui, SwiftData and CloudKit in axiom-data, concurrency in axiom-concurrency, Keychain and encryption in axiom-security. Sandbox and code signing belong here; Keychain does not.
One boundary is worth remembering: ScreenCaptureKit is macOS-only, so iOS screen recording goes through ReplayKit in axiom-media. Install it if you ship for Mac and are tired of re-explaining NSViewRepresentable versus UIViewRepresentable every session.
What it helps with
- build a window with MenuBarExtra and keyboard shortcuts
- set up App Sandbox and file access with security-scoped bookmarks
- sign with Developer ID and notarize the app
- embed SwiftUI views inside existing AppKit code
- bring an iOS app to Mac through Catalyst
Example prompts for the agent
- add a MenuBarExtra with a timer and a menu command
- why is another team's container access denied without a prompt
- set up notarization and Sparkle auto-updates
How to install axiom-macos
1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a claude-code2Manually: put the files in place
~/.claude/skills/axiom-macos/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/axiom-macos/
1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a codex2Manually: put the files in place
.agents/skills/axiom-macos/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a cursor2Manually: put the files in place
.cursor/skills/axiom-macos/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install CharlesWiltgen/Axiom axiom-macos2Manually: put the files in place
.github/skills/axiom-macos/SKILL.md1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a gemini-cli2Platform CLI
gemini skills install https://github.com/CharlesWiltgen/Axiom --path axiom-codex/skills/axiom-macosManually: put the files in place
.devin/skills/axiom-macos/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about axiom-macos
How do I install axiom-macos in Claude?
Run npx skills add CharlesWiltgen/Axiom --skill axiom-macos -a claude-code. The skill lands in ~/.claude/skills/axiom-macos/SKILL.md.
What does axiom-macos do?
It gives the agent references for macOS development: windows and scenes, menus and commands, sandboxing and file access, distribution and notarization, AppKit bridging, ScreenCaptureKit, and moving an iOS app to Mac.
How is axiom-macos different from axiom-swiftui?
This one covers macOS-only concerns: windows, menus, sandboxing, distribution, Table, Inspector, AppKit bridging. axiom-swiftui handles cross-platform SwiftUI: navigation, layout, state, animation. A project using NavigationSplitView with Table needs both.
Source text
SKILL.md · MIT
---
name: axiom-macos
description: Use when building ANY macOS app — windows, menus, sandboxing, distribution, AppKit bridging or modernization (control events, state restoration, concentric corners), or macOS-specific SwiftUI patterns.
license: MIT
---
# macOS Development
**You MUST use this skill for ANY macOS-specific development including windows, menus, sandboxing, distribution, AppKit bridging, and macOS SwiftUI differences.**
## Quick Reference
| Symptom / Task | Reference |
|----------------|-----------|
| Window management (WindowGroup, Window, MenuBarExtra, DocumentGroup) | See `skills/windows.md` |
| Menu bar, commands, keyboard shortcuts | See `skills/menus-and-commands.md` |
| Table, Inspector, NavigationSplitView, focus | See `skills/swiftui-differences.md` |
| App Sandbox, file access, security-scoped bookmarks | See `skills/sandbox-and-file-access.md` |
| Another team's app or app group container access denied without a prompt (`OS27`) | See `skills/sandbox-and-file-access.md` |
| Developer ID, notarization, Sparkle auto-updates | See `skills/direct-distribution.md` |
| NSViewRepresentable, NSHostingController, AppKit bridging, @Observable in AppKit, NSHostingMenu, SwiftUI scenes from AppKit | See `skills/appkit-interop.md` |
| Modernizing AppKit: mouseDown replacement, control events, status-item sessions, state restoration, concentric corners, touch (`OS27`) | See `skills/appkit-modernization.md` |
| Screen recording, sharing, or capture (ScreenCaptureKit) | See `skills/screencapturekit.md` |
| SCStream / SCContentFilter / screenshots / file recording API, clip buffering, recording editor (`OS27`) | See `skills/screencapturekit-ref.md` |
| Bring an iOS app to Mac: Catalyst adoption, Designed for iPad, Mac availability opt-out | See `skills/ios-apps-on-mac.md` |
| Apple Pay on Mac / Catalyst | See `axiom-payments/skills/apple-pay.md` (Catalyst section) |
## Cross-Suite Routes
These topics overlap with macOS development but live in separate suites:
#### SwiftUI (shared iOS/macOS)
- View state, data flow, @Observable → See axiom-swiftui
- Navigation (NavigationStack basics) → See axiom-swiftui (skills/nav.md)
- Layout (ViewThatFits, AnyLayout) → See axiom-swiftui (skills/layout.md)
- Animations → See axiom-swiftui (skills/animation-ref.md)
#### Data & persistence
- SwiftData, Core Data, GRDB → See axiom-data
- CloudKit sync → See axiom-data
#### Concurrency
- Swift 6 concurrency, actors, Sendable → See axiom-concurrency
#### Other
- Accessibility (VoiceOver, Dynamic Type) → See axiom-accessibility
- Networking (URLSession, Network.framework) → See axiom-networking
- Security (Keychain, passkeys, encryption) → See axiom-security
## Conflict Resolution
**axiom-macos vs axiom-swiftui**: When working on a macOS SwiftUI app:
1. **Use axiom-macos** for macOS-only concerns: windows, menus, commands, sandboxing, distribution, Table, Inspector, AppKit bridging
2. **Use axiom-swiftui** for cross-platform SwiftUI: navigation, layout, state management, animations
3. **Both may apply**: A macOS app using NavigationSplitView with Table needs axiom-macos for Table specifics and axiom-swiftui for NavigationSplitView basics
**axiom-macos vs axiom-security**: For sandbox and code signing:
1. **Use axiom-macos** for macOS App Sandbox, security-scoped bookmarks, file access entitlements, Developer ID signing
2. **Use axiom-security** for Keychain storage, encryption, passkeys, certificate management
## Decision Tree
```dot
digraph macos {
start [label="macOS development task" shape=ellipse];
what [label="What area?" shape=diamond];
start -> what;
what -> "skills/windows.md" [label="windows/scenes"];
what -> "skills/menus-and-commands.md" [label="menus/commands/shortcuts"];
what -> "skills/swiftui-differences.md" [label="Table/Inspector/focus/macOS SwiftUI"];
what -> "skills/sandbox-and-file-access.md" [label="sandbox/file access"];
what -> "skills/direct-distribution.md" [label="distribution/notarization/updates"];
what -> "skills/appkit-interop.md" [label="AppKit bridging"];
what -> "skills/appkit-modernization.md" [label="modernize AppKit\n(input/restoration/27 look)"];
what -> "skills/ios-apps-on-mac.md" [label="iOS app to Mac\n(Catalyst / Designed for iPad)"];
what -> "skills/screencapturekit.md" [label="screen capture/\nrecording/sharing"];
what -> "axiom-swiftui" [label="cross-platform SwiftUI"];
what -> "axiom-security" [label="Keychain/encryption"];
}
```
> **iOS screen capture?** ScreenCaptureKit is macOS-only. For iOS screen recording, use ReplayKit — see axiom-media.
## Resources
**WWDC**: 2021-10062, 2022-10061, 2022-10075, 2023-10148, 2024-10149, 2026-272, 2026-289
**Docs**: /security/app-sandbox, /swiftui/windowgroup, /swiftui/table
**Skills**: axiom-swiftui, axiom-security, axiom-concurrency, axiom-uikit
© CharlesWiltgen · MIT · CharlesWiltgen/Axiom