[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-browser-use-macos-harness":3,"mdc--qhtrim-key":43,"related-repo-browser-use-macos-harness":639,"related-org-browser-use-macos-harness":649},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":38,"sourceUrl":41,"mdContent":42},"macos-harness","control macOS desktop applications","Control a whole Mac from one persistent Python session with screenshots, PID-targeted input, an animated virtual pointer, targeted Apple Accessibility, Apple Events, Browser Harness CDP, and filesystem access. Use for native, Electron, browser, dialog, file, or cross-app tasks without moving the physical cursor or forcing apps into the foreground.",{"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,25],{"name":13,"slug":14,"type":15},"Accessibility","accessibility","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":20,"slug":21,"type":15},"macOS","macos",{"name":23,"slug":24,"type":15},"Desktop","desktop",{"name":26,"slug":27,"type":15},"Browser Automation","browser-automation",424,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fmacos-harness","2026-08-19T03:59:26.404323",null,25,[14,34,18,35,36,21,37],"agent","cdp","computer-use","python",{"repoUrl":29,"stars":28,"forks":32,"topics":39,"description":40},[14,34,18,35,36,21,37],"The simplest, thinnest harness that gives an LLM complete freedom to control a Mac.","https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fmacos-harness\u002Ftree\u002FHEAD\u002Fskills\u002Fmacos-harness","---\nname: macos-harness\ndescription: Control a whole Mac from one persistent Python session with screenshots, PID-targeted input, an animated virtual pointer, targeted Apple Accessibility, Apple Events, Browser Harness CDP, and filesystem access. Use for native, Electron, browser, dialog, file, or cross-app tasks without moving the physical cursor or forcing apps into the foreground.\n---\n\n# macOS Harness\n\nUse one CLI call per decision point, not per primitive:\n\n```bash\nmacos-harness \u003C\u003C'PY'\napp = \"Spotify\"\nmac.see(app)\nmac.key(\"cmd+k\", app=app)\nmac.type(\"Alessia Cara\", app=app)\nprint(mac.see(app))\nPY\n```\n\nThe CLI preloads `mac`, `browser`, `Path`, and `subprocess`. Prefer bounded stdin\nprograms; reserve `macos-harness repl` for manual exploration and always exit it.\n\n## Minimize round trips\n\n- Bundle deterministic, reversible steps into one program, then verify once. Opening\n  search, typing a query, and capturing the results is one burst—not three calls.\n- Stop at a genuine decision boundary: ambiguous identity, new coordinates, an\n  irreversible action, or unexpected state. Inspect once, then run the next burst.\n- Do not screenshot merely to confirm that a known shortcut opened a text field\n  before typing. Let the final screenshot verify the whole sequence.\n- Poll exact AX or Apple Events state inside the same Python program when possible;\n  do not make the LLM repeatedly ask whether a transition finished.\n- Use the cheapest strong end-state check. Prefer one screenshot for visible state\n  or one exact API\u002FAX query for semantic state; use both only when they prove\n  different things.\n\n## Use the small surface\n\nThink in six verbs: `see`, `key`, `type`, `click`, `ax`, `script`.\n\n```python\nframe = mac.see(\"Spotify\")\nmac.key(\"cmd+k\", app=\"Spotify\")\nmac.type(\"Alessia Cara\", app=\"Spotify\")\nmac.click(640, 420, app=\"Spotify\")\n\nitem = mac.ax.at(640, 420, app=\"Spotify\")\nmac.ax.perform(item[\"element_index\"], \"AXPress\")\n\nmac.script('tell application \"Spotify\" to play')\n```\n\nUse ordinary Python for local context and one-off logic. Do not add app-specific\nhelpers when a short program can resolve the task.\n\n## Choose the lowest useful mode\n\n1. When identity depends on local context (`my`, `friend`, or prior activity),\n   inspect that context and correlate stable fields; a loose text hit is not enough.\n2. Use `mac.script()` for a known exact, focus-safe app command.\n3. Otherwise use `mac.see(app)` and vision.\n4. Prefer a known keyboard route; use a verified coordinate for a visible,\n   low-risk target.\n5. Use targeted `mac.ax` only when semantic identity or state matters. Do not dump\n   a full AX tree before trying the direct route.\n\nAfter a failed verified burst, switch mode or stop. Never repair uncertainty with\nrepeated keys, clicks, deletion loops, or bulk input.\n\n## Keep the invariants\n\n- Input targets an already-running app PID and never requests activation or raise.\n- A background target becoming frontmost raises `FocusChangedError`; never\n  manipulate focus to restore it.\n- `mac.click()` is raw PID-targeted input. It never guesses an AX action.\n- The animated pointer is click-through and never moves the physical cursor.\n- `mac.move()` moves only that pointer; it cannot produce native hover.\n- Inactive apps may reject raw clicks. After one verified failure, switch mode.\n- Never launch a closed app or use a custom URL scheme when focus is forbidden.\n- Screenshot coordinates come from the latest `mac.see()` and preserve window\n  bounds and Retina scaling.\n\nSecondary primitives are `mac.move`, `drag`, `scroll`, `show_pointer`, and\n`hide_pointer`. `mac.ax.query()` returns compact matches and bounds fallback\ntraversal; lower `max_nodes` for especially large apps.\n\n## Browser and permissions\n\nUse `browser` for DOM, tabs, network, downloads, and uploads. Do not substitute AX\nfor CDP inside a web page. While Browser Harness connects, macOS Harness accepts\nChrome's exact `Allow remote debugging?` sheet through system-wide AX. It never\nactivates Chrome or emits a mouse event.\n\nRun `macos-harness doctor` to inspect permissions without prompting. Run\n`macos-harness doctor --request` only with user approval. Accessibility, screen\nrecording, and event posting are global; Apple Events Automation is per target.\n",{"data":44,"body":45},{"name":4,"description":6},{"type":46,"children":47},"root",[48,56,62,151,195,202,232,238,286,368,373,379,447,452,458,529,587,593,612,633],{"type":49,"tag":50,"props":51,"children":52},"element","h1",{"id":4},[53],{"type":54,"value":55},"text","macOS Harness",{"type":49,"tag":57,"props":58,"children":59},"p",{},[60],{"type":54,"value":61},"Use one CLI call per decision point, not per primitive:",{"type":49,"tag":63,"props":64,"children":69},"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","macos-harness \u003C\u003C'PY'\napp = \"Spotify\"\nmac.see(app)\nmac.key(\"cmd+k\", app=app)\nmac.type(\"Alessia Cara\", app=app)\nprint(mac.see(app))\nPY\n","bash","",[70],{"type":49,"tag":71,"props":72,"children":73},"code",{"__ignoreMap":68},[74,96,106,115,124,133,142],{"type":49,"tag":75,"props":76,"children":79},"span",{"class":77,"line":78},"line",1,[80,85,91],{"type":49,"tag":75,"props":81,"children":83},{"style":82},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[84],{"type":54,"value":4},{"type":49,"tag":75,"props":86,"children":88},{"style":87},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[89],{"type":54,"value":90}," \u003C\u003C",{"type":49,"tag":75,"props":92,"children":93},{"style":87},[94],{"type":54,"value":95},"'PY'\n",{"type":49,"tag":75,"props":97,"children":99},{"class":77,"line":98},2,[100],{"type":49,"tag":75,"props":101,"children":103},{"style":102},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[104],{"type":54,"value":105},"app = \"Spotify\"\n",{"type":49,"tag":75,"props":107,"children":109},{"class":77,"line":108},3,[110],{"type":49,"tag":75,"props":111,"children":112},{"style":102},[113],{"type":54,"value":114},"mac.see(app)\n",{"type":49,"tag":75,"props":116,"children":118},{"class":77,"line":117},4,[119],{"type":49,"tag":75,"props":120,"children":121},{"style":102},[122],{"type":54,"value":123},"mac.key(\"cmd+k\", app=app)\n",{"type":49,"tag":75,"props":125,"children":127},{"class":77,"line":126},5,[128],{"type":49,"tag":75,"props":129,"children":130},{"style":102},[131],{"type":54,"value":132},"mac.type(\"Alessia Cara\", app=app)\n",{"type":49,"tag":75,"props":134,"children":136},{"class":77,"line":135},6,[137],{"type":49,"tag":75,"props":138,"children":139},{"style":102},[140],{"type":54,"value":141},"print(mac.see(app))\n",{"type":49,"tag":75,"props":143,"children":145},{"class":77,"line":144},7,[146],{"type":49,"tag":75,"props":147,"children":148},{"style":87},[149],{"type":54,"value":150},"PY\n",{"type":49,"tag":57,"props":152,"children":153},{},[154,156,162,164,170,171,177,179,185,187,193],{"type":54,"value":155},"The CLI preloads ",{"type":49,"tag":71,"props":157,"children":159},{"className":158},[],[160],{"type":54,"value":161},"mac",{"type":54,"value":163},", ",{"type":49,"tag":71,"props":165,"children":167},{"className":166},[],[168],{"type":54,"value":169},"browser",{"type":54,"value":163},{"type":49,"tag":71,"props":172,"children":174},{"className":173},[],[175],{"type":54,"value":176},"Path",{"type":54,"value":178},", and ",{"type":49,"tag":71,"props":180,"children":182},{"className":181},[],[183],{"type":54,"value":184},"subprocess",{"type":54,"value":186},". Prefer bounded stdin\nprograms; reserve ",{"type":49,"tag":71,"props":188,"children":190},{"className":189},[],[191],{"type":54,"value":192},"macos-harness repl",{"type":54,"value":194}," for manual exploration and always exit it.",{"type":49,"tag":196,"props":197,"children":199},"h2",{"id":198},"minimize-round-trips",[200],{"type":54,"value":201},"Minimize round trips",{"type":49,"tag":203,"props":204,"children":205},"ul",{},[206,212,217,222,227],{"type":49,"tag":207,"props":208,"children":209},"li",{},[210],{"type":54,"value":211},"Bundle deterministic, reversible steps into one program, then verify once. Opening\nsearch, typing a query, and capturing the results is one burst—not three calls.",{"type":49,"tag":207,"props":213,"children":214},{},[215],{"type":54,"value":216},"Stop at a genuine decision boundary: ambiguous identity, new coordinates, an\nirreversible action, or unexpected state. Inspect once, then run the next burst.",{"type":49,"tag":207,"props":218,"children":219},{},[220],{"type":54,"value":221},"Do not screenshot merely to confirm that a known shortcut opened a text field\nbefore typing. Let the final screenshot verify the whole sequence.",{"type":49,"tag":207,"props":223,"children":224},{},[225],{"type":54,"value":226},"Poll exact AX or Apple Events state inside the same Python program when possible;\ndo not make the LLM repeatedly ask whether a transition finished.",{"type":49,"tag":207,"props":228,"children":229},{},[230],{"type":54,"value":231},"Use the cheapest strong end-state check. Prefer one screenshot for visible state\nor one exact API\u002FAX query for semantic state; use both only when they prove\ndifferent things.",{"type":49,"tag":196,"props":233,"children":235},{"id":234},"use-the-small-surface",[236],{"type":54,"value":237},"Use the small surface",{"type":49,"tag":57,"props":239,"children":240},{},[241,243,249,250,256,257,263,264,270,271,277,278,284],{"type":54,"value":242},"Think in six verbs: ",{"type":49,"tag":71,"props":244,"children":246},{"className":245},[],[247],{"type":54,"value":248},"see",{"type":54,"value":163},{"type":49,"tag":71,"props":251,"children":253},{"className":252},[],[254],{"type":54,"value":255},"key",{"type":54,"value":163},{"type":49,"tag":71,"props":258,"children":260},{"className":259},[],[261],{"type":54,"value":262},"type",{"type":54,"value":163},{"type":49,"tag":71,"props":265,"children":267},{"className":266},[],[268],{"type":54,"value":269},"click",{"type":54,"value":163},{"type":49,"tag":71,"props":272,"children":274},{"className":273},[],[275],{"type":54,"value":276},"ax",{"type":54,"value":163},{"type":49,"tag":71,"props":279,"children":281},{"className":280},[],[282],{"type":54,"value":283},"script",{"type":54,"value":285},".",{"type":49,"tag":63,"props":287,"children":290},{"className":288,"code":289,"language":37,"meta":68,"style":68},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","frame = mac.see(\"Spotify\")\nmac.key(\"cmd+k\", app=\"Spotify\")\nmac.type(\"Alessia Cara\", app=\"Spotify\")\nmac.click(640, 420, app=\"Spotify\")\n\nitem = mac.ax.at(640, 420, app=\"Spotify\")\nmac.ax.perform(item[\"element_index\"], \"AXPress\")\n\nmac.script('tell application \"Spotify\" to play')\n",[291],{"type":49,"tag":71,"props":292,"children":293},{"__ignoreMap":68},[294,302,310,318,326,335,343,351,359],{"type":49,"tag":75,"props":295,"children":296},{"class":77,"line":78},[297],{"type":49,"tag":75,"props":298,"children":299},{},[300],{"type":54,"value":301},"frame = mac.see(\"Spotify\")\n",{"type":49,"tag":75,"props":303,"children":304},{"class":77,"line":98},[305],{"type":49,"tag":75,"props":306,"children":307},{},[308],{"type":54,"value":309},"mac.key(\"cmd+k\", app=\"Spotify\")\n",{"type":49,"tag":75,"props":311,"children":312},{"class":77,"line":108},[313],{"type":49,"tag":75,"props":314,"children":315},{},[316],{"type":54,"value":317},"mac.type(\"Alessia Cara\", app=\"Spotify\")\n",{"type":49,"tag":75,"props":319,"children":320},{"class":77,"line":117},[321],{"type":49,"tag":75,"props":322,"children":323},{},[324],{"type":54,"value":325},"mac.click(640, 420, app=\"Spotify\")\n",{"type":49,"tag":75,"props":327,"children":328},{"class":77,"line":126},[329],{"type":49,"tag":75,"props":330,"children":332},{"emptyLinePlaceholder":331},true,[333],{"type":54,"value":334},"\n",{"type":49,"tag":75,"props":336,"children":337},{"class":77,"line":135},[338],{"type":49,"tag":75,"props":339,"children":340},{},[341],{"type":54,"value":342},"item = mac.ax.at(640, 420, app=\"Spotify\")\n",{"type":49,"tag":75,"props":344,"children":345},{"class":77,"line":144},[346],{"type":49,"tag":75,"props":347,"children":348},{},[349],{"type":54,"value":350},"mac.ax.perform(item[\"element_index\"], \"AXPress\")\n",{"type":49,"tag":75,"props":352,"children":354},{"class":77,"line":353},8,[355],{"type":49,"tag":75,"props":356,"children":357},{"emptyLinePlaceholder":331},[358],{"type":54,"value":334},{"type":49,"tag":75,"props":360,"children":362},{"class":77,"line":361},9,[363],{"type":49,"tag":75,"props":364,"children":365},{},[366],{"type":54,"value":367},"mac.script('tell application \"Spotify\" to play')\n",{"type":49,"tag":57,"props":369,"children":370},{},[371],{"type":54,"value":372},"Use ordinary Python for local context and one-off logic. Do not add app-specific\nhelpers when a short program can resolve the task.",{"type":49,"tag":196,"props":374,"children":376},{"id":375},"choose-the-lowest-useful-mode",[377],{"type":54,"value":378},"Choose the lowest useful mode",{"type":49,"tag":380,"props":381,"children":382},"ol",{},[383,403,416,429,434],{"type":49,"tag":207,"props":384,"children":385},{},[386,388,394,395,401],{"type":54,"value":387},"When identity depends on local context (",{"type":49,"tag":71,"props":389,"children":391},{"className":390},[],[392],{"type":54,"value":393},"my",{"type":54,"value":163},{"type":49,"tag":71,"props":396,"children":398},{"className":397},[],[399],{"type":54,"value":400},"friend",{"type":54,"value":402},", or prior activity),\ninspect that context and correlate stable fields; a loose text hit is not enough.",{"type":49,"tag":207,"props":404,"children":405},{},[406,408,414],{"type":54,"value":407},"Use ",{"type":49,"tag":71,"props":409,"children":411},{"className":410},[],[412],{"type":54,"value":413},"mac.script()",{"type":54,"value":415}," for a known exact, focus-safe app command.",{"type":49,"tag":207,"props":417,"children":418},{},[419,421,427],{"type":54,"value":420},"Otherwise use ",{"type":49,"tag":71,"props":422,"children":424},{"className":423},[],[425],{"type":54,"value":426},"mac.see(app)",{"type":54,"value":428}," and vision.",{"type":49,"tag":207,"props":430,"children":431},{},[432],{"type":54,"value":433},"Prefer a known keyboard route; use a verified coordinate for a visible,\nlow-risk target.",{"type":49,"tag":207,"props":435,"children":436},{},[437,439,445],{"type":54,"value":438},"Use targeted ",{"type":49,"tag":71,"props":440,"children":442},{"className":441},[],[443],{"type":54,"value":444},"mac.ax",{"type":54,"value":446}," only when semantic identity or state matters. Do not dump\na full AX tree before trying the direct route.",{"type":49,"tag":57,"props":448,"children":449},{},[450],{"type":54,"value":451},"After a failed verified burst, switch mode or stop. Never repair uncertainty with\nrepeated keys, clicks, deletion loops, or bulk input.",{"type":49,"tag":196,"props":453,"children":455},{"id":454},"keep-the-invariants",[456],{"type":54,"value":457},"Keep the invariants",{"type":49,"tag":203,"props":459,"children":460},{},[461,466,479,490,495,506,511,516],{"type":49,"tag":207,"props":462,"children":463},{},[464],{"type":54,"value":465},"Input targets an already-running app PID and never requests activation or raise.",{"type":49,"tag":207,"props":467,"children":468},{},[469,471,477],{"type":54,"value":470},"A background target becoming frontmost raises ",{"type":49,"tag":71,"props":472,"children":474},{"className":473},[],[475],{"type":54,"value":476},"FocusChangedError",{"type":54,"value":478},"; never\nmanipulate focus to restore it.",{"type":49,"tag":207,"props":480,"children":481},{},[482,488],{"type":49,"tag":71,"props":483,"children":485},{"className":484},[],[486],{"type":54,"value":487},"mac.click()",{"type":54,"value":489}," is raw PID-targeted input. It never guesses an AX action.",{"type":49,"tag":207,"props":491,"children":492},{},[493],{"type":54,"value":494},"The animated pointer is click-through and never moves the physical cursor.",{"type":49,"tag":207,"props":496,"children":497},{},[498,504],{"type":49,"tag":71,"props":499,"children":501},{"className":500},[],[502],{"type":54,"value":503},"mac.move()",{"type":54,"value":505}," moves only that pointer; it cannot produce native hover.",{"type":49,"tag":207,"props":507,"children":508},{},[509],{"type":54,"value":510},"Inactive apps may reject raw clicks. After one verified failure, switch mode.",{"type":49,"tag":207,"props":512,"children":513},{},[514],{"type":54,"value":515},"Never launch a closed app or use a custom URL scheme when focus is forbidden.",{"type":49,"tag":207,"props":517,"children":518},{},[519,521,527],{"type":54,"value":520},"Screenshot coordinates come from the latest ",{"type":49,"tag":71,"props":522,"children":524},{"className":523},[],[525],{"type":54,"value":526},"mac.see()",{"type":54,"value":528}," and preserve window\nbounds and Retina scaling.",{"type":49,"tag":57,"props":530,"children":531},{},[532,534,540,541,547,548,554,555,561,563,569,571,577,579,585],{"type":54,"value":533},"Secondary primitives are ",{"type":49,"tag":71,"props":535,"children":537},{"className":536},[],[538],{"type":54,"value":539},"mac.move",{"type":54,"value":163},{"type":49,"tag":71,"props":542,"children":544},{"className":543},[],[545],{"type":54,"value":546},"drag",{"type":54,"value":163},{"type":49,"tag":71,"props":549,"children":551},{"className":550},[],[552],{"type":54,"value":553},"scroll",{"type":54,"value":163},{"type":49,"tag":71,"props":556,"children":558},{"className":557},[],[559],{"type":54,"value":560},"show_pointer",{"type":54,"value":562},", and\n",{"type":49,"tag":71,"props":564,"children":566},{"className":565},[],[567],{"type":54,"value":568},"hide_pointer",{"type":54,"value":570},". ",{"type":49,"tag":71,"props":572,"children":574},{"className":573},[],[575],{"type":54,"value":576},"mac.ax.query()",{"type":54,"value":578}," returns compact matches and bounds fallback\ntraversal; lower ",{"type":49,"tag":71,"props":580,"children":582},{"className":581},[],[583],{"type":54,"value":584},"max_nodes",{"type":54,"value":586}," for especially large apps.",{"type":49,"tag":196,"props":588,"children":590},{"id":589},"browser-and-permissions",[591],{"type":54,"value":592},"Browser and permissions",{"type":49,"tag":57,"props":594,"children":595},{},[596,597,602,604,610],{"type":54,"value":407},{"type":49,"tag":71,"props":598,"children":600},{"className":599},[],[601],{"type":54,"value":169},{"type":54,"value":603}," for DOM, tabs, network, downloads, and uploads. Do not substitute AX\nfor CDP inside a web page. While Browser Harness connects, macOS Harness accepts\nChrome's exact ",{"type":49,"tag":71,"props":605,"children":607},{"className":606},[],[608],{"type":54,"value":609},"Allow remote debugging?",{"type":54,"value":611}," sheet through system-wide AX. It never\nactivates Chrome or emits a mouse event.",{"type":49,"tag":57,"props":613,"children":614},{},[615,617,623,625,631],{"type":54,"value":616},"Run ",{"type":49,"tag":71,"props":618,"children":620},{"className":619},[],[621],{"type":54,"value":622},"macos-harness doctor",{"type":54,"value":624}," to inspect permissions without prompting. Run\n",{"type":49,"tag":71,"props":626,"children":628},{"className":627},[],[629],{"type":54,"value":630},"macos-harness doctor --request",{"type":54,"value":632}," only with user approval. Accessibility, screen\nrecording, and event posting are global; Apple Events Automation is per target.",{"type":49,"tag":634,"props":635,"children":636},"style",{},[637],{"type":54,"value":638},"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":640,"total":78},[641],{"slug":4,"name":4,"fn":5,"description":6,"org":642,"tags":643,"stars":28,"repoUrl":29,"updatedAt":30},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[644,645,646,647,648],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":26,"slug":27,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"items":650,"total":826},[651,664,677,687,698,717,738,751,768,783,791,815],{"slug":8,"name":8,"fn":652,"description":653,"org":654,"tags":655,"stars":661,"repoUrl":662,"updatedAt":663},"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},[656,657,658],{"name":17,"slug":18,"type":15},{"name":26,"slug":27,"type":15},{"name":659,"slug":660,"type":15},"Web Scraping","web-scraping",106789,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowser-use","2026-08-19T03:33:11.866098",{"slug":665,"name":665,"fn":666,"description":667,"org":668,"tags":669,"stars":661,"repoUrl":662,"updatedAt":676},"cloud","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},[670,671,673],{"name":26,"slug":27,"type":15},{"name":672,"slug":37,"type":15},"Python",{"name":674,"slug":675,"type":15},"REST API","rest-api","2026-04-06T18:06:10.225871",{"slug":678,"name":678,"fn":679,"description":680,"org":681,"tags":682,"stars":661,"repoUrl":662,"updatedAt":686},"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},[683,684,685],{"name":17,"slug":18,"type":15},{"name":26,"slug":27,"type":15},{"name":672,"slug":37,"type":15},"2026-04-06T18:06:14.102374",{"slug":688,"name":688,"fn":689,"description":690,"org":691,"tags":692,"stars":661,"repoUrl":662,"updatedAt":697},"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},[693,694],{"name":26,"slug":27,"type":15},{"name":695,"slug":696,"type":15},"Sandboxing","sandboxing","2026-04-06T18:06:12.842351",{"slug":699,"name":699,"fn":700,"description":701,"org":702,"tags":703,"stars":661,"repoUrl":662,"updatedAt":716},"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},[704,705,708,709,712,715],{"name":17,"slug":18,"type":15},{"name":706,"slug":707,"type":15},"Base","base",{"name":26,"slug":27,"type":15},{"name":710,"slug":711,"type":15},"Payments","payments",{"name":713,"slug":714,"type":15},"Web3","web3",{"name":699,"slug":699,"type":15},"2026-06-02T07:51:20.889935",{"slug":718,"name":718,"fn":719,"description":720,"org":721,"tags":722,"stars":735,"repoUrl":736,"updatedAt":737},"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},[723,726,729,732],{"name":724,"slug":725,"type":15},"Animation","animation",{"name":727,"slug":728,"type":15},"Creative","creative",{"name":730,"slug":731,"type":15},"Mathematics","mathematics",{"name":733,"slug":734,"type":15},"Video","video",17171,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fvideo-use","2026-04-16T05:01:44.229054",{"slug":739,"name":739,"fn":740,"description":741,"org":742,"tags":743,"stars":735,"repoUrl":736,"updatedAt":750},"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},[744,745,746,749],{"name":724,"slug":725,"type":15},{"name":727,"slug":728,"type":15},{"name":747,"slug":748,"type":15},"Transcription","transcription",{"name":733,"slug":734,"type":15},"2026-04-16T12:17:10.522375",{"slug":752,"name":752,"fn":753,"description":754,"org":755,"tags":756,"stars":765,"repoUrl":766,"updatedAt":767},"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},[757,758,761,762],{"name":26,"slug":27,"type":15},{"name":759,"slug":760,"type":15},"CLI","cli",{"name":672,"slug":37,"type":15},{"name":763,"slug":764,"type":15},"Web Development","web-development",607,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fterminal","2026-06-12T08:15:38.34797",{"slug":35,"name":35,"fn":769,"description":770,"org":771,"tags":772,"stars":780,"repoUrl":781,"updatedAt":782},"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},[773,774,777],{"name":26,"slug":27,"type":15},{"name":775,"slug":776,"type":15},"JavaScript","javascript",{"name":778,"slug":779,"type":15},"Testing","testing",473,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowser-harness-js","2026-04-21T04:55:40.331082",{"slug":4,"name":4,"fn":5,"description":6,"org":784,"tags":785,"stars":28,"repoUrl":29,"updatedAt":30},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[786,787,788,789,790],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":26,"slug":27,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"slug":792,"name":792,"fn":793,"description":794,"org":795,"tags":796,"stars":812,"repoUrl":813,"updatedAt":814},"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},[797,800,803,806,809],{"name":798,"slug":799,"type":15},"Agents","agents",{"name":801,"slug":802,"type":15},"AI Infrastructure","ai-infrastructure",{"name":804,"slug":805,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":807,"slug":808,"type":15},"SDK","sdk",{"name":810,"slug":811,"type":15},"Serverless","serverless",255,"https:\u002F\u002Fgithub.com\u002Fbrowser-use\u002Fbrowsercode","2026-04-27T05:34:19.800431",{"slug":816,"name":816,"fn":817,"description":818,"org":819,"tags":820,"stars":812,"repoUrl":813,"updatedAt":825},"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},[821,822],{"name":26,"slug":27,"type":15},{"name":823,"slug":824,"type":15},"Debugging","debugging","2026-08-03T06:02:09.917194",15]