Agent Desktop
superagent-ai/grok-cli
Use the built-in Computer sub-agent with agent-desktop for macOS desktop automation.
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library agent-desktop --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "agent-desktop" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktop into .claude/skills/agent-desktop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-desktop", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktopType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library agent-desktop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-skills/pp-agent-desktop .agents/skills/agent-desktop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agent-desktop" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktop into .agents/skills/agent-desktop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-desktop", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library agent-desktop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-skills/pp-agent-desktop .cursor/skills/agent-desktop && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agent-desktop" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktop into .cursor/skills/agent-desktop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-desktop", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mvanhorn/printing-press-library.git --path cli-skills/pp-agent-desktop--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library agent-desktop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-skills/pp-agent-desktop .gemini/skills/agent-desktop && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agent-desktop" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktop into .gemini/skills/agent-desktop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-desktop", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mvanhorn/printing-press-library agent-desktopInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-skills/pp-agent-desktop .github/skills/agent-desktop && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agent-desktop" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktop into .github/skills/agent-desktop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-desktop", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvanhorn/printing-press-library --skill agent-desktop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvanhorn/printing-press-library agent-desktop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-skills/pp-agent-desktop .opencode/skills/agent-desktop && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agent-desktop" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-agent-desktop into .opencode/skills/agent-desktop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-desktop", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agent-desktopDesktop 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. 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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 76de244. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxgoFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, BashAutomated 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.
The full file from mvanhorn/printing-press-library at commit 76de244, republished under its Apache-2.0 licence (© mvanhorn). 689 words, ~2,293 tokens.
.claude/skills/agent-desktop/SKILL.md (or your agent's skills folder).<!-- 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 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.
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:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:npx -y @mvanhorn/printing-press-library install agent-desktop --cli-onlyagent-desktop-pp-cli --version$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:
go install github.com/mvanhorn/printing-press-library/library/developer-tools/agent-desktop/cmd/agent-desktop-pp-cli@latestIf --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.
After the bridge is installed, install and verify the real remote desktop automation CLI:
agent-desktop-pp-cli install --version latest
agent-desktop-pp-cli doctorThe 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.
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:
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 --fullAfter doctor confirms the real binary is installed, call agent-desktop
directly for commands that need their own flags.
Every useful automation follows the same loop:
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" -iRules for agents:
snapshot_id and pass it to every ref-consuming command.click @e5, type @e2, check @e4, or
scroll @e1 before mouse-click --xy.wait --predicate actionable, wait --text, wait --window, or
wait --notification instead of blind sleeps.STALE_REF or AMBIGUOUS_TARGET, take a fresh snapshot and choose a new
ref. Do not retry the same stale ref.--session <id> when concurrent agents may share latest-snapshot state.--trace /tmp/agent-desktop.jsonl when diagnosing stale refs,
ambiguity, policy denial, or actionability failures.--headed only when physical input is explicitly required. Ref actions
are headless and accessibility-first by default.All real agent-desktop commands write a JSON envelope on stdout.
Success:
{
"version": "2.0",
"ok": true,
"command": "snapshot",
"data": {
"snapshot_id": "s8f3k2p9",
"ref_count": 14
}
}Error:
{
"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.
The real CLI exposes 54 commands:
| Category | Commands |
|---|---|
| Observation | snapshot, screenshot, find, get, is, list-surfaces |
| Interaction | click, double-click, triple-click, right-click, type, set-value, clear, focus, select, toggle, check, uncheck, expand, collapse |
| Scroll | scroll, scroll-to |
| Keyboard | press, key-down, key-up |
| Mouse | hover, drag, mouse-move, mouse-click, mouse-down, mouse-up |
| App/window | launch, close-app, list-windows, list-apps, focus-window, resize-window, move-window, minimize, maximize, restore |
| Notifications | list-notifications, dismiss-notification, dismiss-all-notifications, notification-action |
| Clipboard | clipboard-get, clipboard-set, clipboard-clear |
| Wait | wait |
| System | status, permissions, version, skills |
| Batch | batch |
Common examples:
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-errorUse these only for catalog, install, diagnosis, and delegation:
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 statusAfter 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.
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:
agent-desktop permissions
agent-desktop permissions --requestIf 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
Just SKILL.md in cli-skills/pp-agent-desktop of mvanhorn/printing-press-library.
Open the folder on GitHubat commit 76de244
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agent Desktop this skillmvanhorn/printing-press-library | 2.1k | — | ~2.3k | Automated safety check: Notes | Apache-2.0 | |
| Agent Desktopsuperagent-ai/grok-cli | 3.5k | — | ~720 | Automated safety check: Pass | MIT | |
| Cmux Cuamanaflow-ai/cmux | 28k | — | ~4.8k | Automated safety check: Pass | Custom licence | |
| Electron Live Testinstructa/agent-skills | 139 | — | ~1.3k | Automated safety check: Pass | None | |
| Accessibility Cleanupnwjs/chromium.src | 160 | — | ~1.1k | Automated safety check: Pass | BSD-3-Clause | |
| Apple Notes Install Authjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.3k | Automated safety check: Pass | MIT |
superagent-ai/grok-cli
Use the built-in Computer sub-agent with agent-desktop for macOS desktop automation.
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…
instructa/agent-skills
Live-test any Electron desktop app with native-devtools-mcp, Chrome DevTools Protocol, screenshots, OCR, and accessibility tools.
nwjs/chromium.src
Finds common violations of the Android accessibility API in the Clank App Java code and attempts to address them (e.g.
jeremylongshore/tons-of-skills-marketplace
Set up macOS automation access for Apple Notes via AppleScript, JXA, and Shortcuts.
egoist/waku
Control local macOS, Windows, and Linux apps through Waku Computer Use.
mvanhorn/printing-press-library
Search, browse, and download Google Fonts from the terminal via the gfonts CLI.
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.
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.
mvanhorn/printing-press-library
Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...
mvanhorn/printing-press-library
macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.
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.
Works with
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.
Agent Desktop fits situations like: an agent needs to observe; control native desktop applications with accessibility trees: snapshots; bundled version-matched skill docs.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.