{
  "schemaVersion": "1.0",
  "item": {
    "slug": "fastplaywright",
    "name": "FastPlayWright Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/frankausberlin/fastplaywright",
    "canonicalUrl": "https://clawhub.ai/frankausberlin/fastplaywright",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/fastplaywright",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fastplaywright",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/fastplaywright"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/fastplaywright",
    "agentPageUrl": "https://openagent3.xyz/skills/fastplaywright/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fastplaywright/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fastplaywright/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Fast Playwright MCP",
        "body": "High-performance browser automation skill using the Fast Playwright MCP server (@tontoko/fast-playwright-mcp). This fork of the Microsoft Playwright MCP provides significant token optimization, batch execution, and enhanced element discovery."
      },
      {
        "title": "Key Advantages Over Standard Playwright MCP",
        "body": "FeatureBenefitToken Optimization70-80% reduction via expectation parameterBatch Execution90% token savings for multi-step workflowsDiff DetectionTrack only changes, not full snapshotsEnhanced SelectorsMultiple selector types with automatic fallbackDiagnostic ToolsAdvanced debugging and element discoveryImage CompressionJPEG format, quality control, resizing"
      },
      {
        "title": "MCP Configuration",
        "body": "{\n  \"mcpServers\": {\n    \"playwright\": {\n      \"command\": \"npx\",\n      \"args\": [\"@tontoko/fast-playwright-mcp@latest\"]\n    }\n  }\n}"
      },
      {
        "title": "Critical Workflow",
        "body": "Follow these steps in order for optimal results:"
      },
      {
        "title": "1. Navigate First",
        "body": "Use browser_navigate to load the target page before any other operations."
      },
      {
        "title": "2. Use Batch Execution for Multi-Step Tasks",
        "body": "For 2+ operations, ALWAYS use browser_batch_execute instead of individual tool calls."
      },
      {
        "title": "3. Optimize Token Usage",
        "body": "Apply expectation parameters to reduce response size."
      },
      {
        "title": "4. Use Diff Detection for State Changes",
        "body": "Enable diffOptions when tracking changes without navigation."
      },
      {
        "title": "The Expectation Parameter",
        "body": "All browser tools support an expectation parameter to control response content:\n\n{\n  \"includeSnapshot\": false,    // 70-80% token reduction\n  \"includeConsole\": false,      // Exclude console messages\n  \"includeTabs\": false,         // Hide tab information\n  \"includeCode\": false,         // Suppress code generation\n  \"includeDownloads\": false     // Exclude download info\n}"
      },
      {
        "title": "Snapshot Options",
        "body": "Limit snapshot content for focused analysis:\n\n{\n  \"snapshotOptions\": {\n    \"selector\": \".main-content\",  // Capture specific section only\n    \"maxLength\": 2000,            // Limit character count\n    \"format\": \"aria\"              // Use accessibility tree format\n  }\n}"
      },
      {
        "title": "Diff Detection",
        "body": "Track only changes between operations:\n\n{\n  \"diffOptions\": {\n    \"enabled\": true,\n    \"format\": \"minimal\",      // Options: unified, split, minimal\n    \"threshold\": 0.1,\n    \"maxDiffLines\": 50,\n    \"context\": 3\n  }\n}"
      },
      {
        "title": "Selector Types (Priority Order)",
        "body": "ref - System-generated element ID from previous results (highest priority)\ncss - Standard CSS selectors (#id, .class, tag)\nrole - ARIA roles with optional text (button, textbox, etc.)\ntext - Text content search with optional tag filter"
      },
      {
        "title": "Selector Arrays with Fallback",
        "body": "All element-based tools accept multiple selectors with automatic fallback:\n\n{\n  \"selectors\": [\n    { \"css\": \"#submit-btn\" },\n    { \"role\": \"button\", \"text\": \"Submit\" },\n    { \"text\": \"Submit\", \"tag\": \"button\" }\n  ]\n}\n\nSelectors are tried in order until one succeeds. If multiple elements match, returns a candidate list for selection."
      },
      {
        "title": "Basic Pattern",
        "body": "Execute multiple operations in a single request:\n\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com/login\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#username\" }], \"text\": \"user@example.com\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#password\" }], \"text\": \"password123\" } },\n      { \"tool\": \"browser_click\", \"arguments\": { \"selectors\": [{ \"role\": \"button\", \"text\": \"Login\" }] } }\n    ]\n  }\n}"
      },
      {
        "title": "Advanced Configuration",
        "body": "{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      {\n        \"tool\": \"browser_navigate\",\n        \"arguments\": { \"url\": \"https://example.com\" },\n        \"expectation\": { \"includeSnapshot\": false },\n        \"continueOnError\": true\n      },\n      {\n        \"tool\": \"browser_click\",\n        \"arguments\": { \"selectors\": [{ \"css\": \"#submit\" }] },\n        \"expectation\": {\n          \"includeSnapshot\": true,\n          \"snapshotOptions\": { \"selector\": \".result-area\" },\n          \"diffOptions\": { \"enabled\": true, \"format\": \"minimal\" }\n        }\n      }\n    ],\n    \"stopOnFirstError\": false,\n    \"globalExpectation\": {\n      \"includeConsole\": false,\n      \"includeTabs\": false\n    }\n  }\n}"
      },
      {
        "title": "Error Handling Options",
        "body": "continueOnError (per-step): Continue even if this step fails\nstopOnFirstError (global): Stop entire batch on first error"
      },
      {
        "title": "Navigate and Screenshot",
        "body": "{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com\" } },\n      {\n        \"tool\": \"browser_take_screenshot\",\n        \"arguments\": {\n          \"filename\": \"homepage.png\",\n          \"fullPage\": true,\n          \"expectation\": { \"includeSnapshot\": false }\n        }\n      }\n    ]\n  }\n}"
      },
      {
        "title": "Form Filling with Submission",
        "body": "{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com/contact\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#name\" }], \"text\": \"John Doe\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#email\" }], \"text\": \"john@example.com\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#message\" }], \"text\": \"Hello World\" } },\n      { \"tool\": \"browser_click\", \"arguments\": { \"selectors\": [{ \"role\": \"button\", \"text\": \"Send\" }] } }\n    ],\n    \"globalExpectation\": { \"includeSnapshot\": false }\n  }\n}"
      },
      {
        "title": "Responsive Design Testing",
        "body": "{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com\" } },\n      { \"tool\": \"browser_resize\", \"arguments\": { \"width\": 1920, \"height\": 1080 } },\n      { \"tool\": \"browser_take_screenshot\", \"arguments\": { \"filename\": \"desktop.png\" } },\n      { \"tool\": \"browser_resize\", \"arguments\": { \"width\": 768, \"height\": 1024 } },\n      { \"tool\": \"browser_take_screenshot\", \"arguments\": { \"filename\": \"tablet.png\" } },\n      { \"tool\": \"browser_resize\", \"arguments\": { \"width\": 375, \"height\": 667 } },\n      { \"tool\": \"browser_take_screenshot\", \"arguments\": { \"filename\": \"mobile.png\" } }\n    ]\n  }\n}"
      },
      {
        "title": "Login Flow with Verification",
        "body": "{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com/login\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#email\" }], \"text\": \"user@example.com\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#password\" }], \"text\": \"secret\", \"submit\": true } },\n      { \"tool\": \"browser_wait_for\", \"arguments\": { \"text\": \"Dashboard\" } }\n    ],\n    \"globalExpectation\": { \"diffOptions\": { \"enabled\": true } }\n  }\n}"
      },
      {
        "title": "Find Elements",
        "body": "Search for elements using multiple criteria:\n\n{\n  \"tool\": \"browser_find_elements\",\n  \"arguments\": {\n    \"searchCriteria\": {\n      \"text\": \"Submit\",\n      \"role\": \"button\"\n    },\n    \"maxResults\": 5,\n    \"enableEnhancedDiscovery\": true\n  }\n}"
      },
      {
        "title": "Page Diagnostics",
        "body": "Comprehensive page analysis:\n\n{\n  \"tool\": \"browser_diagnose\",\n  \"arguments\": {\n    \"diagnosticLevel\": \"detailed\",\n    \"includePerformanceMetrics\": true,\n    \"includeAccessibilityInfo\": true,\n    \"includeTroubleshootingSuggestions\": true\n  }\n}\n\nDiagnostic levels: none, basic, standard, detailed, full"
      },
      {
        "title": "HTML Inspection",
        "body": "Extract and analyze HTML content:\n\n{\n  \"tool\": \"browser_inspect_html\",\n  \"arguments\": {\n    \"selectors\": [{ \"css\": \".content\" }],\n    \"depth\": 3,\n    \"maxSize\": 50000,\n    \"format\": \"html\",\n    \"optimizeForLLM\": true\n  }\n}"
      },
      {
        "title": "Compressed Screenshots",
        "body": "{\n  \"tool\": \"browser_take_screenshot\",\n  \"arguments\": {\n    \"filename\": \"screenshot.jpg\",\n    \"type\": \"jpeg\",\n    \"expectation\": {\n      \"imageOptions\": {\n        \"format\": \"jpeg\",\n        \"quality\": 50,\n        \"maxWidth\": 1280\n      }\n    }\n  }\n}"
      },
      {
        "title": "Network Request Filtering",
        "body": "Monitor specific network activity:\n\n{\n  \"tool\": \"browser_network_requests\",\n  \"arguments\": {\n    \"urlPatterns\": [\"/api/\"],\n    \"excludeUrlPatterns\": [\"analytics\", \"tracking\"],\n    \"methods\": [\"GET\", \"POST\"],\n    \"statusRanges\": [{ \"min\": 200, \"max\": 299 }],\n    \"maxRequests\": 10,\n    \"newestFirst\": true\n  }\n}"
      },
      {
        "title": "Multi-Tab Workflow",
        "body": "{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_tab_new\", \"arguments\": { \"url\": \"https://example.com\" } },\n      { \"tool\": \"browser_tab_list\", \"arguments\": {} },\n      { \"tool\": \"browser_tab_select\", \"arguments\": { \"index\": 0 } },\n      { \"tool\": \"browser_tab_close\", \"arguments\": { \"index\": 1 } }\n    ]\n  }\n}"
      },
      {
        "title": "Wait for Text",
        "body": "{ \"tool\": \"browser_wait_for\", \"arguments\": { \"text\": \"Loading complete\" } }"
      },
      {
        "title": "Wait for Text to Disappear",
        "body": "{ \"tool\": \"browser_wait_for\", \"arguments\": { \"textGone\": \"Loading...\" } }"
      },
      {
        "title": "Wait for Time",
        "body": "{ \"tool\": \"browser_wait_for\", \"arguments\": { \"time\": 2 } }"
      },
      {
        "title": "Filter Console Messages",
        "body": "{\n  \"tool\": \"browser_console_messages\",\n  \"arguments\": {\n    \"consoleOptions\": {\n      \"levels\": [\"error\", \"warn\"],\n      \"maxMessages\": 10,\n      \"patterns\": [\"^Error:\"],\n      \"removeDuplicates\": true\n    }\n  }\n}"
      },
      {
        "title": "Page-Level Evaluation",
        "body": "{\n  \"tool\": \"browser_evaluate\",\n  \"arguments\": {\n    \"function\": \"() => document.title\"\n  }\n}"
      },
      {
        "title": "Element-Level Evaluation",
        "body": "{\n  \"tool\": \"browser_evaluate\",\n  \"arguments\": {\n    \"selectors\": [{ \"css\": \"#counter\" }],\n    \"function\": \"(element) => element.textContent\"\n  }\n}"
      },
      {
        "title": "Dialog Handling",
        "body": "{\n  \"tool\": \"browser_handle_dialog\",\n  \"arguments\": {\n    \"accept\": true,\n    \"promptText\": \"Optional prompt response\"\n  }\n}"
      },
      {
        "title": "File Upload",
        "body": "{\n  \"tool\": \"browser_file_upload\",\n  \"arguments\": {\n    \"paths\": [\"/absolute/path/to/file.pdf\"]\n  }\n}"
      },
      {
        "title": "Drag and Drop",
        "body": "{\n  \"tool\": \"browser_drag\",\n  \"arguments\": {\n    \"startSelectors\": [{ \"css\": \"#draggable\" }],\n    \"endSelectors\": [{ \"css\": \"#dropzone\" }]\n  }\n}"
      },
      {
        "title": "Select Options",
        "body": "{\n  \"tool\": \"browser_select_option\",\n  \"arguments\": {\n    \"selectors\": [{ \"css\": \"#country\" }],\n    \"values\": [\"us\", \"de\"]\n  }\n}"
      },
      {
        "title": "Keyboard Input",
        "body": "{\n  \"tool\": \"browser_press_key\",\n  \"arguments\": {\n    \"key\": \"Enter\"\n  }\n}\n\nSpecial keys: Enter, Tab, Escape, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Backspace, Delete, Home, End"
      },
      {
        "title": "Token Efficiency",
        "body": "Use batch execution for 2+ operations\nDisable snapshots for intermediate steps\nEnable diff detection for state tracking\nFilter console messages to relevant levels\nUse selective snapshots with CSS selectors\nCompress images when quality is not critical"
      },
      {
        "title": "Selector Strategy",
        "body": "Use ref from previous results when available\nProvide fallback selectors for robustness\nPrefer role-based selectors for accessibility\nUse CSS selectors for specific targeting\nText selectors as last resort"
      },
      {
        "title": "Error Handling",
        "body": "Use continueOnError for non-critical steps\nSet stopOnFirstError: false for best-effort execution\nUse diagnostic tools when automation fails\nCheck console messages for JavaScript errors"
      },
      {
        "title": "Performance",
        "body": "Minimize snapshot size with selectors\nUse minimal diff format for change tracking\nFilter network requests to relevant patterns\nBatch related operations together"
      },
      {
        "title": "Element Not Found",
        "body": "Use browser_find_elements to discover alternatives\nRun browser_diagnose for page analysis\nCheck for iframes or shadow DOM\nVerify page has finished loading"
      },
      {
        "title": "Timeout Issues",
        "body": "Use browser_wait_for with specific conditions\nIncrease wait time for slow pages\nCheck network requests for blocked resources"
      },
      {
        "title": "Token Overflow",
        "body": "Enable includeSnapshot: false\nUse snapshotOptions.selector to limit scope\nEnable diffOptions.enabled: true\nReduce maxRequests in network filtering"
      },
      {
        "title": "Core Automation",
        "body": "browser_navigate - Navigate to URL\nbrowser_click - Click element\nbrowser_type - Type text\nbrowser_hover - Hover over element\nbrowser_drag - Drag and drop\nbrowser_select_option - Select dropdown option\nbrowser_press_key - Press keyboard key\nbrowser_file_upload - Upload files\nbrowser_evaluate - Execute JavaScript\nbrowser_wait_for - Wait for condition"
      },
      {
        "title": "Batch Operations",
        "body": "browser_batch_execute - Execute multiple actions"
      },
      {
        "title": "Information Gathering",
        "body": "browser_snapshot - Capture accessibility snapshot\nbrowser_take_screenshot - Take screenshot\nbrowser_console_messages - Get console output\nbrowser_network_requests - List network requests\nbrowser_find_elements - Find elements by criteria\nbrowser_diagnose - Page diagnostics\nbrowser_inspect_html - HTML content extraction"
      },
      {
        "title": "Tab Management",
        "body": "browser_tab_list - List all tabs\nbrowser_tab_new - Open new tab\nbrowser_tab_select - Switch to tab\nbrowser_tab_close - Close tab"
      },
      {
        "title": "Navigation",
        "body": "browser_navigate_back - Go back\nbrowser_navigate_forward - Go forward"
      },
      {
        "title": "Browser Control",
        "body": "browser_resize - Resize window\nbrowser_close - Close browser\nbrowser_install - Install browser\nbrowser_handle_dialog - Handle alerts/confirms"
      },
      {
        "title": "Vision (requires --caps=vision)",
        "body": "browser_mouse_click_xy - Click at coordinates\nbrowser_mouse_move_xy - Move mouse to coordinates\nbrowser_mouse_drag_xy - Drag between coordinates"
      },
      {
        "title": "PDF (requires --caps=pdf)",
        "body": "browser_pdf_save - Save page as PDF"
      }
    ],
    "body": "Fast Playwright MCP\n\nHigh-performance browser automation skill using the Fast Playwright MCP server (@tontoko/fast-playwright-mcp). This fork of the Microsoft Playwright MCP provides significant token optimization, batch execution, and enhanced element discovery.\n\nKey Advantages Over Standard Playwright MCP\nFeature\tBenefit\nToken Optimization\t70-80% reduction via expectation parameter\nBatch Execution\t90% token savings for multi-step workflows\nDiff Detection\tTrack only changes, not full snapshots\nEnhanced Selectors\tMultiple selector types with automatic fallback\nDiagnostic Tools\tAdvanced debugging and element discovery\nImage Compression\tJPEG format, quality control, resizing\nMCP Configuration\n{\n  \"mcpServers\": {\n    \"playwright\": {\n      \"command\": \"npx\",\n      \"args\": [\"@tontoko/fast-playwright-mcp@latest\"]\n    }\n  }\n}\n\nCritical Workflow\n\nFollow these steps in order for optimal results:\n\n1. Navigate First\n\nUse browser_navigate to load the target page before any other operations.\n\n2. Use Batch Execution for Multi-Step Tasks\n\nFor 2+ operations, ALWAYS use browser_batch_execute instead of individual tool calls.\n\n3. Optimize Token Usage\n\nApply expectation parameters to reduce response size.\n\n4. Use Diff Detection for State Changes\n\nEnable diffOptions when tracking changes without navigation.\n\nToken Optimization\nThe Expectation Parameter\n\nAll browser tools support an expectation parameter to control response content:\n\n{\n  \"includeSnapshot\": false,    // 70-80% token reduction\n  \"includeConsole\": false,      // Exclude console messages\n  \"includeTabs\": false,         // Hide tab information\n  \"includeCode\": false,         // Suppress code generation\n  \"includeDownloads\": false     // Exclude download info\n}\n\nSnapshot Options\n\nLimit snapshot content for focused analysis:\n\n{\n  \"snapshotOptions\": {\n    \"selector\": \".main-content\",  // Capture specific section only\n    \"maxLength\": 2000,            // Limit character count\n    \"format\": \"aria\"              // Use accessibility tree format\n  }\n}\n\nDiff Detection\n\nTrack only changes between operations:\n\n{\n  \"diffOptions\": {\n    \"enabled\": true,\n    \"format\": \"minimal\",      // Options: unified, split, minimal\n    \"threshold\": 0.1,\n    \"maxDiffLines\": 50,\n    \"context\": 3\n  }\n}\n\nEnhanced Selector System\nSelector Types (Priority Order)\nref - System-generated element ID from previous results (highest priority)\ncss - Standard CSS selectors (#id, .class, tag)\nrole - ARIA roles with optional text (button, textbox, etc.)\ntext - Text content search with optional tag filter\nSelector Arrays with Fallback\n\nAll element-based tools accept multiple selectors with automatic fallback:\n\n{\n  \"selectors\": [\n    { \"css\": \"#submit-btn\" },\n    { \"role\": \"button\", \"text\": \"Submit\" },\n    { \"text\": \"Submit\", \"tag\": \"button\" }\n  ]\n}\n\n\nSelectors are tried in order until one succeeds. If multiple elements match, returns a candidate list for selection.\n\nBatch Execution\nBasic Pattern\n\nExecute multiple operations in a single request:\n\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com/login\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#username\" }], \"text\": \"user@example.com\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#password\" }], \"text\": \"password123\" } },\n      { \"tool\": \"browser_click\", \"arguments\": { \"selectors\": [{ \"role\": \"button\", \"text\": \"Login\" }] } }\n    ]\n  }\n}\n\nAdvanced Configuration\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      {\n        \"tool\": \"browser_navigate\",\n        \"arguments\": { \"url\": \"https://example.com\" },\n        \"expectation\": { \"includeSnapshot\": false },\n        \"continueOnError\": true\n      },\n      {\n        \"tool\": \"browser_click\",\n        \"arguments\": { \"selectors\": [{ \"css\": \"#submit\" }] },\n        \"expectation\": {\n          \"includeSnapshot\": true,\n          \"snapshotOptions\": { \"selector\": \".result-area\" },\n          \"diffOptions\": { \"enabled\": true, \"format\": \"minimal\" }\n        }\n      }\n    ],\n    \"stopOnFirstError\": false,\n    \"globalExpectation\": {\n      \"includeConsole\": false,\n      \"includeTabs\": false\n    }\n  }\n}\n\nError Handling Options\ncontinueOnError (per-step): Continue even if this step fails\nstopOnFirstError (global): Stop entire batch on first error\nCommon Patterns\nNavigate and Screenshot\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com\" } },\n      {\n        \"tool\": \"browser_take_screenshot\",\n        \"arguments\": {\n          \"filename\": \"homepage.png\",\n          \"fullPage\": true,\n          \"expectation\": { \"includeSnapshot\": false }\n        }\n      }\n    ]\n  }\n}\n\nForm Filling with Submission\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com/contact\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#name\" }], \"text\": \"John Doe\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#email\" }], \"text\": \"john@example.com\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#message\" }], \"text\": \"Hello World\" } },\n      { \"tool\": \"browser_click\", \"arguments\": { \"selectors\": [{ \"role\": \"button\", \"text\": \"Send\" }] } }\n    ],\n    \"globalExpectation\": { \"includeSnapshot\": false }\n  }\n}\n\nResponsive Design Testing\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com\" } },\n      { \"tool\": \"browser_resize\", \"arguments\": { \"width\": 1920, \"height\": 1080 } },\n      { \"tool\": \"browser_take_screenshot\", \"arguments\": { \"filename\": \"desktop.png\" } },\n      { \"tool\": \"browser_resize\", \"arguments\": { \"width\": 768, \"height\": 1024 } },\n      { \"tool\": \"browser_take_screenshot\", \"arguments\": { \"filename\": \"tablet.png\" } },\n      { \"tool\": \"browser_resize\", \"arguments\": { \"width\": 375, \"height\": 667 } },\n      { \"tool\": \"browser_take_screenshot\", \"arguments\": { \"filename\": \"mobile.png\" } }\n    ]\n  }\n}\n\nLogin Flow with Verification\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_navigate\", \"arguments\": { \"url\": \"https://example.com/login\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#email\" }], \"text\": \"user@example.com\" } },\n      { \"tool\": \"browser_type\", \"arguments\": { \"selectors\": [{ \"css\": \"#password\" }], \"text\": \"secret\", \"submit\": true } },\n      { \"tool\": \"browser_wait_for\", \"arguments\": { \"text\": \"Dashboard\" } }\n    ],\n    \"globalExpectation\": { \"diffOptions\": { \"enabled\": true } }\n  }\n}\n\nDiagnostic Tools\nFind Elements\n\nSearch for elements using multiple criteria:\n\n{\n  \"tool\": \"browser_find_elements\",\n  \"arguments\": {\n    \"searchCriteria\": {\n      \"text\": \"Submit\",\n      \"role\": \"button\"\n    },\n    \"maxResults\": 5,\n    \"enableEnhancedDiscovery\": true\n  }\n}\n\nPage Diagnostics\n\nComprehensive page analysis:\n\n{\n  \"tool\": \"browser_diagnose\",\n  \"arguments\": {\n    \"diagnosticLevel\": \"detailed\",\n    \"includePerformanceMetrics\": true,\n    \"includeAccessibilityInfo\": true,\n    \"includeTroubleshootingSuggestions\": true\n  }\n}\n\n\nDiagnostic levels: none, basic, standard, detailed, full\n\nHTML Inspection\n\nExtract and analyze HTML content:\n\n{\n  \"tool\": \"browser_inspect_html\",\n  \"arguments\": {\n    \"selectors\": [{ \"css\": \".content\" }],\n    \"depth\": 3,\n    \"maxSize\": 50000,\n    \"format\": \"html\",\n    \"optimizeForLLM\": true\n  }\n}\n\nImage Optimization\nCompressed Screenshots\n{\n  \"tool\": \"browser_take_screenshot\",\n  \"arguments\": {\n    \"filename\": \"screenshot.jpg\",\n    \"type\": \"jpeg\",\n    \"expectation\": {\n      \"imageOptions\": {\n        \"format\": \"jpeg\",\n        \"quality\": 50,\n        \"maxWidth\": 1280\n      }\n    }\n  }\n}\n\nNetwork Request Filtering\n\nMonitor specific network activity:\n\n{\n  \"tool\": \"browser_network_requests\",\n  \"arguments\": {\n    \"urlPatterns\": [\"/api/\"],\n    \"excludeUrlPatterns\": [\"analytics\", \"tracking\"],\n    \"methods\": [\"GET\", \"POST\"],\n    \"statusRanges\": [{ \"min\": 200, \"max\": 299 }],\n    \"maxRequests\": 10,\n    \"newestFirst\": true\n  }\n}\n\nTab Management\nMulti-Tab Workflow\n{\n  \"tool\": \"browser_batch_execute\",\n  \"arguments\": {\n    \"steps\": [\n      { \"tool\": \"browser_tab_new\", \"arguments\": { \"url\": \"https://example.com\" } },\n      { \"tool\": \"browser_tab_list\", \"arguments\": {} },\n      { \"tool\": \"browser_tab_select\", \"arguments\": { \"index\": 0 } },\n      { \"tool\": \"browser_tab_close\", \"arguments\": { \"index\": 1 } }\n    ]\n  }\n}\n\nWait Strategies\nWait for Text\n{ \"tool\": \"browser_wait_for\", \"arguments\": { \"text\": \"Loading complete\" } }\n\nWait for Text to Disappear\n{ \"tool\": \"browser_wait_for\", \"arguments\": { \"textGone\": \"Loading...\" } }\n\nWait for Time\n{ \"tool\": \"browser_wait_for\", \"arguments\": { \"time\": 2 } }\n\nConsole Monitoring\nFilter Console Messages\n{\n  \"tool\": \"browser_console_messages\",\n  \"arguments\": {\n    \"consoleOptions\": {\n      \"levels\": [\"error\", \"warn\"],\n      \"maxMessages\": 10,\n      \"patterns\": [\"^Error:\"],\n      \"removeDuplicates\": true\n    }\n  }\n}\n\nJavaScript Evaluation\nPage-Level Evaluation\n{\n  \"tool\": \"browser_evaluate\",\n  \"arguments\": {\n    \"function\": \"() => document.title\"\n  }\n}\n\nElement-Level Evaluation\n{\n  \"tool\": \"browser_evaluate\",\n  \"arguments\": {\n    \"selectors\": [{ \"css\": \"#counter\" }],\n    \"function\": \"(element) => element.textContent\"\n  }\n}\n\nDialog Handling\n{\n  \"tool\": \"browser_handle_dialog\",\n  \"arguments\": {\n    \"accept\": true,\n    \"promptText\": \"Optional prompt response\"\n  }\n}\n\nFile Upload\n{\n  \"tool\": \"browser_file_upload\",\n  \"arguments\": {\n    \"paths\": [\"/absolute/path/to/file.pdf\"]\n  }\n}\n\nDrag and Drop\n{\n  \"tool\": \"browser_drag\",\n  \"arguments\": {\n    \"startSelectors\": [{ \"css\": \"#draggable\" }],\n    \"endSelectors\": [{ \"css\": \"#dropzone\" }]\n  }\n}\n\nSelect Options\n{\n  \"tool\": \"browser_select_option\",\n  \"arguments\": {\n    \"selectors\": [{ \"css\": \"#country\" }],\n    \"values\": [\"us\", \"de\"]\n  }\n}\n\nKeyboard Input\n{\n  \"tool\": \"browser_press_key\",\n  \"arguments\": {\n    \"key\": \"Enter\"\n  }\n}\n\n\nSpecial keys: Enter, Tab, Escape, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Backspace, Delete, Home, End\n\nBest Practices\nToken Efficiency\nUse batch execution for 2+ operations\nDisable snapshots for intermediate steps\nEnable diff detection for state tracking\nFilter console messages to relevant levels\nUse selective snapshots with CSS selectors\nCompress images when quality is not critical\nSelector Strategy\nUse ref from previous results when available\nProvide fallback selectors for robustness\nPrefer role-based selectors for accessibility\nUse CSS selectors for specific targeting\nText selectors as last resort\nError Handling\nUse continueOnError for non-critical steps\nSet stopOnFirstError: false for best-effort execution\nUse diagnostic tools when automation fails\nCheck console messages for JavaScript errors\nPerformance\nMinimize snapshot size with selectors\nUse minimal diff format for change tracking\nFilter network requests to relevant patterns\nBatch related operations together\nTroubleshooting\nElement Not Found\nUse browser_find_elements to discover alternatives\nRun browser_diagnose for page analysis\nCheck for iframes or shadow DOM\nVerify page has finished loading\nTimeout Issues\nUse browser_wait_for with specific conditions\nIncrease wait time for slow pages\nCheck network requests for blocked resources\nToken Overflow\nEnable includeSnapshot: false\nUse snapshotOptions.selector to limit scope\nEnable diffOptions.enabled: true\nReduce maxRequests in network filtering\nTool Reference\nCore Automation\nbrowser_navigate - Navigate to URL\nbrowser_click - Click element\nbrowser_type - Type text\nbrowser_hover - Hover over element\nbrowser_drag - Drag and drop\nbrowser_select_option - Select dropdown option\nbrowser_press_key - Press keyboard key\nbrowser_file_upload - Upload files\nbrowser_evaluate - Execute JavaScript\nbrowser_wait_for - Wait for condition\nBatch Operations\nbrowser_batch_execute - Execute multiple actions\nInformation Gathering\nbrowser_snapshot - Capture accessibility snapshot\nbrowser_take_screenshot - Take screenshot\nbrowser_console_messages - Get console output\nbrowser_network_requests - List network requests\nbrowser_find_elements - Find elements by criteria\nbrowser_diagnose - Page diagnostics\nbrowser_inspect_html - HTML content extraction\nTab Management\nbrowser_tab_list - List all tabs\nbrowser_tab_new - Open new tab\nbrowser_tab_select - Switch to tab\nbrowser_tab_close - Close tab\nNavigation\nbrowser_navigate_back - Go back\nbrowser_navigate_forward - Go forward\nBrowser Control\nbrowser_resize - Resize window\nbrowser_close - Close browser\nbrowser_install - Install browser\nbrowser_handle_dialog - Handle alerts/confirms\nVision (requires --caps=vision)\nbrowser_mouse_click_xy - Click at coordinates\nbrowser_mouse_move_xy - Move mouse to coordinates\nbrowser_mouse_drag_xy - Drag between coordinates\nPDF (requires --caps=pdf)\nbrowser_pdf_save - Save page as PDF"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/frankausberlin/fastplaywright",
    "publisherUrl": "https://clawhub.ai/frankausberlin/fastplaywright",
    "owner": "frankausberlin",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/fastplaywright",
    "downloadUrl": "https://openagent3.xyz/downloads/fastplaywright",
    "agentUrl": "https://openagent3.xyz/skills/fastplaywright/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fastplaywright/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fastplaywright/agent.md"
  }
}