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.
npx skills add openclaw/openclaw --skill peekaboo -a claude-codeWhat 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+tto 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-code2Manually: put the files in place
~/.claude/skills/peekaboo/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/peekaboo/
1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill peekaboo -a codex2Manually: put the files in place
.agents/skills/peekaboo/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill peekaboo -a cursor2Manually: put the files in place
.cursor/skills/peekaboo/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openclaw/openclaw peekaboo2Manually: put the files in place
.github/skills/peekaboo/SKILL.md1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill peekaboo -a gemini-cli2Platform CLI
gemini skills install https://github.com/openclaw/openclaw --path skills/peekabooManually: put the files in place
.devin/skills/peekaboo/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill peekaboo -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set45
The whole set →Similar
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