ScreenPilot Desktop Automation

VerifiedCaution

ScreenPilot automates desktop apps using an Observe-Think-Act loop. Select windows, observe labeled UI elements, and execute clicks, typing, scrolling, or key presses via CLI.

Sby Skills Guide Bot
DevelopmentIntermediate
7/23/2026
Claude Code
#desktop-automation#gui-automation#visual-testing#screen-pilot

Recommended for

Automated summary

Automates desktop applications through an observe-think-act loop using the ScreenPilot helper app for visual GUI control.

Strengths

  • Direct desktop GUI automation without API dependencies
  • Visual observation with annotated element IDs
  • Self-installing and configuring helper app on macOS
  • Supports vision reasoning to select targets

Limitations

  • macOS only; requires Accessibility permission
  • Element IDs change after layout changes, requiring re-observation
  • Unsigned helper app may need manual approval on first launch
When to use it

When you need to automate a desktop application that lacks a programmatic API.

When not to use it

For web-based applications where Playwright, Selenium, or similar tools are available.

Security analysis

Caution
Quality score88/100

The skill instructs downloading and executing a third-party desktop automation tool. While the skill itself is not inherently destructive, the reliance on an external binary and granting of Accessibility permissions poses a moderate risk if the binary is compromised or if the automation is misused.

Findings
  • •Downloads an external unsigned binary from a third-party GitHub repository, which could be malicious.
  • •Requires granting Accessibility permissions to an unsigned app, which can control the entire GUI.
How this analysis is made

Examples

Select and lock a window
Use ScreenPilot to list all open windows and lock the one titled 'WeChat'.
Observe UI and click an element
Observe the locked window with ScreenPilot, read the annotated screenshot, then click on the element with ID 15.
Type text into a target
After observing the window, type 'Hello, world!' into target element ID 12.

name: screen-pilot description: Use ScreenPilot for visual desktop GUI automation. Trigger when an agent needs to select a desktop window, observe labeled UI elements, reason over a screenshot, click/type/scroll/key-press by visual target id, or install/start the local ScreenPilot helper app. license: MIT compatibility: macOS with Accessibility permission; ScreenPilot local helper app allowed-tools: run_command metadata: author: DDM Team version: 2.1.0

ScreenPilot

ScreenPilot automates desktop apps through an Observe-Think-Act loop:

  1. Select a target window.
  2. Observe a screenshot annotated with numeric UI element IDs.
  3. Choose the intended element ID, optionally with vision reasoning.
  4. Execute click, type, scroll, key press, or wait instructions.

The CLI auto-checks the local helper app at http://127.0.0.1:8080/api/health. If ScreenPilot is not running, it starts an installed app. If the app is missing on macOS, it downloads the latest ScreenPilot-macos-arm64.zip release from zhouchangui/bgwndsvr, installs it to ~/Applications/ScreenPilot.app, and starts it.

Commands

Run commands from this skill directory.

# List windows
node scripts/query.mjs --mode select

# Lock a window by title or process name
node scripts/query.mjs --mode select --query "WeChat"

# Capture an annotated screenshot for the locked window
node scripts/query.mjs --mode observe

# Ask a vision model which element to use
node scripts/query.mjs --mode think --query "Find the message input box"

# Click, type, scroll, key press, or run a JSON sequence
node scripts/query.mjs --mode act --target 15 --action click
node scripts/query.mjs --mode act --target 12 --action type_text --text "Hello"
node scripts/query.mjs --mode act --json '[{"type":"wait","duration":1000},{"type":"key_press","keys":["Enter"]}]'

observe writes the latest annotated image to temp/latest_observe.jpg. Read that image before choosing a target_id.

Configuration

  • SCREENPILOT_BASE_URL: defaults to http://127.0.0.1:8080
  • SCREENPILOT_TOKEN: overrides the local token file
  • SCREENPILOT_RELEASE_REPO: defaults to zhouchangui/bgwndsvr
  • SCREENPILOT_APP_PATH: overrides the app path used for startup
  • OPENROUTER_API_KEY: required only for think mode
  • OPENROUTER_MODEL: optional model override for think

Without SCREENPILOT_TOKEN, the CLI reads macOS token candidates under ~/Library/Application Support/.../token.conf, then falls back to the current dev token.

Actions

| Action | Parameters | Description | | :--- | :--- | :--- | | click | target_id | Single left click | | double_click | target_id | Double left click | | type_text | target_id, text | Click target and type text | | scroll | target_id, direction, amount | Scroll up or down | | key_press | keys | Key list such as ["Enter"] or ["Meta+v"] | | wait | duration | Wait milliseconds |

Operating Notes

  • On first macOS launch, the unsigned helper app may require manual approval in Privacy & Security.
  • Window enumeration and input simulation require ScreenPilot to have Accessibility permission.
  • Element IDs change after layout changes; run observe again after navigation, animation, or refresh.
  • If an action fails, first re-run observe; if focus is wrong, click a neutral area or re-select the window.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/screenpilot-desktop-automation-mrwakans' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/screenpilot-desktop-automation-mrwakans/download' --output '.skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md.part' && mv '.skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md.part' '.skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Environment declared by the author: macOS with Accessibility permission; ScreenPilot local helper app

Tools declared by the author (check availability in your agent): run_command

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md' && test -s '.skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/screen-pilot' && cp -R '.skill-downloads/screenpilot-desktop-automation-mrwakans' '.claude/skills/screen-pilot'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/screenpilot-desktop-automation-mrwakans'

openskills read 'screenpilot-desktop-automation-mrwakans'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/screenpilot-desktop-automation-mrwakans/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills