
Cua Driver
Automates native macOS apps through DeepChat's Computer Use plugin by driving accessibility APIs and fallback pixel coordinates. You get a standardized loop: resolve the app by bundle ID, launch it, snapshot the window state, act through MCP tools like click or type_text, then verify the result. When accessibility trees are sparse (common in Electron and media apps), it falls back to screenshots and coordinate-based clicks or tries enabling debugging ports for DOM access. The permission model is explicit: you'll need to grant Accessibility and Screen Recording to the helper bundle. Honest take: this bridges the gap between Claude's reasoning and real GUI automation without writing AppleScript or wrestling with brittle selectors, though sparse trees mean you're sometimes clicking pixels and hoping.
- GitHub stars
- 6K
- last updated
- Jun 11, 2026
Install
$ npx -y skills add thinkinaixyz/deepchat --skill cua-driver --agent claude-codeInstalls into .claude/skills of the current project.
Files
cua-driver
Orchestrates macOS app automation via cua-driver. Whenever a user
asks to drive a native macOS app, follow the loop in this skill rather
than calling tools ad-hoc — the snapshot-before-action invariant is not
optional and silently breaks if you skip it.
DeepChat MCP mode
When DeepChat auto-pins this skill because the Computer Use MCP server is
enabled, use the available Computer Use tools in the current tool list
directly. Treat examples such as click({...}) or
get_window_state({...}) as calls to the matching MCP tool with the same
JSON payload. Shell CLI examples are diagnostic references for
shell-based agents.
App-name resolution belongs here. When matching a user request to an
app, compare the request with each list_apps name and bundle_id.
Consider the user's language, system language, English product names,
English brand names, romanized or pinyin variants, and common
abbreviations. Treat bundle_id as the strongest identity signal. When
the requested app name is ambiguous, localized, translated, abbreviated,
or written in another script, call list_apps, resolve the most credible
bundle id, then call launch_app with that bundle id.
Sponsors
Details
- Repository
- github.com/thinkinaixyz/deepchat
- Categories
- AI & Agent Building, Automation & Workflows
- License
- Apache-2.0
- First seen
- Jun 11, 2026