Skip to content
AI & Agents
Skill

/gui-automation

Use when you need to visually interact with a GUI: test buttons, fill forms, verify visual layouts, fuzz web pages, automate user flows, take screenshots, or perform end-to-end QA on any application. Works on cloud VMs, Docker containers, local machines, and sandboxes. Needs the

BOOST
From plugin
cua
28k6 skills1 MCP
Install
$ npx -y skills add trycua/cua --skill gui-automation --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/gui-automation

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when you need to visually interact with a GUI: test buttons, fill forms, verify visual layouts, fuzz web pages, automate user flows, take screenshots, or perform end-to-end QA on any application. Works on cloud VMs, Docker containers, local machines, and sandboxes. Needs the

SKILL.md

gui-automation.SKILL.md
name: gui-automation
description: >-
  Use when you need to visually interact with a GUI: test buttons, fill forms,
  verify visual layouts, fuzz web pages, automate user flows, take screenshots,
  or perform end-to-end QA on any application. Works on cloud VMs, Docker
  containers, local machines, and sandboxes. Needs the `cua` CLI
  (curl -fsSL https://cua.ai/install.sh | sh).

GUI Automation

CUA gives you **eyes and hands on a real computer**: see the screen, move the mouse, click, type, drag, and manage windows, like a human at the keyboard.

Use this skill for **visual interaction** that can't be done via shell or API.

Setup

cua --version          # check install; if missing: curl -fsSL https://cua.ai/install.sh | sh

# Connect to target (pick one)
cua do switch my-sandbox                    # any sandbox from `cua sb ls`
cua do switch url http://127.0.0.1:3211 --as dev   # a cua-spacesd by URL
cua do-host-consent && cua do switch host   # local machine (one-time consent)

> `ANTHROPIC_API_KEY` is optional. With it, `cua do snapshot` returns an > AI-annotated screen with element coordinates. Without it, use `screenshot` > and read the image yourself.

Workflow

**Look → Act → Verify**: repeat until done, then share:

cua do screenshot          # look
cua do click 450 280       # act
cua do screenshot          # verify
cua trajectory view        # open the replay for the user

> Re-screenshot after every UI change: coordinates go stale when the screen changes.

Scenarios

Click a button

cua do screenshot
cua do click 450 280
cua do screenshot

Fill a form

cua do screenshot
cua do click 400 200 && cua do type "Jane Doe"
cua do key tab            && cua do type "jane@example.com"
cua do key tab            && cua do type "SecureP@ss123"
cua do click 400 500
cua do screenshot

File upload dialog

cua do click 350 400       # "Choose File"
cua do type "/home/user/report.pdf"
cua do key enter
cua do screenshot

Zoom in for precision clicks (host or small targets)

When clicking small or dense UI elements, especially on the host machine, zoom into the target window first. Coordinates become **window-relative** and screenshots show only that window, giving you higher effective resolution.

cua do zoom "Google Chrome"   # crop to Chrome window; coords are now window-relative
cua do screenshot              # zoomed view, easier to locate small elements
cua do click 112 44            # precise click on a small tab or button
cua do screenshot              # verify
cua do unzoom                  # restore full-screen coords when done
cua do screenshot              # back to full desktop view

> Use `zoom` any time click accuracy is uncertain. `unzoom` before switching > windows or when you need to see the full desktop again.

Drag and drop

cua do window ls               # list open windows
cua do drag 150 300 650 400    # source → destination
cua do screenshot

Fuzz a form

cua do screenshot
cua do click 400 200
cua do type "<script>alert(1)</script>"
cua do key tab && cua do type "'; DROP TABLE users; --"
cua do key tab && cua do type "AAAAAAAAAAAAAAAAAAAAAAA"
cua do click 400 500
cua do screenshot              # check for errors, crashes, unexpected behavior

Trajectory

Every action is auto-recorded to `~/.cua/trajectories/{machine}/{session}/`.

cua trajectory view            # open the replay viewer (do this at the end)
cua trajectory ls              # list sessions
cua trajectory clean           # delete sessions
cua do --no-record click 100 200   # disable recording for a single action

Tell the user where the trajectory is (`cua trajectory ls` prints the path).

Quick Reference

| Action | Command | | ------------------- | -------------------------------------------- | | Connect to target | `cua do switch <sandbox>` | | Screenshot | `cua do screenshot` | | AI-annotated screen | `cua do snapshot ["instructions"]` | | Click | `cua do click <x> <y> [left\|right\|middle]` | | Double-click | `cua do dclick <x> <y>` | | Type text | `cua do type "text"` | | Press key | `cua do key <key>` | | Hotkey | `cua do hotkey <combo>` (e.g. `ctrl+c`) | | Scroll | `cua do scroll <direction> [amount]` | | Drag | `cua do drag <x1> <y1> <x2> <y2>` | | Move cursor | `cua do move <x> <y>` | | Shell command | `cua do shell "command"` | | Open URL/file | `cua do open <url\|path>` | | List windows | `cua do window ls [app]` | | Focus window | `cua do window focus <id>` | | Zoom to window | `cua do zoom "App Name"` | | Unzoom | `cua do unzoom` | | View trajectory | `cua trajectory view` |

Providers

| Target | Example | | ----------------- | -------------------------------------------- | | a sandbox | `cua do switch my-sandbox` (see `cua sb ls`) | | a spacesd URL | `cua do switch url http://host:3211 --as x` | | this machine | `cua do switch host` |

Legacy `<provider> <name>` pairs (`cloud`, `docker`, `lume`, ...) still work.

See [references/command-reference.md](references/command-reference.md) for full argument syntax.

Read more
Ships withcua

Scale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation.

Get the whole plugin
Stats
27,881
Stars
1,966
Forks
Active
Maintenance
Rust
Language
MIT
License
3h ago
Last commit
1y ago
Created
3h ago
Added

Repo: trycua/cua

Other skills on cua.