[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-5a383c1c-16c7-4f4d-903f-5d1bab2546e7":3,"$ft1NeEHFtAhXMd35oZc9vIOuTcW1Yge9asGsCS69Dg6Q":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"5a383c1c-16c7-4f4d-903f-5d1bab2546e7","skyvern-browser-automation","人工智能浏览器自动化——浏览网站、填写表格、提取结构化数据、使用存储的凭据登录，并构建可重复使用的流程。","cat_prod_automation","mod_productivity","sickn33,productivity","---\nname: skyvern-browser-automation\ndescription: \"AI-powered browser automation — navigate sites, fill forms, extract structured data, log in with stored credentials, and build reusable workflows.\"\ncategory: browser-automation\nrisk: safe\nsource: community\nsource_repo: Skyvern-AI\u002Fskyvern\nsource_type: official\ndate_added: \"2026-04-23\"\nauthor: mark1ian\ntags: [browser-automation, mcp, web-scraping, form-filling, ai-agents, workflow-automation]\ntools: [claude, cursor, gemini, codex]\nlicense: \"AGPL-3.0\"\nlicense_source: \"https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002FLICENSE\"\n---\n\n# Skyvern Browser Automation -- CLI Judgment Procedure\n\nSkyvern uses AI to navigate and interact with websites. Every command below is a runnable `skyvern \u003Ccommand>` invocation.\n\n## When to Use This Skill\n\n- Use when you need AI-assisted browser automation for navigation, extraction, form filling, login flows, or reusable website workflows.\n- Use when deterministic selectors are unavailable and Skyvern's visual\u002Fa11y reasoning can identify page controls.\n- Use when a one-off browser task should become a repeatable workflow with run history and verification.\n\n## Step 1: Classify Your Task (ALWAYS do this first)\n\n| Classification | Signal | CLI Command | Cost | What Happens |\n|---|---|---|---|---|\n| Quick check (yes\u002Fno) | \"is the user logged in?\" | `skyvern browser validate` | 1 LLM + screenshots | Lightweight validation (2 steps max), returns boolean. Cheapest AI option. |\n| Quick inspection | \"what does the page show?\" | `skyvern browser extract` | 1 LLM + screenshots | Dedicated extraction LLM + schema validation + caching. |\n| Single action (known target) | \"click #submit\" | `skyvern browser click\u002Ftype` | 0 LLM | Deterministic Playwright. No AI. Fastest. |\n| Single action (unknown target) | \"click the submit button\" | `skyvern browser act` | 2-3 LLM, no screenshots | No screenshots in reasoning. Economy a11y tree. For visual targets, use hybrid mode (selector + intent). |\n| Same-page multi-step | \"fill the form and submit\" | `skyvern browser act` or primitive chain | 2-3 LLM or 0 LLM | Use `act` when labels are clear. Use click\u002Ftype\u002Fselect directly when you know selectors. |\n| Throwaway autonomous trial | \"try this once\", \"see if this works\" | `skyvern browser run-task` | Higher | One-off autonomous agent for exploration. Do not use for recurring or multi-page production automations. |\n| Multi-page or reusable automation | \"navigate a multi-page wizard\", \"set this up\", \"automate this weekly\" | `skyvern workflow create` + `run` | N LLM + screenshots | Build a workflow with one block per step. Each block gets visual reasoning, verification, and reusable run history. |\n\n**MCP note:** if you are using the Skyvern MCP instead of the CLI, prefer `observe + execute` for same-page multi-step UI work. The CLI does not expose that pair directly.\n\n## Step 2: Apply These Decision Rules\n\n1. If the prompt includes a selector, id, XPath, or exact field target, use browser primitives -- not `act`.\n2. If you only need a yes\u002Fno answer, use `validate` -- not `extract` or `act`.\n3. If the work stays on one page and labels are clear, use `act` or a primitive chain.\n4. If the user says `try this once`, `see if this works`, or clearly wants a one-off exploratory trial, use `run-task`.\n5. If the task spans multiple pages and is meant to be reusable, scheduled, repeatable, or explicitly `set up` as automation, use `workflow create`.\n6. Never type passwords. Always use stored credentials with `skyvern browser login`.\n\n## Step 3: Create a Session\n\nEvery browser command needs a session. Create one first:\n\n```bash\n# Cloud session (default -- works for public URLs)\nskyvern browser session create --timeout 30\n\n# Local session (for localhost URLs or self-hosted mode)\nskyvern browser session create --local --timeout 30\n\n# Connect to existing browser via CDP\nskyvern browser session connect --cdp \"ws:\u002F\u002Flocalhost:9222\"\n```\n\nSession state persists between commands. After `session create`, subsequent commands auto-attach.\nOverride with `--session pbs_...`. Close when done: `skyvern browser session close`.\n\n## Step 4: Execute by Classification\n\n### Quick check (yes\u002Fno)\n\n```bash\nskyvern browser validate --prompt \"Is the user logged in? Look for a dashboard or avatar.\"\n```\n\nReturns true\u002Ffalse. Cheapest AI option -- prefer over extract or act for boolean checks.\n\n### Quick inspection\n\n```bash\nskyvern browser extract \\\n  --prompt \"Extract all product names and prices\" \\\n  --schema '{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"string\"}}}}}}'\n```\n\nUses screenshots + dedicated extraction LLM. Better than screenshot+read because Skyvern's LLM interprets the page.\n\n### Single action (known target)\n\n```bash\nskyvern browser click --selector \"#submit-btn\"\nskyvern browser type --text \"user@co.com\" --selector \"#email\"\nskyvern browser select --value \"US\" --intent \"the country dropdown\"\n```\n\nDeterministic. No AI. Three targeting modes:\n1. **Intent**: `--intent \"the Submit button\"` (AI finds element)\n2. **Selector**: `--selector \"#submit-btn\"` (CSS\u002FXPath, deterministic)\n3. **Hybrid**: both (selector narrows, AI confirms)\n\n### Single action (unknown target)\n\n```bash\nskyvern browser act --prompt \"Click the Sign In button\"\nskyvern browser act --prompt \"Close the cookie banner, then click Sign In\"\n```\n\n**Warning:** act has NO screenshots in its LLM reasoning. It uses an economy accessibility tree.\nFine for well-labeled elements. For visually complex targets, use MCP observe+click or hybrid mode.\n\n### Same-page multi-step\n\n```bash\nskyvern browser act --prompt \"Fill the shipping form and click Continue\"\n```\n\nUse `act` when the fields and buttons are clearly labeled and the flow stays on one page.\nIf you need tighter control, break the work into `click`, `type`, `select`, `press-key`, and `wait`.\n\n### Throwaway autonomous trial\n\n```bash\nskyvern browser run-task \\\n  --url \"https:\u002F\u002Fexample.com\" \\\n  --prompt \"Check whether the checkout flow works end to end and extract the confirmation number\"\n```\n\nUse `run-task` to prove feasibility or do one-off exploration. If the task becomes important enough\nto rerun, debug, or share, convert it to a workflow.\n\n### Multi-page or reusable automation — build a workflow with one block per step\n\n```bash\nskyvern workflow create --definition @checkout-workflow.yaml\nskyvern workflow run --id wpid_123 --wait\nskyvern workflow status --run-id wr_789\n```\n\nEach navigation block runs with visual reasoning + verification. Split complex flows into\nmultiple blocks (one per page\u002Fstep). First run uses AI; subsequent runs replay cached scripts.\n\n### Repeated\u002Fproduction\n\n```bash\nskyvern workflow create --definition @workflow.yaml\nskyvern workflow run --id wpid_123 --params '{\"email\":\"user@co.com\"}'\nskyvern workflow status --run-id wr_789\n```\n\nSplit into one block per step. Use **navigation** blocks for actions, **extraction** for data.\nFirst run uses AI; subsequent runs replay a cached script (10-100x faster).\nSet `--run-with agent` to force AI mode for debugging.\n\n## Step 5: Verify\n\nAlways verify after page-changing actions:\n\n```bash\nskyvern browser screenshot                          # visual check\nskyvern browser validate --prompt \"Was the form submitted successfully?\"  # boolean assertion\nskyvern browser evaluate --expression \"document.title\"                    # JS state check\n```\n\n## Step 6: Error Recovery\n\n| Problem | Fix |\n|---------|-----|\n| Action clicked wrong element | Add context to prompt. Use hybrid mode (selector + intent). |\n| Extraction returns empty | Wait for content. Relax required fields. Check row count first. |\n| Login passes but next step fails | Ensure same session. Add post-login validate check. |\n| Element not found | Add wait: `skyvern browser wait --selector \"#el\" --state visible` |\n| Overloaded prompt | Split into smaller goals -- one intent per command. |\n\n## Credentials\n\nNEVER type passwords through `skyvern browser type` or `act`. Always use stored credentials:\n\n```bash\nskyvern credentials add --name \"my-login\" --type password --username \"user@co.com\"\nskyvern credential list                          # find the credential ID\nskyvern browser login --url \"https:\u002F\u002Flogin.example.com\" --credential-id cred_123\n```\n\nTypes: `password`, `credit_card`, `secret`. Also supports bitwarden, 1password, and azure_vault providers.\n\n## Workflow Quick Reference\n\n```bash\nskyvern workflow create --definition @workflow.yaml   # create\nskyvern workflow run --id wpid_123 --wait             # run and wait\nskyvern workflow status --run-id wr_789               # check status\nskyvern workflow list --search \"invoice\"              # find workflows\nskyvern block schema --type navigation                # discover block types\nskyvern block validate --block-json @block.json       # validate before creating\n```\n\nEngine: known path = 1.0 (default). Dynamic planning = 2.0. Split into multiple 1.0 blocks when in doubt.\nStatus lifecycle: `created -> queued -> running -> completed | failed | canceled | terminated | timed_out`\n\n## Common Patterns\n\n**Login flow:**\n```bash\nskyvern credential list                          # find credential ID\nskyvern browser session create\nskyvern browser navigate --url \"https:\u002F\u002Flogin.example.com\"\nskyvern browser login --url \"https:\u002F\u002Flogin.example.com\" --credential-id cred_123\nskyvern browser validate --prompt \"Is the user logged in?\"\nskyvern browser screenshot\n```\n\n**Pagination loop:**\n```bash\nskyvern browser extract --prompt \"Extract all rows\"\nskyvern browser validate --prompt \"Is there a Next button that is not disabled?\"\n# If true:\nskyvern browser act --prompt \"Click the Next page button\"\n# Repeat extraction. Stop when: no next button, duplicate first row, or max page limit.\n```\n\n**Debugging:**\n```bash\nskyvern browser screenshot                       # visual state\nskyvern browser evaluate --expression \"document.title\"\nskyvern browser evaluate --expression \"document.querySelectorAll('table tr').length\"\n```\n\n## Limitations\n\n- Do not use Skyvern to bypass site access controls, rate limits, consent gates, or terms that prohibit automation.\n- Browser automation can change remote state; confirm user intent before submitting forms, purchasing, deleting, or sending messages.\n- Prefer deterministic selectors for stable production flows; AI actions can misread unlabeled or visually ambiguous controls.\n- Store credentials only in the supported credential vaults and never type passwords directly through `type` or `act`.\n\n## Agent Mode\n\nAll commands accept `--json` for structured output. Set `SKYVERN_NON_INTERACTIVE=1` to prevent prompts.\nUse `skyvern capabilities --json` for full command discovery. See [references\u002Fagent-mode.md](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fagent-mode.md).\n\n## Deep-Dive References\n\n| Reference | Content |\n|-----------|---------|\n| [`references\u002Fprompt-writing.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fprompt-writing.md) | Prompt templates and anti-patterns |\n| [`references\u002Fengines.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fengines.md) | When to use tasks vs workflows |\n| [`references\u002Fschemas.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fschemas.md) | JSON schema patterns for extraction |\n| [`references\u002Fpagination.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fpagination.md) | Pagination strategy and guardrails |\n| [`references\u002Fblock-types.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fblock-types.md) | Workflow block type details with examples |\n| [`references\u002Fparameters.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fparameters.md) | Parameter design and variable usage |\n| [`references\u002Fai-actions.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fai-actions.md) | AI action patterns and examples |\n| [`references\u002Fprecision-actions.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fprecision-actions.md) | Intent-only, selector-only, hybrid modes |\n| [`references\u002Fcredentials.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fcredentials.md) | Credential naming, lifecycle, safety |\n| [`references\u002Fsessions.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fsessions.md) | Session reuse and freshness decisions |\n| [`references\u002Fcommon-failures.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fcommon-failures.md) | Failure pattern catalog with fixes |\n| [`references\u002Fscreenshots.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fscreenshots.md) | Screenshot-led debugging workflow |\n| [`references\u002Fstatus-lifecycle.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fstatus-lifecycle.md) | Run status states and guidance |\n| [`references\u002Frerun-playbook.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Frerun-playbook.md) | Rerun procedures and comparison |\n| [`references\u002Fcomplex-inputs.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fcomplex-inputs.md) | Date pickers, uploads, dropdowns |\n| [`references\u002Ftool-map.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Ftool-map.md) | Complete tool inventory by outcome |\n| [`references\u002Fcli-parity.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fcli-parity.md) | CLI\u002FMCP mapping and agent-aware features |\n| [`references\u002Fquick-start-patterns.md`](https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002Fskyvern\u002Fcli\u002Fskills\u002Fskyvern\u002Freferences\u002Fquick-start-patterns.md) | Quick start examples, common patterns, and workflow templates |\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,176,1554,"2026-05-16 13:41:07",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"效率工具","productivity","mdi-lightning-bolt-outline","文档处理、数据分析、自动化工作流",4,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"自动化","automation","mdi-robot-outline","工作流自动化、批处理",3,101,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"012094c7-6824-47aa-9a5d-40fa68c9fd36","1.0.0","skyvern-browser-automation.zip",4858,"uploads\u002Fskills\u002F5a383c1c-16c7-4f4d-903f-5d1bab2546e7\u002Fskyvern-browser-automation.zip","3b5408096b837371d309f21f451c154309d5a2bf955536e38befca0b4e5c7426","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":14127}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]