Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

peekaboo — Claude Code skill: what it does, how to install

Captures macOS UI and runs desktop actions via the Peekaboo CLI. It helps agents read active windows and trigger UI actions.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openclaw/openclaw --skill peekaboo -a claude-code
Open on GitHub

What peekaboo does

The skill directs the peekaboo CLI to inspect and automate macOS user interfaces. Agents run peekaboo see to detect elements and peekaboo press to trigger keyboard shortcuts. Output comes back as structured JSON.

It requires the peekaboo binary installed via Homebrew (openclaw/tap/peekaboo) on macOS. Actions run either directly or through OpenClaw Bridge via its socket file. Foreground interactions like dragging require explicit --foreground authorization.

Install this if your agent needs to drive desktop apps on macOS. It does nothing on other operating systems.

What it helps with

  • capture annotated screenshots of target app windows
  • send hotkey combinations like cmd+shift+t to macOS apps
  • drag between coordinates using peekaboo drag
  • list active macOS applications and windows as JSON

Example prompts for the agent

  • Take an annotated screenshot of the Safari window and list its elements
  • Send cmd+shift+t to Safari using peekaboo press --foreground
  • Inspect active applications using peekaboo app list --json

How to install peekaboo

1Skills CLI (Vercel)

npx skills add openclaw/openclaw --skill peekaboo -a claude-code

2Manually: put the files in place

~/.claude/skills/peekaboo/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/peekaboo/

From the same set45

The whole set →
summarize openclaw Runs a CLI tool to summarize or transcribe web articles, YouTube videos, podcasts, and local PDF documents directly within your AI assistant. Claude Code CX Codex Cursor +1 26,900installs weather openclaw This skill fetches current conditions and forecasts for a city, region, airport code, or coordinates. Use it to check rain and temperature or plan a trip. Claude Code CX Codex Cursor +1 9,300installs gog openclaw Guides an agent using the gog CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs. Use it when Google Workspace tasks need to run from a terminal. Claude Code CX Codex Cursor +1 8,500installs tmux openclaw Lets an agent work with live tmux sessions: read pane output, send keys and text, wait for a prompt line to show up. Claude Code CX Codex Cursor +1 8,400installs openai-whisper openclaw This skill lets your agent call the Whisper CLI to transcribe audio on your own machine. No API key needed. Claude Code CX Codex Cursor +1 7,100installs nano-pdf openclaw Edit PDF pages with plain text instructions through the nano-pdf CLI. Useful when you need to fix a typo or swap a heading without leaving your terminal. Claude Code CX Codex Cursor +1 7,100installs skill-creator openclaw A skill for writing, repairing and reviewing other skills. It splits behaviour into branches, sets the frontmatter and sorts resources into folders. Useful once your skill folder gets crowded. Claude Code CX Codex Cursor +1 6,700installs coding-agent openclaw This skill sends large coding tasks to Codex, Claude Code, or OpenCode as background workers. Use it for refactors, PR reviews, and issue-to-PR work. Claude Code CX Codex Cursor +1 6,500installs

Similar

fix-security-vulnerabilities-with-strix usestrix This skill triages validated Strix findings, fixes their root causes, and runs Strix again to verify the result. Use it after a CLI or cloud scan. Claude Code CX Codex Cursor +1 15,500installs owasp-top-10-testing usestrix Runs Strix AI agents to execute exploits across OWASP Top 10:2025 categories. Useful for verifying attack paths with concrete proofs-of-concept before audits. Claude Code CX Codex Cursor +1 12,600installs application-security-testing usestrix This skill selects tests for source code, a live web app, APIs, and CI, then turns confirmed findings into a ranked remediation plan. Use it for an AppSec review. Claude Code CX Codex Cursor +1 12,300installs gh-fix-ci official openai Finds failing GitHub Actions checks on a pull request, inspects logs, and drafts a fix plan. The skill modifies code only after explicit approval. Claude Code CX Codex Cursor +1 11,400installs ego-browser citrolabs Connects the ego-lite Chromium browser to AI agents for web automation, form filling, screenshots, and QA testing using existing logged-in sessions. Claude Code CX Codex Cursor +1 11,900installs dogfood Teknium (teknium1), Hermes Agent A skill for exploratory QA of a web app: it walks the pages, captures console errors and screenshots, then writes a bug report. Claude Code CX Codex Cursor +1 6,400installs improve-codebase-architecture Matt Pocock This skill scans a codebase for architectural friction, then builds a visual HTML report with refactoring candidates. Use it before a deeper architecture review. Claude Code 1,163,035installs design-taste-frontend Leonxlnx This skill directs the design of public pages and work screens, then checks the result in a browser through screenshots. Use it when an interface feels generic or unfinished. Claude Code CX Codex Cursor +1 673,100installs

Questions about peekaboo

How to install peekaboo in Claude Code?

Run npx skills add openclaw/openclaw --skill peekaboo -a claude-code. You also need the CLI binary via Homebrew formula openclaw/tap/peekaboo.

What does peekaboo do?

It gives AI agents CLI tools to inspect macOS interface elements, capture screenshots, and trigger mouse or keyboard events.

What are the macOS permission requirements?

Peekaboo requires macOS Screen Recording grants and foreground access for cursor actions. On macOS 15+, the private window picker prompt requires a separate authorization.

Source text

SKILL.md · MIT
---
name: peekaboo
description: "Capture and automate macOS UI with the Peekaboo CLI."
homepage: https://peekaboo.boo
metadata:
  {
    "openclaw":
      {
        "emoji": "👀",
        "os": ["darwin"],
        "requires": { "bins": ["peekaboo"] },
        "install":
          [
            {
              "id": "brew",
              "kind": "brew",
              "formula": "openclaw/tap/peekaboo",
              "bins": ["peekaboo"],
              "label": "Install Peekaboo (brew)",
            },
          ],
      },
  }
---

# Peekaboo

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:

```bash
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:

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

V4 removed these old command roots:

| Old command | V4 command                                               |
| ----------- | -------------------------------------------------------- |
| `list apps` | `app list`                                               |
| `image`     | `see --no-elements` for pixels without element detection |
| `hotkey`    | `press` with chords such as `cmd+shift+t`                |
| `swipe`     | `drag --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:

```bash
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:

```bash
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:

```bash
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.

© openclaw · MIT · openclaw/openclaw

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor