[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EPZECBKPSXZN10BSMFP2WZ":3,"skill-same:01M6EPZECBKPSXZN10BSMFP2WZ":83},{"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":32,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":6,"ownerHtmlUrl":66,"ownerBlogUrl":6,"ownerDescription":67,"updatedAt":68,"install":69,"resources":82},"01M6EPZECBKPSXZN10BSMFP2WZ","skyvern-browser-automation",null,"AI-powered browser automation — navigate sites, fill forms, extract structured data, log in with stored credentials, and build reusable workflows.","luokai0\u002Fai-agent-skills-by-luo-kai","luokai0","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F266954973?v=4","01M6E16VNT42JB8B3X3254QWJ7","luo kai","01M6E16VTFVP6S5XJF1V1MPV90",14,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F07-antigravity-awesome\u002Fskyvern-browser-automation\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],"browser automation","skyvern browser automation","automation","browser","form-filling","MCP","form","forms","main","community","log","scraping","workflow-automation","credentials","data","official","workflows","workflow","gemini","safe","2026-11-10 10:12:30",false,"---\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","# 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",{"name":5,"risk":43,"tags":49,"tools":54,"author":58,"source":33,"license":15,"category":50,"date_added":59,"description":7,"source_repo":60,"source_type":39,"license_source":61},[50,51,52,28,53,36],"browser-automation","mcp","web-scraping","ai-agents",[55,56,42,57],"claude","cursor","codex","mark1ian","2026-04-23","Skyvern-AI\u002Fskyvern","https:\u002F\u002Fgithub.com\u002FSkyvern-AI\u002Fskyvern\u002Fblob\u002Fmain\u002FLICENSE","4d2fb89cdfb75f3f6fd3c6c5ec9ad90ea129eb3c","ai-agent-skills\u002F21-external-registries\u002F07-antigravity-awesome\u002Fskyvern-browser-automation",2,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai","https:\u002F\u002Fgithub.com\u002Fluokai0","a solo builder.","2026-05-06 04:29:04",{"source":8,"skillName":5,"commands":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill skyvern-browser-automation",{"tool":75,"command":76},"bunx","bunx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill skyvern-browser-automation",{"tool":78,"command":79},"pnpm","pnpm dlx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill skyvern-browser-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F07-antigravity-awesome\u002Fskyvern-browser-automation\u002FSKILL.md",true,[],[84,112,129,153,186,223],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":88,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":44},"01M6F2SKTE208174C7S7JJCZC7","write-contracts","Generates secure Aptos Move V2 smart contracts with Object model, Digital Asset integration, security patterns, and storage type guidance. Includes comprehensive storage decision framework for optimal data structure selection. Triggers on: 'write contract', 'create NFT collection', 'build marketplace', 'implement minting', 'generate Move module', 'create token contract', 'build DAO', 'implement staking'. Ask storage questions when: 'store', 'track', 'registry', 'mapping', 'list', 'collection'.","MIT","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fwrite-contracts\u002FSKILL.md",[],[92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],"write","contracts","write contracts","storage","secure","create","generate","collection","model","decision","ask","smart-contracts","selection","objects","structure","nft","token","aptos","critical","move",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":88,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":44},"01M6F2RFXJ6T9MKW0A7N7GM45B","web-search","通用网络搜索技能，支持多引擎搜索（百度、必应、DuckDuckGo），无需API密钥即可获取实时信息","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fweb-search-ex-skill\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,127,128],"web","search","web search","搜索","baidu","bing","duckduckgo","百度","多引擎","internet",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":88,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":44},"01M6F2K968G1FZEZFPW2E6B222","solo-build","Execute implementation plan tasks with TDD workflow, auto-commit, and phase gates. Use when user says \"build it\", \"start building\", \"execute plan\", \"implement tasks\", \"ship it\", or references a track ID. Do NOT use for planning (use \u002Fplan) or scaffolding (use \u002Fscaffold).","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fsolo-build\u002FSKILL.md",[135],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[137,138,139,29,41,140,141,142,120,143,144,145,92,146,147,148,149,150,151,152],"build","solo","solo build","commit","tasks","code","Bash","plan","read","auto","references","context7","query","scaffolding","ship it","project",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":88,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":165,"publishedAt":44},"01M6F2GKN39SGHSPWYB3662YC8","react-email","Use when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or sending emails with Resend. Covers welcome emails, password resets, notifications, order confirmations, newsletters, transactional emails, and the embeddable email editor component.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Freact-email-skills\u002FSKILL.md",[159,162],{"categoryNo":160,"categoryName":161,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":163,"categoryName":164,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185],"react","email","react email","github","editor","components","react components","component","welcome","https","notifications","password","node","use","html","resend","visual","emails","rendering","with",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":88,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":204,"publishedAt":44},"01M6F2FBVGVDFSG8SSFJGXA40C","APITester Agent-Driven API Testing","Test API endpoints and document responses. Define tests in plain English, run them, get formatted results. Agent-driven Postman alternative.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fopenclaw-api-tester\u002FSKILL.md",[192,195,198,199],{"categoryNo":193,"categoryName":194,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":196,"categoryName":197,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":200,"categoryName":201,"taxonomyType":202,"taxonomyTypeDesc":203},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222],"testing","api","api testing","driven","APITester Agent Driven API Testing","test","run","postman","results","plain english","tester","endpoints","document","get","define","tests","english","api-tester",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":88,"licenseFileUrl":6,"sourceHtmlUrl":227,"categories":228,"keywords":229,"publishedAt":44},"01M6F273Y3NGAPVJZ608BC0G9G","hubspot-implementation-plan","Generate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Use after running \u002Fhubspot-audit.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fhubspot-implementation-plan\u002FSKILL.md",[],[144,230,231,232,26,233,234,98,235,236,237,238,239,179,240,241,185,242],"implementation","hubspot","hubspot implementation plan","feasibility","cleanup","planning","report","audit","audit report","phased implementation","dependencies","processes","hubspot audit"]