A CLI tool to capture, inspect, and automate macOS UI elements, windows, and applications.

Install

mkdir -p .claude/skills/peekaboo && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/616" && unzip -o skill.zip -d .claude/skills/peekaboo && rm skill.zip

Installs to .claude/skills/peekaboo

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Capture and automate macOS UI with the Peekaboo CLI.
52 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Capture application UI and screen regions
  • Execute clicks and inputs on specific UI elements
  • Manage window state and application lists
  • Clean up snapshot cache and temp files

How it works

Executes shell commands that interface with the macOS accessibility and screen capture APIs.

Inputs & outputs

You give it
App name, window ID, coordinates, or UI element query
You get back
Screenshots, UI metadata, or automation success confirmation

When to use peekaboo

  • Automating repetitive macOS application workflows
  • Extracting text or data from UI elements
  • Taking automated screenshots of specific application windows
  • Simulating complex keyboard and mouse sequences

About this skill

Peekaboo

Peekaboo is a full macOS UI automation CLI: capture/inspect screens, target UI elements, drive input, and manage apps/windows/menus. Commands share a snapshot cache and support --json/-j for scripting. Run peekaboo or peekaboo <cmd> --help for flags; peekaboo --version prints build metadata. Tip: run via polter peekaboo to ensure fresh builds.

OpenClaw Bridge

The OpenClaw macOS app hosts Peekaboo Bridge at ~/Library/Application Support/OpenClaw/bridge.sock. Before running Peekaboo from OpenClaw, select that socket so the CLI uses the app's Screen Recording and Accessibility grants instead of starting its standalone daemon:

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

Confirm routing with peekaboo bridge status --json; hostKind must be gui and the socket path must end in OpenClaw/bridge.sock.

Features (all CLI capabilities, excluding agent/MCP)

Core

  • bridge: inspect Peekaboo Bridge host connectivity
  • capture: live capture or video ingest + frame extraction
  • clean: prune snapshot cache and temp files
  • config: init/show/edit/validate, providers, models, credentials
  • image: capture screenshots (screen/window/menu bar regions)
  • learn: print the full agent guide + tool catalog
  • list: apps, windows, screens, menubar, permissions
  • permissions: check Screen Recording/Accessibility status
  • run: execute .peekaboo.json scripts
  • sleep: pause execution for a duration
  • tools: list available tools with filtering/display options

Interaction

  • click: target by ID/query/coords with smart waits
  • drag: drag & drop across elements/coords/Dock
  • hotkey: modifier combos like cmd,shift,t
  • move: cursor positioning with optional smoothing
  • paste: set clipboard -> paste -> restore
  • press: special-key sequences with repeats
  • scroll: directional scrolling (targeted + smooth)
  • swipe: gesture-style drags between targets
  • type: text + control keys (--clear, delays)

System

  • app: launch/quit/relaunch/hide/unhide/switch/list apps
  • clipboard: read/write clipboard (text/images/files)
  • dialog: click/input/file/dismiss/list system dialogs
  • dock: launch/right-click/hide/show/list Dock items
  • menu: click/list application menus + menu extras
  • menubar: list/click status bar items
  • open: enhanced open with app targeting + JSON payloads
  • space: list/switch/move-window (Spaces)
  • visualizer: exercise Peekaboo visual feedback animations
  • window: close/minimize/maximize/move/resize/focus/list

Vision

  • see: annotated UI maps, snapshot IDs, optional analysis

Global runtime flags

  • --json/-j, --verbose/-v, --log-level <level>
  • --no-remote, --bridge-socket <path>

Quickstart (happy path)

peekaboo permissions
peekaboo list apps --json
peekaboo see --annotate --path /tmp/peekaboo-see.png
peekaboo click --on B1
peekaboo type "Hello" --return

Common targeting parameters (most interaction commands)

  • App/window: --app, --pid, --window-title, --window-id, --window-index
  • Snapshot targeting: --snapshot (ID from see; defaults to latest)
  • Element/coords: --on/--id (element ID), --coords x,y
  • Focus control: --no-auto-focus, --space-switch, --bring-to-current-space, --focus-timeout-seconds, --focus-retry-count

Common capture parameters

  • Output: --path, --format png|jpg, --retina
  • Targeting: --mode screen|window|frontmost, --screen-index, --window-title, --window-id
  • Analysis: --analyze "prompt", --annotate
  • Capture engine: --capture-engine auto|classic|cg|modern|sckit

Common motion/typing parameters

  • Timing: --duration (drag/swipe), --steps, --delay (type/scroll/press)
  • Human-ish movement: --profile human|linear, --wpm (typing)
  • Scroll: --direction up|down|left|right, --amount <ticks>, --smooth

Examples

See -> click -> type (most reliable flow)

peekaboo see --app Safari --window-title "Login" --annotate --path /tmp/see.png
peekaboo click --on B3 --app Safari
peekaboo type "[email protected]" --app Safari
peekaboo press tab --count 1 --app Safari
peekaboo type "supersecret" --app Safari --return

Target by window id

peekaboo list windows --app "Visual Studio Code" --json
peekaboo click --window-id 12345 --coords 120,160
peekaboo type "Hello from Peekaboo" --window-id 12345

Capture screenshots + analyze

peekaboo image --mode screen --screen-index 0 --retina --path /tmp/screen.png
peekaboo image --app Safari --window-title "Dashboard" --analyze "Summarize KPIs"
peekaboo see --mode screen --screen-index 0 --analyze "Summarize the dashboard"

Live capture (motion-aware)

peekaboo capture live --mode region --region 100,100,800,600 --duration 30 \
  --active-fps 8 --idle-fps 2 --highlight-changes --path /tmp/capture

App + window management

peekaboo app launch "Safari" --open https://example.com
peekaboo window focus --app Safari --window-title "Example"
peekaboo window set-bounds --app Safari --x 50 --y 50 --width 1200 --height 800
peekaboo app quit --app Safari

Menus, menubar, dock

peekaboo menu click --app Safari --item "New Window"
peekaboo menu click --app TextEdit --path "Format > Font > Show Fonts"
peekaboo menu click-extra --title "WiFi"
peekaboo dock launch Safari
peekaboo menubar list --json

Mouse + gesture input

peekaboo move 500,300 --smooth
peekaboo drag --from B1 --to T2
peekaboo swipe --from-coords 100,500 --to-coords 100,200 --duration 800
peekaboo scroll --direction down --amount 6 --smooth

Keyboard input

peekaboo hotkey --keys "cmd,shift,t"
peekaboo press escape
peekaboo type "Line 1\nLine 2" --delay 10

Notes

  • Requires Screen Recording + Accessibility permissions.
  • In OpenClaw subprocesses, set PEEKABOO_BRIDGE_SOCKET as shown above. Do not pass --no-remote unless the calling process has its own Screen Recording grant.
  • Diagnose subprocess capture failures with peekaboo bridge status --json, then peekaboo permissions status --json, then a normal Bridge-routed capture such as peekaboo image --mode screen --json.
  • On macOS 15+, the "bypass private window picker" prompt is separate from the base Screen Recording grant; it can appear even when Bridge permissions are otherwise correct.
  • Use peekaboo see --annotate to identify targets before clicking.

When not to use it

  • Automating non-macOS systems
  • Interacting with kernel-level processes

Prerequisites

MacOSPeekaboo CLIOpenClaw app for bridge access

Limitations

  • Restricted to macOS
  • Requires Accessibility and Screen Recording permissions

How it compares

Bypasses manual UI recording software by allowing programmatic control via a CLI.

Compared to similar skills

peekaboo side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
peekaboo (this skill)142moReviewIntermediate
command-development168moReviewIntermediate
skill-forge119moReviewIntermediate
codex-skill125moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

command-development

anthropics

This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.

16133

skill-forge

WilliamSaysX

Automated skill creation workshop with intelligent source detection, smart path management, and end-to-end workflow automation. This skill should be used when users want to create a new skill or convert external resources (GitHub repositories, online documentation, or local directories) into a skill. Automatically fetches, organizes, and packages skills with proactive cleanup management.

11115

codex-skill

feiskyer

Use when user asks to leverage codex, gpt-5, or gpt-5.1 to implement something (usually implement a plan or feature designed by Claude). Provides non-interactive automation mode for hands-off task execution without approval prompts.

12110

agent-factory

alirezarezvani

Claude Code agent generation system that creates custom agents and sub-agents with enhanced YAML frontmatter, tool access patterns, and MCP integration support following proven production patterns

8109

subagent-driven-development

davila7

Use when executing implementation plans with independent tasks in the current session

1493

ai-assisted-development

baz-scm

Leveraging AI coding assistants and tools to boost development productivity, while maintaining oversight to ensure quality results.

585

Search skills

Search the agent skills registry