[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-browserbase-safe-browser":3,"mdc--9gljbs-key":34,"related-repo-browserbase-safe-browser":575,"related-org-browserbase-safe-browser":695},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"safe-browser","build safe browser agents with domain allowlists","Build local constrained-browser agents with a safe_browser tool that owns CDP, enforces a domain allowlist with Fetch interception, and lets a runtime Claude Agent SDK agent complete browsing tasks without raw browser, shell, or CDP access. Use when the user wants an agent to browse or scrape while staying on approved domains, demo blocked off-domain navigation, or generate a safe browser client.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"browserbase","Browserbase","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fbrowserbase.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Agents","agents",{"name":21,"slug":22,"type":15},"Browser Automation","browser-automation",3649,"https:\u002F\u002Fgithub.com\u002Fbrowserbase\u002Fskills","2026-05-06T05:41:20.783887","MIT",232,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Browserbase's official collection of agent skills to access the web.","https:\u002F\u002Fgithub.com\u002Fbrowserbase\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fsafe-browser","---\nname: safe-browser\ndescription: Build local constrained-browser agents with a safe_browser tool that owns CDP, enforces a domain allowlist with Fetch interception, and lets a runtime Claude Agent SDK agent complete browsing tasks without raw browser, shell, or CDP access. Use when the user wants an agent to browse or scrape while staying on approved domains, demo blocked off-domain navigation, or generate a safe browser client.\ncompatibility: \"Requires Node.js 18+, npm, and a local Chromium (`npx playwright install chromium`). The generated Claude Agent SDK runtime app needs ANTHROPIC_API_KEY.\"\nlicense: MIT\nallowed-tools: Bash, Read, Write, Edit\n---\n\n# Safe Browser\n\nBuild a local browser-agent demo where the generated runtime agent has exactly one browser capability: `safe_browser`. The tool owns the Playwright\u002FCDP session, enables `Fetch` interception for all requests, and fails any request whose host is not allowlisted.\n\nThis skill is a builder guide. The skill itself is not the runtime boundary; the generated Claude Agent SDK app is.\n\n## When to Use\n\n- The user asks for a browser agent that must stay on an allowlisted site.\n- The user wants to demonstrate prompt-injection or link-following containment.\n- The user asks to build a scraper or browser workflow with domain policy.\n- The user asks for a Claude Agent SDK example first. Keep OpenAI Agents SDK variants out unless requested.\n\n## Default Approach\n\nUse the Claude Agent SDK local template:\n\n```bash\ncp -R skills\u002Fsafe-browser\u002Ftemplates\u002Fclaude-agent-sdk \u002Ftmp\u002Fsafe-browser-demo\ncd \u002Ftmp\u002Fsafe-browser-demo\nnpm install\ncp ~\u002FDeveloper\u002Fscratchpad\u002F.env .env 2>\u002Fdev\u002Fnull || true\nnode hn-scraper-demo.mjs\n```\n\nTo watch the local browser instead of running headless:\n\n```bash\nSAFE_BROWSER_HEADLESS=false node hn-scraper-demo.mjs\n```\n\nIf Chromium is missing:\n\n```bash\nnpx playwright install chromium\n```\n\n## Runtime Shape\n\n```text\nUser task\n  -> coding agent uses this skill to create a demo app\n    -> Claude Agent SDK runtime agent\n      -> only tool: safe_browser\n        -> local Chromium\n        -> CDP Fetch.enable({ urlPattern: \"*\" })\n        -> allowlist decision\n          -> Fetch.continueRequest for allowed hosts\n          -> Fetch.failRequest for blocked hosts\n```\n\n## Tool Design Rules\n\nExpose constrained actions, not raw CDP:\n\n- `goto`: navigate to an absolute URL through `Page.navigate`.\n- `extract_front_page`: return structured data for the Hacker News front page.\n- `extract_comments`: return structured data for a Hacker News comments page.\n- `current_url`: report the current page URL.\n- `audit_log`: return CDP allow\u002Fblock decisions.\n\nDo not expose `{ method, params }` CDP passthrough. The agent must not be able to call `Fetch.disable`, create targets, attach new sessions, or run arbitrary shell\u002Fbrowser clients.\n\nFor the Hacker News demo, an accessibility snapshot is not necessary. Purpose-built extractors are easier to verify and harder to misuse than a broad page snapshot.\n\n## Verification Requirements\n\nAlways run the generated demo and show concrete output. A passing demo must prove:\n\n1. The runtime agent used `safe_browser`.\n2. It loaded `https:\u002F\u002Fnews.ycombinator.com`.\n3. It extracted at least one front-page story.\n4. It visited an internal HN comments URL.\n5. It attempted an off-domain story URL.\n6. CDP emitted `Fetch.requestPaused` for that URL.\n7. The firewall answered with `Fetch.failRequest`.\n8. The current browser URL stayed on `news.ycombinator.com`.\n9. Artifacts were written: result, audit log, and screenshot.\n\nThe template script already performs these assertions.\n\n## Notes\n\n- Default to local Chromium for now.\n- Use Browserbase remote mode only if the user explicitly asks.\n- Treat page content as untrusted. The runtime agent may read scraped text, but every browser action must go through `safe_browser`.\n- For a new task\u002Fsite, change the allowlist and replace the extractor actions with site-specific structured extractors.\n",{"data":35,"body":38},{"name":4,"description":6,"compatibility":36,"license":26,"allowed-tools":37},"Requires Node.js 18+, npm, and a local Chromium (`npx playwright install chromium`). The generated Claude Agent SDK runtime app needs ANTHROPIC_API_KEY.","Bash, Read, Write, Edit",{"type":39,"children":40},"root",[41,49,72,77,84,109,115,120,240,245,280,285,315,321,331,337,342,408,429,434,440,445,529,534,540,569],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Safe Browser",{"type":42,"tag":50,"props":51,"children":52},"p",{},[53,55,62,64,70],{"type":47,"value":54},"Build a local browser-agent demo where the generated runtime agent has exactly one browser capability: ",{"type":42,"tag":56,"props":57,"children":59},"code",{"className":58},[],[60],{"type":47,"value":61},"safe_browser",{"type":47,"value":63},". The tool owns the Playwright\u002FCDP session, enables ",{"type":42,"tag":56,"props":65,"children":67},{"className":66},[],[68],{"type":47,"value":69},"Fetch",{"type":47,"value":71}," interception for all requests, and fails any request whose host is not allowlisted.",{"type":42,"tag":50,"props":73,"children":74},{},[75],{"type":47,"value":76},"This skill is a builder guide. The skill itself is not the runtime boundary; the generated Claude Agent SDK app is.",{"type":42,"tag":78,"props":79,"children":81},"h2",{"id":80},"when-to-use",[82],{"type":47,"value":83},"When to Use",{"type":42,"tag":85,"props":86,"children":87},"ul",{},[88,94,99,104],{"type":42,"tag":89,"props":90,"children":91},"li",{},[92],{"type":47,"value":93},"The user asks for a browser agent that must stay on an allowlisted site.",{"type":42,"tag":89,"props":95,"children":96},{},[97],{"type":47,"value":98},"The user wants to demonstrate prompt-injection or link-following containment.",{"type":42,"tag":89,"props":100,"children":101},{},[102],{"type":47,"value":103},"The user asks to build a scraper or browser workflow with domain policy.",{"type":42,"tag":89,"props":105,"children":106},{},[107],{"type":47,"value":108},"The user asks for a Claude Agent SDK example first. Keep OpenAI Agents SDK variants out unless requested.",{"type":42,"tag":78,"props":110,"children":112},{"id":111},"default-approach",[113],{"type":47,"value":114},"Default Approach",{"type":42,"tag":50,"props":116,"children":117},{},[118],{"type":47,"value":119},"Use the Claude Agent SDK local template:",{"type":42,"tag":121,"props":122,"children":127},"pre",{"className":123,"code":124,"language":125,"meta":126,"style":126},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cp -R skills\u002Fsafe-browser\u002Ftemplates\u002Fclaude-agent-sdk \u002Ftmp\u002Fsafe-browser-demo\ncd \u002Ftmp\u002Fsafe-browser-demo\nnpm install\ncp ~\u002FDeveloper\u002Fscratchpad\u002F.env .env 2>\u002Fdev\u002Fnull || true\nnode hn-scraper-demo.mjs\n","bash","",[128],{"type":42,"tag":56,"props":129,"children":130},{"__ignoreMap":126},[131,159,173,187,226],{"type":42,"tag":132,"props":133,"children":136},"span",{"class":134,"line":135},"line",1,[137,143,149,154],{"type":42,"tag":132,"props":138,"children":140},{"style":139},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[141],{"type":47,"value":142},"cp",{"type":42,"tag":132,"props":144,"children":146},{"style":145},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[147],{"type":47,"value":148}," -R",{"type":42,"tag":132,"props":150,"children":151},{"style":145},[152],{"type":47,"value":153}," skills\u002Fsafe-browser\u002Ftemplates\u002Fclaude-agent-sdk",{"type":42,"tag":132,"props":155,"children":156},{"style":145},[157],{"type":47,"value":158}," \u002Ftmp\u002Fsafe-browser-demo\n",{"type":42,"tag":132,"props":160,"children":162},{"class":134,"line":161},2,[163,169],{"type":42,"tag":132,"props":164,"children":166},{"style":165},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[167],{"type":47,"value":168},"cd",{"type":42,"tag":132,"props":170,"children":171},{"style":145},[172],{"type":47,"value":158},{"type":42,"tag":132,"props":174,"children":176},{"class":134,"line":175},3,[177,182],{"type":42,"tag":132,"props":178,"children":179},{"style":139},[180],{"type":47,"value":181},"npm",{"type":42,"tag":132,"props":183,"children":184},{"style":145},[185],{"type":47,"value":186}," install\n",{"type":42,"tag":132,"props":188,"children":190},{"class":134,"line":189},4,[191,195,200,205,211,216,221],{"type":42,"tag":132,"props":192,"children":193},{"style":139},[194],{"type":47,"value":142},{"type":42,"tag":132,"props":196,"children":197},{"style":145},[198],{"type":47,"value":199}," ~\u002FDeveloper\u002Fscratchpad\u002F.env",{"type":42,"tag":132,"props":201,"children":202},{"style":145},[203],{"type":47,"value":204}," .env",{"type":42,"tag":132,"props":206,"children":208},{"style":207},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[209],{"type":47,"value":210}," 2>",{"type":42,"tag":132,"props":212,"children":213},{"style":145},[214],{"type":47,"value":215},"\u002Fdev\u002Fnull",{"type":42,"tag":132,"props":217,"children":218},{"style":207},[219],{"type":47,"value":220}," ||",{"type":42,"tag":132,"props":222,"children":223},{"style":165},[224],{"type":47,"value":225}," true\n",{"type":42,"tag":132,"props":227,"children":229},{"class":134,"line":228},5,[230,235],{"type":42,"tag":132,"props":231,"children":232},{"style":139},[233],{"type":47,"value":234},"node",{"type":42,"tag":132,"props":236,"children":237},{"style":145},[238],{"type":47,"value":239}," hn-scraper-demo.mjs\n",{"type":42,"tag":50,"props":241,"children":242},{},[243],{"type":47,"value":244},"To watch the local browser instead of running headless:",{"type":42,"tag":121,"props":246,"children":248},{"className":123,"code":247,"language":125,"meta":126,"style":126},"SAFE_BROWSER_HEADLESS=false node hn-scraper-demo.mjs\n",[249],{"type":42,"tag":56,"props":250,"children":251},{"__ignoreMap":126},[252],{"type":42,"tag":132,"props":253,"children":254},{"class":134,"line":135},[255,261,266,271,276],{"type":42,"tag":132,"props":256,"children":258},{"style":257},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[259],{"type":47,"value":260},"SAFE_BROWSER_HEADLESS",{"type":42,"tag":132,"props":262,"children":263},{"style":207},[264],{"type":47,"value":265},"=",{"type":42,"tag":132,"props":267,"children":268},{"style":145},[269],{"type":47,"value":270},"false",{"type":42,"tag":132,"props":272,"children":273},{"style":139},[274],{"type":47,"value":275}," node",{"type":42,"tag":132,"props":277,"children":278},{"style":145},[279],{"type":47,"value":239},{"type":42,"tag":50,"props":281,"children":282},{},[283],{"type":47,"value":284},"If Chromium is missing:",{"type":42,"tag":121,"props":286,"children":288},{"className":123,"code":287,"language":125,"meta":126,"style":126},"npx playwright install chromium\n",[289],{"type":42,"tag":56,"props":290,"children":291},{"__ignoreMap":126},[292],{"type":42,"tag":132,"props":293,"children":294},{"class":134,"line":135},[295,300,305,310],{"type":42,"tag":132,"props":296,"children":297},{"style":139},[298],{"type":47,"value":299},"npx",{"type":42,"tag":132,"props":301,"children":302},{"style":145},[303],{"type":47,"value":304}," playwright",{"type":42,"tag":132,"props":306,"children":307},{"style":145},[308],{"type":47,"value":309}," install",{"type":42,"tag":132,"props":311,"children":312},{"style":145},[313],{"type":47,"value":314}," chromium\n",{"type":42,"tag":78,"props":316,"children":318},{"id":317},"runtime-shape",[319],{"type":47,"value":320},"Runtime Shape",{"type":42,"tag":121,"props":322,"children":326},{"className":323,"code":325,"language":47,"meta":126},[324],"language-text","User task\n  -> coding agent uses this skill to create a demo app\n    -> Claude Agent SDK runtime agent\n      -> only tool: safe_browser\n        -> local Chromium\n        -> CDP Fetch.enable({ urlPattern: \"*\" })\n        -> allowlist decision\n          -> Fetch.continueRequest for allowed hosts\n          -> Fetch.failRequest for blocked hosts\n",[327],{"type":42,"tag":56,"props":328,"children":329},{"__ignoreMap":126},[330],{"type":47,"value":325},{"type":42,"tag":78,"props":332,"children":334},{"id":333},"tool-design-rules",[335],{"type":47,"value":336},"Tool Design Rules",{"type":42,"tag":50,"props":338,"children":339},{},[340],{"type":47,"value":341},"Expose constrained actions, not raw CDP:",{"type":42,"tag":85,"props":343,"children":344},{},[345,364,375,386,397],{"type":42,"tag":89,"props":346,"children":347},{},[348,354,356,362],{"type":42,"tag":56,"props":349,"children":351},{"className":350},[],[352],{"type":47,"value":353},"goto",{"type":47,"value":355},": navigate to an absolute URL through ",{"type":42,"tag":56,"props":357,"children":359},{"className":358},[],[360],{"type":47,"value":361},"Page.navigate",{"type":47,"value":363},".",{"type":42,"tag":89,"props":365,"children":366},{},[367,373],{"type":42,"tag":56,"props":368,"children":370},{"className":369},[],[371],{"type":47,"value":372},"extract_front_page",{"type":47,"value":374},": return structured data for the Hacker News front page.",{"type":42,"tag":89,"props":376,"children":377},{},[378,384],{"type":42,"tag":56,"props":379,"children":381},{"className":380},[],[382],{"type":47,"value":383},"extract_comments",{"type":47,"value":385},": return structured data for a Hacker News comments page.",{"type":42,"tag":89,"props":387,"children":388},{},[389,395],{"type":42,"tag":56,"props":390,"children":392},{"className":391},[],[393],{"type":47,"value":394},"current_url",{"type":47,"value":396},": report the current page URL.",{"type":42,"tag":89,"props":398,"children":399},{},[400,406],{"type":42,"tag":56,"props":401,"children":403},{"className":402},[],[404],{"type":47,"value":405},"audit_log",{"type":47,"value":407},": return CDP allow\u002Fblock decisions.",{"type":42,"tag":50,"props":409,"children":410},{},[411,413,419,421,427],{"type":47,"value":412},"Do not expose ",{"type":42,"tag":56,"props":414,"children":416},{"className":415},[],[417],{"type":47,"value":418},"{ method, params }",{"type":47,"value":420}," CDP passthrough. The agent must not be able to call ",{"type":42,"tag":56,"props":422,"children":424},{"className":423},[],[425],{"type":47,"value":426},"Fetch.disable",{"type":47,"value":428},", create targets, attach new sessions, or run arbitrary shell\u002Fbrowser clients.",{"type":42,"tag":50,"props":430,"children":431},{},[432],{"type":47,"value":433},"For the Hacker News demo, an accessibility snapshot is not necessary. Purpose-built extractors are easier to verify and harder to misuse than a broad page snapshot.",{"type":42,"tag":78,"props":435,"children":437},{"id":436},"verification-requirements",[438],{"type":47,"value":439},"Verification Requirements",{"type":42,"tag":50,"props":441,"children":442},{},[443],{"type":47,"value":444},"Always run the generated demo and show concrete output. A passing demo must prove:",{"type":42,"tag":446,"props":447,"children":448},"ol",{},[449,460,472,477,482,487,500,512,524],{"type":42,"tag":89,"props":450,"children":451},{},[452,454,459],{"type":47,"value":453},"The runtime agent used ",{"type":42,"tag":56,"props":455,"children":457},{"className":456},[],[458],{"type":47,"value":61},{"type":47,"value":363},{"type":42,"tag":89,"props":461,"children":462},{},[463,465,471],{"type":47,"value":464},"It loaded ",{"type":42,"tag":56,"props":466,"children":468},{"className":467},[],[469],{"type":47,"value":470},"https:\u002F\u002Fnews.ycombinator.com",{"type":47,"value":363},{"type":42,"tag":89,"props":473,"children":474},{},[475],{"type":47,"value":476},"It extracted at least one front-page story.",{"type":42,"tag":89,"props":478,"children":479},{},[480],{"type":47,"value":481},"It visited an internal HN comments URL.",{"type":42,"tag":89,"props":483,"children":484},{},[485],{"type":47,"value":486},"It attempted an off-domain story URL.",{"type":42,"tag":89,"props":488,"children":489},{},[490,492,498],{"type":47,"value":491},"CDP emitted ",{"type":42,"tag":56,"props":493,"children":495},{"className":494},[],[496],{"type":47,"value":497},"Fetch.requestPaused",{"type":47,"value":499}," for that URL.",{"type":42,"tag":89,"props":501,"children":502},{},[503,505,511],{"type":47,"value":504},"The firewall answered with ",{"type":42,"tag":56,"props":506,"children":508},{"className":507},[],[509],{"type":47,"value":510},"Fetch.failRequest",{"type":47,"value":363},{"type":42,"tag":89,"props":513,"children":514},{},[515,517,523],{"type":47,"value":516},"The current browser URL stayed on ",{"type":42,"tag":56,"props":518,"children":520},{"className":519},[],[521],{"type":47,"value":522},"news.ycombinator.com",{"type":47,"value":363},{"type":42,"tag":89,"props":525,"children":526},{},[527],{"type":47,"value":528},"Artifacts were written: result, audit log, and screenshot.",{"type":42,"tag":50,"props":530,"children":531},{},[532],{"type":47,"value":533},"The template script already performs these assertions.",{"type":42,"tag":78,"props":535,"children":537},{"id":536},"notes",[538],{"type":47,"value":539},"Notes",{"type":42,"tag":85,"props":541,"children":542},{},[543,548,553,564],{"type":42,"tag":89,"props":544,"children":545},{},[546],{"type":47,"value":547},"Default to local Chromium for now.",{"type":42,"tag":89,"props":549,"children":550},{},[551],{"type":47,"value":552},"Use Browserbase remote mode only if the user explicitly asks.",{"type":42,"tag":89,"props":554,"children":555},{},[556,558,563],{"type":47,"value":557},"Treat page content as untrusted. The runtime agent may read scraped text, but every browser action must go through ",{"type":42,"tag":56,"props":559,"children":561},{"className":560},[],[562],{"type":47,"value":61},{"type":47,"value":363},{"type":42,"tag":89,"props":565,"children":566},{},[567],{"type":47,"value":568},"For a new task\u002Fsite, change the allowlist and replace the extractor actions with site-specific structured extractors.",{"type":42,"tag":570,"props":571,"children":572},"style",{},[573],{"type":47,"value":574},"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":576,"total":694},[577,598,611,623,641,656,674],{"slug":578,"name":578,"fn":579,"description":580,"org":581,"tags":582,"stars":23,"repoUrl":24,"updatedAt":597},"agent-experience","audit developer experience with AI agents","Audit the developer experience of a product, SDK, docs site, or SKILL.md by dropping multiple Claude subagents at it with only a tiny task prompt and real tools (WebFetch, Bash, Write). Agents must discover the docs themselves, install deps, ask for credentials if needed, and attempt real execution. The skill captures each agent's trace — tool calls, retries, wall time, errors — and scores on Setup Friction, Speed, Efficiency, Error Recovery, and Doc Quality, then emits an HTML report with an A–F grade and concrete fixes. Use when the user asks to audit agent experience, test a skill, audit docs for agents, check if a SDK is agent-friendly, validate a SKILL.md, measure agent DX, or benchmark how painful onboarding is for an AI agent. Triggers: 'audit agent experience', 'test this skill', 'audit docs for agents', 'is my SDK agent-friendly', 'run a DX audit', 'agent experience test', 'test my docs', 'how do agents do with my product'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[583,584,587,588,591,594],{"name":18,"slug":19,"type":15},{"name":585,"slug":586,"type":15},"Audit","audit",{"name":9,"slug":8,"type":15},{"name":589,"slug":590,"type":15},"Engineering","engineering",{"name":592,"slug":593,"type":15},"Multi-Agent","multi-agent",{"name":595,"slug":596,"type":15},"QA","qa","2026-05-29T06:58:56.259807",{"slug":599,"name":599,"fn":600,"description":601,"org":602,"tags":603,"stars":23,"repoUrl":24,"updatedAt":610},"autobrowse","run self-improving browser automation","Self-improving browser automation via the auto-research loop. Iteratively runs a browsing task, reads the trace, and improves the navigation skill (strategy.md) until it reliably passes. Supports parallel runs across multiple tasks using sub-agents. Use when you want to build or improve browser automation skills for specific website tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[604,605,608,609],{"name":18,"slug":19,"type":15},{"name":606,"slug":607,"type":15},"Automation","automation",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-04-23T05:00:30.528336",{"slug":612,"name":612,"fn":613,"description":614,"org":615,"tags":616,"stars":23,"repoUrl":24,"updatedAt":622},"browser","automate browser interactions via CLI","Automate web browser interactions using natural language via CLI commands. Use when the user asks to browse websites, navigate web pages, extract data from websites, take screenshots, fill forms, click buttons, or interact with web applications. Supports remote Browserbase sessions with Browserbase Identity, Verified browsers, automatic CAPTCHA solving, and residential proxies — ideal for protected websites and JavaScript-heavy pages.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[617,618,619],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":620,"slug":621,"type":15},"CLI","cli","2026-04-06T18:06:22.005051",{"slug":624,"name":624,"fn":625,"description":626,"org":627,"tags":628,"stars":23,"repoUrl":24,"updatedAt":640},"browser-to-api","generate OpenAPI specs from browser traffic","Turn a website's observable HTTP traffic into a best-effort OpenAPI 3.1 spec by analyzing a `browser-trace` capture. Use when the user wants to discover\u002Fextract API endpoints from a browser session, build an OpenAPI doc from network traffic, or document a third-party site's XHR\u002Ffetch surface for client integration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[629,632,633,634,637],{"name":630,"slug":631,"type":15},"API Development","api-development",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":635,"slug":636,"type":15},"HTTP","http",{"name":638,"slug":639,"type":15},"OpenAPI","openapi","2026-05-14T06:07:27.298495",{"slug":642,"name":642,"fn":643,"description":644,"org":645,"tags":646,"stars":23,"repoUrl":24,"updatedAt":655},"browser-trace","capture and debug browser automation traces","Capture a full DevTools-protocol trace of any browser automation — CDP firehose, screenshots, and DOM dumps — then bisect the stream into per-page searchable buckets. Use when the user wants to debug a failed run, audit network\u002Fconsole\u002FDOM activity, attach a trace to an in-progress session, or feed structured per-page summaries back into an agent loop so its next iteration learns from the last one.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[647,648,649,652],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":650,"slug":651,"type":15},"Debugging","debugging",{"name":653,"slug":654,"type":15},"Observability","observability","2026-04-28T05:41:33.024656",{"slug":657,"name":657,"fn":658,"description":659,"org":660,"tags":661,"stars":23,"repoUrl":24,"updatedAt":673},"browser-use-to-stagehand","migrate browser-use scripts to Stagehand","Migrate browser-use (Python) browser-automation scripts to Stagehand v3 (TypeScript) on Browserbase. Use when the user wants to convert, port, rewrite, or migrate a browser-use Agent script to Stagehand, map browser-use features\u002FAPIs to Stagehand primitives (act\u002Fextract\u002Fobserve\u002Fagent), or move agentic browser automation onto Browserbase with more determinism. Triggers on \"browser-use\", \"browser_use\", or \"Agent(task=...)\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[662,663,664,667,670],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":665,"slug":666,"type":15},"Migration","migration",{"name":668,"slug":669,"type":15},"Python","python",{"name":671,"slug":672,"type":15},"TypeScript","typescript","2026-06-26T07:57:47.428249",{"slug":675,"name":675,"fn":676,"description":677,"org":678,"tags":679,"stars":23,"repoUrl":24,"updatedAt":693},"company-research","conduct deep company and product research","Company discovery and deep research skill. Researches a company's product and ICP,\ndiscovers target companies to sell to using Browserbase Search API, deeply researches\neach using a Plan→Research→Synthesize pattern, and scores ICP fit — compiled into\na scored research report and CSV. Supports depth modes (quick\u002Fdeep\u002Fdeeper) for\nbalancing scale vs intelligence.\nUse when the user wants to: (1) find companies to sell to, (2) research potential\ncustomers, (3) discover companies matching an ICP, (4) build a target company list,\n(5) do market research on prospects. Triggers: \"find companies to sell to\",\n\"company research\", \"find prospects\", \"ICP research\", \"target companies\",\n\"who should we sell to\", \"market research\", \"lead research\", \"prospect list\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[680,681,684,687,690],{"name":9,"slug":8,"type":15},{"name":682,"slug":683,"type":15},"Competitive Intelligence","competitive-intelligence",{"name":685,"slug":686,"type":15},"Marketing","marketing",{"name":688,"slug":689,"type":15},"Research","research",{"name":691,"slug":692,"type":15},"Sales","sales","2026-04-27T05:34:56.172569",16,{"items":696,"total":812},[697,709,718,725,731,739,746,754,762,776,788,801],{"slug":698,"name":698,"fn":699,"description":700,"org":701,"tags":702,"stars":706,"repoUrl":707,"updatedAt":708},"browse","run Browserbase browser automation","Use the browse CLI for Browserbase browser automation, Browserbase cloud APIs, Browserbase Functions, templates, web fetch\u002Fsearch, diagnostics, and Browse.sh skill discovery\u002Finstallation. Use when the user asks to navigate pages, inspect browser state, run local or remote browser sessions, manage Browserbase resources, call Browserbase Functions, browse or scaffold Browserbase templates, fetch or search web content, diagnose browse setup, find or install a skill for a website task, discover site-specific Browse.sh skills, or install\u002Frefresh this browse skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[703,704,705],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":620,"slug":621,"type":15},23676,"https:\u002F\u002Fgithub.com\u002Fbrowserbase\u002Fstagehand","2026-06-06T07:11:24.95733",{"slug":578,"name":578,"fn":579,"description":580,"org":710,"tags":711,"stars":23,"repoUrl":24,"updatedAt":597},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[712,713,714,715,716,717],{"name":18,"slug":19,"type":15},{"name":585,"slug":586,"type":15},{"name":9,"slug":8,"type":15},{"name":589,"slug":590,"type":15},{"name":592,"slug":593,"type":15},{"name":595,"slug":596,"type":15},{"slug":599,"name":599,"fn":600,"description":601,"org":719,"tags":720,"stars":23,"repoUrl":24,"updatedAt":610},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[721,722,723,724],{"name":18,"slug":19,"type":15},{"name":606,"slug":607,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"slug":612,"name":612,"fn":613,"description":614,"org":726,"tags":727,"stars":23,"repoUrl":24,"updatedAt":622},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[728,729,730],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":620,"slug":621,"type":15},{"slug":624,"name":624,"fn":625,"description":626,"org":732,"tags":733,"stars":23,"repoUrl":24,"updatedAt":640},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[734,735,736,737,738],{"name":630,"slug":631,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":635,"slug":636,"type":15},{"name":638,"slug":639,"type":15},{"slug":642,"name":642,"fn":643,"description":644,"org":740,"tags":741,"stars":23,"repoUrl":24,"updatedAt":655},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[742,743,744,745],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":650,"slug":651,"type":15},{"name":653,"slug":654,"type":15},{"slug":657,"name":657,"fn":658,"description":659,"org":747,"tags":748,"stars":23,"repoUrl":24,"updatedAt":673},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[749,750,751,752,753],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":665,"slug":666,"type":15},{"name":668,"slug":669,"type":15},{"name":671,"slug":672,"type":15},{"slug":675,"name":675,"fn":676,"description":677,"org":755,"tags":756,"stars":23,"repoUrl":24,"updatedAt":693},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[757,758,759,760,761],{"name":9,"slug":8,"type":15},{"name":682,"slug":683,"type":15},{"name":685,"slug":686,"type":15},{"name":688,"slug":689,"type":15},{"name":691,"slug":692,"type":15},{"slug":763,"name":763,"fn":764,"description":765,"org":766,"tags":767,"stars":23,"repoUrl":24,"updatedAt":775},"competitor-analysis","analyze competitors across features and pricing","Competitor research and intelligence skill. Takes a user's company (with optional\nseed competitor URLs), auto-discovers additional competitors via Browserbase Search API,\ndeeply researches each using a 4-lane pattern (marketing surface, external signal,\npublic benchmarks, strategic diff vs the user's company), and compiles the results\ninto an HTML report with four views: overview, per-competitor deep dive, side-by-side\nfeature\u002Fpricing matrix, and a chronological mentions feed (news, reviews,\nsocial, comparison pages, and public benchmarks).\nUse when the user wants to: (1) analyze competitors, (2) build a competitive matrix,\n(3) extract competitor pricing \u002F features, (4) find comparison pages and online\nmentions of competitors, (5) surface public benchmarks. Triggers: \"competitor analysis\",\n\"analyze competitors\", \"competitive intel\", \"competitor research\", \"competitor pricing\",\n\"feature comparison\", \"price comparison\", \"find comparisons\", \"who's comparing us\",\n\"competitor mentions\", \"competitor benchmarks\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[768,769,770,771,772],{"name":9,"slug":8,"type":15},{"name":682,"slug":683,"type":15},{"name":685,"slug":686,"type":15},{"name":688,"slug":689,"type":15},{"name":773,"slug":774,"type":15},"Strategy","strategy","2026-06-19T09:41:33.392499",{"slug":777,"name":777,"fn":778,"description":779,"org":780,"tags":781,"stars":23,"repoUrl":24,"updatedAt":787},"cookie-sync","sync Chrome cookies to a Browserbase context","Sync cookies from local Chrome to a Browserbase persistent context so the browse CLI can access authenticated sites. Use when the user wants to browse as themselves, sync cookies, or log into sites via Browserbase.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[782,785,786],{"name":783,"slug":784,"type":15},"Auth","auth",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:06:23.3251",{"slug":789,"name":789,"fn":790,"description":791,"org":792,"tags":793,"stars":23,"repoUrl":24,"updatedAt":800},"event-prospecting","research event speakers for sales prospecting","Event prospecting skill. Takes a conference \u002F event speakers URL,\nextracts the people, filters their companies against the user's\nICP, then deep-researches only the speakers at ICP-fit companies.\nOutputs a person-first HTML report where each card answers \"why\nshould the AE talk to this person?\" with all public links and a\none-click DM opener.\nUse when the user wants to: (1) find leads at a specific\nconference, (2) prep for an event, (3) research event speakers,\n(4) build a target list from a sponsor\u002Fexhibitor page,\n(5) scrape conference speakers and rank by ICP fit.\nTriggers: \"find leads at {event}\", \"research speakers at\",\n\"prospect this conference\", \"stripe sessions leads\",\n\"ai engineer summit prospects\", \"event prospecting\",\n\"scrape conference speakers\", \"who should I meet at\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[794,795,798,799],{"name":9,"slug":8,"type":15},{"name":796,"slug":797,"type":15},"Prospecting","prospecting",{"name":688,"slug":689,"type":15},{"name":691,"slug":692,"type":15},"2026-04-28T05:41:31.770467",{"slug":802,"name":802,"fn":803,"description":804,"org":805,"tags":806,"stars":23,"repoUrl":24,"updatedAt":811},"fetch","fetch URLs without a browser session","Use this skill when the user wants to retrieve a URL without a full browser session: fetch HTML or JSON from static pages, inspect status codes or headers, follow redirects, or get page source for simple scraping. Prefer it over a browser when JavaScript rendering and page interaction are not needed. Supports proxies and redirect control.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[807,808],{"name":635,"slug":636,"type":15},{"name":809,"slug":810,"type":15},"Web Scraping","web-scraping","2026-04-06T18:06:19.462477",17]