{
  "schemaVersion": "1.0",
  "item": {
    "slug": "webcli",
    "name": "webcli",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/erdinccurebal/webcli",
    "canonicalUrl": "https://clawhub.ai/erdinccurebal/webcli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/webcli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=webcli",
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/webcli"
    },
    "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/webcli",
    "agentPageUrl": "https://openagent3.xyz/skills/webcli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/webcli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/webcli/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": "webcli — Headless Browser CLI",
        "body": "You have access to a headless browser via the webcli command. Use it to navigate websites, read content, interact with elements, take screenshots, and get accessibility snapshots."
      },
      {
        "title": "Prerequisites",
        "body": "npm install -g @erdinccurebal/webcli\nnpx playwright install chromium\n\nHomepage: https://webcli.erdinc.curebal.dev/\nRepository: https://github.com/erdinccurebal/webcli"
      },
      {
        "title": "Navigation",
        "body": "webcli go <url>                    # Navigate to URL (auto-starts daemon)\nwebcli go <url> -w networkidle     # Wait for network to settle\nwebcli go <url> -t mytab           # Open in named tab\nwebcli back                        # Go back in history\nwebcli forward                     # Go forward\nwebcli reload                      # Reload current page"
      },
      {
        "title": "Reading Page Content",
        "body": "webcli source                      # Get full visible text of the page\nwebcli links                       # List all links (text + href)\nwebcli forms                       # List all forms with their inputs\nwebcli html <selector>             # Get innerHTML of element\nwebcli attr <selector> <attribute> # Get element attribute value\nwebcli eval \"<js>\"                 # Execute JavaScript and return result\nwebcli title                       # Get the page title\nwebcli url                         # Get the current URL\nwebcli value <selector>            # Get input/textarea value\nwebcli count <selector>            # Count matching elements\nwebcli box <selector>              # Get bounding box (x, y, w, h)\nwebcli styles <selector> [props..] # Get computed CSS styles\nwebcli visible <selector>          # Check if element is visible\nwebcli enabled <selector>          # Check if element is enabled\nwebcli checked <selector>          # Check if checkbox is checked"
      },
      {
        "title": "Accessibility Snapshot (Recommended for AI agents)",
        "body": "webcli snapshot                    # Get accessibility tree with refs (@e1, @e2...)\nwebcli snapshot --all              # Include non-interactive elements\nwebcli snapshot --max-depth 5      # Limit tree depth\n\nThe snapshot assigns deterministic refs to interactive elements. Use these refs in other commands:\n\nwebcli snapshot                    # Get tree: [button @e1] \"Submit\", [textbox @e2] \"Email\"\nwebcli fill @e2 \"user@example.com\" # Fill using ref\nwebcli click @e1                   # Click using ref"
      },
      {
        "title": "Interaction",
        "body": "webcli click \"<visible text>\"      # Click element by visible text\nwebcli click @e1                   # Click element by snapshot ref\nwebcli clicksel \"<css selector>\"   # Click element by CSS selector\nwebcli dblclick \"<text>\"           # Double-click element by visible text\nwebcli hover \"<selector>\"          # Hover over an element\nwebcli fill \"<selector>\" \"<value>\" # Fill an input field (preferred for forms)\nwebcli type \"<text>\"               # Type with keyboard (for focused element)\nwebcli select \"<selector>\" \"<val>\" # Select dropdown option\nwebcli press Enter                 # Press keyboard key (Enter, Tab, Escape...)\nwebcli focus \"<selector>\"          # Focus an element\nwebcli check \"<selector>\"         # Check a checkbox\nwebcli uncheck \"<selector>\"       # Uncheck a checkbox\nwebcli drag \"<from>\" \"<to>\"        # Drag and drop between selectors\nwebcli upload \"<selector>\" <file>  # Upload a file to input[type=file]\nwebcli scroll down 500             # Scroll page (up/down/left/right, px)"
      },
      {
        "title": "Waiting",
        "body": "webcli wait \"<selector>\"           # Wait for CSS selector to be visible\nwebcli waitfor \"<text>\"            # Wait for text to appear on page\nwebcli sleep 2000                  # Sleep for N milliseconds"
      },
      {
        "title": "Screenshots & PDF",
        "body": "webcli screenshot                  # Take full-page screenshot (returns path)\nwebcli screenshot -o page.png      # Save to specific file\nwebcli screenshot --no-full        # Viewport-only screenshot\nwebcli screenshot --annotate       # Screenshot with numbered interactive elements\nwebcli pdf                         # Save page as PDF\nwebcli pdf -o page.pdf             # Save PDF to specific file"
      },
      {
        "title": "Console & Errors",
        "body": "webcli console on                  # Start capturing console messages\nwebcli console off                 # Stop capturing\nwebcli console                     # Show captured console messages\nwebcli errors                      # Show page errors"
      },
      {
        "title": "Dialog Handling",
        "body": "webcli dialog accept               # Accept alert/confirm dialog\nwebcli dialog accept \"input text\"  # Accept prompt dialog with text\nwebcli dialog dismiss              # Dismiss dialog"
      },
      {
        "title": "Frame (iframe) Switching",
        "body": "webcli frame \"<selector>\"          # Switch to an iframe\nwebcli frame main                  # Switch back to main frame"
      },
      {
        "title": "Storage (localStorage)",
        "body": "webcli storage get                 # Get all localStorage\nwebcli storage get mykey           # Get specific key\nwebcli storage set mykey myvalue   # Set a value\nwebcli storage clear               # Clear all localStorage"
      },
      {
        "title": "State Management",
        "body": "webcli state save session.json     # Save cookies + localStorage + sessionStorage\nwebcli state load session.json     # Restore full browser state"
      },
      {
        "title": "Browser Settings",
        "body": "webcli viewport 1920 1080          # Change viewport size\nwebcli useragent \"<string>\"        # Change user agent\nwebcli device \"iPhone 14\"          # Emulate device (viewport + UA)\nwebcli network on                  # Start logging network requests\nwebcli network off                 # Stop logging\nwebcli network                     # Show network logs"
      },
      {
        "title": "Cookie Management",
        "body": "webcli cookie export               # Export cookies as JSON\nwebcli cookie import <file>        # Import cookies from JSON file"
      },
      {
        "title": "Tab & Daemon Management",
        "body": "webcli tabs                        # List open tabs\nwebcli quit                        # Close current tab\nwebcli quit -t mytab               # Close specific tab\nwebcli status                      # Show daemon info (PID, uptime, tabs)\nwebcli stop                        # Stop daemon and close browser"
      },
      {
        "title": "Global Options",
        "body": "All commands support:\n\n-t, --tab <name> — target a specific tab (default: \"default\")\n--json — output as structured JSON\n--timeout <ms> — command timeout (default: 30000)"
      },
      {
        "title": "Recommended workflow for AI agents",
        "body": "webcli go <url> to navigate\nwebcli snapshot to get accessibility tree with refs\nUse refs for interaction: webcli click @e1, webcli fill @e2 \"value\"\nwebcli snapshot again to see updated state\nwebcli screenshot if user wants visual confirmation"
      },
      {
        "title": "Alternative workflow (text-based)",
        "body": "webcli go <url> to navigate\nwebcli source to read the page content\nUse webcli click, webcli fill, webcli press to interact\nwebcli source again to see the result"
      },
      {
        "title": "Form filling",
        "body": "Always use webcli fill for input fields — it properly sets React/Vue controlled inputs\nUse webcli click or webcli clicksel for buttons\nUse webcli press Enter to submit forms\nAfter submitting, use webcli sleep 1000 then webcli source to check the result"
      },
      {
        "title": "Multi-tab browsing",
        "body": "webcli go https://site-a.com -t research\nwebcli go https://site-b.com -t reference\nwebcli source -t research          # Read from specific tab\nwebcli source -t reference"
      },
      {
        "title": "Error recovery",
        "body": "If a command times out, try webcli sleep 2000 then retry\nIf an element is not found, use webcli source to check what's on the page\nIf the daemon seems stuck, use webcli stop then retry the command\nUse webcli wait \"<selector>\" before interacting with dynamically loaded content"
      },
      {
        "title": "Important Notes",
        "body": "Always read the page with webcli source or webcli snapshot before trying to interact\nPrefer webcli snapshot + refs for the most reliable element targeting\nPrefer webcli fill over webcli type for form inputs\nPrefer webcli click (by text) over webcli clicksel (by selector) when possible\nUse webcli sleep between rapid interactions to let pages update\nThe daemon persists between commands — no need to re-navigate unless the page changes"
      }
    ],
    "body": "webcli — Headless Browser CLI\n\nYou have access to a headless browser via the webcli command. Use it to navigate websites, read content, interact with elements, take screenshots, and get accessibility snapshots.\n\nPrerequisites\nnpm install -g @erdinccurebal/webcli\nnpx playwright install chromium\n\n\nHomepage: https://webcli.erdinc.curebal.dev/ Repository: https://github.com/erdinccurebal/webcli\n\nCommands Reference\nNavigation\nwebcli go <url>                    # Navigate to URL (auto-starts daemon)\nwebcli go <url> -w networkidle     # Wait for network to settle\nwebcli go <url> -t mytab           # Open in named tab\nwebcli back                        # Go back in history\nwebcli forward                     # Go forward\nwebcli reload                      # Reload current page\n\nReading Page Content\nwebcli source                      # Get full visible text of the page\nwebcli links                       # List all links (text + href)\nwebcli forms                       # List all forms with their inputs\nwebcli html <selector>             # Get innerHTML of element\nwebcli attr <selector> <attribute> # Get element attribute value\nwebcli eval \"<js>\"                 # Execute JavaScript and return result\nwebcli title                       # Get the page title\nwebcli url                         # Get the current URL\nwebcli value <selector>            # Get input/textarea value\nwebcli count <selector>            # Count matching elements\nwebcli box <selector>              # Get bounding box (x, y, w, h)\nwebcli styles <selector> [props..] # Get computed CSS styles\nwebcli visible <selector>          # Check if element is visible\nwebcli enabled <selector>          # Check if element is enabled\nwebcli checked <selector>          # Check if checkbox is checked\n\nAccessibility Snapshot (Recommended for AI agents)\nwebcli snapshot                    # Get accessibility tree with refs (@e1, @e2...)\nwebcli snapshot --all              # Include non-interactive elements\nwebcli snapshot --max-depth 5      # Limit tree depth\n\n\nThe snapshot assigns deterministic refs to interactive elements. Use these refs in other commands:\n\nwebcli snapshot                    # Get tree: [button @e1] \"Submit\", [textbox @e2] \"Email\"\nwebcli fill @e2 \"user@example.com\" # Fill using ref\nwebcli click @e1                   # Click using ref\n\nInteraction\nwebcli click \"<visible text>\"      # Click element by visible text\nwebcli click @e1                   # Click element by snapshot ref\nwebcli clicksel \"<css selector>\"   # Click element by CSS selector\nwebcli dblclick \"<text>\"           # Double-click element by visible text\nwebcli hover \"<selector>\"          # Hover over an element\nwebcli fill \"<selector>\" \"<value>\" # Fill an input field (preferred for forms)\nwebcli type \"<text>\"               # Type with keyboard (for focused element)\nwebcli select \"<selector>\" \"<val>\" # Select dropdown option\nwebcli press Enter                 # Press keyboard key (Enter, Tab, Escape...)\nwebcli focus \"<selector>\"          # Focus an element\nwebcli check \"<selector>\"         # Check a checkbox\nwebcli uncheck \"<selector>\"       # Uncheck a checkbox\nwebcli drag \"<from>\" \"<to>\"        # Drag and drop between selectors\nwebcli upload \"<selector>\" <file>  # Upload a file to input[type=file]\nwebcli scroll down 500             # Scroll page (up/down/left/right, px)\n\nWaiting\nwebcli wait \"<selector>\"           # Wait for CSS selector to be visible\nwebcli waitfor \"<text>\"            # Wait for text to appear on page\nwebcli sleep 2000                  # Sleep for N milliseconds\n\nScreenshots & PDF\nwebcli screenshot                  # Take full-page screenshot (returns path)\nwebcli screenshot -o page.png      # Save to specific file\nwebcli screenshot --no-full        # Viewport-only screenshot\nwebcli screenshot --annotate       # Screenshot with numbered interactive elements\nwebcli pdf                         # Save page as PDF\nwebcli pdf -o page.pdf             # Save PDF to specific file\n\nConsole & Errors\nwebcli console on                  # Start capturing console messages\nwebcli console off                 # Stop capturing\nwebcli console                     # Show captured console messages\nwebcli errors                      # Show page errors\n\nDialog Handling\nwebcli dialog accept               # Accept alert/confirm dialog\nwebcli dialog accept \"input text\"  # Accept prompt dialog with text\nwebcli dialog dismiss              # Dismiss dialog\n\nFrame (iframe) Switching\nwebcli frame \"<selector>\"          # Switch to an iframe\nwebcli frame main                  # Switch back to main frame\n\nStorage (localStorage)\nwebcli storage get                 # Get all localStorage\nwebcli storage get mykey           # Get specific key\nwebcli storage set mykey myvalue   # Set a value\nwebcli storage clear               # Clear all localStorage\n\nState Management\nwebcli state save session.json     # Save cookies + localStorage + sessionStorage\nwebcli state load session.json     # Restore full browser state\n\nBrowser Settings\nwebcli viewport 1920 1080          # Change viewport size\nwebcli useragent \"<string>\"        # Change user agent\nwebcli device \"iPhone 14\"          # Emulate device (viewport + UA)\nwebcli network on                  # Start logging network requests\nwebcli network off                 # Stop logging\nwebcli network                     # Show network logs\n\nCookie Management\nwebcli cookie export               # Export cookies as JSON\nwebcli cookie import <file>        # Import cookies from JSON file\n\nTab & Daemon Management\nwebcli tabs                        # List open tabs\nwebcli quit                        # Close current tab\nwebcli quit -t mytab               # Close specific tab\nwebcli status                      # Show daemon info (PID, uptime, tabs)\nwebcli stop                        # Stop daemon and close browser\n\nGlobal Options\n\nAll commands support:\n\n-t, --tab <name> — target a specific tab (default: \"default\")\n--json — output as structured JSON\n--timeout <ms> — command timeout (default: 30000)\nBest Practices\nRecommended workflow for AI agents\nwebcli go <url> to navigate\nwebcli snapshot to get accessibility tree with refs\nUse refs for interaction: webcli click @e1, webcli fill @e2 \"value\"\nwebcli snapshot again to see updated state\nwebcli screenshot if user wants visual confirmation\nAlternative workflow (text-based)\nwebcli go <url> to navigate\nwebcli source to read the page content\nUse webcli click, webcli fill, webcli press to interact\nwebcli source again to see the result\nForm filling\nAlways use webcli fill for input fields — it properly sets React/Vue controlled inputs\nUse webcli click or webcli clicksel for buttons\nUse webcli press Enter to submit forms\nAfter submitting, use webcli sleep 1000 then webcli source to check the result\nMulti-tab browsing\nwebcli go https://site-a.com -t research\nwebcli go https://site-b.com -t reference\nwebcli source -t research          # Read from specific tab\nwebcli source -t reference\n\nError recovery\nIf a command times out, try webcli sleep 2000 then retry\nIf an element is not found, use webcli source to check what's on the page\nIf the daemon seems stuck, use webcli stop then retry the command\nUse webcli wait \"<selector>\" before interacting with dynamically loaded content\nImportant Notes\nAlways read the page with webcli source or webcli snapshot before trying to interact\nPrefer webcli snapshot + refs for the most reliable element targeting\nPrefer webcli fill over webcli type for form inputs\nPrefer webcli click (by text) over webcli clicksel (by selector) when possible\nUse webcli sleep between rapid interactions to let pages update\nThe daemon persists between commands — no need to re-navigate unless the page changes"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/erdinccurebal/webcli",
    "publisherUrl": "https://clawhub.ai/erdinccurebal/webcli",
    "owner": "erdinccurebal",
    "version": "0.2.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/webcli",
    "downloadUrl": "https://openagent3.xyz/downloads/webcli",
    "agentUrl": "https://openagent3.xyz/skills/webcli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/webcli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/webcli/agent.md"
  }
}