Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Capture and automate macOS UI with the Peekaboo CLI.
.claude/skills/sundial-org-peekaboo/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 105% | 0% |
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.
Core
bridge: inspect Peekaboo Bridge host connectivitycapture: live capture or video ingest + frame extractionclean: prune snapshot cache and temp filesconfig: init/show/edit/validate, providers, models, credentialsimage: capture screenshots (screen/window/menu bar regions)learn: print the full agent guide + tool cataloglist: apps, windows, screens, menubar, permissionspermissions: check Screen Recording/Accessibility statusrun: execute .peekaboo.json scriptssleep: pause execution for a durationtools: list available tools with filtering/display optionsInteraction
click: target by ID/query/coords with smart waitsdrag: drag & drop across elements/coords/Dockhotkey: modifier combos like cmd,shift,tmove: cursor positioning with optional smoothingpaste: set clipboard -> paste -> restorepress: special-key sequences with repeatsscroll: directional scrolling (targeted + smooth)swipe: gesture-style drags between targetstype: text + control keys (--clear, delays)System
app: launch/quit/relaunch/hide/unhide/switch/list appsclipboard: read/write clipboard (text/images/files)dialog: click/input/file/dismiss/list system dialogsdock: launch/right-click/hide/show/list Dock itemsmenu: click/list application menus + menu extrasmenubar: list/click status bar itemsopen: enhanced open with app targeting + JSON payloadsspace: list/switch/move-window (Spaces)visualizer: exercise Peekaboo visual feedback animationswindow: close/minimize/maximize/move/resize/focus/listVision
see: annotated UI maps, snapshot IDs, optional analysisGlobal runtime flags
--json/-j, --verbose/-v, --log-level <level>--no-remote, --bridge-socket <path>bashpeekaboo permissions peekaboo list apps --json peekaboo see --annotate --path /tmp/peekaboo-see.png peekaboo click --on B1 peekaboo type "Hello" --return
--app, --pid, --window-title, --window-id, --window-index--snapshot (ID from see; defaults to latest)--on/--id (element ID), --coords x,y--no-auto-focus, --space-switch, --bring-to-current-space,--focus-timeout-seconds, --focus-retry-count
--path, --format png|jpg, --retina--mode screen|window|frontmost, --screen-index,--window-title, --window-id
--analyze "prompt", --annotate--capture-engine auto|classic|cg|modern|sckit--duration (drag/swipe), --steps, --delay (type/scroll/press)--profile human|linear, --wpm (typing)--direction up|down|left|right, --amount <ticks>, --smoothbashpeekaboo see --app Safari --window-title "Login" --annotate --path /tmp/see.png peekaboo click --on B3 --app Safari peekaboo type "user@example.com" --app Safari peekaboo press tab --count 1 --app Safari peekaboo type "supersecret" --app Safari --return
bashpeekaboo list windows --app "Visual Studio Code" --json peekaboo click --window-id 12345 --coords 120,160 peekaboo type "Hello from Peekaboo" --window-id 12345
bashpeekaboo 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"
bashpeekaboo capture live --mode region --region 100,100,800,600 --duration 30 \ --active-fps 8 --idle-fps 2 --highlight-changes --path /tmp/capture
bashpeekaboo 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
bashpeekaboo 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
bashpeekaboo 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
bashpeekaboo hotkey --keys "cmd,shift,t" peekaboo press escape peekaboo type "Line 1\nLine 2" --delay 10
Notes
peekaboo see --annotate to identify targets before clicking.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 12,815 | 3,136 | -76% | 1 | 1 | 0% | 2,048 | 2,164 | +6% | 0 | 0 | — |
case-02 | fail→pass | 11,969 | 2,121 | -82% | 1 | 1 | 0% | 2,161 | 1,882 | -13% | 0 | 0 | — |
case-03 | fail→pass | 11,982 | 5,571 | -54% | 1 | 1 | 0% | 2,175 | 2,609 | +20% | 0 | 0 | — |
case-04 | pass→pass | 4,014 | 2,806 | -30% | 1 | 1 | 0% | 680 | 2,056 | +202% | 0 | 0 | — |
case-05 | pass→pass | 7,353 | 4,082 | -44% | 1 | 1 | 0% | 1,270 | 2,138 | +68% | 0 | 0 | — |
case-06 | pass→pass | 6,467 | 3,597 | -44% | 1 | 1 | 0% | 1,083 | 2,138 | +97% | 0 | 0 | — |
case-07 | fail→pass | 7,728 | 1,936 | -75% | 1 | 1 | 0% | 1,186 | 1,818 | +53% | 0 | 0 | — |
case-08 | fail→pass | 5,439 | 2,758 | -49% | 1 | 1 | 0% | 946 | 1,935 | +105% | 0 | 0 | — |
case-09 | fail→pass | 9,224 | 3,058 | -67% | 1 | 1 | 0% | 1,589 | 1,971 | +24% | 0 | 0 | — |
case-10 | fail→pass | 8,742 | 2,356 | -73% | 1 | 1 | 0% | 1,520 | 1,914 | +26% | 0 | 0 | — |
case-15 | fail→pass | 12,233 | 2,233 | -82% | 1 | 1 | 0% | 1,868 | 1,845 | -1% | 0 | 0 | — |
case-11 | fail→pass | 7,370 | 2,121 | -71% | 1 | 1 | 0% | 1,315 | 1,886 | +43% | 0 | 0 | — |
case-12 | fail→pass | 15,035 | 2,695 | -82% | 1 | 1 | 0% | 2,769 | 1,993 | -28% | 0 | 0 | — |
case-13 | fail→pass | 10,805 | 3,788 | -65% | 1 | 1 | 0% | 1,895 | 2,081 | +10% | 0 | 0 | — |
case-14 | fail→fail | 12,686 | 2,150 | -83% | 1 | 1 | 0% | 2,089 | 1,842 | -12% | 0 | 0 | — |
case-16 | fail→pass | 15,727 | 2,273 | -86% | 1 | 1 | 0% | 2,551 | 1,920 | -25% | 0 | 0 | — |
case-17 | fail→pass | 15,064 | 1,462 | -90% | 1 | 1 | 0% | 2,461 | 1,773 | -28% | 0 | 0 | — |
case-18 | fail→pass | 12,677 | 1,623 | -87% | 1 | 1 | 0% | 1,994 | 1,772 | -11% | 0 | 0 | — |
case-19 | fail→pass | 8,870 | 2,710 | -69% | 1 | 1 | 0% | 1,590 | 2,035 | +28% | 0 | 0 | — |
case-20 | fail→pass | 7,067 | 1,745 | -75% | 1 | 1 | 0% | 1,119 | 1,760 | +57% | 0 | 0 | — |
case-21 | fail→pass | 9,253 | 3,405 | -63% | 1 | 1 | 0% | 1,520 | 2,085 | +37% | 0 | 0 | — |
case-22 | fail→pass | 14,579 | 2,827 | -81% | 1 | 1 | 0% | 2,418 | 1,919 | -21% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +82 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.