Superset Computer Control
Operate the user's real desktop through an accessibility-first driver: a local
CLI that exposes accessibility snapshots, exact window screenshots, native menu
operations, and targeted input without making the agent guess at stale screen
coordinates. The contract in this skill (preflight, task-scoped session,
snapshot, act, verify, semantic operations first, conservative failure
handling, clean teardown) is driver-agnostic. The command reference below is
for Cua Driver, the default.
Choose the right surface
- Use this skill for native apps, OS UI, and browser windows outside Superset.
- Use
superset:browser for Superset's in-app browser pane.
- Prefer an application API, purpose-built CLI, or direct filesystem operation
when the requested result does not require GUI interaction.
Choose a driver
- If the user names a driver, use that one.
- Otherwise use whichever supported driver is already installed:
Cua Driver (
cua-driver, cross-platform,
the default) or Peekaboo (peekaboo, macOS only). If
both are installed, use Cua Driver and mention the alternative once.
- If neither is installed, ask the user which to install before installing
anything; recommend Cua Driver unless the user is macOS-only and prefers
Peekaboo.
- With a driver other than Cua Driver, apply this skill's contract through that
driver's own command surface; discover it with the driver's help output and
documentation rather than assuming the Cua command shapes below.
Set up Cua Driver (default)
Confirm the installed executable with command -v cua-driver on macOS or
Linux, or Get-Command cua-driver in Windows PowerShell, then inspect
cua-driver --version. Do not silently install or upgrade it. If it is
missing, ask the user to authorize an installer from the Cua Driver
installation guide. On
macOS or Linux, use:
/bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"
On Windows, use PowerShell:
irm https://cua.ai/driver/install.ps1 | iex
cua-driver autostart enable
cua-driver autostart kick
Run cua-driver doctor and cua-driver status. On macOS, also run
cua-driver permissions status. If Accessibility or Screen Recording is
missing, ask the user to run cua-driver permissions grant and complete the
OS prompts. Never work around missing OS permissions with AppleScript,
synthetic shell input, or another GUI driver.
Preserve an already-running daemon's permission mode; do not restart it
merely to broaden permissions. If the environment needs explicit service
setup, follow the platform-specific guidance reported by doctor.
Inspect the installed tool surface instead of assuming a version-specific
schema:
cua-driver list-tools
cua-driver describe get_window_state
cua-driver describe click
Invoke tools with cua-driver call <tool> '<json>'. Use describe whenever an
argument is uncertain.
Declare a task session
Create a unique session before the first GUI observation:
cua-driver call start_session '{"session":"superset-computer-<unique>"}'
Pass the same session to every tool that accepts it. It owns this run's agent
cursor and lifecycle cleanup. It does not select the capture mode or grant
access beyond the daemon's fixed permission mode.
Snapshot, act, verify
Follow this loop for every GUI action:
- State the exact postcondition, such as "Settings shows Dark mode selected."
- Discover the target with
get_accessibility_tree or another semantic tool,
then take a fresh get_window_state snapshot for the exact PID and window.
- Prefer the snapshot's
element_token over element_index, and prefer both
over pixel coordinates. Tokens identify the control and fail closed when the
snapshot becomes stale.
- Perform one action. Default to background delivery; use foreground delivery
only when fresh evidence shows the background action did not land.
- Take a new snapshot and verify the postcondition before continuing. A
successful tool response proves delivery, not the resulting UI state.
Minimal shape:
cua-driver call get_accessibility_tree '{}'
cua-driver call get_window_state '{"pid":844,"window_id":10725,"session":"superset-computer-<unique>"}'
cua-driver call click '{"pid":844,"element_token":"s0000002a:14","session":"superset-computer-<unique>"}'
cua-driver call verify_state '{"pid":844,"window_id":10725,"session":"superset-computer-<unique>","expect":[{"element":{"selector":{"label_contains":"Saved"},"exists":true}}]}'
Re-snapshot before every later action. Never reuse a token after a snapshot of
the same window, navigation, modal transition, or substantial repaint.
Use semantic operations first
- Use
invoke_menu for native application-menu paths.
- Use
set_value or type_text for accessible fields and press_key or
hotkey for non-text keys.
- Use
set_window_frame for window geometry and verify it with list_windows.
- For Chromium or Electron page content, discover the exact browser PID and
window ID, then call
get_browser_state. If it reports
browser_requires_setup, call browser_prepare under its approval rules.
After preparation, use its returned PID to rediscover the window and call
get_browser_state again. Use the returned target_id and tab_id with
browser_click, browser_type, browser_navigate, and browser_pointer,
refreshing the page snapshot before each later browser action.
- For browser pixel actions,
browser_click and browser_pointer coordinates
must be viewport CSS pixels from the latest get_browser_state page
snapshot. For native pixel actions, use coordinates only for canvas, video,
WebGL, or custom-drawn controls absent from the accessibility tree, and take
them from the same fresh get_window_state snapshot used by the action.
Handle failures conservatively
- If a control is absent, refresh the snapshot and inspect dialogs, sheets, and
application menus before escalating.
- If an action has no verified effect, retry only the narrowest failed step:
background accessibility, then background pixel input, then foreground input.
- Escalate to full-desktop control only after semantic, accessibility, pixel,
and foreground-window routes are exhausted, and only through the mechanism
advertised by the installed driver version.
- If the target or resulting state is ambiguous, stop and report what is
visible. Do not click through unknown dialogs or retry destructive actions.
- Leave the user's windows, focus, tabs, and clipboard as you found them unless
changing them is part of the request.
Finish cleanly
Take a final fresh snapshot or semantic readback, report the observable result,
and end only the session created for this task:
cua-driver call end_session '{"session":"superset-computer-<unique>"}'
Do not stop a shared driver daemon or close unrelated windows when the task
ends.
When the screenshots are the point, a verification run someone else has to
read, publish them instead of leaving a list of paths on their disk. Collect
them in a directory beside an index.html that lays them out, and publish the
directory so the images ride along at their relative paths:
superset pages publish ./evidence/ --workspace <id> --title "Export dialog: verified"
A desktop screenshot catches whatever else was on screen: mail, messages, a
password manager, another customer's data. Look at each one, drop or crop what
the report does not need, and pass --visibility just_me unless the org needs
it. Publishing is one of the actions the Safety rules below require you to
confirm first.
Safety
This skill reaches real apps and signed-in sessions. Limit inspection and
actions to the user's request; never extract credentials, cookies, tokens, or
unrelated private data. Obtain confirmation immediately before sending a
message, submitting a form that creates an external commitment, publishing,
purchasing, deleting data, changing an account, accepting legal terms, or
taking another consequential external action. Authentication prompts,
passkeys, passwords, and MFA stay with the user.
1---2name: computer3description: Operate the user's real desktop apps and windows on macOS, Windows, or Linux. Use when the user asks to open or drive a native app, click or type in a desktop UI, inspect or arrange a window, use their signed-in system browser, or verify an end-to-end GUI flow, including "open Settings and turn on dark mode", "click Save in that window", "what's on screen". Uses an accessibility-first driver (Cua Driver by default, Peekaboo on macOS). Not for Superset's in-app browser pane, headless scraping, or anything an API or CLI can do directly.4---5
6# Superset Computer Control
7
8Operate the user's real desktop through an accessibility-first driver: a local
9CLI that exposes accessibility snapshots, exact window screenshots, native menu
10operations, and targeted input without making the agent guess at stale screen
11coordinates. The contract in this skill (preflight, task-scoped session,
12snapshot, act, verify, semantic operations first, conservative failure
13handling, clean teardown) is driver-agnostic. The command reference below is
14for Cua Driver, the default.
15
16## Choose the right surface
17
18- Use this skill for native apps, OS UI, and browser windows outside Superset.
19- Use `superset:browser` for Superset's in-app browser pane.
20- Prefer an application API, purpose-built CLI, or direct filesystem operation
21 when the requested result does not require GUI interaction.
22
23## Choose a driver
24
25- If the user names a driver, use that one.
26- Otherwise use whichever supported driver is already installed:
27 [Cua Driver](https://cua.ai/docs/cua-driver) (`cua-driver`, cross-platform,
28 the default) or [Peekaboo](https://peekaboo.sh) (`peekaboo`, macOS only). If
29 both are installed, use Cua Driver and mention the alternative once.
30- If neither is installed, ask the user which to install before installing
31 anything; recommend Cua Driver unless the user is macOS-only and prefers
32 Peekaboo.
33- With a driver other than Cua Driver, apply this skill's contract through that
34 driver's own command surface; discover it with the driver's help output and
35 documentation rather than assuming the Cua command shapes below.
36
37## Set up Cua Driver (default)
38
391. Confirm the installed executable with `command -v cua-driver` on macOS or
40 Linux, or `Get-Command cua-driver` in Windows PowerShell, then inspect
41 `cua-driver --version`. Do not silently install or upgrade it. If it is
42 missing, ask the user to authorize an installer from the [Cua Driver
43 installation guide](https://cua.ai/docs/how-to-guides/driver/install). On
44 macOS or Linux, use:
45
46 ```bash
47 /bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"
48 ```
49
50 On Windows, use PowerShell:
51
52 ```powershell
53 irm https://cua.ai/driver/install.ps1 | iex
54 cua-driver autostart enable
55 cua-driver autostart kick
56 ```
57
582. Run `cua-driver doctor` and `cua-driver status`. On macOS, also run
59 `cua-driver permissions status`. If Accessibility or Screen Recording is
60 missing, ask the user to run `cua-driver permissions grant` and complete the
61 OS prompts. Never work around missing OS permissions with AppleScript,
62 synthetic shell input, or another GUI driver.
633. Preserve an already-running daemon's permission mode; do not restart it
64 merely to broaden permissions. If the environment needs explicit service
65 setup, follow the platform-specific guidance reported by `doctor`.
664. Inspect the installed tool surface instead of assuming a version-specific
67 schema:
68
69 ```bash
70 cua-driver list-tools
71 cua-driver describe get_window_state
72 cua-driver describe click
73 ```
74
75Invoke tools with `cua-driver call <tool> '<json>'`. Use `describe` whenever an
76argument is uncertain.
77
78## Declare a task session
79
80Create a unique session before the first GUI observation:
81
82```bash
83cua-driver call start_session '{"session":"superset-computer-<unique>"}'
84```
85
86Pass the same `session` to every tool that accepts it. It owns this run's agent
87cursor and lifecycle cleanup. It does not select the capture mode or grant
88access beyond the daemon's fixed permission mode.
89
90## Snapshot, act, verify
91
92Follow this loop for every GUI action:
93
941. State the exact postcondition, such as "Settings shows Dark mode selected."
952. Discover the target with `get_accessibility_tree` or another semantic tool,
96 then take a fresh `get_window_state` snapshot for the exact PID and window.
973. Prefer the snapshot's `element_token` over `element_index`, and prefer both
98 over pixel coordinates. Tokens identify the control and fail closed when the
99 snapshot becomes stale.
1004. Perform one action. Default to background delivery; use foreground delivery
101 only when fresh evidence shows the background action did not land.
1025. Take a new snapshot and verify the postcondition before continuing. A
103 successful tool response proves delivery, not the resulting UI state.
104
105Minimal shape:
106
107```bash
108cua-driver call get_accessibility_tree '{}'
109cua-driver call get_window_state '{"pid":844,"window_id":10725,"session":"superset-computer-<unique>"}'
110cua-driver call click '{"pid":844,"element_token":"s0000002a:14","session":"superset-computer-<unique>"}'
111cua-driver call verify_state '{"pid":844,"window_id":10725,"session":"superset-computer-<unique>","expect":[{"element":{"selector":{"label_contains":"Saved"},"exists":true}}]}'
112```
113
114Re-snapshot before every later action. Never reuse a token after a snapshot of
115the same window, navigation, modal transition, or substantial repaint.
116
117## Use semantic operations first
118
119- Use `invoke_menu` for native application-menu paths.
120- Use `set_value` or `type_text` for accessible fields and `press_key` or
121 `hotkey` for non-text keys.
122- Use `set_window_frame` for window geometry and verify it with `list_windows`.
123- For Chromium or Electron page content, discover the exact browser PID and
124 window ID, then call `get_browser_state`. If it reports
125 `browser_requires_setup`, call `browser_prepare` under its approval rules.
126 After preparation, use its returned PID to rediscover the window and call
127 `get_browser_state` again. Use the returned `target_id` and `tab_id` with
128 `browser_click`, `browser_type`, `browser_navigate`, and `browser_pointer`,
129 refreshing the page snapshot before each later browser action.
130- For browser pixel actions, `browser_click` and `browser_pointer` coordinates
131 must be viewport CSS pixels from the latest `get_browser_state` page
132 snapshot. For native pixel actions, use coordinates only for canvas, video,
133 WebGL, or custom-drawn controls absent from the accessibility tree, and take
134 them from the same fresh `get_window_state` snapshot used by the action.
135
136## Handle failures conservatively
137
138- If a control is absent, refresh the snapshot and inspect dialogs, sheets, and
139 application menus before escalating.
140- If an action has no verified effect, retry only the narrowest failed step:
141 background accessibility, then background pixel input, then foreground input.
142- Escalate to full-desktop control only after semantic, accessibility, pixel,
143 and foreground-window routes are exhausted, and only through the mechanism
144 advertised by the installed driver version.
145- If the target or resulting state is ambiguous, stop and report what is
146 visible. Do not click through unknown dialogs or retry destructive actions.
147- Leave the user's windows, focus, tabs, and clipboard as you found them unless
148 changing them is part of the request.
149
150## Finish cleanly
151
152Take a final fresh snapshot or semantic readback, report the observable result,
153and end only the session created for this task:
154
155```bash
156cua-driver call end_session '{"session":"superset-computer-<unique>"}'
157```
158
159Do not stop a shared driver daemon or close unrelated windows when the task
160ends.
161
162When the screenshots are the point, a verification run someone else has to
163read, publish them instead of leaving a list of paths on their disk. Collect
164them in a directory beside an `index.html` that lays them out, and publish the
165directory so the images ride along at their relative paths:
166
167```bash
168superset pages publish ./evidence/ --workspace <id> --title "Export dialog: verified"
169```
170
171A desktop screenshot catches whatever else was on screen: mail, messages, a
172password manager, another customer's data. Look at each one, drop or crop what
173the report does not need, and pass `--visibility just_me` unless the org needs
174it. Publishing is one of the actions the Safety rules below require you to
175confirm first.
176
177## Safety
178
179This skill reaches real apps and signed-in sessions. Limit inspection and
180actions to the user's request; never extract credentials, cookies, tokens, or
181unrelated private data. Obtain confirmation immediately before sending a
182message, submitting a form that creates an external commitment, publishing,
183purchasing, deleting data, changing an account, accepting legal terms, or
184taking another consequential external action. Authentication prompts,
185passkeys, passwords, and MFA stay with the user.