[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EVCDD8FRAFGJSGDFK5NDHV":3,"skill-same:01M6EVCDD8FRAFGJSGDFK5NDHV":119},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":29,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6EVCDD8FRAFGJSGDFK5NDHV","agent-browser",null,"Browser automation for AI agents via inference.sh. Navigate web pages, interact with elements using @e refs, take screenshots, record video. Capabilities: web scraping, form filling, clicking, typing, drag-drop, file upload, JavaScript execution. Use for: web automation, data extraction, testing, agent browsing, research. Triggers: browser, web automation, scrape, navigate, click, fill form, screenshot, browse web, playwright, headless browser, web agent, surf internet, record video","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"agent browser","browser","Video","typing","form","web automation","click","drop","take","scraping","Bash","scrape","testing","data","screenshot","capabilities","record video","ai agents","browser automation","screenshots","2026-11-10 10:12:30",false,"---\nname: agent-browser\ndescription: \"Browser automation for AI agents via inference.sh. Navigate web pages, interact with elements using @e refs, take screenshots, record video. Capabilities: web scraping, form filling, clicking, typing, drag-drop, file upload, JavaScript execution. Use for: web automation, data extraction, testing, agent browsing, research. Triggers: browser, web automation, scrape, navigate, click, fill form, screenshot, browse web, playwright, headless browser, web agent, surf internet, record video\"\nallowed-tools: Bash(infsh *)\n---\n\n# Agentic Browser\n\nBrowser automation for AI agents via [inference.sh](https:\u002F\u002Finference.sh). Uses Playwright under the hood with a simple `@e` ref system for element interaction.\n\n![Agentic Browser](https:\u002F\u002Fcloud.inference.sh\u002Fapp\u002Ffiles\u002Fu\u002F4mg21r6ta37mpaz6ktzwtt8krr\u002F01kgjw8atdxgkrsr8a2t5peq7b.jpeg)\n\n## Quick Start\n\n```bash\n# Install CLI\ncurl -fsSL https:\u002F\u002Fcli.inference.sh | sh && infsh login\n\n# Open a page and get interactive elements\ninfsh app run agent-browser --function open --input '{\"url\": \"https:\u002F\u002Fexample.com\"}' --session new\n```\n\n> **Install note:** The [install script](https:\u002F\u002Fcli.inference.sh) only detects your OS\u002Farchitecture, downloads the matching binary from `dist.inference.sh`, and verifies its SHA-256 checksum. No elevated permissions or background processes. [Manual install & verification](https:\u002F\u002Fdist.inference.sh\u002Fcli\u002Fchecksums.txt) available.\n\n## Core Workflow\n\nEvery browser automation follows this pattern:\n\n1. **Open** - Navigate to URL, get `@e` refs for elements\n2. **Interact** - Use refs to click, fill, drag, etc.\n3. **Re-snapshot** - After navigation\u002Fchanges, get fresh refs\n4. **Close** - End session (returns video if recording)\n\n```bash\n# 1. Start session\nRESULT=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\u002Flogin\"\n}')\nSESSION_ID=$(echo $RESULT | jq -r '.session_id')\n# Elements: @e1 [input] \"Email\", @e2 [input] \"Password\", @e3 [button] \"Sign In\"\n\n# 2. Fill and submit\ninfsh app run agent-browser --function interact --session $SESSION_ID --input '{\n  \"action\": \"fill\", \"ref\": \"@e1\", \"text\": \"user@example.com\"\n}'\ninfsh app run agent-browser --function interact --session $SESSION_ID --input '{\n  \"action\": \"fill\", \"ref\": \"@e2\", \"text\": \"password123\"\n}'\ninfsh app run agent-browser --function interact --session $SESSION_ID --input '{\n  \"action\": \"click\", \"ref\": \"@e3\"\n}'\n\n# 3. Re-snapshot after navigation\ninfsh app run agent-browser --function snapshot --session $SESSION_ID --input '{}'\n\n# 4. Close when done\ninfsh app run agent-browser --function close --session $SESSION_ID --input '{}'\n```\n\n## Functions\n\n| Function | Description |\n|----------|-------------|\n| `open` | Navigate to URL, configure browser (viewport, proxy, video recording) |\n| `snapshot` | Re-fetch page state with `@e` refs after DOM changes |\n| `interact` | Perform actions using `@e` refs (click, fill, drag, upload, etc.) |\n| `screenshot` | Take page screenshot (viewport or full page) |\n| `execute` | Run JavaScript code on the page |\n| `close` | Close session, returns video if recording was enabled |\n\n## Interact Actions\n\n| Action | Description | Required Fields |\n|--------|-------------|-----------------|\n| `click` | Click element | `ref` |\n| `dblclick` | Double-click element | `ref` |\n| `fill` | Clear and type text | `ref`, `text` |\n| `type` | Type text (no clear) | `text` |\n| `press` | Press key (Enter, Tab, etc.) | `text` |\n| `select` | Select dropdown option | `ref`, `text` |\n| `hover` | Hover over element | `ref` |\n| `check` | Check checkbox | `ref` |\n| `uncheck` | Uncheck checkbox | `ref` |\n| `drag` | Drag and drop | `ref`, `target_ref` |\n| `upload` | Upload file(s) | `ref`, `file_paths` |\n| `scroll` | Scroll page | `direction` (up\u002Fdown\u002Fleft\u002Fright), `scroll_amount` |\n| `back` | Go back in history | - |\n| `wait` | Wait milliseconds | `wait_ms` |\n| `goto` | Navigate to URL | `url` |\n\n## Element Refs\n\nElements are returned with `@e` refs:\n\n```\n@e1 [a] \"Home\" href=\"\u002F\"\n@e2 [input type=\"text\"] placeholder=\"Search\"\n@e3 [button] \"Submit\"\n@e4 [select] \"Choose option\"\n@e5 [input type=\"checkbox\"] name=\"agree\"\n```\n\n**Important:** Refs are invalidated after navigation. Always re-snapshot after:\n- Clicking links\u002Fbuttons that navigate\n- Form submissions\n- Dynamic content loading\n\n## Features\n\n### Video Recording\n\nRecord browser sessions for debugging or documentation:\n\n```bash\n# Start with recording enabled (optionally show cursor indicator)\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"record_video\": true,\n  \"show_cursor\": true\n}' | jq -r '.session_id')\n\n# ... perform actions ...\n\n# Close to get the video file\ninfsh app run agent-browser --function close --session $SESSION --input '{}'\n# Returns: {\"success\": true, \"video\": \u003CFile>}\n```\n\n### Cursor Indicator\n\nShow a visible cursor in screenshots and video (useful for demos):\n\n```bash\ninfsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"show_cursor\": true,\n  \"record_video\": true\n}'\n```\n\nThe cursor appears as a red dot that follows mouse movements and shows click feedback.\n\n### Proxy Support\n\nRoute traffic through a proxy server:\n\n```bash\ninfsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"proxy_url\": \"http:\u002F\u002Fproxy.example.com:8080\",\n  \"proxy_username\": \"user\",\n  \"proxy_password\": \"pass\"\n}'\n```\n\n### File Upload\n\nUpload files to file inputs:\n\n```bash\ninfsh app run agent-browser --function interact --session $SESSION --input '{\n  \"action\": \"upload\",\n  \"ref\": \"@e5\",\n  \"file_paths\": [\"\u002Fpath\u002Fto\u002Ffile.pdf\"]\n}'\n```\n\n### Drag and Drop\n\nDrag elements to targets:\n\n```bash\ninfsh app run agent-browser --function interact --session $SESSION --input '{\n  \"action\": \"drag\",\n  \"ref\": \"@e1\",\n  \"target_ref\": \"@e2\"\n}'\n```\n\n### JavaScript Execution\n\nRun custom JavaScript:\n\n```bash\ninfsh app run agent-browser --function execute --session $SESSION --input '{\n  \"code\": \"document.querySelectorAll(\\\"h2\\\").length\"\n}'\n# Returns: {\"result\": \"5\", \"screenshot\": \u003CFile>}\n```\n\n## Deep-Dive Documentation\n\n| Reference | Description |\n|-----------|-------------|\n| [references\u002Fcommands.md](references\u002Fcommands.md) | Full function reference with all options |\n| [references\u002Fsnapshot-refs.md](references\u002Fsnapshot-refs.md) | Ref lifecycle, invalidation rules, troubleshooting |\n| [references\u002Fsession-management.md](references\u002Fsession-management.md) | Session persistence, parallel sessions |\n| [references\u002Fauthentication.md](references\u002Fauthentication.md) | Login flows, OAuth, 2FA handling |\n| [references\u002Fvideo-recording.md](references\u002Fvideo-recording.md) | Recording workflows for debugging |\n| [references\u002Fproxy-support.md](references\u002Fproxy-support.md) | Proxy configuration, geo-testing |\n\n## Ready-to-Use Templates\n\n| Template | Description |\n|----------|-------------|\n| [templates\u002Fform-automation.sh](templates\u002Fform-automation.sh) | Form filling with validation |\n| [templates\u002Fauthenticated-session.sh](templates\u002Fauthenticated-session.sh) | Login once, reuse session |\n| [templates\u002Fcapture-workflow.sh](templates\u002Fcapture-workflow.sh) | Content extraction with screenshots |\n\n## Examples\n\n### Form Submission\n\n```bash\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\u002Fcontact\"\n}' | jq -r '.session_id')\n\n# Get elements: @e1 [input] \"Name\", @e2 [input] \"Email\", @e3 [textarea], @e4 [button] \"Send\"\n\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e1\", \"text\": \"John Doe\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e2\", \"text\": \"john@example.com\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e3\", \"text\": \"Hello!\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"click\", \"ref\": \"@e4\"}'\n\ninfsh app run agent-browser --function snapshot --session $SESSION --input '{}'\ninfsh app run agent-browser --function close --session $SESSION --input '{}'\n```\n\n### Search and Extract\n\n```bash\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fgoogle.com\"\n}' | jq -r '.session_id')\n\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e1\", \"text\": \"weather today\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"press\", \"text\": \"Enter\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"wait\", \"wait_ms\": 2000}'\n\ninfsh app run agent-browser --function snapshot --session $SESSION --input '{}'\ninfsh app run agent-browser --function close --session $SESSION --input '{}'\n```\n\n### Screenshot with Video\n\n```bash\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"record_video\": true\n}' | jq -r '.session_id')\n\n# Take full page screenshot\ninfsh app run agent-browser --function screenshot --session $SESSION --input '{\n  \"full_page\": true\n}'\n\n# Close and get video\nRESULT=$(infsh app run agent-browser --function close --session $SESSION --input '{}')\necho $RESULT | jq '.video'\n```\n\n## Sessions\n\nBrowser state persists within a session. Always:\n\n1. Start with `--session new` on first call\n2. Use returned `session_id` for subsequent calls\n3. Close session when done\n\n## Related Skills\n\n```bash\n# Web search (for research + browse)\nnpx skills add inference-sh\u002Fskills@web-search\n\n# LLM models (analyze extracted content)\nnpx skills add inference-sh\u002Fskills@llm-models\n```\n\n## Documentation\n\n- [inference.sh Sessions](https:\u002F\u002Finference.sh\u002Fdocs\u002Fextend\u002Fsessions) - Session management\n- [Multi-function Apps](https:\u002F\u002Finference.sh\u002Fdocs\u002Fextend\u002Fmulti-function-apps) - How functions work\n","# Agentic Browser\n\nBrowser automation for AI agents via [inference.sh](https:\u002F\u002Finference.sh). Uses Playwright under the hood with a simple `@e` ref system for element interaction.\n\n![Agentic Browser](https:\u002F\u002Fcloud.inference.sh\u002Fapp\u002Ffiles\u002Fu\u002F4mg21r6ta37mpaz6ktzwtt8krr\u002F01kgjw8atdxgkrsr8a2t5peq7b.jpeg)\n\n## Quick Start\n\n```bash\n# Install CLI\ncurl -fsSL https:\u002F\u002Fcli.inference.sh | sh && infsh login\n\n# Open a page and get interactive elements\ninfsh app run agent-browser --function open --input '{\"url\": \"https:\u002F\u002Fexample.com\"}' --session new\n```\n\n> **Install note:** The [install script](https:\u002F\u002Fcli.inference.sh) only detects your OS\u002Farchitecture, downloads the matching binary from `dist.inference.sh`, and verifies its SHA-256 checksum. No elevated permissions or background processes. [Manual install & verification](https:\u002F\u002Fdist.inference.sh\u002Fcli\u002Fchecksums.txt) available.\n\n## Core Workflow\n\nEvery browser automation follows this pattern:\n\n1. **Open** - Navigate to URL, get `@e` refs for elements\n2. **Interact** - Use refs to click, fill, drag, etc.\n3. **Re-snapshot** - After navigation\u002Fchanges, get fresh refs\n4. **Close** - End session (returns video if recording)\n\n```bash\n# 1. Start session\nRESULT=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\u002Flogin\"\n}')\nSESSION_ID=$(echo $RESULT | jq -r '.session_id')\n# Elements: @e1 [input] \"Email\", @e2 [input] \"Password\", @e3 [button] \"Sign In\"\n\n# 2. Fill and submit\ninfsh app run agent-browser --function interact --session $SESSION_ID --input '{\n  \"action\": \"fill\", \"ref\": \"@e1\", \"text\": \"user@example.com\"\n}'\ninfsh app run agent-browser --function interact --session $SESSION_ID --input '{\n  \"action\": \"fill\", \"ref\": \"@e2\", \"text\": \"password123\"\n}'\ninfsh app run agent-browser --function interact --session $SESSION_ID --input '{\n  \"action\": \"click\", \"ref\": \"@e3\"\n}'\n\n# 3. Re-snapshot after navigation\ninfsh app run agent-browser --function snapshot --session $SESSION_ID --input '{}'\n\n# 4. Close when done\ninfsh app run agent-browser --function close --session $SESSION_ID --input '{}'\n```\n\n## Functions\n\n| Function | Description |\n|----------|-------------|\n| `open` | Navigate to URL, configure browser (viewport, proxy, video recording) |\n| `snapshot` | Re-fetch page state with `@e` refs after DOM changes |\n| `interact` | Perform actions using `@e` refs (click, fill, drag, upload, etc.) |\n| `screenshot` | Take page screenshot (viewport or full page) |\n| `execute` | Run JavaScript code on the page |\n| `close` | Close session, returns video if recording was enabled |\n\n## Interact Actions\n\n| Action | Description | Required Fields |\n|--------|-------------|-----------------|\n| `click` | Click element | `ref` |\n| `dblclick` | Double-click element | `ref` |\n| `fill` | Clear and type text | `ref`, `text` |\n| `type` | Type text (no clear) | `text` |\n| `press` | Press key (Enter, Tab, etc.) | `text` |\n| `select` | Select dropdown option | `ref`, `text` |\n| `hover` | Hover over element | `ref` |\n| `check` | Check checkbox | `ref` |\n| `uncheck` | Uncheck checkbox | `ref` |\n| `drag` | Drag and drop | `ref`, `target_ref` |\n| `upload` | Upload file(s) | `ref`, `file_paths` |\n| `scroll` | Scroll page | `direction` (up\u002Fdown\u002Fleft\u002Fright), `scroll_amount` |\n| `back` | Go back in history | - |\n| `wait` | Wait milliseconds | `wait_ms` |\n| `goto` | Navigate to URL | `url` |\n\n## Element Refs\n\nElements are returned with `@e` refs:\n\n```\n@e1 [a] \"Home\" href=\"\u002F\"\n@e2 [input type=\"text\"] placeholder=\"Search\"\n@e3 [button] \"Submit\"\n@e4 [select] \"Choose option\"\n@e5 [input type=\"checkbox\"] name=\"agree\"\n```\n\n**Important:** Refs are invalidated after navigation. Always re-snapshot after:\n- Clicking links\u002Fbuttons that navigate\n- Form submissions\n- Dynamic content loading\n\n## Features\n\n### Video Recording\n\nRecord browser sessions for debugging or documentation:\n\n```bash\n# Start with recording enabled (optionally show cursor indicator)\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"record_video\": true,\n  \"show_cursor\": true\n}' | jq -r '.session_id')\n\n# ... perform actions ...\n\n# Close to get the video file\ninfsh app run agent-browser --function close --session $SESSION --input '{}'\n# Returns: {\"success\": true, \"video\": \u003CFile>}\n```\n\n### Cursor Indicator\n\nShow a visible cursor in screenshots and video (useful for demos):\n\n```bash\ninfsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"show_cursor\": true,\n  \"record_video\": true\n}'\n```\n\nThe cursor appears as a red dot that follows mouse movements and shows click feedback.\n\n### Proxy Support\n\nRoute traffic through a proxy server:\n\n```bash\ninfsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"proxy_url\": \"http:\u002F\u002Fproxy.example.com:8080\",\n  \"proxy_username\": \"user\",\n  \"proxy_password\": \"pass\"\n}'\n```\n\n### File Upload\n\nUpload files to file inputs:\n\n```bash\ninfsh app run agent-browser --function interact --session $SESSION --input '{\n  \"action\": \"upload\",\n  \"ref\": \"@e5\",\n  \"file_paths\": [\"\u002Fpath\u002Fto\u002Ffile.pdf\"]\n}'\n```\n\n### Drag and Drop\n\nDrag elements to targets:\n\n```bash\ninfsh app run agent-browser --function interact --session $SESSION --input '{\n  \"action\": \"drag\",\n  \"ref\": \"@e1\",\n  \"target_ref\": \"@e2\"\n}'\n```\n\n### JavaScript Execution\n\nRun custom JavaScript:\n\n```bash\ninfsh app run agent-browser --function execute --session $SESSION --input '{\n  \"code\": \"document.querySelectorAll(\\\"h2\\\").length\"\n}'\n# Returns: {\"result\": \"5\", \"screenshot\": \u003CFile>}\n```\n\n## Deep-Dive Documentation\n\n| Reference | Description |\n|-----------|-------------|\n| [references\u002Fcommands.md](references\u002Fcommands.md) | Full function reference with all options |\n| [references\u002Fsnapshot-refs.md](references\u002Fsnapshot-refs.md) | Ref lifecycle, invalidation rules, troubleshooting |\n| [references\u002Fsession-management.md](references\u002Fsession-management.md) | Session persistence, parallel sessions |\n| [references\u002Fauthentication.md](references\u002Fauthentication.md) | Login flows, OAuth, 2FA handling |\n| [references\u002Fvideo-recording.md](references\u002Fvideo-recording.md) | Recording workflows for debugging |\n| [references\u002Fproxy-support.md](references\u002Fproxy-support.md) | Proxy configuration, geo-testing |\n\n## Ready-to-Use Templates\n\n| Template | Description |\n|----------|-------------|\n| [templates\u002Fform-automation.sh](templates\u002Fform-automation.sh) | Form filling with validation |\n| [templates\u002Fauthenticated-session.sh](templates\u002Fauthenticated-session.sh) | Login once, reuse session |\n| [templates\u002Fcapture-workflow.sh](templates\u002Fcapture-workflow.sh) | Content extraction with screenshots |\n\n## Examples\n\n### Form Submission\n\n```bash\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\u002Fcontact\"\n}' | jq -r '.session_id')\n\n# Get elements: @e1 [input] \"Name\", @e2 [input] \"Email\", @e3 [textarea], @e4 [button] \"Send\"\n\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e1\", \"text\": \"John Doe\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e2\", \"text\": \"john@example.com\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e3\", \"text\": \"Hello!\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"click\", \"ref\": \"@e4\"}'\n\ninfsh app run agent-browser --function snapshot --session $SESSION --input '{}'\ninfsh app run agent-browser --function close --session $SESSION --input '{}'\n```\n\n### Search and Extract\n\n```bash\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fgoogle.com\"\n}' | jq -r '.session_id')\n\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"fill\", \"ref\": \"@e1\", \"text\": \"weather today\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"press\", \"text\": \"Enter\"}'\ninfsh app run agent-browser --function interact --session $SESSION --input '{\"action\": \"wait\", \"wait_ms\": 2000}'\n\ninfsh app run agent-browser --function snapshot --session $SESSION --input '{}'\ninfsh app run agent-browser --function close --session $SESSION --input '{}'\n```\n\n### Screenshot with Video\n\n```bash\nSESSION=$(infsh app run agent-browser --function open --session new --input '{\n  \"url\": \"https:\u002F\u002Fexample.com\",\n  \"record_video\": true\n}' | jq -r '.session_id')\n\n# Take full page screenshot\ninfsh app run agent-browser --function screenshot --session $SESSION --input '{\n  \"full_page\": true\n}'\n\n# Close and get video\nRESULT=$(infsh app run agent-browser --function close --session $SESSION --input '{}')\necho $RESULT | jq '.video'\n```\n\n## Sessions\n\nBrowser state persists within a session. Always:\n\n1. Start with `--session new` on first call\n2. Use returned `session_id` for subsequent calls\n3. Close session when done\n\n## Related Skills\n\n```bash\n# Web search (for research + browse)\nnpx skills add inference-sh\u002Fskills@web-search\n\n# LLM models (analyze extracted content)\nnpx skills add inference-sh\u002Fskills@llm-models\n```\n\n## Documentation\n\n- [inference.sh Sessions](https:\u002F\u002Finference.sh\u002Fdocs\u002Fextend\u002Fsessions) - Session management\n- [Multi-function Apps](https:\u002F\u002Finference.sh\u002Fdocs\u002Fextend\u002Fmulti-function-apps) - How functions work\n",{"name":5,"description":7,"allowed-tools":55},"Bash(infsh *)","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill agent-browser",{"tool":71,"command":72},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill agent-browser",{"tool":74,"command":75},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill agent-browser","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002FSKILL.md",true,[79,85,89,93,97,101,105,111,115],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fauthentication.md","REFERENCE","参考文档",7632,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Freferences\u002Fauthentication.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fcommands.md",6531,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Freferences\u002Fcommands.md",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fproxy-support.md",6834,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Freferences\u002Fproxy-support.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fsnapshot-refs.md",6442,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Freferences\u002Fsnapshot-refs.md",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fvideo-recording.md",7354,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Freferences\u002Fvideo-recording.md",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"skill-report.json",12138,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Fskill-report.json",{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"templates\u002Fauthenticated-session.sh","SCRIPT","脚本",4641,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Ftemplates\u002Fauthenticated-session.sh",{"path":112,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":113,"sourceHtmlUrl":114},"templates\u002Fcapture-workflow.sh",5696,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Ftemplates\u002Fcapture-workflow.sh",{"path":116,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":117,"sourceHtmlUrl":118},"templates\u002Fform-automation.sh",3977,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Finference-sh-9\u002Fagent-browser\u002Ftemplates\u002Fform-automation.sh",[120,130,140,149,155,162],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":50},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[125],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[127,128,129],"model","model hierarchy","model hierarchy skill",{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":50},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[135],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[137,138,139],"MCP","zoom","zoom mcp",{"skillNo":141,"name":142,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":50},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[146,147,148,138],"sdk","zoom apps sdk","apps",{"skillNo":150,"name":151,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":50},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[151],{"skillNo":156,"name":157,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":161,"publishedAt":50},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[160],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[157],{"skillNo":163,"name":164,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":50},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[164]]