[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EKEDMR2DBGXP9A0Y76MFYN":3,"skill-same:01M6EKEDMR2DBGXP9A0Y76MFYN":89},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":65,"ownerHtmlUrl":66,"ownerBlogUrl":6,"ownerDescription":67,"updatedAt":68,"install":69,"resources":82},"01M6EKEDMR2DBGXP9A0Y76MFYN","agent-browser",null,"A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.","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\u002Fam-will\u002Fagent-browser\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"agent browser","browser","data","via","click","type","pages","commands","forms","fallback","snapshot","node","testing","web","automation","rust","ai agents","structured data","browser automation","cli","2026-11-10 10:12:30",false,"---\nname: agent-browser\ndescription: A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.\nread_when:\n  - Automating web interactions\n  - Extracting structured data from pages\n  - Filling forms programmatically\n  - Testing web UIs\nmetadata: {\"clawdbot\":{\"emoji\":\"?\",\"requires\":{\"bins\":[\"node\",\"npm\"]}}}\n---\n\n# Agent Browser\n\nA fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.\n\n## Installation\n\n### npm recommended\n\n```bash\nnpm install -g agent-browser\nagent-browser install\nagent-browser install --with-deps\n```\n\n### From Source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser\ncd agent-browser\npnpm install\npnpm build\nagent-browser install\n```\n\n## Quick Start\n\n```bash\nagent-browser open example.com\nagent-browser snapshot\nagent-browser click @e2\nagent-browser fill @e3 \"test@example.com\"\nagent-browser get text @e1\nagent-browser screenshot page.png\nagent-browser close\n```\n\n## Using Real Chrome Profile (for OAuth\u002FLogged-in Sessions)\n\nFor sites requiring Google\u002FDiscord\u002Fetc login (like star-swap.com):\n\n**Method 1: Launch Chrome with custom profile, connect via CDP**\n\n```bash\n# Terminal 1: Launch Chrome with your real profile and remote debugging\ngoogle-chrome --remote-debugging-port=9222 --user-data-dir=\u002Fhome\u002Fwillr\u002F.config\u002Fgoogle-chrome\u002FDefault &\n\n# Terminal 2: Connect agent-browser to that Chrome instance\nagent-browser --cdp 9222 open \"https:\u002F\u002Fstar-swap.com\"\nagent-browser --cdp 9222 snapshot -i\nagent-browser --cdp 9222 click e2\n\n# This reuses your existing Google session - no re-login needed!\n# Works for: Google OAuth, Discord OAuth, any site you're logged into in Chrome\n```\n\n**Method 2: Session persistence (first-time manual login)**\n\n```bash\n# First time: headed mode, login manually\nagent-browser --headed --session starswap open \"https:\u002F\u002Fstar-swap.com\"\n# Complete Google OAuth manually in the browser window\n# Close when done\n\n# Future runs: cookies persist!\nagent-browser --session starswap open \"https:\u002F\u002Fstar-swap.com\"\n# Already logged in automatically\n```\n\n**am.will.ryan Chrome profile:** `\u002Fhome\u002Fwillr\u002F.config\u002Fgoogle-chrome\u002FDefault`\n\n## Core Commands\n\n### Navigation\n\n```bash\nagent-browser open \u003Curl>\nagent-browser back\nagent-browser forward\nagent-browser reload\n```\n\n### Interaction\n\n```bash\nagent-browser click \u003Csel>\nagent-browser dblclick \u003Csel>\nagent-browser focus \u003Csel>\nagent-browser type \u003Csel> \u003Ctext>\nagent-browser fill \u003Csel> \u003Ctext>\nagent-browser clear \u003Csel>\nagent-browser press \u003Ckey>\nagent-browser keydown \u003Ckey>\nagent-browser keyup \u003Ckey>\nagent-browser hover \u003Csel>\nagent-browser select \u003Csel> \u003Cval>\nagent-browser check \u003Csel>\nagent-browser uncheck \u003Csel>\nagent-browser drag \u003Csrc> \u003Ctgt>\nagent-browser upload \u003Csel> \u003Cfiles>\n```\n\n### Extraction and Info\n\n```bash\nagent-browser snapshot\nagent-browser get text \u003Csel>\nagent-browser get html \u003Csel>\nagent-browser get value \u003Csel>\nagent-browser get attr \u003Csel> \u003Cattr>\nagent-browser get title\nagent-browser get url\nagent-browser get count \u003Csel>\nagent-browser get box \u003Csel>\nagent-browser screenshot [path]\nagent-browser pdf \u003Cpath>\n```\n\n### Check State\n\n```bash\nagent-browser is visible \u003Csel>\nagent-browser is enabled \u003Csel>\nagent-browser is checked \u003Csel>\n```\n\n### Find Elements\n\n- agent-browser find role \u003Crole> \u003Caction> [value]\n- agent-browser find text \u003Ctext> \u003Caction>\n- agent-browser find label \u003Clabel> \u003Caction> [value]\n- agent-browser find placeholder \u003Cph> \u003Caction> [value]\n- agent-browser find alt \u003Ctext> \u003Caction>\n- agent-browser find title \u003Ctext> \u003Caction>\n- agent-browser find testid \u003Cid> \u003Caction> [value]\n\nActions include click, fill, check, hover, and text.\n\n### Wait and Timing\n\n```bash\nagent-browser wait \u003Cselector>\nagent-browser wait \u003Cms>\nagent-browser wait --text \"Welcome\"\nagent-browser wait --url \"**\u002Fdash\"\nagent-browser wait --load networkidle\n```\n\n### Advanced Control\n\n```bash\nagent-browser scroll \u003Cdir> [px]\nagent-browser scrollintoview \u003Csel>\nagent-browser eval \u003Cjs>\nagent-browser mouse move \u003Cx> \u003Cy>\nagent-browser cookies\nagent-browser storage local\nagent-browser tab new [url]\nagent-browser frame \u003Csel>\nagent-browser dialog accept [text]\n```\n\n## Sessions\n\nRun multiple isolated browser instances.\n\n```bash\nagent-browser --session agent1 open site-a.com\nagent-browser --session agent2 open site-b.com\n```\n\n## Snapshot Options\n\nThe snapshot command supports filtering to reduce output size.\n\n- agent-browser snapshot -i\n- agent-browser snapshot -c\n- agent-browser snapshot -d 3\n- agent-browser snapshot -s \"#main\"\n\n## Selectors and Refs\n\nRefs provide deterministic element selection from snapshots. Use the @ref syntax.\n\n```bash\nagent-browser snapshot\nagent-browser click @e2\n```\n\n## Agent Mode\n\nUse --json for machine readable output.\n\n```bash\nagent-browser snapshot --json\n```\n\n### Optimal AI Workflow\n\n- Navigate with agent-browser open \u003Curl>\n- Observe with agent-browser snapshot -i --json\n- Act with @ref from the snapshot\n- Verify with agent-browser snapshot\n\n## Troubleshooting\n\n- If the command is not found on Linux ARM64, use the full path in the bin folder.\n- If an element is not found, use snapshot to find the correct ref.\n- If the page is not loaded, add a wait command after navigation.\n- Use --headed to see the browser window for debugging.\n\n## Options\n\n- --session \u003Cname> uses an isolated session.\n- --json provides JSON output.\n- --full takes a full page screenshot.\n- --headed shows the browser window.\n- --timeout sets the command timeout in milliseconds.\n\n## Notes\n\n- Refs are stable per page load but change on navigation.\n- Always snapshot after navigation to get new refs.\n- Use fill instead of type for input fields to ensure existing text is cleared.","# Agent Browser\n\nA fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.\n\n## Installation\n\n### npm recommended\n\n```bash\nnpm install -g agent-browser\nagent-browser install\nagent-browser install --with-deps\n```\n\n### From Source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser\ncd agent-browser\npnpm install\npnpm build\nagent-browser install\n```\n\n## Quick Start\n\n```bash\nagent-browser open example.com\nagent-browser snapshot\nagent-browser click @e2\nagent-browser fill @e3 \"test@example.com\"\nagent-browser get text @e1\nagent-browser screenshot page.png\nagent-browser close\n```\n\n## Using Real Chrome Profile (for OAuth\u002FLogged-in Sessions)\n\nFor sites requiring Google\u002FDiscord\u002Fetc login (like star-swap.com):\n\n**Method 1: Launch Chrome with custom profile, connect via CDP**\n\n```bash\n# Terminal 1: Launch Chrome with your real profile and remote debugging\ngoogle-chrome --remote-debugging-port=9222 --user-data-dir=\u002Fhome\u002Fwillr\u002F.config\u002Fgoogle-chrome\u002FDefault &\n\n# Terminal 2: Connect agent-browser to that Chrome instance\nagent-browser --cdp 9222 open \"https:\u002F\u002Fstar-swap.com\"\nagent-browser --cdp 9222 snapshot -i\nagent-browser --cdp 9222 click e2\n\n# This reuses your existing Google session - no re-login needed!\n# Works for: Google OAuth, Discord OAuth, any site you're logged into in Chrome\n```\n\n**Method 2: Session persistence (first-time manual login)**\n\n```bash\n# First time: headed mode, login manually\nagent-browser --headed --session starswap open \"https:\u002F\u002Fstar-swap.com\"\n# Complete Google OAuth manually in the browser window\n# Close when done\n\n# Future runs: cookies persist!\nagent-browser --session starswap open \"https:\u002F\u002Fstar-swap.com\"\n# Already logged in automatically\n```\n\n**am.will.ryan Chrome profile:** `\u002Fhome\u002Fwillr\u002F.config\u002Fgoogle-chrome\u002FDefault`\n\n## Core Commands\n\n### Navigation\n\n```bash\nagent-browser open \u003Curl>\nagent-browser back\nagent-browser forward\nagent-browser reload\n```\n\n### Interaction\n\n```bash\nagent-browser click \u003Csel>\nagent-browser dblclick \u003Csel>\nagent-browser focus \u003Csel>\nagent-browser type \u003Csel> \u003Ctext>\nagent-browser fill \u003Csel> \u003Ctext>\nagent-browser clear \u003Csel>\nagent-browser press \u003Ckey>\nagent-browser keydown \u003Ckey>\nagent-browser keyup \u003Ckey>\nagent-browser hover \u003Csel>\nagent-browser select \u003Csel> \u003Cval>\nagent-browser check \u003Csel>\nagent-browser uncheck \u003Csel>\nagent-browser drag \u003Csrc> \u003Ctgt>\nagent-browser upload \u003Csel> \u003Cfiles>\n```\n\n### Extraction and Info\n\n```bash\nagent-browser snapshot\nagent-browser get text \u003Csel>\nagent-browser get html \u003Csel>\nagent-browser get value \u003Csel>\nagent-browser get attr \u003Csel> \u003Cattr>\nagent-browser get title\nagent-browser get url\nagent-browser get count \u003Csel>\nagent-browser get box \u003Csel>\nagent-browser screenshot [path]\nagent-browser pdf \u003Cpath>\n```\n\n### Check State\n\n```bash\nagent-browser is visible \u003Csel>\nagent-browser is enabled \u003Csel>\nagent-browser is checked \u003Csel>\n```\n\n### Find Elements\n\n- agent-browser find role \u003Crole> \u003Caction> [value]\n- agent-browser find text \u003Ctext> \u003Caction>\n- agent-browser find label \u003Clabel> \u003Caction> [value]\n- agent-browser find placeholder \u003Cph> \u003Caction> [value]\n- agent-browser find alt \u003Ctext> \u003Caction>\n- agent-browser find title \u003Ctext> \u003Caction>\n- agent-browser find testid \u003Cid> \u003Caction> [value]\n\nActions include click, fill, check, hover, and text.\n\n### Wait and Timing\n\n```bash\nagent-browser wait \u003Cselector>\nagent-browser wait \u003Cms>\nagent-browser wait --text \"Welcome\"\nagent-browser wait --url \"**\u002Fdash\"\nagent-browser wait --load networkidle\n```\n\n### Advanced Control\n\n```bash\nagent-browser scroll \u003Cdir> [px]\nagent-browser scrollintoview \u003Csel>\nagent-browser eval \u003Cjs>\nagent-browser mouse move \u003Cx> \u003Cy>\nagent-browser cookies\nagent-browser storage local\nagent-browser tab new [url]\nagent-browser frame \u003Csel>\nagent-browser dialog accept [text]\n```\n\n## Sessions\n\nRun multiple isolated browser instances.\n\n```bash\nagent-browser --session agent1 open site-a.com\nagent-browser --session agent2 open site-b.com\n```\n\n## Snapshot Options\n\nThe snapshot command supports filtering to reduce output size.\n\n- agent-browser snapshot -i\n- agent-browser snapshot -c\n- agent-browser snapshot -d 3\n- agent-browser snapshot -s \"#main\"\n\n## Selectors and Refs\n\nRefs provide deterministic element selection from snapshots. Use the @ref syntax.\n\n```bash\nagent-browser snapshot\nagent-browser click @e2\n```\n\n## Agent Mode\n\nUse --json for machine readable output.\n\n```bash\nagent-browser snapshot --json\n```\n\n### Optimal AI Workflow\n\n- Navigate with agent-browser open \u003Curl>\n- Observe with agent-browser snapshot -i --json\n- Act with @ref from the snapshot\n- Verify with agent-browser snapshot\n\n## Troubleshooting\n\n- If the command is not found on Linux ARM64, use the full path in the bin folder.\n- If an element is not found, use snapshot to find the correct ref.\n- If the page is not loaded, add a wait command after navigation.\n- Use --headed to see the browser window for debugging.\n\n## Options\n\n- --session \u003Cname> uses an isolated session.\n- --json provides JSON output.\n- --full takes a full page screenshot.\n- --headed shows the browser window.\n- --timeout sets the command timeout in milliseconds.\n\n## Notes\n\n- Refs are stable per page load but change on navigation.\n- Always snapshot after navigation to get new refs.\n- Use fill instead of type for input fields to ensure existing text is cleared.",{"name":5,"metadata":49,"read_when":55,"description":7},{"clawdbot":50},{"emoji":51,"requires":52},"?",{"bins":53},[35,54],"npm",[56,57,58,59],"Automating web interactions","Extracting structured data from pages","Filling forms programmatically","Testing web UIs","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fam-will\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":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill agent-browser",{"tool":75,"command":76},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill agent-browser",{"tool":78,"command":79},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill agent-browser","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fam-will\u002Fagent-browser\u002FSKILL.md",true,[83],{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"skill-report.json","REFERENCE","参考文档",12851,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fam-will\u002Fagent-browser\u002Fskill-report.json",[90,100,110,119,125,132],{"skillNo":91,"name":92,"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":93,"categories":94,"keywords":96,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[95],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,98,99],"model","model hierarchy","model hierarchy skill",{"skillNo":101,"name":102,"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":103,"categories":104,"keywords":106,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[105],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[107,108,109],"MCP","zoom","zoom mcp",{"skillNo":111,"name":112,"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":113,"categories":114,"keywords":115,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[116,117,118,108],"sdk","zoom apps sdk","apps",{"skillNo":120,"name":121,"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":122,"categories":123,"keywords":124,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[121],{"skillNo":126,"name":127,"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":128,"categories":129,"keywords":131,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[130],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[127],{"skillNo":133,"name":134,"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":135,"categories":136,"keywords":137,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[134]]