os-integrations
Skill1.7k starsChanged 10 days agoMITView on GitHub
Deep macOS integrations for a native app, such as global hotkeys, menu bar items, floating panels, window control with Accessibility, screen capture and recording, clipboard, Shortcuts and Spotlight, URL schemes, login items, a CLI, and the permissions each one needs. Use when an app must reach outside its own window or control other apps.
2 other projects use a version of this.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- Stijnus/dsh-rev-engword for word, first seen Nov 8, 2026
- daveebbelaar/bawatheir own version, first seen Nov 8, 2026
Who's talking about daveebbelaar/bama
- Dave Ebbelaar“This Free Repo Lets Claude Code Build Any Mac App”YouTube · Oct 26, 2026 · 121k views
- tamhn“Claude Giờ Làm Được MỌI Ứng Dụng Mac (Skill Miễn Phí)”YouTube · Oct 29, 2026 · 8.1k views
- Claudical“App Store 대신 말로 만드는 Mac 앱 | Claude Code 플러그인 BAMA”YouTube · Nov 3, 2026 · 1.9k views
- Daksh“BAMA AI Agent builds native Mac apps from screenshots #shorts”YouTube · Oct 28, 2026 · 742 views
- Tech by Thilak“Claude can now clone Mac apps (BAMA, free and open source)”YouTube · Nov 2, 2026 · 310 views
The biggest 5 of 42 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 42
Talked about on GitHub, YouTube and the web (42 times).
On GitHub · 20
- Nov 5, 2026agent-skills.github.daveebbelaar.bama: 0-unstable-2026-11-01 → 1.1.1 — sudosubin/agents.nix0 reactions
- Nov 5, 2026claude-code-plugins.github.daveebbelaar.bama: 0-unstable-2026-11-01 → 1.1.1 — sudosubin/agents.nix0 reactions
- Nov 1, 2026claude-code-plugins.github.daveebbelaar.bama: 0-unstable-2026-10-29 → 0-unstable-2026-11-01 — sudosubin/agents.nix0 reactions
- Nov 1, 2026agent-skills.github.daveebbelaar.bama: 0-unstable-2026-10-29 → 0-unstable-2026-11-01 — sudosubin/agents.nix0 reactions
- Nov 1, 2026[GitHub Radar] 2026-11-01: 3 repo đáng xem — mrxcode-debug/pdt-github-hot-radar0 reactions
15 more on GitHub
- Oct 30, 2026H: Mac app (SwiftUI shell around the Rust binary), replaces the AppleScript droplet — fastermadman/PDFable0 reactions · 1 comment
- Oct 29, 2026agent-skills.github.daveebbelaar.bama: 0-unstable-2026-10-27 → 0-unstable-2026-10-29 — sudosubin/agents.nix0 reactions
- Oct 29, 2026claude-code-plugins.github.daveebbelaar.bama: 0-unstable-2026-10-27 → 0-unstable-2026-10-29 — sudosubin/agents.nix0 reactions
- Oct 28, 2026[Candidate] daveebbelaar/bama/skills/design/layout-grid - layout-grid — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 28, 2026[Candidate] daveebbelaar/bama/skills/design/design-system - design-system — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 28, 2026[Candidate] daveebbelaar/bama/skills/design/design-kit - design-kit — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026agent-skills.github.daveebbelaar.bama: init at 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026[Candidate] daveebbelaar/bama/skills/design/design-from-app - design-from-app — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026[Candidate] daveebbelaar/bama/skills/design/app-icon - app-icon — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026[Candidate] daveebbelaar/bama/skills/code/swift-swiftui - swift-swiftui — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026claude-code-plugins.github.daveebbelaar.bama: 0-unstable-2026-10-26 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026[Candidate] daveebbelaar/bama/skills/code/performance - performance — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026[Candidate] daveebbelaar/bama/skills/code/os-integrations - os-integrations — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026[Candidate] daveebbelaar/bama/skills/code/improve-architecture - improve-architecture — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 27, 2026claude-code-plugins.github.daveebbelaar.bama: init at 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
On YouTube · 13
- Oct 26, 2026This Free Repo Lets Claude Code Build Any Mac App — Dave Ebbelaar121k views · 118 comments
- Oct 29, 2026Claude Giờ Làm Được MỌI Ứng Dụng Mac (Skill Miễn Phí) — tamhn8.1k views · 5 comments
- Nov 3, 2026App Store 대신 말로 만드는 Mac 앱 | Claude Code 플러그인 BAMA — Claudical1.9k views · 1 comment
- Oct 28, 2026BAMA AI Agent builds native Mac apps from screenshots #shorts — Daksh742 views
- Nov 2, 2026Claude can now clone Mac apps (BAMA, free and open source) — Tech by Thilak310 views
8 more on YouTube
- Oct 29, 2026Claude Code Mac App: One Sentence In, a Working App Out (Free BAMA Repo) — Simply AI217 views
- Oct 29, 2026Clone any native Mac app using AI agents 🚀 — LookOnThisGit117 views · 1 comment
- Nov 1, 2026AI Se Apni Mac App? 🖥️ — Suresh52 views
- Nov 2, 2026See an app you like? Claude Code rebuilds it as a Mac app (BAMA) — RocketLauncher Code40 views
- Oct 27, 2026Your AI can now build real Mac apps #shorts — No Short Answers36 views · 1 comment
- Oct 27, 2026BAMA: Agent Skills That Build Native Mac Apps #Shorts — Brix AI30 views
- Oct 29, 2026BAMA + 2 more repos · hotin.ai daily Oct 29, 2026 #Shorts — HotInAI27 views
- Nov 4, 2026bama: Rebuild any Mac app instantly — Dail Finds Dev | Repos, Tools, Sites2 views
On the web · 9
- Oct 30, 2026Build your own Mac app with Claude Code | aruntastic — aruntastic.com
- Oct 26, 2026This Free Repo Lets Claude Code Build Any Mac App · CHOOSETO.AI — chooseto.ai
- Oct 24, 2026daveebbelaar/bama - The Skill Leaderboard — skillleaderboard.com
- Feb 15, 2026Product TEA Test: GAMMA - by TEA (The Era Arc) and Sam Li — tea2025.substack.com
- Dec 28, 2025My Experience Using the BMAD Framework on a Personal Project (Patience Required) — dev.to
4 more on the web
- Dec 6, 2025Finding My Brain Again in the Middle of the AI Fire hose | by Shay Dratler — dratler-shay.medium.com
- Sep 14, 2025#6 - ChatGPT Agent, Youware, Gamma - by Brandon — behindonai.substack.com
- Jul 16, 2025My 15 favorite apps I use daily. We spend hours each day on our phones… | by Bex Jeanson — userbexperiencedesign.medium.com
- Aug 11, 2023Last Day with @daveebbelaar here at Termene.ro in Nuba, Mamaia. I got some great insight on how to code an AI Agent that can take notes for your meetings and organise them … | David Podut — linkedin.com
Other versions2 projects use a version of this.
Word for word · 1
- Stijnus/dsh-rev-eng★ 1100% same
Edited · 0
None found.
Wrote their own version · 1
- daveebbelaar/bawa★ 17same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- agent-cliSkill
- improve-architectureSkill
- performanceSkill
- swift-swiftuiSkill
- app-iconSkill
- design-from-appSkill
- design-kitSkill
- design-systemSkill
- layout-gridSkill
- mac-designSkill
- ux-designSkill
- cloneSkill
- researchSkill
- user-storiesSkill
- build-and-verifySkill
- improve-loopSkill
- test-mac-appSkill
- app-briefSkill
- bamaSkill
- new-mac-appSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 47
Prefer the row with no permission when two rows solve the same job.
- Distinctive: line 51
Ask at the moment of use. Explain in one line what breaks without it.
- Distinctive: line 59
Check every 1 to 2 seconds while a permission is missing or a view that shows it is open.
- Very specific: line 62
Every NS...UsageDescription key (camera, microphone, Apple Events) must be in Info.plist before the first request, or the app crashes.
- Distinctive: line 94
No App Sandbox for apps that use Accessibility, event taps, or other apps' windows.
- Very specific: line 96
After an install, refresh Launch Services so the Dock shows the new icon: lsregister -f -R -trusted /Applications/<App>.app (the tool lives …
- Distinctive: line 100
If a grant looks on but the API fails, the signature changed.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
macOS integrations
A Mac app is a set of entry points around the system, not one window. This skill picks the API for each entry point and the permission it costs. Code for every row is in recipes.md.
Pick the API
| Want | API | Permission |
| Global shortcut (key combo) | Carbon RegisterEventHotKey | None |
| Hold-to-show (hold Option, press Tab) or key remapping | CGEvent.tapCreate event tap | Accessibility |
| Watch keys without changing them (keystroke overlay) | Listen-only event tap | Input Monitoring (CGRequestListenEventAccess) |
| List other apps' windows | CGWindowListCopyWindowInfo | None (titles need Screen Recording) |
| Menu bar item | MenuBarExtra (SwiftUI) or NSStatusItem | None |
| Live status in the menu bar (a timer, a sync) | MenuBarExtra with a changing label. Live Activities on a Mac only mirror a paired iPhone | None |
| Desktop and Notification Center widgets | WidgetKit extension target (Xcode build, like App Intents) | None |
| Find the app's content in Spotlight | Core Spotlight CSSearchableIndex | None |
| Preview the app's own file type in Finder (Space) | Quick Look preview extension | None |
| Menu-bar-only app, no Dock icon | LSUIElement = YES in Info.plist | None |
| Spotlight-style panel that keeps the other app in front | NSPanel with .nonactivatingPanel | None |
| Move and resize other apps' windows | AXUIElement (kAXPositionAttribute, kAXSizeAttribute) | Accessibility |
| Paste into the front app | Write NSPasteboard, then post Command-V with CGEvent | Accessibility |
| Screenshot | ScreenCaptureKit SCScreenshotManager | Screen Recording |
| Window thumbnails | SCScreenshotManager with an SCContentFilter per window | Screen Recording |
| Screen recording to MP4 | SCStream + SCRecordingOutput (AVAssetWriter when you edit frames) | Screen Recording, Microphone |
| Clipboard history | Poll NSPasteboard.general.changeCount | None |
| Text in images | Vision RecognizeTextRequest | None |
| Launch at login | SMAppService.mainApp.register() | User approves once |
| Links from scripts, Stream Deck, Raycast | CFBundleURLTypes + .onOpenURL | None |
| Shortcuts app and Spotlight actions | AppIntent (App Shortcuts are not supported on macOS). A result or confirmation view is a snippet | None |
| Agent or script reads and changes data | The app binary as a CLI, talking to the running app (agent-cli skill) | None |
| A CLI that writes plain files or its own SQLite tells the app to reload | Darwin notification (notify_post) | None |
| Keep the Mac awake | IOPMAssertionCreateWithName | None |
| System stats | host_statistics64, proc_pid_rusage, IOPSCopyPowerSourcesInfo | None |
| Audio devices | CoreAudio AudioObjectGetPropertyData | None |
| Toggle dark mode and other system settings | Apple Events to System Events | Automation |
| Notifications | UNUserNotificationCenter | User approves once |
| Dock menu | applicationDockMenu(_:) in the app delegate | None |
| Services and Share menu | NSServices in Info.plist, ShareLink | None |
Prefer the row with no permission when two rows solve the same job.
Permissions
- Ask at the moment of use. Explain in one line what breaks without it. The exception: an app whose core job needs the permission (a window manager needs Accessibility) shows its permissions page on first launch.
- Show the state of every permission on one Settings page, with a button
that opens the right pane:
x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility(orPrivacy_ScreenCapture,Privacy_AllFiles). - The user grants it in System Settings, and nothing calls your app back. Check every 1 to 2 seconds while a permission is missing or a view that shows it is open. Otherwise check every 20 seconds, with a timer tolerance. Check once more right when such a view opens.
- Every
NS...UsageDescriptionkey (camera, microphone, Apple Events) must be in Info.plist before the first request, or the app crashes.
Menu bar items, widgets, and snippets
- A menu bar item shows a menu, unless the feature is too complex for one.
Its icon is a template image (an SF Symbol works). People can turn it
off in Settings, and nothing is reachable only through it: the Dock menu
and the main window offer the same actions.
MenuBarExtraalready works with keyboard navigation; anNSStatusItemthat opens a custom window must too (WWDC26-289). - A widget shows one idea from the app's purpose, with content that changes through the day. Sizes small, medium, large, and extra large. On the desktop it renders vibrant and nearly gray, so it must read without color. Standard margins 16 pt. A click deep-links to the exact place; buttons and toggles in it run App Intents. Never a whole app squeezed into a widget.
- A snippet is the view an App Intent shows in Spotlight, Siri, or Shortcuts: a result (with Done) or a confirmation (Cancel plus a button that names the action, never "OK"). At most 400 pt tall, readable in light and dark, and clear without the spoken text.
- Badge the Dock icon only with a count of unread notifications.
Signing keeps grants
macOS stores Accessibility and Screen Recording grants per code signature and path. To keep them across rebuilds:
- Sign with one stable "Apple Development" certificate. Ad hoc signing asks again after every build.
- Install to the same path every time (
/Applications/<App>.appor~/Applications/<App>.app). - No App Sandbox for apps that use Accessibility, event taps, or other apps' windows. The sandbox blocks them.
- After an install, refresh Launch Services so the Dock shows the new icon:
lsregister -f -R -trusted /Applications/<App>.app(the tool lives in/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/).
If a grant looks on but the API fails, the signature changed. Remove the app from the list in System Settings, add it again, restart the app.
Make every feature reachable three ways
Each feature gets: a menu item with a shortcut, a URL
(<app>://action/<name>), and an App Intent. The same action enum backs all
three, so a new action shows up everywhere at once. App Intent enum titles
must be literals, so they can drift from menu titles: add a self-test check
that they match. The URL also lets
test-mac-app drive the feature from a script.
Done when every entry point in the brief's "System hooks" works from a clean install, and Settings shows the state of every permission it needs.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

