{"id":"29d85de5-1d1d-4020-854b-a9b9918826fc","shortId":"jpWXv8","kind":"skill","title":"peekaboo","tagline":"Native macOS GUI automation via peekaboo 3.0+. AX-first hybrid with VLM fallback,\nFSM-based workflows with bug-specific transitions. Safari web automation, native app\ncontrol, social media operations, system dialogs, cross-app workflows.","description":"# Peekaboo\n\nNative macOS GUI automation via peekaboo, using an AX-first hybrid approach that prioritizes accessibility-tree interaction when reliable and switches to screenshot, coordinate, JavaScript, or vision-based fallbacks when AX coverage breaks down in real apps.\n\nTerminology used in this file:\n- **AX (Accessibility tree):** The macOS accessibility hierarchy used for deterministic element discovery and interaction (`B1`, `T2`, etc.).\n- **peekaboo:** The macOS automation CLI used for discovery (`see`, `image`), interaction (`click`, `type`, `hotkey`), and app/window/dialog control.\n- **UI-TARS:** Vision model server used when AX discovery fails or times out on complex UIs.\n- **FSM:** Finite State Machine controlling retries, transitions, and recovery paths.\n- **Retina scale:** Display pixel ratio (typically `2.0`) used to map screenshot coordinates correctly on Retina displays.\n- **snapshot ID:** The `snapshot_id` returned by `see`; required for stable element resolution and invalidated by UI changes.\n\n## Setup\n\n```bash\nbrew install jq\nbrew install --cask peekaboo\nmkdir -p ./scripts\nchmod +x ./scripts/peekaboo-safe.sh ./scripts/health-check.sh\n./scripts/health-check.sh\n```\n\n- Grant **Accessibility** and **Screen Recording** permissions for your terminal agent host (for example, Terminal, iTerm2, Claude Code).\n- Use `./scripts/peekaboo-safe.sh` as the only invocation entrypoint for peekaboo commands.\n- For full setup details and troubleshooting, see `references/installation-guide.md` if present in your local skill copy.\n\n## Staying Updated\n\nThis skill ships with an `UPDATES.md` changelog and `UPDATE-GUIDE.md` for your AI agent.\n\nAfter installing, tell your agent: \"Check `UPDATES.md` in the peekaboo skill for any new features or changes.\"\n\nWhen updating, tell your agent: \"Read `UPDATE-GUIDE.md` and apply the latest changes from `UPDATES.md`.\"\n\nFollow `UPDATE-GUIDE.md` so customized local files are diffed before any overwrite.\n\n---\n\n## Quick Start\n\nRun a 3-step baseline flow: health check, discover, interact.\n\n```bash\n# 1) Health check\n./scripts/health-check.sh\n\n# 2) Discover UI state\n./scripts/peekaboo-safe.sh see --app Safari --json --path /tmp/peekaboo/\n\n# 3) Interact\n./scripts/peekaboo-safe.sh click --on B1 --app Safari\n```\n\n## Hard Rules (MUST FOLLOW)\n\n1. **All peekaboo calls MUST use `./scripts/peekaboo-safe.sh` wrapper** - never direct `peekaboo` calls\n2. **Sequential execution only** - no parallel GUI operations (causes race conditions)\n3. **NEVER run `tccutil reset`** - resets ALL app permissions, not just one\n4. **Always `--mode screen`** - window mode returns 698B stubs (beta3 bug)\n5. **Health check required** - run `./scripts/health-check.sh` before automation\n6. **Fresh snapshots mandatory** - re-run `see` before each click sequence (IDs expire)\n7. **Use see --analyze for Q&A** - 50x more token-efficient than full screenshots\n\n## Navigation Strategy: Navigate Programmatically, Interact Visually\n\n**Core principle:** Never waste turns clicking through UI to reach a target. Get there programmatically, then use peekaboo for the last-mile interaction.\n\n| Method | When | Example |\n|--------|------|---------|\n| URL scheme | System Settings, Safari pages | `open \"x-apple.systempreferences:com.apple.Desktop-Settings.extension\"` |\n| AppleScript | Apps with scripting dictionary | `osascript -e 'tell app \"Finder\" to open folder \"Desktop\"'` |\n| CLI/flags | Apps with CLI args | `open -a TextEdit /path/to/file` |\n| Menu command | Navigate within already-open app | `./scripts/peekaboo-safe.sh menu click --path \"View > Show Sidebar\"` |\n| AX sidebar click | **Last resort** - only if above fail | Unreliable for tightly-packed items (System Settings proven broken) |\n\n**Hostile AX apps** (use URL scheme / AppleScript only):\n- System Settings - SwiftUI toggles invisible to AX roles, sidebar clicks misfire\n\n## Routing Algorithm (Interaction Tier)\n\n```text\nif target_is_native_macos_ui():\n    use_ax_interaction()  # click --on B1, type, hotkey\nelif target_is_swiftui_toggle():\n    use_screenshot_coordinate_click()  # screenshot -> identify -> click --coords\nelif target_is_web_form():\n    use_safari_js_injection()  # osascript JavaScript\nelif target_is_web_button():\n    use_coordinate_click()  # click --coords X,Y --no-auto-focus\nelif see_timeout_complex_app():\n    start_ui_tars_server()  # vision provider required\nelif dialog_or_sheet():\n    add_no_auto_focus_flag()  # prevent focus conflicts\nelse:\n    escalate_to_human()\n```\n\n## FSM State Machine\n\n| State | Entry Condition | Actions | Exit Criteria | Retry Budget | Next State |\n|-------|----------------|---------|---------------|--------------|------------|\n| PREFLIGHT | Start | health-check.sh, mkdir /tmp/peekaboo | all_checks_pass | 1 | CLASSIFY_TARGET |\n| CLASSIFY_TARGET | Health pass | Determine interaction tier | tier_identified | 1 | ACQUIRE_WINDOW |\n| ACQUIRE_WINDOW | Target known | app switch, window focus | app_frontmost | 3 | WAIT_FOR_UI_STABLE |\n| WAIT_FOR_UI_STABLE | Window focused | sleep, check spinner state | ui_elements_stable | 2 | DISCOVER |\n| DISCOVER | UI stable | see --app --json --path | elements_found | 3 | INTERACT |\n| INTERACT | Elements found | click/type/menu based on tier | action_completed | 5 | VERIFY |\n| VERIFY | Action attempted | see/image for state change | success_confirmed | 2 | EXTRACT or CLEANUP |\n| EXTRACT | Data needed | see --analyze or JS injection | data_extracted | 2 | CLEANUP |\n| CLEANUP | Task complete | clean snapshots, restore clipboard | cleanup_done | 1 | DONE |\n| RECOVER | Error detected | Retry from previous state | retry_limit_hit | 3 | HUMAN_HANDOFF or ABORT |\n| HUMAN_HANDOFF | Auth/CAPTCHA/TCC | Log issue, preserve evidence | human_resolved | inf | CLASSIFY_TARGET |\n| ABORT | Fatal error | Log failure, preserve evidence | - | - | - |\n| DONE | Success | Return results | - | - | - |\n\n### Bug-Specific Transitions\n\n- `see` timeout -> start UI-TARS -> retry DISCOVER\n- Safari AX click misfires -> force coordinate click path\n- `type` targets URL bar -> force JS injection path\n- daemon file-not-found -> `daemon run --mode manual &`\n- Chrome window capture fail -> switch to Safari\n- System Settings AX sidebar misfire -> use URL scheme: `open \"x-apple.systempreferences:com.apple.PANE_ID\"`\n- SwiftUI toggle invisible to AX -> screenshot + coordinate click (not AX click)\n\n## Core Commands (Canonical Forms Only)\n\n### Discovery\n- `./scripts/peekaboo-safe.sh see --app AppName --json --path /tmp/peekaboo/`\n- `./scripts/peekaboo-safe.sh see --analyze \"What is the current state?\" --app AppName`\n- `./scripts/peekaboo-safe.sh image --mode screen --path /tmp/peekaboo/screenshot.png`\n\n### Interaction\n- `./scripts/peekaboo-safe.sh click --on B1 --snapshot \"$sid\" --app AppName`\n- `./scripts/peekaboo-safe.sh click --coords X,Y --no-auto-focus --app AppName`\n- `./scripts/peekaboo-safe.sh type \"text\" --return --profile human --app AppName`\n- `./scripts/peekaboo-safe.sh hotkey --keys \"cmd,w\" --app AppName`\n\n### App Control\n- `./scripts/peekaboo-safe.sh app switch --to AppName`\n- `./scripts/peekaboo-safe.sh window focus --window-title \"Title\" --app AppName`\n- `./scripts/peekaboo-safe.sh menu click --path \"File > Save As...\" --app AppName`\n\n### Safari Workarounds\n- Navigate: `./scripts/peekaboo-safe.sh open \"https://url\" --app Safari`\n- Form fill: `osascript -e 'tell application \"Safari\" to do JavaScript \"document.querySelector(\\\"input[name=field]\\\").value = \\\"value\\\"\" in document 1'`\n- Button click: `./scripts/peekaboo-safe.sh click --coords X,Y --no-auto-focus --app Safari`\n\n### Agent Mode\n- `./scripts/peekaboo-safe.sh agent \"Natural language task\" --model gpt-4o --max-steps 10`\n- `./scripts/peekaboo-safe.sh agent --resume --max-steps 5`\n\n## Token Budget\n\n`see --analyze` ~100 tokens | `see --json` ~600 | `image --mode screen` ~1400. Soft limit 50 turns, hard limit 100. Prefer `see --analyze` over full AX trees. Details in `references/token-budget.md`.\n\n## Capability Matrix\n\n| Feature Area | Status | Last Validated | Notes |\n|-------------|--------|----------------|-------|\n| Native macOS UI | **validated** | 2026-02-22 | 20 tests passed, core capability |\n| Agent mode | **validated** | 2026-02-22 | Multi-step automation works |\n| Safari forms | **partial** | 2026-02-22 | JS injection required, see playbooks |\n| System dialogs | **validated** | 2026-02-22 | Use --no-auto-focus |\n| File pickers | **partial** | 2026-02-22 | Compact mode issues |\n| Menu navigation | **validated** | 2026-02-22 | App menus work, Apple menu limited |\n| Spaces management | **validated** | 2026-02-22 | Full virtual desktop support |\n| Live capture | **validated** | 2026-02-22 | Recording and diff detection |\n| Chrome automation | **unsupported** | 2026-02-22 | Issue #67, use Safari |\n| Social media ops | **validated** | 2026-02-22 | Reddit shadow DOM login, Booking URL-first search, X signup, cookie extraction, CAPTCHA detection -- see playbooks |\n\n## Playbook Index\n\nEach playbook is a self-contained field-tested recipe. Status: validated = tested in production, experimental = untested or partially tested.\n\n| Playbook | Use Case | Status |\n|----------|----------|--------|\n| `native-app-automation.md` | Any macOS app workflow | **validated** |\n| `safari-login.md` | Generic web authentication | **validated** |\n| `dialog-and-file-picker.md` | System dialogs, save/open | **validated** |\n| `cross-app-data-transfer.md` | Clipboard transfer between apps | **validated** |\n| `reddit-login.md` | Reddit auth (shadow DOM + React events) | **validated** |\n| `reddit-data-extraction.md` | Post Insights extraction (author-only analytics) | **validated** |\n| `booking-search.md` | Hotel search (URL-first, VLM extraction) | **validated** |\n| `x-signup.md` | X/Twitter account registration + email verification | **validated** |\n| `file-upload.md` | macOS file dialog from web apps (Cmd+Shift+G) | **validated** |\n| `captcha-solver.md` | CAPTCHA detection and handling | **experimental** |\n| `cookie-extractor.md` | Browser session cookie extraction | **experimental** |\n| `instagram-monitor.md` | Instagram content monitoring | **experimental** |\n\n## Reference Index\n\n- `references/commands.md` - Complete command reference with all flags\n- `references/safari-workarounds.md` - Web automation canonical patterns\n- `references/patterns.md` - Common automation workflows and recipes\n- `references/failures.md` - Error recovery procedures and symptom table\n- `references/validated-tests.md` - Field validation results and capabilities\n- `references/token-budget.md` - Token costs and optimization strategies\n- `references/hard-tests.md` - Edge-case and stress test catalog\n- `references/installation-guide.md` - Full setup from zero to working\n\n## Pre-flight Checklist\n\n```bash\n./scripts/health-check.sh\n# Must return: cli_exists=true, accessibility_granted=true, ax_test_success=true\nmkdir -p /tmp/peekaboo\n```\n\n## Error Recovery\n\nAfter 3 retries on same state: log state + evidence screenshot + escalate to `HUMAN_HANDOFF`. Quick recovery: `app switch` + fresh `see` + `health-check.sh`.","tags":["peekaboo","fieldwork","skills","buildoak","agent-skills","ai-agents","ai-tools","automation","browser-automation","claude-code","claude-skills","codex"],"capabilities":["skill","source-buildoak","skill-peekaboo","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-automation","topic-browser-automation","topic-claude-code","topic-claude-skills","topic-codex"],"categories":["fieldwork-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/buildoak/fieldwork-skills/peekaboo","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add buildoak/fieldwork-skills","source_repo":"https://github.com/buildoak/fieldwork-skills","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 15 github stars · SKILL.md body (11,095 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T19:06:33.160Z","embedding":null,"createdAt":"2026-04-18T23:07:15.561Z","updatedAt":"2026-04-22T19:06:33.160Z","lastSeenAt":"2026-04-22T19:06:33.160Z","tsv":"'-02':1048,1059,1070,1081,1092,1101,1113,1123,1133,1144 '-22':1049,1060,1071,1082,1093,1102,1114,1124,1134,1145 '/path/to/file':484 '/scripts':192 '/scripts/health-check.sh':196,197,313,388,1332 '/scripts/peekaboo-safe.sh':195,216,318,327,343,493,860,867,877,884,892,903,911,920,925,934,946,972,985,998 '/tmp/peekaboo':324,642,866,1347 '/tmp/peekaboo/screenshot.png':882 '1':310,337,646,658,747,969 '10':997 '100':1009,1024 '1400':1017 '2':314,349,689,722,736 '2.0':153 '20':1050 '2026':1047,1058,1069,1080,1091,1100,1112,1122,1132,1143 '3':301,325,360,671,700,759,1351 '3.0':8 '4':372 '4o':993 '5':383,711,1004 '50':1020 '50x':412 '6':391 '600':1013 '67':1136 '698b':379 '7':405 'abort':763,776 'access':57,87,91,199,1338 'accessibility-tre':56 'account':1240 'acquir':659,661 'action':631,709,714 'add':613 'agent':207,254,259,276,983,986,999,1055 'ai':253 'algorithm':539 'alreadi':490 'already-open':489 'alway':373 'analyt':1227 'analyz':408,730,869,1008,1027 'app':29,38,80,320,331,367,463,470,477,492,521,601,665,669,695,862,875,890,901,909,916,918,921,932,941,949,981,1103,1193,1210,1251,1366 'app/window/dialog':118 'appl':1106 'applescript':462,525 'appli':280 'applic':956 'appnam':863,876,891,902,910,917,924,933,942 'approach':53 'area':1038 'arg':480 'attempt':715 'auth':1214 'auth/captcha/tcc':766 'authent':1199 'author':1225 'author-on':1224 'auto':595,615,899,979,1086 'autom':5,27,44,106,390,1064,1130,1284,1289 'ax':10,50,74,86,128,500,520,533,550,800,833,847,852,1030,1341 'ax-first':9,49 'b1':100,330,554,887 'bar':810 'base':18,71,706 'baselin':303 'bash':182,309,1331 'beta3':381 'book':1150 'booking-search.md':1229 'break':76 'brew':183,186 'broken':518 'browser':1263 'budget':635,1006 'bug':22,382,788 'bug-specif':21,787 'button':585,970 'call':340,348 'canon':856,1285 'capabl':1035,1054,1305 'captcha':1159,1257 'captcha-solver.md':1256 'captur':826,1120 'case':1188,1315 'cask':188 'catalog':1319 'caus':357 'chang':180,271,283,719 'changelog':248 'check':260,306,312,385,644,683 'checklist':1330 'chmod':193 'chrome':824,1129 'classifi':647,649,774 'claud':213 'clean':741 'cleanup':725,737,738,745 'cli':107,479,1335 'cli/flags':476 'click':114,328,401,431,495,502,536,552,565,568,588,589,801,805,850,853,885,893,936,971,973 'click/type/menu':705 'clipboard':744,1207 'cmd':914,1252 'code':214 'com.apple.desktop-settings.extension':461 'com.apple.pane':841 'command':224,486,855,1277 'common':1288 'compact':1094 'complet':710,740,1276 'complex':135,600 'condit':359,630 'confirm':721 'conflict':620 'contain':1171 'content':1270 'control':30,119,141,919 'cooki':1157,1265 'cookie-extractor.md':1262 'coord':569,590,894,974 'coordin':66,158,564,587,804,849 'copi':239 'core':426,854,1053 'correct':159 'cost':1308 'coverag':75 'criteria':633 'cross':37 'cross-app':36 'cross-app-data-transfer.md':1206 'current':873 'custom':289 'daemon':815,820 'data':727,734 'desktop':475,1117 'detail':228,1032 'detect':751,1128,1160,1258 'determin':653 'determinist':95 'dialog':35,610,1078,1203,1248 'dialog-and-file-picker.md':1201 'dictionari':466 'dif':293 'diff':1127 'direct':346 'discov':307,315,690,691,798 'discoveri':97,110,129,859 'display':149,162 'document':968 'document.queryselector':961 'dom':1148,1216 'done':746,748,783 'e':468,954 'edg':1314 'edge-cas':1313 'effici':416 'element':96,174,687,698,703 'elif':557,570,581,597,609 'els':621 'email':1242 'entri':629 'entrypoint':221 'error':750,778,1294,1348 'escal':622,1360 'etc':102 'event':1218 'evid':770,782,1358 'exampl':210,452 'execut':351 'exist':1336 'exit':632 'experiment':1181,1261,1267,1272 'expir':404 'extract':723,726,735,1158,1223,1236,1266 'fail':130,508,827 'failur':780 'fallback':15,72 'fatal':777 'featur':269,1037 'field':964,1173,1301 'field-test':1172 'file':85,291,817,938,1088,1247 'file-not-found':816 'file-upload.md':1245 'fill':952 'finder':471 'finit':138 'first':11,51,1153,1234 'flag':617,1281 'flight':1329 'flow':304 'focus':596,616,619,668,681,900,927,980,1087 'folder':474 'follow':286,336 'forc':803,811 'form':574,857,951,1067 'found':699,704,819 'fresh':392,1368 'frontmost':670 'fsm':17,137,625 'fsm-base':16 'full':226,418,1029,1115,1321 'g':1254 'generic':1197 'get':438 'gpt':992 'gpt-4o':991 'grant':198,1339 'gui':4,43,355 'handl':1260 'handoff':761,765,1363 'hard':333,1022 'health':305,311,384,651 'health-check.sh':640,1370 'hierarchi':92 'hit':758 'host':208 'hostil':519 'hotel':1230 'hotkey':116,556,912 'human':624,760,764,771,908,1362 'hybrid':12,52 'id':164,167,403,842 'identifi':567,657 'imag':112,878,1014 'index':1164,1274 'inf':773 'inject':578,733,813,1073 'input':962 'insight':1222 'instagram':1269 'instagram-monitor.md':1268 'instal':184,187,256 'interact':59,99,113,308,326,424,449,540,551,654,701,702,883 'invalid':177 'invis':531,845 'invoc':220 'issu':768,1096,1135 'item':514 'iterm2':212 'javascript':67,580,960 'jq':185 'js':577,732,812,1072 'json':322,696,864,1012 'key':913 'known':664 'languag':988 'last':447,503,1040 'last-mil':446 'latest':282 'limit':757,1019,1023,1108 'live':1119 'local':237,290 'log':767,779,1356 'login':1149 'machin':140,627 'maco':3,42,90,105,547,1044,1192,1246 'manag':1110 'mandatori':394 'manual':823 'map':156 'matrix':1036 'max':995,1002 'max-step':994,1001 'media':32,1140 'menu':485,494,935,1097,1107 'menus':1104 'method':450 'mile':448 'misfir':537,802,835 'mkdir':190,641,1345 'mode':374,377,822,879,984,1015,1056,1095 'model':124,990 'monitor':1271 'multi':1062 'multi-step':1061 'must':335,341,1333 'name':963 'nativ':2,28,41,546,1043 'native-app-automation.md':1190 'natur':987 'navig':420,422,487,945,1098 'need':728 'never':345,361,428 'new':268 'next':636 'no-auto-focus':593,897,977,1084 'note':1042 'one':371 'op':1141 'open':459,473,481,491,839,947 'oper':33,356 'optim':1310 'osascript':467,579,953 'overwrit':296 'p':191,1346 'pack':513 'page':458 'parallel':354 'partial':1068,1090,1184 'pass':645,652,1052 'path':146,323,496,697,806,814,865,881,937 'pattern':1286 'peekaboo':1,7,40,46,103,189,223,264,339,347,443 'permiss':203,368 'picker':1089 'pixel':150 'playbook':1076,1162,1163,1166,1186 'post':1221 'pre':1328 'pre-flight':1327 'prefer':1025 'preflight':638 'present':234 'preserv':769,781 'prevent':618 'previous':754 'principl':427 'priorit':55 'procedur':1296 'product':1180 'profil':907 'programmat':423,440 'proven':517 'provid':607 'q':410 'quick':297,1364 'race':358 'ratio':151 're':396 're-run':395 'reach':435 'react':1217 'read':277 'real':79 'recip':1175,1292 'record':202,1125 'recov':749 'recoveri':145,1295,1349,1365 'reddit':1146,1213 'reddit-data-extraction.md':1220 'reddit-login.md':1212 'refer':1273,1278 'references/commands.md':1275 'references/failures.md':1293 'references/hard-tests.md':1312 'references/installation-guide.md':232,1320 'references/patterns.md':1287 'references/safari-workarounds.md':1282 'references/token-budget.md':1034,1306 'references/validated-tests.md':1300 'registr':1241 'reliabl':61 'requir':171,386,608,1074 'reset':364,365 'resolut':175 'resolv':772 'resort':504 'restor':743 'result':786,1303 'resum':1000 'retina':147,161 'retri':142,634,752,756,797,1352 'return':168,378,785,906,1334 'role':534 'rout':538 'rule':334 'run':299,362,387,397,821 'safari':25,321,332,457,576,799,830,943,950,957,982,1066,1138 'safari-login.md':1196 'save':939 'save/open':1204 'scale':148 'scheme':454,524,838 'screen':201,375,880,1016 'screenshot':65,157,419,563,566,848,1359 'script':465 'search':1154,1231 'see':111,170,231,319,398,407,598,694,729,791,861,868,1007,1011,1026,1075,1161,1369 'see/image':716 'self':1170 'self-contain':1169 'sequenc':402 'sequenti':350 'server':125,605 'session':1264 'set':456,516,528,832 'setup':181,227,1322 'shadow':1147,1215 'sheet':612 'shift':1253 'ship':244 'show':498 'sid':889 'sidebar':499,501,535,834 'signup':1156 'skill':238,243,265 'skill-peekaboo' 'sleep':682 'snapshot':163,166,393,742,888 'social':31,1139 'soft':1018 'source-buildoak' 'space':1109 'specif':23,789 'spinner':684 'stabl':173,675,679,688,693 'start':298,602,639,793 'state':139,317,626,628,637,685,718,755,874,1355,1357 'status':1039,1176,1189 'stay':240 'step':302,996,1003,1063 'strategi':421,1311 'stress':1317 'stub':380 'success':720,784,1343 'support':1118 'swiftui':529,560,843 'switch':63,666,828,922,1367 'symptom':1298 'system':34,455,515,527,831,1077,1202 't2':101 'tabl':1299 'tar':122,604,796 'target':437,544,558,571,582,648,650,663,775,808 'task':739,989 'tccutil':363 'tell':257,274,469,955 'termin':206,211 'terminolog':81 'test':1051,1174,1178,1185,1318,1342 'text':542,905 'textedit':483 'tier':541,655,656,708 'tight':512 'tightly-pack':511 'time':132 'timeout':599,792 'titl':930,931 'toggl':530,561,844 'token':415,1005,1010,1307 'token-effici':414 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-automation' 'topic-browser-automation' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'transfer':1208 'transit':24,143,790 'tree':58,88,1031 'troubleshoot':230 'true':1337,1340,1344 'turn':430,1021 'type':115,555,807,904 'typic':152 'ui':121,136,179,316,433,548,603,674,678,686,692,795,1045 'ui-tar':120,794 'unreli':509 'unsupport':1131 'untest':1182 'updat':241,273 'update-guide.md':250,278,287 'updates.md':247,261,285 'url':453,523,809,837,948,1152,1233 'url-first':1151,1232 'use':47,82,93,108,126,154,215,342,406,442,522,549,562,575,586,836,1083,1137,1187 'valid':1041,1046,1057,1079,1099,1111,1121,1142,1177,1195,1200,1205,1211,1219,1228,1237,1244,1255,1302 'valu':965,966 'verif':1243 'verifi':712,713 'via':6,45 'view':497 'virtual':1116 'vision':70,123,606 'vision-bas':69 'visual':425 'vlm':14,1235 'w':915 'wait':672,676 'wast':429 'web':26,573,584,1198,1250,1283 'window':376,660,662,667,680,825,926,929 'window-titl':928 'within':488 'work':1065,1105,1326 'workaround':944 'workflow':19,39,1194,1290 'wrapper':344 'x':194,591,895,975,1155 'x-apple.systempreferences':460,840 'x-signup.md':1238 'x/twitter':1239 'y':592,896,976 'zero':1324","prices":[{"id":"5c4c3e10-6884-4ffb-8357-b94e9debd23b","listingId":"29d85de5-1d1d-4020-854b-a9b9918826fc","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"buildoak","category":"fieldwork-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T23:07:15.561Z"}],"sources":[{"listingId":"29d85de5-1d1d-4020-854b-a9b9918826fc","source":"github","sourceId":"buildoak/fieldwork-skills/peekaboo","sourceUrl":"https://github.com/buildoak/fieldwork-skills/tree/main/skills/peekaboo","isPrimary":false,"firstSeenAt":"2026-04-18T23:07:15.561Z","lastSeenAt":"2026-04-22T19:06:33.160Z"}],"details":{"listingId":"29d85de5-1d1d-4020-854b-a9b9918826fc","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"buildoak","slug":"peekaboo","github":{"repo":"buildoak/fieldwork-skills","stars":15,"topics":["agent-skills","ai-agents","ai-tools","automation","browser-automation","claude-code","claude-skills","codex"],"license":"apache-2.0","html_url":"https://github.com/buildoak/fieldwork-skills","pushed_at":"2026-03-18T08:36:25Z","description":"Battle-tested skills for AI agents that do real work","skill_md_sha":"9dbeecd3564b03ed60fa75c5641b0842a1f73951","skill_md_path":"skills/peekaboo/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/buildoak/fieldwork-skills/tree/main/skills/peekaboo"},"layout":"multi","source":"github","category":"fieldwork-skills","frontmatter":{"name":"peekaboo","description":"Native macOS GUI automation via peekaboo 3.0+. AX-first hybrid with VLM fallback,\nFSM-based workflows with bug-specific transitions. Safari web automation, native app\ncontrol, social media operations, system dialogs, cross-app workflows."},"skills_sh_url":"https://skills.sh/buildoak/fieldwork-skills/peekaboo"},"updatedAt":"2026-04-22T19:06:33.160Z"}}