Agent skill

Agent Desktop

by mvanhorn in mvanhorn/printing-press-library

Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.

Apache-2.0Auto-check: notesProductivity & Automation

Install Agent Desktop

skills CLI
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mvanhorn/printing-press-library agent-desktop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-skills/pp-agent-desktop .claude/skills/agent-desktop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
agent-desktop
GitHub stars
2.1k
Token cost
~2.3k tokens
SKILL.md length
689 words
Files
1
Skills in repo
506
Repo updated
First seen
Licence
Apache-2.0

At a glance

Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.

  • Works in 3 steps: Install via the Printing Press… → Verify: agent-desktop-pp-cli --version → Ensure the reported install directory is…
  • An agent needs to observe
  • SKILL.md covers Prerequisites: Install the CLI, Install the Real agent-desktop…, Load Version-Matched Docs and Core Loop, plus 4 more sections
  • Calls npx and go; reaches github.com

What it does

Agent Desktop is an agent skill from mvanhorn/printing-press-library. Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge. Use when an agent needs to observe, inspect, or control native desktop applications with accessibility trees: snapshots, refs, clicks, typing, scrolling, windows, notifications, screenshots, clipboard, waits, and bundled version-matched skill docs.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Productivity & Automation, covering Desktop control and Accessibility. It works with Rust. The repository describes itself as: Official library of CLIs generated by the CLI Printing Press. Endorsed, tested, and community-contributed. The licence is Apache-2.0.

When your agent uses it

  • An agent needs to observe
  • Control native desktop applications with accessibility trees: snapshots
  • Bundled version-matched skill docs

Example prompts

  • “/agent-desktop”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Read, Bash

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Install via the Printing Press installer. It defaults binaries to $HOME/.local/bin on macOS/Linux and…
  2. Verify: agent-desktop-pp-cli --version
  3. Ensure the reported install directory is on $PATH for the agent/runtime that will invoke this skill.

What it can do on your machine

Read from SKILL.md and the folder at commit 76de244. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Agent Desktop loads about 2.3k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 689 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~94
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Bash

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mvanhorn/printing-press-library at commit 76de244, republished under its Apache-2.0 licence (© mvanhorn). 689 words, ~2,293 tokens.

Download SKILL.mdSave it as .claude/skills/agent-desktop/SKILL.md (or your agent's skills folder).
name
agent-desktop
description
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge. Use when an agent needs to observe, inspect, or control native desktop applications with accessibility trees: snapshots, refs, clicks, typing, scrolling, windows, notifications, screenshots, clipboard, waits, and bundled version-matched skill docs.
allowed-tools
Read, Bash
author
Lahfir
license
Apache-2.0
argument-hint
<agent-desktop command> [args]
<!-- GENERATED FILE — DO NOT EDIT.
     This file is a verbatim mirror of library/developer-tools/agent-desktop/SKILL.md,
     regenerated post-merge by tools/generate-skills/. Hand-edits here are
     silently overwritten on the next regen. Edit the library/ source instead.
     See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->

Agent Desktop - Printing Press CLI

agent-desktop is a native desktop automation CLI for AI agents. It is not an agent and does not call an LLM. It exposes the operating system accessibility tree as structured JSON, assigns snapshot-scoped refs such as @e1, and lets the calling agent perform semantic actions against those refs.

This Printing Press package installs agent-desktop-pp-cli, a catalog bridge. The bridge does not reimplement automation. It installs or delegates to the real remote agent-desktop package from https://github.com/lahfir/agent-desktop and the npm package agent-desktop.

Prerequisites: Install the CLI

This skill drives the agent-desktop-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:

  1. Install via the Printing Press installer. It defaults binaries to $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
    bash
    npx -y @mvanhorn/printing-press-library install agent-desktop --cli-only
  2. Verify: agent-desktop-pp-cli --version
  3. Ensure the reported install directory is on $PATH for the agent/runtime that will invoke this skill.

If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:

bash
go install github.com/mvanhorn/printing-press-library/library/developer-tools/agent-desktop/cmd/agent-desktop-pp-cli@latest

If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.

Install the Real agent-desktop CLI

After the bridge is installed, install and verify the real remote desktop automation CLI:

bash
agent-desktop-pp-cli install --version latest
agent-desktop-pp-cli doctor

The bridge defaults to agent-desktop@latest, so future upstream releases are pulled from the remote package channel instead of being copied into Printing Press. Use agent-desktop-pp-cli install --version <version> when a task needs a pinned version. Use agent-desktop-pp-cli install --dry-run before mutating a host when you only need to inspect the install command.

Load Version-Matched Docs

The real binary ships its own agent skills inside the executable. Prefer those docs before nontrivial desktop work because they match the installed agent-desktop version exactly:

bash
agent-desktop skills
agent-desktop skills get desktop --full
agent-desktop skills get desktop workflows
agent-desktop skills get desktop commands-observation
agent-desktop skills get desktop commands-interaction
agent-desktop skills get desktop commands-system
agent-desktop skills get desktop macos
agent-desktop skills get ffi --full

After doctor confirms the real binary is installed, call agent-desktop directly for commands that need their own flags.

Show full SKILL.md (356 more words)Show less

Core Loop

Every useful automation follows the same loop:

bash
agent-desktop permissions
agent-desktop snapshot --app "App Name" -i
agent-desktop click @e5 --snapshot <snapshot_id>
agent-desktop wait --text "Done" --app "App Name" --timeout 5000
agent-desktop snapshot --app "App Name" -i

Rules for agents:

  • Snapshot before acting. Do not guess UI state.
  • Keep the returned snapshot_id and pass it to every ref-consuming command.
  • Treat refs as ephemeral. Re-snapshot after UI-changing actions.
  • Prefer refs over coordinates. Use click @e5, type @e2, check @e4, or scroll @e1 before mouse-click --xy.
  • Use wait --predicate actionable, wait --text, wait --window, or wait --notification instead of blind sleeps.
  • On STALE_REF or AMBIGUOUS_TARGET, take a fresh snapshot and choose a new ref. Do not retry the same stale ref.
  • Use --session <id> when concurrent agents may share latest-snapshot state.
  • Use --trace /tmp/agent-desktop.jsonl when diagnosing stale refs, ambiguity, policy denial, or actionability failures.
  • Use --headed only when physical input is explicitly required. Ref actions are headless and accessibility-first by default.

JSON Contract

All real agent-desktop commands write a JSON envelope on stdout.

Success:

json
{
  "version": "2.0",
  "ok": true,
  "command": "snapshot",
  "data": {
    "snapshot_id": "s8f3k2p9",
    "ref_count": 14
  }
}

Error:

json
{
  "version": "2.0",
  "ok": false,
  "command": "click",
  "error": {
    "code": "STALE_REF",
    "message": "Element could not be resolved from the requested snapshot",
    "suggestion": "Run snapshot to refresh, then retry with an updated ref"
  }
}

Exit codes are 0 for success, 1 for structured runtime errors, and 2 for argument or parse errors. The bridge run command preserves the real binary's exit code.

Command Surface

The real CLI exposes 54 commands:

CategoryCommands
Observationsnapshot, screenshot, find, get, is, list-surfaces
Interactionclick, double-click, triple-click, right-click, type, set-value, clear, focus, select, toggle, check, uncheck, expand, collapse
Scrollscroll, scroll-to
Keyboardpress, key-down, key-up
Mousehover, drag, mouse-move, mouse-click, mouse-down, mouse-up
App/windowlaunch, close-app, list-windows, list-apps, focus-window, resize-window, move-window, minimize, maximize, restore
Notificationslist-notifications, dismiss-notification, dismiss-all-notifications, notification-action
Clipboardclipboard-get, clipboard-set, clipboard-clear
Waitwait
Systemstatus, permissions, version, skills
Batchbatch

Common examples:

bash
agent-desktop snapshot --app Finder -i --compact
agent-desktop snapshot --skeleton --app Slack -i --compact
agent-desktop snapshot --root @e3 --snapshot <snapshot_id> -i --compact
agent-desktop find --app TextEdit --role button --name Save
agent-desktop get @e3 --snapshot <snapshot_id> --property value
agent-desktop is @e7 --snapshot <snapshot_id> --property checked
agent-desktop click @e5 --snapshot <snapshot_id>
agent-desktop type @e2 --snapshot <snapshot_id> "hello@example.com"
agent-desktop check @e6 --snapshot <snapshot_id>
agent-desktop scroll @e1 --snapshot <snapshot_id> --direction down --amount 3
agent-desktop press cmd+s --app TextEdit
agent-desktop list-windows --app Finder
agent-desktop focus-window --app Finder
agent-desktop clipboard-get
agent-desktop wait --element @e5 --snapshot <snapshot_id> --predicate actionable --timeout 5000
agent-desktop batch '[{"command":"status","args":{}}]' --stop-on-error

Printing Press Bridge Commands

Use these only for catalog, install, diagnosis, and delegation:

bash
agent-desktop-pp-cli info
agent-desktop-pp-cli install --version latest
agent-desktop-pp-cli install --version latest --dry-run
agent-desktop-pp-cli install --manager bun
agent-desktop-pp-cli doctor
agent-desktop-pp-cli doctor --json
agent-desktop-pp-cli run version
agent-desktop-pp-cli run status

After doctor confirms the real binary is on PATH, agents may call agent-desktop directly. Keep using agent-desktop-pp-cli run when the caller needs a stable Printing Press entry point.

Platform Notes

macOS is the Phase 1 fully implemented adapter. The launching app, such as Terminal, iTerm, Codex, or another agent runtime, needs Accessibility permission for UI automation. Screenshots need Screen Recording permission. Some automation surfaces may also require Automation permission.

Check and request permissions with:

bash
agent-desktop permissions
agent-desktop permissions --request

If permissions are denied, stop and surface the returned error.suggestion. Do not work around TCC failures with coordinate clicking.

© mvanhorn, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in cli-skills/pp-agent-desktop of mvanhorn/printing-press-library.

Open the folder on GitHubat commit 76de244

Compare with similar skills

Agent Desktop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Agent Desktop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Agent Desktop this skillmvanhorn/printing-press-library2.1k—~2.3kAutomated safety check: NotesApache-2.0
Agent Desktopsuperagent-ai/grok-cli3.5k—~720Automated safety check: PassMIT
Cmux Cuamanaflow-ai/cmux28k—~4.8kAutomated safety check: PassCustom licence
Electron Live Testinstructa/agent-skills139—~1.3kAutomated safety check: PassNone
Accessibility Cleanupnwjs/chromium.src160—~1.1kAutomated safety check: PassBSD-3-Clause
Apple Notes Install Authjeremylongshore/tons-of-skills-marketplace2.8k—~1.3kAutomated safety check: PassMIT

Similar skills

  • Agent Desktop

    superagent-ai/grok-cli

    Use the built-in Computer sub-agent with agent-desktop for macOS desktop automation.

    3.5k GitHub stars~720 tokensUpdated 3 mo ago
    Productivity & AutomationAuto-check passed
  • Cmux Cua

    manaflow-ai/cmux

    Use only after the user explicitly asks for cmux Computer Use through the cmux-cua skill: drive real macOS apps from a cmux agent session via the bundled engine (accessibility tree + screenshots…

    28k GitHub stars~4.8k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Electron Live Test

    instructa/agent-skills

    Live-test any Electron desktop app with native-devtools-mcp, Chrome DevTools Protocol, screenshots, OCR, and accessibility tools.

    139 GitHub stars~1.3k tokensUpdated 10 days ago
    Productivity & AutomationAuto-check passed
  • Accessibility Cleanup

    nwjs/chromium.src

    Finds common violations of the Android accessibility API in the Clank App Java code and attempts to address them (e.g.

    160 GitHub stars~1.1k tokensUpdated 5 days ago
    Frontend & DesignAuto-check passed
  • Apple Notes Install Auth

    jeremylongshore/tons-of-skills-marketplace

    Set up macOS automation access for Apple Notes via AppleScript, JXA, and Shortcuts.

    2.8k GitHub stars~1.3k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Control local macOS, Windows, and Linux apps through Waku Computer Use.

    1.6k GitHub stars~3.6k tokensUpdated 6 days ago
    Productivity & AutomationAuto-check passed

More from mvanhorn/printing-press-library

All 506 skills in this repo
  • Gfonts

    mvanhorn/printing-press-library

    Search, browse, and download Google Fonts from the terminal via the gfonts CLI.

    2.1k GitHub stars~574 tokensUpdated today
    Auto-check passed
  • Pp 1688

    mvanhorn/printing-press-library

    The free, offline Trigger phrases: search 1688 for, find a factory on 1688 for, wholesale price on 1688 for, who is the cheapest supplier on 1688 for, compare 1688 suppliers for, use 1688, run 1688.

    2.1k GitHub stars~3k tokensUpdated today
    Auto-check: notes
  • Pp Activity Japan

    mvanhorn/printing-press-library

    Inspect known Activity Japan plan IDs or URLs, compare dated prices and sessions, check language-sitemap coverage, and hand off to canonical booking pages.

    2.1k GitHub stars~2k tokensUpdated today
    Auto-check: notes
  • Pp Adminbyrequest

    mvanhorn/printing-press-library

    Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...

    2.1k GitHub stars~3.3k tokensUpdated today
    Auto-check: notes
  • Pp Agent Capture

    mvanhorn/printing-press-library

    macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.

    2.1k GitHub stars~1.6k tokensUpdated today
    Auto-check: notes
  • Pp Air Quality

    mvanhorn/printing-press-library

    Use OpenAQ and AirNow source-backed recipes for air-quality snapshots, nearby monitors, sensor history, point comparison, and AirNow AQI setup/current observations.

    2.1k GitHub stars~1.1k tokensUpdated today
    Auto-check: notes

Works with

Questions about Agent Desktop

What does Agent Desktop do?

Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge. Agent Desktop is an agent skill from mvanhorn/printing-press-library. Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.

When should I use Agent Desktop?

Agent Desktop fits situations like: an agent needs to observe; control native desktop applications with accessibility trees: snapshots; bundled version-matched skill docs.

How do I install Agent Desktop in Claude Code?

Run `npx skills add mvanhorn/printing-press-library --skill agent-desktop -a claude-code`. Or copy the skill folder (cli-skills/pp-agent-desktop in mvanhorn/printing-press-library) into .claude/skills/agent-desktop in your project. Claude Code loads it when a task matches its description.

How do I install Agent Desktop in Codex?

Run `npx skills add mvanhorn/printing-press-library --skill agent-desktop -a codex`. Or copy the skill folder (cli-skills/pp-agent-desktop in mvanhorn/printing-press-library) into .agents/skills/agent-desktop in your project. Codex loads it when a task matches its description.

Can I use Agent Desktop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mvanhorn/printing-press-library --skill agent-desktop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-desktop, .gemini/skills/agent-desktop, .github/skills/agent-desktop and .opencode/skills/agent-desktop in your project.

What does Agent Desktop need to run?

Going by SKILL.md and its folder, Agent Desktop needs the command-line tools its instructions call (npx and go). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash.

Does Agent Desktop access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Agent Desktop safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Agent Desktop use?

Agent Desktop is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Agent Desktop use?

About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Agent Desktop?

Skills that share tags, products or a category with Agent Desktop: Agent Desktop (superagent-ai/grok-cli, 3.5k stars), Cmux Cua (manaflow-ai/cmux, 28k stars), Electron Live Test (instructa/agent-skills, 139 stars) and Accessibility Cleanup (nwjs/chromium.src, 160 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Agent Desktop?

mvanhorn (a GitHub user) maintains it in mvanhorn/printing-press-library, which has 2,056 GitHub stars. The repository holds 506 skills in this directory. The repository was last updated on October 9, 2026.

Source: mvanhorn/printing-press-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.