daveebbelaar/bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
About daveebbelaar/bama
daveebbelaar/bama is an open-source project on GitHub, mainly written in Swift. BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI. It currently holds 683 stars and 102 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
Git Homed tracks it on the Today's Trending board.
GitHub Repository Details
README
See an app you like. Rebuild it as your own native Mac app.
Agent skills that take a native macOS app from idea to your Dock.
Swift and SwiftUI. Local data. No Xcode GUI.
Quick start · How it works · Skills · Specs · Install
Quick start
npx skills@latest add daveebbelaar/bama
Then ask your agent:
Clone my to-do app as a native Mac app.
Screenshot every screen, write the user stories, and build milestone 1.
Not sure where to start? Type /bama. It looks at your project and picks the next skill.
How it works
|
1. Clone Your agent opens the app you like and screenshots every screen. It writes a screen index. |
2. Plan It turns the screens into user stories with checkable acceptance criteria, in milestones. |
3. Build It builds one story per commit. Before each commit it snapshots every page in light and dark mode and runs the tests. |
Skills
| Stage | Skill | What it does |
|---|---|---|
| Start | bama | Router: finds where you are and calls the right skill |
| app-brief | Turns an idea into a one-page brief | |
| new-mac-app | A working app from a template: Swift package, SwiftData, build script, snapshot mode, git | |
| Plan | research | Parallel researcher agents: market, users, features, design, macOS APIs |
| clone | Screenshots every screen of any app with computer use or a browser, writes a screen index | |
| user-stories | A backlog with checkable acceptance criteria, in milestones | |
| Code | swift-swiftui | Swift 6 concurrency, state, SwiftData, AppKit bridges, compiler errors |
| os-integrations | Global hotkeys, menu bar, floating panels, window control, screen capture, Shortcuts, URL schemes, CLI, permissions | |
| performance | Measure, then fix: main thread, GPU compositing, images, Instruments from the command line | |
| improve-architecture | Finds hot spots as the app grows and refactors one step per commit, with behavior proven unchanged | |
| agent-cli | Optional: a command line and MCP server, so Claude Code, Codex, and scripts can drive your app | |
| Design | ux-design | Names, flow, where each feature opens (inline, popover, sheet, window), words, and accessibility, before code |
| mac-design | Liquid Glass, layout, toolbars, menus, keyboard, type, dark mode | |
| design-system | Native look with an accent color people pick in Settings, then one set of tokens and one rules page | |
| layout-grid | A 4 pt grid with checks that fail on misalignment: a code lint, a layout probe in snapshot mode, and a grid overlay | |
| design-kit | Your own parts, not Apple's: three token layers, type, an icon set, every part in every state, custom window chrome, and a parts gallery | |
| design-from-app | Rebuilds the look of an app you like from its screenshots: measures sizes, type, and colors, then compares pixel by pixel until it matches | |
| app-icon | A Liquid Glass icon written as an Icon Composer file, checked in every look | |
| Ship | build-and-verify | Build, install, snapshot every page in light and dark, look at them |
| test-mac-app | Swift Testing, an in-app self-test, a debug bridge an agent can drive | |
| improve-loop | Works through the backlog one story per commit until a milestone is done |
Specs
Not sure what to build? specs/ has 12 build plans for small Mac apps: a window snapper, a window switcher, a launcher, clipboard history, screenshots, a screen recorder, and more. I took them apart from Onyx, my own menu bar app. Copy one into an empty folder and tell your agent:
Build the app in window-snapper.md with BAMA.
Install
Pick one route per agent. Two routes install every skill twice.
Claude Code
/plugin marketplace add daveebbelaar/bama
/plugin install bama@bama
Codex
codex plugin marketplace add daveebbelaar/bama
codex plugin add bama@bama
Any other agent (Cursor, Gemini CLI, Copilot, and more)
Uses skills.sh. Install all skills, or one with --skill.
npx skills@latest add daveebbelaar/bama -a
npx skills@latest add daveebbelaar/bama --skill=clone
By hand
git clone https://github.com/daveebbelaar/bama.git
bama/scripts/link-skills.sh # links every skill into ~/.claude/skills and ~/.agents/skills
Requirements
- macOS 26 or later
- Xcode 26 or later, for the Swift 6.2 toolchain (you never open it)
- An agent that supports skills: Claude Code, Codex, Cursor, Gemini CLI
- For
cloneon native apps: computer use (Claude Pro or Max)
Credits
- The idea and the "any" promise come from
- Skill format and writing rules follow Matt Pocock's
writing-for-agents skill.
- Works well with SwiftUI Pro