CommunityCoding & Developmentgithub.com

peekaboo

Capture and automate macOS UI with the Peekaboo CLI.

What is peekaboo?

peekaboo is a Cursor agent skill that capture and automate macOS UI with the Peekaboo CLI.

Works with~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/skills/peekaboo

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

What does peekaboo do?

Use Peekaboo to inspect macOS UI, act on the intended target, and verify the result. The examples below use v4 syntax. Check peekaboo --version and the installed command's --help; for older versions, follow that version's help.

OpenClaw Bridge

The OpenClaw macOS app hosts Peekaboo Bridge when Computer Control is enabled, its provider is Peekaboo, and Peekaboo Bridge is enabled. Keep the existing OpenClaw socket selection when running through that host:

export PEEKABOO_BRIDGE_SOCKET="${PEEKABOO_BRIDGE_SOCKET:-$HOME/Library/Application Support/OpenClaw/bridge.sock}"
peekaboo bridge status --json

Confirm that the selected host and socket are the intended ones. Preserve an explicit PEEKABOO_BRIDGE_SOCKET or --bridge-socket selection. If the required host is unavailable, report that outcome; do not clear the selection or switch Computer Control providers to make a command succeed.

Permissions belong to the process or Bridge host performing the operation. Do not pass --no-remote unless the caller has the required permissions.

Find the installed command

Use leaf help for flags and targeting requirements instead of copying a flag between commands. Use root help to discover the available commands:

peekaboo --help
peekaboo app list --help
peekaboo see --help
peekaboo press --help
peekaboo drag --help

V4 removed these old command roots:

Old commandV4 command
list appsapp list
imagesee --no-elements for pixels without element detection
hotkeypress with chords such as cmd+shift+t
swipedrag --from … --to …

For other operations, including clicking, typing, scrolling, and managing windows or menus, use peekaboo <command> --help. Put command options after the leaf command; --json requests structured output.

Inspect, act, verify

Start with application inventory and a fresh view of the target:

peekaboo app list --json
peekaboo see --app Safari --window-title "Example" --annotate \
  --path /tmp/peekaboo-example.png --json

Read the returned elements before acting. Keep actions tied to the intended app, window, and fresh snapshot; do not reuse example element IDs. After an action, inspect the UI again and check the requested result. Refresh the observation when the window changes or a target becomes stale.

For a screenshot without element detection:

peekaboo see --mode screen --screen-index 0 --no-elements --retina \
  --path /tmp/peekaboo-screen.png --json

Raw keyboard chords require explicit foreground interaction or a fresh exact-window receipt accepted by press. Dragging always moves the shared cursor and requires --foreground. When foreground interaction is authorized:

peekaboo press cmd+shift+t --app Safari --foreground --json
peekaboo drag --from 100,500 --to 100,200 --duration 800ms --foreground --json

Use the actual target and coordinates from the current observation. Prefer explicit duration units such as 800ms; consult each command's help for its options and prerequisites.

Troubleshooting

  • For a removed-command error, use the replacement named by the installed CLI.
  • For host or permission failures, inspect peekaboo bridge status --json and peekaboo permissions status --json for the selected host.
  • For targeting failures, read the leaf help and obtain fresh UI state with see.
  • On macOS 15+, the private window picker prompt is separate from the base Screen Recording grant and can appear even when Bridge permissions are correct.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Related Skills