[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-browser-use-browser-use-terminal":3,"mdc-mjru6y-key":38,"related-repo-browser-use-browser-use-terminal":1439,"related-org-browser-use-browser-use-terminal":1448},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":34,"sourceUrl":26,"mdContent":37},"browser-use-terminal","automate web interactions via CLI","Direct browser control via the Browser Use Terminal CLI. Use when the user wants to automate, scrape, test, or interact with web pages — you drive the browser yourself with Python helpers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"browser-use","Browser-use","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fbrowser-use.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"CLI","cli","tag",{"name":17,"slug":18,"type":15},"Web Development","web-development",{"name":20,"slug":21,"type":15},"Python","python",{"name":23,"slug":24,"type":15},"Browser Automation","browser-automation",607,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fterminal","2026-06-12T08:15:38.34797",null,34,[24,8,31,32,33],"cdp","terminal","tui",{"repoUrl":26,"stars":25,"forks":29,"topics":35,"description":36},[24,8,31,32,33],"Terminal UI to get stuff done in the browser","---\nname: browser-use-terminal\ndescription: Direct browser control via the Browser Use Terminal CLI. Use when the user wants to automate, scrape, test, or interact with web pages — you drive the browser yourself with Python helpers.\n---\n\n# Browser Use Terminal\n\nDirect browser control via CDP — you are the agent; you drive the browser. For setup, install, or connection problems, read https:\u002F\u002Fbrowser-use.com\u002Fskill (agent setup instructions) or https:\u002F\u002Fdocs.browser-use.com\u002Fopen-source\u002Fbrowser-use-terminal (full docs).\n\n`browser-use-terminal browser exec` runs Python with browser helpers pre-imported; `browser-use-terminal browser \u003Ccmd>` is the control plane (status, connect, profiles, recovery).\n\n## Usage\n\n```bash\nbrowser-use-terminal browser exec \u003C\u003C'PY'\nnew_tab(\"https:\u002F\u002Fdocs.browser-use.com\")\nwait_for_load()\nprint(page_info())\nPY\n```\n\n- Use the heredoc form for every multi-line command. It prevents shell quote mangling inside Python strings and JavaScript snippets.\n- The browser auto-connects according to the user's remembered preference before the script runs — you never start\u002Fstop manually unless you want to. The first call may take a few seconds.\n- First navigation in the user's real Chrome is `new_tab(url)`, not `goto_url(url)` — goto runs in the user's active tab and clobbers their work.\n- Browser state persists between calls; Python variables do not. Each `exec` is a fresh interpreter against the same live browser.\n- `--session \u003Cname>` isolates artifact dirs and event logs per workstream (default: `default`). `--timeout \u003Csecs>` bounds one exec (default 300).\n\n## Screenshots — how you see the page\n\n`capture_screenshot()` saves a PNG and returns its absolute path. The CLI also prints a `Screenshot saved to \u003Cpath>` line for every image a script produced.\n\n```bash\nbrowser-use-terminal browser exec \u003C\u003C'PY'\nprint(capture_screenshot())\nPY\n```\n\nTo view a screenshot, use your file-reading tool on the printed path:\n\n- **Claude Code**: use the `Read` tool on the path.\n- **Codex CLI**: call the `view_image` tool with `{\"path\": \"\u003Cpath>\"}`. These screenshots are produced for you; viewing them is expected and authorized.\n- **OpenCode**: use the `read` tool on the path (requires a vision-capable model).\n- **Gemini CLI**: use the `read_file` tool on the path.\n- If your model cannot accept images, don't try to view them — work from text state instead: `print(page_info())`, `js(...)` extraction, `wait_for_element(...)`.\n\nCoordinates: screenshots are device pixels; `click_at_xy(x, y)` takes CSS pixels. Divide coordinates you read off the image by `js(\"window.devicePixelRatio\")` first. Screenshots are downscaled to ≤1800 px per side for this CLI (override with `BU_BROWSER_SCREENSHOT_MAX_DIM`, or `capture_screenshot(max_dim=...)`).\n\nAfter every meaningful action, re-screenshot before assuming it worked.\n\n## Pre-imported helpers\n\nNavigation & tabs: `goto_url(url)`, `new_tab(url)`, `page_info()`, `current_tab()`, `list_tabs(include_chrome=True)`, `switch_tab(target)`, `ensure_real_tab()`, `iframe_target(url_substr)`.\n\nInput: `click_at_xy(x, y, button=\"left\", clicks=1)`, `type_text(text)`, `press_key(key, modifiers=0)` (1=Alt 2=Ctrl 4=Meta 8=Shift), `fill_input(selector, text)`, `scroll(x=0, y=0, dy=600)`, `upload_file(selector, path)`.\n\nWaiting: `wait(seconds)`, `wait_for_load(timeout=3)`, `wait_for_element(selector, timeout=3, visible=False)`, `wait_for_network_idle(timeout=3, idle_ms=500)`.\n\nVisual: `capture_screenshot(label=\"...\", full=False, max_dim=None)`, `screenshot()`, `screenshot_clip(label, x, y, w, h)`, `note(caption)`.\n\nEscape hatches: `js(expression)` (auto-wraps top-level `return`), `cdp(\"Domain.method\", **params)` (raw CDP), `cdp_batch(calls)`, `drain_events()`.\n\nHTTP without the browser: `http_get(url)`, `http_get_many(urls)` for static pages; `browser_fetch(url)` \u002F `browser_fetch_many(...)` to fetch with the page's cookies\u002Fsession.\n\nCredentials (if the user stored any): `available_secrets()`, then `type_text(\"\u003Csecret>name\u003C\u002Fsecret>\")` or `fill_input(sel, secret(\"name\"))`; `totp(\"name\")` for 2FA codes. Values are placeholder-substituted — you never see them. `is_logged_out()`, `email_inbox()` \u002F `email_message(id)` for email-code flows.\n\nDomain skills: `domain_skills_for_url(url_or_domain, include_content=True)` lists site-specific playbooks; `goto_url` surfaces matching skill files automatically. Read them before inventing selectors or flows on a complex site.\n\n## Browser control plane\n\n```bash\nbrowser-use-terminal browser status --json\nbrowser-use-terminal browser connect                     # uses the remembered preference\nbrowser-use-terminal browser connect local               # user's already-running Chrome (CDP)\nbrowser-use-terminal browser connect managed --headless  # disposable CLI-owned browser\nbrowser-use-terminal browser preference use local|cloud|managed-headless\nbrowser-use-terminal browser remote start                # Browser Use cloud browser (needs BROWSER_USE_API_KEY)\nbrowser-use-terminal browser doctor\nbrowser-use-terminal browser recover reconnect-websocket\nbrowser-use-terminal browser recover stop-owned-browser  # stop the persistent managed browser\nbrowser-use-terminal browser recover stop-owned-remote   # stop the cloud browser (stops billing)\nbrowser-use-terminal browser daemon status|stop|logs     # the background daemon holding the connection\n```\n\nA background daemon (auto-started, one per state dir) holds the CDP connection across your commands, so the browser — and in local mode, Chrome's granted debugging permission — persists between invocations. Managed and cloud browsers also survive daemon restarts; later calls reattach instead of relaunching. Stop browsers with the recover commands above when the user is done (cloud browsers bill until stopped or timed out).\n\n- `exec` auto-connects, so you rarely need these. Reach for them when `status` shows a problem or the user asks for a specific browser.\n- If output JSON says `status: \"needs-user-action\"` (e.g. pick a Chrome profile, click Allow in Chrome's permission popup, enable the remote-debugging checkbox), show the `user_prompt` to the user verbatim and wait — do not guess.\n- Auth wall mid-task: stop and ask the user. Don't type credentials from screenshots; use stored secrets if available.\n- Connecting to the user's real Chrome requires a one-time setup: `chrome:\u002F\u002Finspect\u002F#remote-debugging` → tick \"Allow remote debugging\". `browser local setup` walks the user through it.\n\n## What actually works\n\n- Screenshots first: `capture_screenshot()` → view the image → decide whether you need a click, a selector, or more navigation.\n- Clicking: screenshot → read the pixel off the image → `click_at_xy(x, y)` → screenshot to verify. Suppress the locate-then-click reflex — no getBoundingClientRect, no selector hunts. Hit-testing happens in Chrome's browser process, so coordinate clicks pass through iframes \u002F shadow DOM \u002F cross-origin without extra work.\n- Drop to DOM (`fill_input`, `js`) only when the target has no visible geometry (hidden input, 0×0 node) or coordinate clicks demonstrably don't work.\n- Bulk static pages: `http_get_many(urls)` — no browser needed. Logged-in pages: `browser_fetch(url)` rides the real session.\n- After goto: `wait_for_load()`. SPAs report `complete` before they render — follow with `wait_for_element(...)`.\n- Wrong\u002Fstale tab: `ensure_real_tab()`.\n- Verification: `print(page_info())` is the cheapest \"is this alive?\" check; screenshots are the default way to verify visible actions.\n\n## Gotchas (field-tested)\n\n- CDP target order ≠ Chrome's visible tab-strip order.\n- Omnibox popups and other `chrome:\u002F\u002F` internals are fake page targets — `list_tabs(include_chrome=False)`.\n- `page_info()` surfaces an open JS dialog as `{\"dialog\": ...}` — handle it (`cdp(\"Page.handleJavaScriptDialog\", accept=True)`) before anything else.\n- Navigation can be blocked by the user's domain policy; `nav_policy(url)` tells you before you burn a click. A blocked navigation is policy, not a bug — tell the user.\n- Scripts time out (default 300s): keep each `exec` small and observable rather than one mega-script. Long extraction loops: print progress as you go — stdout is captured even on timeout.\n- Prefer compositor-level actions over framework hacks. If you do need framework-specific DOM tricks, run `browser-use-terminal browser domain skills --domain \u003Csite> --json --include-content` first — that's where site playbooks live.\n",{"data":39,"body":40},{"name":4,"description":6},{"type":41,"children":42},"root",[43,51,75,95,102,182,258,264,283,328,333,443,480,485,491,550,598,631,664,707,743,802,823,829,1140,1145,1213,1219,1335,1341,1433],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":50},"text","Browser Use Terminal",{"type":44,"tag":52,"props":53,"children":54},"p",{},[55,57,65,67,73],{"type":49,"value":56},"Direct browser control via CDP — you are the agent; you drive the browser. For setup, install, or connection problems, read ",{"type":44,"tag":58,"props":59,"children":63},"a",{"href":60,"rel":61},"https:\u002F\u002Fbrowser-use.com\u002Fskill",[62],"nofollow",[64],{"type":49,"value":60},{"type":49,"value":66}," (agent setup instructions) or ",{"type":44,"tag":58,"props":68,"children":71},{"href":69,"rel":70},"https:\u002F\u002Fdocs.browser-use.com\u002Fopen-source\u002Fbrowser-use-terminal",[62],[72],{"type":49,"value":69},{"type":49,"value":74}," (full docs).",{"type":44,"tag":52,"props":76,"children":77},{},[78,85,87,93],{"type":44,"tag":79,"props":80,"children":82},"code",{"className":81},[],[83],{"type":49,"value":84},"browser-use-terminal browser exec",{"type":49,"value":86}," runs Python with browser helpers pre-imported; ",{"type":44,"tag":79,"props":88,"children":90},{"className":89},[],[91],{"type":49,"value":92},"browser-use-terminal browser \u003Ccmd>",{"type":49,"value":94}," is the control plane (status, connect, profiles, recovery).",{"type":44,"tag":96,"props":97,"children":99},"h2",{"id":98},"usage",[100],{"type":49,"value":101},"Usage",{"type":44,"tag":103,"props":104,"children":109},"pre",{"className":105,"code":106,"language":107,"meta":108,"style":108},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","browser-use-terminal browser exec \u003C\u003C'PY'\nnew_tab(\"https:\u002F\u002Fdocs.browser-use.com\")\nwait_for_load()\nprint(page_info())\nPY\n","bash","",[110],{"type":44,"tag":79,"props":111,"children":112},{"__ignoreMap":108},[113,146,155,164,173],{"type":44,"tag":114,"props":115,"children":118},"span",{"class":116,"line":117},"line",1,[119,124,130,135,141],{"type":44,"tag":114,"props":120,"children":122},{"style":121},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[123],{"type":49,"value":4},{"type":44,"tag":114,"props":125,"children":127},{"style":126},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[128],{"type":49,"value":129}," browser",{"type":44,"tag":114,"props":131,"children":132},{"style":126},[133],{"type":49,"value":134}," exec",{"type":44,"tag":114,"props":136,"children":138},{"style":137},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[139],{"type":49,"value":140}," \u003C\u003C",{"type":44,"tag":114,"props":142,"children":143},{"style":137},[144],{"type":49,"value":145},"'PY'\n",{"type":44,"tag":114,"props":147,"children":149},{"class":116,"line":148},2,[150],{"type":44,"tag":114,"props":151,"children":152},{"style":126},[153],{"type":49,"value":154},"new_tab(\"https:\u002F\u002Fdocs.browser-use.com\")\n",{"type":44,"tag":114,"props":156,"children":158},{"class":116,"line":157},3,[159],{"type":44,"tag":114,"props":160,"children":161},{"style":126},[162],{"type":49,"value":163},"wait_for_load()\n",{"type":44,"tag":114,"props":165,"children":167},{"class":116,"line":166},4,[168],{"type":44,"tag":114,"props":169,"children":170},{"style":126},[171],{"type":49,"value":172},"print(page_info())\n",{"type":44,"tag":114,"props":174,"children":176},{"class":116,"line":175},5,[177],{"type":44,"tag":114,"props":178,"children":179},{"style":137},[180],{"type":49,"value":181},"PY\n",{"type":44,"tag":183,"props":184,"children":185},"ul",{},[186,192,197,218,231],{"type":44,"tag":187,"props":188,"children":189},"li",{},[190],{"type":49,"value":191},"Use the heredoc form for every multi-line command. It prevents shell quote mangling inside Python strings and JavaScript snippets.",{"type":44,"tag":187,"props":193,"children":194},{},[195],{"type":49,"value":196},"The browser auto-connects according to the user's remembered preference before the script runs — you never start\u002Fstop manually unless you want to. The first call may take a few seconds.",{"type":44,"tag":187,"props":198,"children":199},{},[200,202,208,210,216],{"type":49,"value":201},"First navigation in the user's real Chrome is ",{"type":44,"tag":79,"props":203,"children":205},{"className":204},[],[206],{"type":49,"value":207},"new_tab(url)",{"type":49,"value":209},", not ",{"type":44,"tag":79,"props":211,"children":213},{"className":212},[],[214],{"type":49,"value":215},"goto_url(url)",{"type":49,"value":217}," — goto runs in the user's active tab and clobbers their work.",{"type":44,"tag":187,"props":219,"children":220},{},[221,223,229],{"type":49,"value":222},"Browser state persists between calls; Python variables do not. Each ",{"type":44,"tag":79,"props":224,"children":226},{"className":225},[],[227],{"type":49,"value":228},"exec",{"type":49,"value":230}," is a fresh interpreter against the same live browser.",{"type":44,"tag":187,"props":232,"children":233},{},[234,240,242,248,250,256],{"type":44,"tag":79,"props":235,"children":237},{"className":236},[],[238],{"type":49,"value":239},"--session \u003Cname>",{"type":49,"value":241}," isolates artifact dirs and event logs per workstream (default: ",{"type":44,"tag":79,"props":243,"children":245},{"className":244},[],[246],{"type":49,"value":247},"default",{"type":49,"value":249},"). ",{"type":44,"tag":79,"props":251,"children":253},{"className":252},[],[254],{"type":49,"value":255},"--timeout \u003Csecs>",{"type":49,"value":257}," bounds one exec (default 300).",{"type":44,"tag":96,"props":259,"children":261},{"id":260},"screenshots-how-you-see-the-page",[262],{"type":49,"value":263},"Screenshots — how you see the page",{"type":44,"tag":52,"props":265,"children":266},{},[267,273,275,281],{"type":44,"tag":79,"props":268,"children":270},{"className":269},[],[271],{"type":49,"value":272},"capture_screenshot()",{"type":49,"value":274}," saves a PNG and returns its absolute path. The CLI also prints a ",{"type":44,"tag":79,"props":276,"children":278},{"className":277},[],[279],{"type":49,"value":280},"Screenshot saved to \u003Cpath>",{"type":49,"value":282}," line for every image a script produced.",{"type":44,"tag":103,"props":284,"children":286},{"className":105,"code":285,"language":107,"meta":108,"style":108},"browser-use-terminal browser exec \u003C\u003C'PY'\nprint(capture_screenshot())\nPY\n",[287],{"type":44,"tag":79,"props":288,"children":289},{"__ignoreMap":108},[290,313,321],{"type":44,"tag":114,"props":291,"children":292},{"class":116,"line":117},[293,297,301,305,309],{"type":44,"tag":114,"props":294,"children":295},{"style":121},[296],{"type":49,"value":4},{"type":44,"tag":114,"props":298,"children":299},{"style":126},[300],{"type":49,"value":129},{"type":44,"tag":114,"props":302,"children":303},{"style":126},[304],{"type":49,"value":134},{"type":44,"tag":114,"props":306,"children":307},{"style":137},[308],{"type":49,"value":140},{"type":44,"tag":114,"props":310,"children":311},{"style":137},[312],{"type":49,"value":145},{"type":44,"tag":114,"props":314,"children":315},{"class":116,"line":148},[316],{"type":44,"tag":114,"props":317,"children":318},{"style":126},[319],{"type":49,"value":320},"print(capture_screenshot())\n",{"type":44,"tag":114,"props":322,"children":323},{"class":116,"line":157},[324],{"type":44,"tag":114,"props":325,"children":326},{"style":137},[327],{"type":49,"value":181},{"type":44,"tag":52,"props":329,"children":330},{},[331],{"type":49,"value":332},"To view a screenshot, use your file-reading tool on the printed path:",{"type":44,"tag":183,"props":334,"children":335},{},[336,355,381,398,414],{"type":44,"tag":187,"props":337,"children":338},{},[339,345,347,353],{"type":44,"tag":340,"props":341,"children":342},"strong",{},[343],{"type":49,"value":344},"Claude Code",{"type":49,"value":346},": use the ",{"type":44,"tag":79,"props":348,"children":350},{"className":349},[],[351],{"type":49,"value":352},"Read",{"type":49,"value":354}," tool on the path.",{"type":44,"tag":187,"props":356,"children":357},{},[358,363,365,371,373,379],{"type":44,"tag":340,"props":359,"children":360},{},[361],{"type":49,"value":362},"Codex CLI",{"type":49,"value":364},": call the ",{"type":44,"tag":79,"props":366,"children":368},{"className":367},[],[369],{"type":49,"value":370},"view_image",{"type":49,"value":372}," tool with ",{"type":44,"tag":79,"props":374,"children":376},{"className":375},[],[377],{"type":49,"value":378},"{\"path\": \"\u003Cpath>\"}",{"type":49,"value":380},". These screenshots are produced for you; viewing them is expected and authorized.",{"type":44,"tag":187,"props":382,"children":383},{},[384,389,390,396],{"type":44,"tag":340,"props":385,"children":386},{},[387],{"type":49,"value":388},"OpenCode",{"type":49,"value":346},{"type":44,"tag":79,"props":391,"children":393},{"className":392},[],[394],{"type":49,"value":395},"read",{"type":49,"value":397}," tool on the path (requires a vision-capable model).",{"type":44,"tag":187,"props":399,"children":400},{},[401,406,407,413],{"type":44,"tag":340,"props":402,"children":403},{},[404],{"type":49,"value":405},"Gemini CLI",{"type":49,"value":346},{"type":44,"tag":79,"props":408,"children":410},{"className":409},[],[411],{"type":49,"value":412},"read_file",{"type":49,"value":354},{"type":44,"tag":187,"props":415,"children":416},{},[417,419,425,427,433,435,441],{"type":49,"value":418},"If your model cannot accept images, don't try to view them — work from text state instead: ",{"type":44,"tag":79,"props":420,"children":422},{"className":421},[],[423],{"type":49,"value":424},"print(page_info())",{"type":49,"value":426},", ",{"type":44,"tag":79,"props":428,"children":430},{"className":429},[],[431],{"type":49,"value":432},"js(...)",{"type":49,"value":434}," extraction, ",{"type":44,"tag":79,"props":436,"children":438},{"className":437},[],[439],{"type":49,"value":440},"wait_for_element(...)",{"type":49,"value":442},".",{"type":44,"tag":52,"props":444,"children":445},{},[446,448,454,456,462,464,470,472,478],{"type":49,"value":447},"Coordinates: screenshots are device pixels; ",{"type":44,"tag":79,"props":449,"children":451},{"className":450},[],[452],{"type":49,"value":453},"click_at_xy(x, y)",{"type":49,"value":455}," takes CSS pixels. Divide coordinates you read off the image by ",{"type":44,"tag":79,"props":457,"children":459},{"className":458},[],[460],{"type":49,"value":461},"js(\"window.devicePixelRatio\")",{"type":49,"value":463}," first. Screenshots are downscaled to ≤1800 px per side for this CLI (override with ",{"type":44,"tag":79,"props":465,"children":467},{"className":466},[],[468],{"type":49,"value":469},"BU_BROWSER_SCREENSHOT_MAX_DIM",{"type":49,"value":471},", or ",{"type":44,"tag":79,"props":473,"children":475},{"className":474},[],[476],{"type":49,"value":477},"capture_screenshot(max_dim=...)",{"type":49,"value":479},").",{"type":44,"tag":52,"props":481,"children":482},{},[483],{"type":49,"value":484},"After every meaningful action, re-screenshot before assuming it worked.",{"type":44,"tag":96,"props":486,"children":488},{"id":487},"pre-imported-helpers",[489],{"type":49,"value":490},"Pre-imported helpers",{"type":44,"tag":52,"props":492,"children":493},{},[494,496,501,502,507,508,514,515,521,522,528,529,535,536,542,543,549],{"type":49,"value":495},"Navigation & tabs: ",{"type":44,"tag":79,"props":497,"children":499},{"className":498},[],[500],{"type":49,"value":215},{"type":49,"value":426},{"type":44,"tag":79,"props":503,"children":505},{"className":504},[],[506],{"type":49,"value":207},{"type":49,"value":426},{"type":44,"tag":79,"props":509,"children":511},{"className":510},[],[512],{"type":49,"value":513},"page_info()",{"type":49,"value":426},{"type":44,"tag":79,"props":516,"children":518},{"className":517},[],[519],{"type":49,"value":520},"current_tab()",{"type":49,"value":426},{"type":44,"tag":79,"props":523,"children":525},{"className":524},[],[526],{"type":49,"value":527},"list_tabs(include_chrome=True)",{"type":49,"value":426},{"type":44,"tag":79,"props":530,"children":532},{"className":531},[],[533],{"type":49,"value":534},"switch_tab(target)",{"type":49,"value":426},{"type":44,"tag":79,"props":537,"children":539},{"className":538},[],[540],{"type":49,"value":541},"ensure_real_tab()",{"type":49,"value":426},{"type":44,"tag":79,"props":544,"children":546},{"className":545},[],[547],{"type":49,"value":548},"iframe_target(url_substr)",{"type":49,"value":442},{"type":44,"tag":52,"props":551,"children":552},{},[553,555,561,562,568,569,575,577,583,584,590,591,597],{"type":49,"value":554},"Input: ",{"type":44,"tag":79,"props":556,"children":558},{"className":557},[],[559],{"type":49,"value":560},"click_at_xy(x, y, button=\"left\", clicks=1)",{"type":49,"value":426},{"type":44,"tag":79,"props":563,"children":565},{"className":564},[],[566],{"type":49,"value":567},"type_text(text)",{"type":49,"value":426},{"type":44,"tag":79,"props":570,"children":572},{"className":571},[],[573],{"type":49,"value":574},"press_key(key, modifiers=0)",{"type":49,"value":576}," (1=Alt 2=Ctrl 4=Meta 8=Shift), ",{"type":44,"tag":79,"props":578,"children":580},{"className":579},[],[581],{"type":49,"value":582},"fill_input(selector, text)",{"type":49,"value":426},{"type":44,"tag":79,"props":585,"children":587},{"className":586},[],[588],{"type":49,"value":589},"scroll(x=0, y=0, dy=600)",{"type":49,"value":426},{"type":44,"tag":79,"props":592,"children":594},{"className":593},[],[595],{"type":49,"value":596},"upload_file(selector, path)",{"type":49,"value":442},{"type":44,"tag":52,"props":599,"children":600},{},[601,603,609,610,616,617,623,624,630],{"type":49,"value":602},"Waiting: ",{"type":44,"tag":79,"props":604,"children":606},{"className":605},[],[607],{"type":49,"value":608},"wait(seconds)",{"type":49,"value":426},{"type":44,"tag":79,"props":611,"children":613},{"className":612},[],[614],{"type":49,"value":615},"wait_for_load(timeout=3)",{"type":49,"value":426},{"type":44,"tag":79,"props":618,"children":620},{"className":619},[],[621],{"type":49,"value":622},"wait_for_element(selector, timeout=3, visible=False)",{"type":49,"value":426},{"type":44,"tag":79,"props":625,"children":627},{"className":626},[],[628],{"type":49,"value":629},"wait_for_network_idle(timeout=3, idle_ms=500)",{"type":49,"value":442},{"type":44,"tag":52,"props":632,"children":633},{},[634,636,642,643,649,650,656,657,663],{"type":49,"value":635},"Visual: ",{"type":44,"tag":79,"props":637,"children":639},{"className":638},[],[640],{"type":49,"value":641},"capture_screenshot(label=\"...\", full=False, max_dim=None)",{"type":49,"value":426},{"type":44,"tag":79,"props":644,"children":646},{"className":645},[],[647],{"type":49,"value":648},"screenshot()",{"type":49,"value":426},{"type":44,"tag":79,"props":651,"children":653},{"className":652},[],[654],{"type":49,"value":655},"screenshot_clip(label, x, y, w, h)",{"type":49,"value":426},{"type":44,"tag":79,"props":658,"children":660},{"className":659},[],[661],{"type":49,"value":662},"note(caption)",{"type":49,"value":442},{"type":44,"tag":52,"props":665,"children":666},{},[667,669,675,677,683,685,691,693,699,700,706],{"type":49,"value":668},"Escape hatches: ",{"type":44,"tag":79,"props":670,"children":672},{"className":671},[],[673],{"type":49,"value":674},"js(expression)",{"type":49,"value":676}," (auto-wraps top-level ",{"type":44,"tag":79,"props":678,"children":680},{"className":679},[],[681],{"type":49,"value":682},"return",{"type":49,"value":684},"), ",{"type":44,"tag":79,"props":686,"children":688},{"className":687},[],[689],{"type":49,"value":690},"cdp(\"Domain.method\", **params)",{"type":49,"value":692}," (raw CDP), ",{"type":44,"tag":79,"props":694,"children":696},{"className":695},[],[697],{"type":49,"value":698},"cdp_batch(calls)",{"type":49,"value":426},{"type":44,"tag":79,"props":701,"children":703},{"className":702},[],[704],{"type":49,"value":705},"drain_events()",{"type":49,"value":442},{"type":44,"tag":52,"props":708,"children":709},{},[710,712,718,719,725,727,733,735,741],{"type":49,"value":711},"HTTP without the browser: ",{"type":44,"tag":79,"props":713,"children":715},{"className":714},[],[716],{"type":49,"value":717},"http_get(url)",{"type":49,"value":426},{"type":44,"tag":79,"props":720,"children":722},{"className":721},[],[723],{"type":49,"value":724},"http_get_many(urls)",{"type":49,"value":726}," for static pages; ",{"type":44,"tag":79,"props":728,"children":730},{"className":729},[],[731],{"type":49,"value":732},"browser_fetch(url)",{"type":49,"value":734}," \u002F ",{"type":44,"tag":79,"props":736,"children":738},{"className":737},[],[739],{"type":49,"value":740},"browser_fetch_many(...)",{"type":49,"value":742}," to fetch with the page's cookies\u002Fsession.",{"type":44,"tag":52,"props":744,"children":745},{},[746,748,754,756,762,764,770,772,778,780,786,787,793,794,800],{"type":49,"value":747},"Credentials (if the user stored any): ",{"type":44,"tag":79,"props":749,"children":751},{"className":750},[],[752],{"type":49,"value":753},"available_secrets()",{"type":49,"value":755},", then ",{"type":44,"tag":79,"props":757,"children":759},{"className":758},[],[760],{"type":49,"value":761},"type_text(\"\u003Csecret>name\u003C\u002Fsecret>\")",{"type":49,"value":763}," or ",{"type":44,"tag":79,"props":765,"children":767},{"className":766},[],[768],{"type":49,"value":769},"fill_input(sel, secret(\"name\"))",{"type":49,"value":771},"; ",{"type":44,"tag":79,"props":773,"children":775},{"className":774},[],[776],{"type":49,"value":777},"totp(\"name\")",{"type":49,"value":779}," for 2FA codes. Values are placeholder-substituted — you never see them. ",{"type":44,"tag":79,"props":781,"children":783},{"className":782},[],[784],{"type":49,"value":785},"is_logged_out()",{"type":49,"value":426},{"type":44,"tag":79,"props":788,"children":790},{"className":789},[],[791],{"type":49,"value":792},"email_inbox()",{"type":49,"value":734},{"type":44,"tag":79,"props":795,"children":797},{"className":796},[],[798],{"type":49,"value":799},"email_message(id)",{"type":49,"value":801}," for email-code flows.",{"type":44,"tag":52,"props":803,"children":804},{},[805,807,813,815,821],{"type":49,"value":806},"Domain skills: ",{"type":44,"tag":79,"props":808,"children":810},{"className":809},[],[811],{"type":49,"value":812},"domain_skills_for_url(url_or_domain, include_content=True)",{"type":49,"value":814}," lists site-specific playbooks; ",{"type":44,"tag":79,"props":816,"children":818},{"className":817},[],[819],{"type":49,"value":820},"goto_url",{"type":49,"value":822}," surfaces matching skill files automatically. Read them before inventing selectors or flows on a complex site.",{"type":44,"tag":96,"props":824,"children":826},{"id":825},"browser-control-plane",[827],{"type":49,"value":828},"Browser control plane",{"type":44,"tag":103,"props":830,"children":832},{"className":105,"code":831,"language":107,"meta":108,"style":108},"browser-use-terminal browser status --json\nbrowser-use-terminal browser connect                     # uses the remembered preference\nbrowser-use-terminal browser connect local               # user's already-running Chrome (CDP)\nbrowser-use-terminal browser connect managed --headless  # disposable CLI-owned browser\nbrowser-use-terminal browser preference use local|cloud|managed-headless\nbrowser-use-terminal browser remote start                # Browser Use cloud browser (needs BROWSER_USE_API_KEY)\nbrowser-use-terminal browser doctor\nbrowser-use-terminal browser recover reconnect-websocket\nbrowser-use-terminal browser recover stop-owned-browser  # stop the persistent managed browser\nbrowser-use-terminal browser recover stop-owned-remote   # stop the cloud browser (stops billing)\nbrowser-use-terminal browser daemon status|stop|logs     # the background daemon holding the connection\n",[833],{"type":44,"tag":79,"props":834,"children":835},{"__ignoreMap":108},[836,857,879,904,934,978,1005,1022,1044,1070,1096],{"type":44,"tag":114,"props":837,"children":838},{"class":116,"line":117},[839,843,847,852],{"type":44,"tag":114,"props":840,"children":841},{"style":121},[842],{"type":49,"value":4},{"type":44,"tag":114,"props":844,"children":845},{"style":126},[846],{"type":49,"value":129},{"type":44,"tag":114,"props":848,"children":849},{"style":126},[850],{"type":49,"value":851}," status",{"type":44,"tag":114,"props":853,"children":854},{"style":126},[855],{"type":49,"value":856}," --json\n",{"type":44,"tag":114,"props":858,"children":859},{"class":116,"line":148},[860,864,868,873],{"type":44,"tag":114,"props":861,"children":862},{"style":121},[863],{"type":49,"value":4},{"type":44,"tag":114,"props":865,"children":866},{"style":126},[867],{"type":49,"value":129},{"type":44,"tag":114,"props":869,"children":870},{"style":126},[871],{"type":49,"value":872}," connect",{"type":44,"tag":114,"props":874,"children":876},{"style":875},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[877],{"type":49,"value":878},"                     # uses the remembered preference\n",{"type":44,"tag":114,"props":880,"children":881},{"class":116,"line":157},[882,886,890,894,899],{"type":44,"tag":114,"props":883,"children":884},{"style":121},[885],{"type":49,"value":4},{"type":44,"tag":114,"props":887,"children":888},{"style":126},[889],{"type":49,"value":129},{"type":44,"tag":114,"props":891,"children":892},{"style":126},[893],{"type":49,"value":872},{"type":44,"tag":114,"props":895,"children":896},{"style":126},[897],{"type":49,"value":898}," local",{"type":44,"tag":114,"props":900,"children":901},{"style":875},[902],{"type":49,"value":903},"               # user's already-running Chrome (CDP)\n",{"type":44,"tag":114,"props":905,"children":906},{"class":116,"line":166},[907,911,915,919,924,929],{"type":44,"tag":114,"props":908,"children":909},{"style":121},[910],{"type":49,"value":4},{"type":44,"tag":114,"props":912,"children":913},{"style":126},[914],{"type":49,"value":129},{"type":44,"tag":114,"props":916,"children":917},{"style":126},[918],{"type":49,"value":872},{"type":44,"tag":114,"props":920,"children":921},{"style":126},[922],{"type":49,"value":923}," managed",{"type":44,"tag":114,"props":925,"children":926},{"style":126},[927],{"type":49,"value":928}," --headless",{"type":44,"tag":114,"props":930,"children":931},{"style":875},[932],{"type":49,"value":933},"  # disposable CLI-owned browser\n",{"type":44,"tag":114,"props":935,"children":936},{"class":116,"line":175},[937,941,945,950,955,959,964,969,973],{"type":44,"tag":114,"props":938,"children":939},{"style":121},[940],{"type":49,"value":4},{"type":44,"tag":114,"props":942,"children":943},{"style":126},[944],{"type":49,"value":129},{"type":44,"tag":114,"props":946,"children":947},{"style":126},[948],{"type":49,"value":949}," preference",{"type":44,"tag":114,"props":951,"children":952},{"style":126},[953],{"type":49,"value":954}," use",{"type":44,"tag":114,"props":956,"children":957},{"style":126},[958],{"type":49,"value":898},{"type":44,"tag":114,"props":960,"children":961},{"style":137},[962],{"type":49,"value":963},"|",{"type":44,"tag":114,"props":965,"children":966},{"style":121},[967],{"type":49,"value":968},"cloud",{"type":44,"tag":114,"props":970,"children":971},{"style":137},[972],{"type":49,"value":963},{"type":44,"tag":114,"props":974,"children":975},{"style":121},[976],{"type":49,"value":977},"managed-headless\n",{"type":44,"tag":114,"props":979,"children":981},{"class":116,"line":980},6,[982,986,990,995,1000],{"type":44,"tag":114,"props":983,"children":984},{"style":121},[985],{"type":49,"value":4},{"type":44,"tag":114,"props":987,"children":988},{"style":126},[989],{"type":49,"value":129},{"type":44,"tag":114,"props":991,"children":992},{"style":126},[993],{"type":49,"value":994}," remote",{"type":44,"tag":114,"props":996,"children":997},{"style":126},[998],{"type":49,"value":999}," start",{"type":44,"tag":114,"props":1001,"children":1002},{"style":875},[1003],{"type":49,"value":1004},"                # Browser Use cloud browser (needs BROWSER_USE_API_KEY)\n",{"type":44,"tag":114,"props":1006,"children":1008},{"class":116,"line":1007},7,[1009,1013,1017],{"type":44,"tag":114,"props":1010,"children":1011},{"style":121},[1012],{"type":49,"value":4},{"type":44,"tag":114,"props":1014,"children":1015},{"style":126},[1016],{"type":49,"value":129},{"type":44,"tag":114,"props":1018,"children":1019},{"style":126},[1020],{"type":49,"value":1021}," doctor\n",{"type":44,"tag":114,"props":1023,"children":1025},{"class":116,"line":1024},8,[1026,1030,1034,1039],{"type":44,"tag":114,"props":1027,"children":1028},{"style":121},[1029],{"type":49,"value":4},{"type":44,"tag":114,"props":1031,"children":1032},{"style":126},[1033],{"type":49,"value":129},{"type":44,"tag":114,"props":1035,"children":1036},{"style":126},[1037],{"type":49,"value":1038}," recover",{"type":44,"tag":114,"props":1040,"children":1041},{"style":126},[1042],{"type":49,"value":1043}," reconnect-websocket\n",{"type":44,"tag":114,"props":1045,"children":1047},{"class":116,"line":1046},9,[1048,1052,1056,1060,1065],{"type":44,"tag":114,"props":1049,"children":1050},{"style":121},[1051],{"type":49,"value":4},{"type":44,"tag":114,"props":1053,"children":1054},{"style":126},[1055],{"type":49,"value":129},{"type":44,"tag":114,"props":1057,"children":1058},{"style":126},[1059],{"type":49,"value":1038},{"type":44,"tag":114,"props":1061,"children":1062},{"style":126},[1063],{"type":49,"value":1064}," stop-owned-browser",{"type":44,"tag":114,"props":1066,"children":1067},{"style":875},[1068],{"type":49,"value":1069},"  # stop the persistent managed browser\n",{"type":44,"tag":114,"props":1071,"children":1073},{"class":116,"line":1072},10,[1074,1078,1082,1086,1091],{"type":44,"tag":114,"props":1075,"children":1076},{"style":121},[1077],{"type":49,"value":4},{"type":44,"tag":114,"props":1079,"children":1080},{"style":126},[1081],{"type":49,"value":129},{"type":44,"tag":114,"props":1083,"children":1084},{"style":126},[1085],{"type":49,"value":1038},{"type":44,"tag":114,"props":1087,"children":1088},{"style":126},[1089],{"type":49,"value":1090}," stop-owned-remote",{"type":44,"tag":114,"props":1092,"children":1093},{"style":875},[1094],{"type":49,"value":1095},"   # stop the cloud browser (stops billing)\n",{"type":44,"tag":114,"props":1097,"children":1099},{"class":116,"line":1098},11,[1100,1104,1108,1113,1117,1121,1126,1130,1135],{"type":44,"tag":114,"props":1101,"children":1102},{"style":121},[1103],{"type":49,"value":4},{"type":44,"tag":114,"props":1105,"children":1106},{"style":126},[1107],{"type":49,"value":129},{"type":44,"tag":114,"props":1109,"children":1110},{"style":126},[1111],{"type":49,"value":1112}," daemon",{"type":44,"tag":114,"props":1114,"children":1115},{"style":126},[1116],{"type":49,"value":851},{"type":44,"tag":114,"props":1118,"children":1119},{"style":137},[1120],{"type":49,"value":963},{"type":44,"tag":114,"props":1122,"children":1123},{"style":121},[1124],{"type":49,"value":1125},"stop",{"type":44,"tag":114,"props":1127,"children":1128},{"style":137},[1129],{"type":49,"value":963},{"type":44,"tag":114,"props":1131,"children":1132},{"style":121},[1133],{"type":49,"value":1134},"logs",{"type":44,"tag":114,"props":1136,"children":1137},{"style":875},[1138],{"type":49,"value":1139},"     # the background daemon holding the connection\n",{"type":44,"tag":52,"props":1141,"children":1142},{},[1143],{"type":49,"value":1144},"A background daemon (auto-started, one per state dir) holds the CDP connection across your commands, so the browser — and in local mode, Chrome's granted debugging permission — persists between invocations. Managed and cloud browsers also survive daemon restarts; later calls reattach instead of relaunching. Stop browsers with the recover commands above when the user is done (cloud browsers bill until stopped or timed out).",{"type":44,"tag":183,"props":1146,"children":1147},{},[1148,1166,1187,1192],{"type":44,"tag":187,"props":1149,"children":1150},{},[1151,1156,1158,1164],{"type":44,"tag":79,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":49,"value":228},{"type":49,"value":1157}," auto-connects, so you rarely need these. Reach for them when ",{"type":44,"tag":79,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":49,"value":1163},"status",{"type":49,"value":1165}," shows a problem or the user asks for a specific browser.",{"type":44,"tag":187,"props":1167,"children":1168},{},[1169,1171,1177,1179,1185],{"type":49,"value":1170},"If output JSON says ",{"type":44,"tag":79,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":49,"value":1176},"status: \"needs-user-action\"",{"type":49,"value":1178}," (e.g. pick a Chrome profile, click Allow in Chrome's permission popup, enable the remote-debugging checkbox), show the ",{"type":44,"tag":79,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":49,"value":1184},"user_prompt",{"type":49,"value":1186}," to the user verbatim and wait — do not guess.",{"type":44,"tag":187,"props":1188,"children":1189},{},[1190],{"type":49,"value":1191},"Auth wall mid-task: stop and ask the user. Don't type credentials from screenshots; use stored secrets if available.",{"type":44,"tag":187,"props":1193,"children":1194},{},[1195,1197,1203,1205,1211],{"type":49,"value":1196},"Connecting to the user's real Chrome requires a one-time setup: ",{"type":44,"tag":79,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":49,"value":1202},"chrome:\u002F\u002Finspect\u002F#remote-debugging",{"type":49,"value":1204}," → tick \"Allow remote debugging\". ",{"type":44,"tag":79,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":49,"value":1210},"browser local setup",{"type":49,"value":1212}," walks the user through it.",{"type":44,"tag":96,"props":1214,"children":1216},{"id":1215},"what-actually-works",[1217],{"type":49,"value":1218},"What actually works",{"type":44,"tag":183,"props":1220,"children":1221},{},[1222,1234,1246,1266,1285,1312,1323],{"type":44,"tag":187,"props":1223,"children":1224},{},[1225,1227,1232],{"type":49,"value":1226},"Screenshots first: ",{"type":44,"tag":79,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":49,"value":272},{"type":49,"value":1233}," → view the image → decide whether you need a click, a selector, or more navigation.",{"type":44,"tag":187,"props":1235,"children":1236},{},[1237,1239,1244],{"type":49,"value":1238},"Clicking: screenshot → read the pixel off the image → ",{"type":44,"tag":79,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":49,"value":453},{"type":49,"value":1245}," → screenshot to verify. Suppress the locate-then-click reflex — no getBoundingClientRect, no selector hunts. Hit-testing happens in Chrome's browser process, so coordinate clicks pass through iframes \u002F shadow DOM \u002F cross-origin without extra work.",{"type":44,"tag":187,"props":1247,"children":1248},{},[1249,1251,1257,1258,1264],{"type":49,"value":1250},"Drop to DOM (",{"type":44,"tag":79,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":49,"value":1256},"fill_input",{"type":49,"value":426},{"type":44,"tag":79,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":49,"value":1263},"js",{"type":49,"value":1265},") only when the target has no visible geometry (hidden input, 0×0 node) or coordinate clicks demonstrably don't work.",{"type":44,"tag":187,"props":1267,"children":1268},{},[1269,1271,1276,1278,1283],{"type":49,"value":1270},"Bulk static pages: ",{"type":44,"tag":79,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":49,"value":724},{"type":49,"value":1277}," — no browser needed. Logged-in pages: ",{"type":44,"tag":79,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":49,"value":732},{"type":49,"value":1284}," rides the real session.",{"type":44,"tag":187,"props":1286,"children":1287},{},[1288,1290,1296,1298,1304,1306,1311],{"type":49,"value":1289},"After goto: ",{"type":44,"tag":79,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":49,"value":1295},"wait_for_load()",{"type":49,"value":1297},". SPAs report ",{"type":44,"tag":79,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":49,"value":1303},"complete",{"type":49,"value":1305}," before they render — follow with ",{"type":44,"tag":79,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":49,"value":440},{"type":49,"value":442},{"type":44,"tag":187,"props":1313,"children":1314},{},[1315,1317,1322],{"type":49,"value":1316},"Wrong\u002Fstale tab: ",{"type":44,"tag":79,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":49,"value":541},{"type":49,"value":442},{"type":44,"tag":187,"props":1324,"children":1325},{},[1326,1328,1333],{"type":49,"value":1327},"Verification: ",{"type":44,"tag":79,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":49,"value":424},{"type":49,"value":1334}," is the cheapest \"is this alive?\" check; screenshots are the default way to verify visible actions.",{"type":44,"tag":96,"props":1336,"children":1338},{"id":1337},"gotchas-field-tested",[1339],{"type":49,"value":1340},"Gotchas (field-tested)",{"type":44,"tag":183,"props":1342,"children":1343},{},[1344,1349,1369,1395,1408,1420],{"type":44,"tag":187,"props":1345,"children":1346},{},[1347],{"type":49,"value":1348},"CDP target order ≠ Chrome's visible tab-strip order.",{"type":44,"tag":187,"props":1350,"children":1351},{},[1352,1354,1360,1362,1368],{"type":49,"value":1353},"Omnibox popups and other ",{"type":44,"tag":79,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":49,"value":1359},"chrome:\u002F\u002F",{"type":49,"value":1361}," internals are fake page targets — ",{"type":44,"tag":79,"props":1363,"children":1365},{"className":1364},[],[1366],{"type":49,"value":1367},"list_tabs(include_chrome=False)",{"type":49,"value":442},{"type":44,"tag":187,"props":1370,"children":1371},{},[1372,1377,1379,1385,1387,1393],{"type":44,"tag":79,"props":1373,"children":1375},{"className":1374},[],[1376],{"type":49,"value":513},{"type":49,"value":1378}," surfaces an open JS dialog as ",{"type":44,"tag":79,"props":1380,"children":1382},{"className":1381},[],[1383],{"type":49,"value":1384},"{\"dialog\": ...}",{"type":49,"value":1386}," — handle it (",{"type":44,"tag":79,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":49,"value":1392},"cdp(\"Page.handleJavaScriptDialog\", accept=True)",{"type":49,"value":1394},") before anything else.",{"type":44,"tag":187,"props":1396,"children":1397},{},[1398,1400,1406],{"type":49,"value":1399},"Navigation can be blocked by the user's domain policy; ",{"type":44,"tag":79,"props":1401,"children":1403},{"className":1402},[],[1404],{"type":49,"value":1405},"nav_policy(url)",{"type":49,"value":1407}," tells you before you burn a click. A blocked navigation is policy, not a bug — tell the user.",{"type":44,"tag":187,"props":1409,"children":1410},{},[1411,1413,1418],{"type":49,"value":1412},"Scripts time out (default 300s): keep each ",{"type":44,"tag":79,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":49,"value":228},{"type":49,"value":1419}," small and observable rather than one mega-script. Long extraction loops: print progress as you go — stdout is captured even on timeout.",{"type":44,"tag":187,"props":1421,"children":1422},{},[1423,1425,1431],{"type":49,"value":1424},"Prefer compositor-level actions over framework hacks. If you do need framework-specific DOM tricks, run ",{"type":44,"tag":79,"props":1426,"children":1428},{"className":1427},[],[1429],{"type":49,"value":1430},"browser-use-terminal browser domain skills --domain \u003Csite> --json --include-content",{"type":49,"value":1432}," first — that's where site playbooks live.",{"type":44,"tag":1434,"props":1435,"children":1436},"style",{},[1437],{"type":49,"value":1438},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1440,"total":117},[1441],{"slug":4,"name":4,"fn":5,"description":6,"org":1442,"tags":1443,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1444,1445,1446,1447],{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"items":1449,"total":1624},[1450,1465,1476,1486,1497,1516,1537,1550,1557,1572,1596,1607],{"slug":8,"name":8,"fn":1451,"description":1452,"org":1453,"tags":1454,"stars":1462,"repoUrl":1463,"updatedAt":1464},"automate browser interactions","Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site\u002Fapp work.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1455,1458,1459],{"name":1456,"slug":1457,"type":15},"Automation","automation",{"name":23,"slug":24,"type":15},{"name":1460,"slug":1461,"type":15},"Web Scraping","web-scraping",106789,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowser-use","2026-07-28T05:35:58.143842",{"slug":968,"name":968,"fn":1466,"description":1467,"org":1468,"tags":1469,"stars":1462,"repoUrl":1463,"updatedAt":1475},"use Browser Use Cloud API","Documentation reference for using Browser Use Cloud — the hosted API and SDK for browser automation. Use this skill whenever the user needs help with the Cloud REST API (v2 or v3), browser-use-sdk (Python or TypeScript), X-Browser-Use-API-Key authentication, cloud sessions, browser profiles, profile sync, CDP WebSocket connections, stealth browsers, residential proxies, CAPTCHA handling, webhooks, workspaces, skills marketplace, liveUrl streaming, pricing, or integration patterns (chat UI, subagent, adding browser tools to existing agents). Also trigger for questions about n8n\u002FMake\u002FZapier integration, Playwright\u002F Puppeteer\u002FSelenium on cloud infrastructure, or 1Password vault integration. Do NOT use this for the open-source Python library (Agent, Browser, Tools config) — use the open-source skill instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1470,1471,1472],{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":1473,"slug":1474,"type":15},"REST API","rest-api","2026-04-06T18:06:10.225871",{"slug":1477,"name":1477,"fn":1478,"description":1479,"org":1480,"tags":1481,"stars":1462,"repoUrl":1463,"updatedAt":1485},"open-source","write browser-use Python code","Documentation reference for writing Python code using the browser-use open-source library. Use this skill whenever the user needs help with Agent, Browser, or Tools configuration, is writing code that imports from browser_use, asks about @sandbox deployment, supported LLM models, Actor API, custom tools, lifecycle hooks, MCP server setup, or monitoring\u002Fobservability with Laminar or OpenLIT. Also trigger for questions about browser-use installation, prompting strategies, or sensitive data handling. Do NOT use this for Cloud API\u002FSDK usage or pricing — use the cloud skill instead. Do NOT use this for directly automating a browser via CLI commands — use the browser-use skill instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1482,1483,1484],{"name":1456,"slug":1457,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},"2026-04-06T18:06:14.102374",{"slug":1487,"name":1487,"fn":1488,"description":1489,"org":1490,"tags":1491,"stars":1462,"repoUrl":1463,"updatedAt":1496},"remote-browser","control a local browser from a sandbox","Controls a local browser from a sandboxed remote machine. Use when the agent is running in a sandbox (no GUI) and needs to navigate websites, interact with web pages, fill forms, take screenshots, or expose local dev servers via tunnels.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1492,1493],{"name":23,"slug":24,"type":15},{"name":1494,"slug":1495,"type":15},"Sandboxing","sandboxing","2026-04-06T18:06:12.842351",{"slug":1498,"name":1498,"fn":1499,"description":1500,"org":1501,"tags":1502,"stars":1462,"repoUrl":1463,"updatedAt":1515},"x402","configure x402 payments for Browser Use Cloud","Set up Browser Use Cloud payments with x402 — pay per request from a crypto wallet (USDC on Base mainnet), no signup or API key. Two setups it works out up front — \"just use it\" (set up a wallet so you or Claude Code can run cloud browser tasks paid from the wallet — Claude writes and runs throwaway scripts, nothing touches your codebase) or \"build it in\" (install the SDK and write the key + code into your project). Walks through wallet setup, funding, .env, and a ~$1 test run. Use when the user asks about x402, pay-per-use, USDC payments, or wants Browser Use Cloud without an API key. For the free-tier signup (reverse-CAPTCHA → API key), use `browser-use cloud signup` or the `cloud` skill instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1503,1504,1507,1508,1511,1514],{"name":1456,"slug":1457,"type":15},{"name":1505,"slug":1506,"type":15},"Base","base",{"name":23,"slug":24,"type":15},{"name":1509,"slug":1510,"type":15},"Payments","payments",{"name":1512,"slug":1513,"type":15},"Web3","web3",{"name":1498,"slug":1498,"type":15},"2026-06-02T07:51:20.889935",{"slug":1517,"name":1517,"fn":1518,"description":1519,"org":1520,"tags":1521,"stars":1534,"repoUrl":1535,"updatedAt":1536},"manim-video","create technical animations with Manim","Production pipeline for mathematical and technical animations using Manim Community Edition. Creates 3Blue1Brown-style explainer videos, algorithm visualizations, equation derivations, architecture diagrams, and data stories. Use when users request: animated explanations, math animations, concept visualizations, algorithm walkthroughs, technical explainers, 3Blue1Brown style videos, or any programmatic animation with geometric\u002Fmathematical content.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1522,1525,1528,1531],{"name":1523,"slug":1524,"type":15},"Animation","animation",{"name":1526,"slug":1527,"type":15},"Creative","creative",{"name":1529,"slug":1530,"type":15},"Mathematics","mathematics",{"name":1532,"slug":1533,"type":15},"Video","video",17171,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fvideo-use","2026-04-16T05:01:44.229054",{"slug":1538,"name":1538,"fn":1539,"description":1540,"org":1541,"tags":1542,"stars":1534,"repoUrl":1535,"updatedAt":1549},"video-use","edit and process videos via conversation","Edit any video by conversation. Transcribe, cut, color grade, generate overlay animations, burn subtitles — for talking heads, montages, tutorials, travel, interviews. No presets, no menus. Ask questions, confirm the plan, execute, iterate, persist. Production-correctness rules are hard; everything else is artistic freedom.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1543,1544,1545,1548],{"name":1523,"slug":1524,"type":15},{"name":1526,"slug":1527,"type":15},{"name":1546,"slug":1547,"type":15},"Transcription","transcription",{"name":1532,"slug":1533,"type":15},"2026-04-16T12:17:10.522375",{"slug":4,"name":4,"fn":5,"description":6,"org":1551,"tags":1552,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1553,1554,1555,1556],{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":31,"name":31,"fn":1558,"description":1559,"org":1560,"tags":1561,"stars":1569,"repoUrl":1570,"updatedAt":1571},"drive Chrome via DevTools Protocol","Drive Chrome via the DevTools Protocol from JavaScript. Run JS snippets through the `browser-harness-js` CLI — it auto-spawns a long-lived bun HTTP server holding a fully-typed CDP `Session`, and every call (`browser-harness-js 'await session.Page.navigate(...)'`) executes against the same persistent connection. Session, active target, and globals survive across calls. Use when the user wants to automate, script, or inspect a Chrome browser via CDP — single tab or multi-tab, attach to existing Chrome or to a new one launched with --remote-debugging-port.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1562,1563,1566],{"name":23,"slug":24,"type":15},{"name":1564,"slug":1565,"type":15},"JavaScript","javascript",{"name":1567,"slug":1568,"type":15},"Testing","testing",473,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowser-harness-js","2026-04-21T04:55:40.331082",{"slug":1573,"name":1573,"fn":1574,"description":1575,"org":1576,"tags":1577,"stars":1593,"repoUrl":1594,"updatedAt":1595},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1578,1581,1584,1587,1590],{"name":1579,"slug":1580,"type":15},"Agents","agents",{"name":1582,"slug":1583,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1585,"slug":1586,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":1588,"slug":1589,"type":15},"SDK","sdk",{"name":1591,"slug":1592,"type":15},"Serverless","serverless",255,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowsercode","2026-04-27T05:34:19.800431",{"slug":1597,"name":1597,"fn":1598,"description":1599,"org":1600,"tags":1601,"stars":1593,"repoUrl":1594,"updatedAt":1606},"browser-execute","execute browser automation tasks","Use ONLY when calling the `browser_execute` tool or driving a real browser via the Chrome DevTools Protocol. Required reading before the first `browser_execute` call in a session. Covers the three connection methods (local Chrome with remote debugging, isolated debug-port profile, Browser Use cloud), the in-process `session` \u002F `console` snippet model, attaching to a page target, common CDP commands, the per-project `.bcode\u002Fagent-workspace\u002F` for reusable scripts, and screenshot auto-attachment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1602,1603],{"name":23,"slug":24,"type":15},{"name":1604,"slug":1605,"type":15},"Debugging","debugging","2026-07-31T05:55:46.960752",{"slug":1608,"name":1608,"fn":1609,"description":1610,"org":1611,"tags":1612,"stars":1593,"repoUrl":1594,"updatedAt":1623},"cloudflare","manage Cloudflare platform resources","Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1613,1614,1616,1619,1622],{"name":1582,"slug":1583,"type":15},{"name":1615,"slug":1608,"type":15},"Cloudflare",{"name":1617,"slug":1618,"type":15},"Database","database",{"name":1620,"slug":1621,"type":15},"Security","security",{"name":1591,"slug":1592,"type":15},"2026-04-27T05:34:21.032189",13]