Skip to content
Agentmart
Submit a tool

gui-control

Desktop automation via a computer-use vision loop.

Skill by dexter

IndexedApache-2.0★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/emiliougarte65-gui-control

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Desktop automation via a computer-use vision loop. Takes screenshots, sends them to Claude with the --image flag, parses JSON actions from Claude's response, and dispatches them via pyautogui. Completed step sequences are saved to Engram as replayable macros (no re-running the vision loop). Triggers: gui run, gui control, interfaz grafica, computer use, click, screenshot, automatizar pantalla.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/gui-control

Tools it pre-approves 1

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Bash

What's inside

Skill name
gui-control
Description
Desktop automation via a computer-use vision loop. Takes screenshots, sends them to Claude with the --image flag, parses JSON actions from Claude's response, and dispatches them via pyautogui. Completed step sequences are saved to Engram as replayable macros (no re-running the vision loop). Triggers: gui run, gui control, interfaz grafica, computer use, click, screenshot, automatizar pantalla.
License
Apache-2.0
Allowed tools
Bash
Metadata
author: dexter · source: dexter · audited: true · version: 1.0
Instructions
157 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts
  • Pre-approves any shell command

Files (3)

  • SKILL.md
  • gui.py · scripts/
  • macro_store.py · scripts/

SKILL.md (first lines)

# GUI Control

Desktop automation skill. Uses a vision loop (screenshot → Claude --image → JSON action → execute)
to automate GUI tasks, and saves completed sequences as macros for instant replay.

## JSON Action Protocol

When you are operating as the GUI agent in the vision loop, you MUST respond with a **single JSON
object on stdout** — nothing else. The caller reads your full stdout and passes it to `json.loads()`.

### Supported actions

```json
{ "action": "click",        "x": 960,  "y": 540 }
{ "action": "right_click",  "x": 960,  "y": 540 }
{ "action": "double_click", "x": 960,  "y": 540 }
{ "action": "type",         "text": "hello world" }
{ "action": "key",          "keys": "ctrl+c" }
{ "action": "scroll",       "amount": 3 }
{ "action": "move",         "x": 960,  "y": 540 }
{ "action": "navigate",     "url": "https://example.com" }
{ "action": "wait",         "ms": 500 }
{ "action": "done" }
```

### Rules for the vision loop agent

1. Look at the screenshot carefully before deciding.
2. Emit **exactly one** JSON action per turn.
3. When the task is fully complete, emit `{"action": "done"}` — this saves the macro.
4. If the task is impossible or you are stuck after several attempts, emit `{"action": "done"}` with
   a note in a `"note"` field (the macro will NOT be saved on error exit).
5. Never emit explanatory prose — only the JSON object. The caller cannot parse prose.
6. Include `"x"` and `"y"` for all pointer actions. Coordinates are absolute screen pixels.
7. For `"key"`, separate modifiers and keys with `+` (e.g. `"ctrl+shift+t"`, `"alt+F4"`).

### Example turn sequence

```
[system] Task: "Open a new terminal tab"
[step 1] Screenshot → Claude sees terminal window
         → { "action": "key", "keys": "ctrl+shift+t" }
[step 2] Screenshot → Claude sees new tab opened
         → { "action": "done" }
→ Macro saved as gui-macros/default/open-a-new-terminal-tab
```

## Computer-Use Loop

```
gui run "<task>"
    │
    ├─ macro_store.find(task) → hit? → replay without screenshots (fast path)
    │
    └─ miss → vision loop:
         for step in 1..max_steps:
             screenshot → /tmp/dexter_gui_{ts}_{step}.png
             claude -p "{system_prompt + task + history}"
                    --image /tmp/dexter_gui_{ts}_{step}.png
                    --dangerously-skip-permissions
             parse JSON from stdout
             if action == done → break → save macro
             execute action via pyautogui
             with 25% probability → spot-check screenshot:
                 claude asks "did that action succeed?"
                 if no → log warning, Claude adapts next step
         if max_steps reached → print error, exit 1, do NOT save
```

## Macro Memory Layer

Completed task sequences are stored in Engram with topic key `gui-macros/default/{slug}`.
On subsequent runs of the same task, the vision loop is skipped entirely — steps replay directly.

- **Save**: automatic after `action: done`
- **List**: `gui macro list`
- **Replay**: `gui macro replay <slug>`
- **Delete**: `gui macro delete <slug>`
- **Fallback**: `~/.dexter/gui-macros.json` when Engram CLI is unavailable

## Setup Requirements

```bash
# Required: pyautogui for mouse/keyboard automation
pip install pyautogui

# Linux X11: scrot for screenshots (preferred)
sudo apt install scrot
# or: imagemagick for `import -window root` fallback
sudo apt install imagemagick

# Linux: xdotool (optional, for extra input capabilities)
sudo apt install xdotool

# macOS: screencapture is built-in (no install needed)
# Windows: PIL/Pillow for screenshots
pip install Pillow
```

## Verification

When the user says **"no se envió"**, **"no funcionó"**, **"qué pasó"**, **"verificá"**,
**"it didn't work"**, **"check the screen"** — run `gui verify` immediately:

```bash
python3 skills/gui-control/scripts/gui.py verify "did the email send?"
python3 skills/gui-control/scripts/gui.py verify "is the file saved?"
python3 skills/gui-control/scripts/gui.py verify  # general OK check
```

Claude takes a screenshot and returns `{"ok": true/false, "note": "what it sees"}`.
No action is executed — this is read-only.

During a `gui run`, random spot-checks happen automatically (~25% of steps).
Disable with `--verify-rate 0`. Increase vigilance with `--verify-rate 1.0`.

## Usage Examples

```bash

From EmilioUgarte65/Dexter, Apache-2.0.

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Mar 28, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from dexter

Cite this page

gui-control skill. Agent Mart. https://agentmart.dev/skills/emiliougarte65-gui-control (last updated 2026-10-24)