{
  "schemaVersion": "1.0",
  "item": {
    "slug": "js-eyes",
    "name": "JS Eyes",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/imjszhang/js-eyes",
    "canonicalUrl": "https://clawhub.ai/imjszhang/js-eyes",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/js-eyes",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=js-eyes",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "clients/js-eyes-client.js",
      "openclaw-plugin/index.mjs",
      "openclaw-plugin/openclaw.plugin.json",
      "openclaw-plugin/package.json",
      "package.json",
      "server/index.js"
    ],
    "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/js-eyes"
    },
    "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/js-eyes",
    "agentPageUrl": "https://openagent3.xyz/skills/js-eyes/agent",
    "manifestUrl": "https://openagent3.xyz/skills/js-eyes/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/js-eyes/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": "JS Eyes",
        "body": "Browser extension + WebSocket server that gives AI agents full browser automation capabilities."
      },
      {
        "title": "What it does",
        "body": "JS Eyes connects a browser extension (Chrome / Edge / Firefox) to an AI agent framework via WebSocket, enabling the agent to:\n\nList and manage browser tabs\nOpen URLs and navigate pages\nExtract full HTML content from any tab\nExecute arbitrary JavaScript in page context\nRead cookies for any domain\nMonitor connected browser clients"
      },
      {
        "title": "Architecture",
        "body": "Browser Extension  <── WebSocket ──>  JS-Eyes Server  <── WebSocket ──>  AI Agent (OpenClaw)\n (Chrome/Edge/FF)                     (Node.js)                         (Plugin: index.mjs)\n\nThe browser extension runs in the user's browser and maintains a persistent WebSocket connection to the JS-Eyes server. The OpenClaw plugin connects to the same server and exposes 7 AI tools + a background service + CLI commands."
      },
      {
        "title": "Provided AI Tools",
        "body": "ToolDescriptionjs_eyes_get_tabsList all open browser tabs with ID, URL, titlejs_eyes_list_clientsList connected browser extension clientsjs_eyes_open_urlOpen a URL in new or existing tabjs_eyes_close_tabClose a tab by IDjs_eyes_get_htmlGet full HTML content of a tabjs_eyes_execute_scriptRun JavaScript in a tab and return resultjs_eyes_get_cookiesGet all cookies for a tab's domain"
      },
      {
        "title": "CLI Commands",
        "body": "openclaw js-eyes status          # Server connection status\nopenclaw js-eyes tabs            # List all browser tabs\nopenclaw js-eyes server start    # Start the built-in server\nopenclaw js-eyes server stop     # Stop the built-in server"
      },
      {
        "title": "Skill Bundle Structure",
        "body": "This skill bundle is published from the repository root and contains all files required to run the OpenClaw plugin:\n\njs-eyes/\n├── SKILL.md                        ← Skill entry point (this file)\n├── package.json                    ← Root package — declares ws dependency\n├── LICENSE\n├── openclaw-plugin/\n│   ├── openclaw.plugin.json        ← Plugin manifest (ID, config schema, UI hints)\n│   ├── package.json                ← ESM module descriptor, declares entry point\n│   └── index.mjs                   ← Plugin logic — registers 7 AI tools, 1 service, CLI\n├── server/\n│   ├── index.js                    ← HTTP + WebSocket server\n│   ├── ws-handler.js               ← Connection and message handling\n│   └── package.json\n└── clients/\n    └── js-eyes-client.js           ← Node.js client SDK for browser automation\n\nopenclaw-plugin/index.mjs imports from ../server/ and ../clients/ via relative paths, so the directory layout above must be preserved — openclaw-plugin/ cannot be used in isolation."
      },
      {
        "title": "Prerequisites",
        "body": "Node.js >= 16\nA supported browser: Chrome 88+ / Edge 88+ / Firefox 58+"
      },
      {
        "title": "Deploy to .openclaw",
        "body": "Install the skill via ClawHub:\n\nclawhub install js-eyes\n\nClawHub installs into ./skills under your current working directory (or your configured OpenClaw workspace). The bundle is self-contained — it includes the plugin, WebSocket server, and client SDK.\n\n1. Install Node.js dependencies — the ws package is required at runtime:\n\ncd ./skills/js-eyes   # from the dir where you ran clawhub install; or ~/.openclaw/skills/js-eyes if using legacy sync\nnpm install\n\nRun npm install if ws was not auto-installed via the Skills UI.\n\n2. Register the plugin in ~/.openclaw/openclaw.json. The path must point to the openclaw-plugin subdirectory inside the skill, not the skill root:\n\nInstall method<SKILL_ROOT>Plugin path for plugins.load.pathsClawHub (workspace)./skills/js-eyes or $WORKSPACE/skills/js-eyes./skills/js-eyes/openclaw-plugin (use absolute path if needed)ClawHub (legacy sync)~/.openclaw/skills/js-eyes~/.openclaw/skills/js-eyes/openclaw-plugin\n\nExample config (replace the path with your actual install location — use pwd after cd into the skill to get the absolute path). If you already have other plugins, append this path to the existing paths array:\n\n{\n  \"plugins\": {\n    \"load\": {\n      \"paths\": [\"/path/to/skills/js-eyes/openclaw-plugin\"]\n    },\n    \"entries\": {\n      \"js-eyes\": {\n        \"enabled\": true,\n        \"config\": {\n          \"serverPort\": 18080,\n          \"autoStartServer\": true\n        }\n      }\n    }\n  }\n}\n\nPath note: index.mjs imports from ../server/ and ../clients/ relative to itself, so the bundle directory layout must be preserved. Point paths at the openclaw-plugin subdirectory only.\n\n3. Restart OpenClaw to load the plugin.\n\nFor developers: clone the full repository and point plugins.load.paths to the openclaw-plugin directory inside your clone."
      },
      {
        "title": "Browser Extension Setup",
        "body": "The plugin talks to browsers through the JS Eyes extension. Install it separately (independent of ClawHub):\n\nDownload from GitHub Releases:\n\nChrome / Edge: js-eyes-chrome-vX.Y.Z.zip — open chrome://extensions/ (or edge://extensions/), enable Developer mode, click \"Load unpacked\", select the extracted folder\nFirefox: js-eyes-firefox-vX.Y.Z.xpi — drag and drop into the browser window\n\n\n\nClick the JS Eyes extension icon in the toolbar, enter http://localhost:18080 as the server address, click Connect — the status should turn green."
      },
      {
        "title": "Verify",
        "body": "Run the CLI command to confirm everything is working:\n\nopenclaw js-eyes status\n\nExpected output:\n\n=== JS-Eyes Server Status ===\n  Uptime: ...s\n  Browser extensions: 1\n  Automation clients: ...\n\nYou can also ask the AI agent to list your browser tabs — it should invoke js_eyes_get_tabs and return the tab list."
      },
      {
        "title": "Plugin Configuration",
        "body": "OptionTypeDefaultDescriptionserverHoststring\"localhost\"Server listen addressserverPortnumber18080Server port (must match extension config)autoStartServerbooleantrueAuto-start server when plugin loadsrequestTimeoutnumber60Per-request timeout in seconds"
      },
      {
        "title": "Troubleshooting",
        "body": "SymptomCauseFixExtension shows \"Disconnected\"Server not runningCheck openclaw js-eyes status; ensure autoStartServer is truejs_eyes_get_tabs returns emptyNo extension connectedClick extension icon, verify address is correct, click ConnectCannot find module 'ws'Dependencies not installedRun npm install in the skill root (where package.json declares ws)Tools not appearing in OpenClawPlugin path wrong or not enabledEnsure plugins.load.paths points to the openclaw-plugin subdirectory, not the skill rootPlugin path not found (Windows)Path formatUse forward slashes in JSON, e.g. C:/Users/you/skills/js-eyes/openclaw-plugin"
      },
      {
        "title": "Links",
        "body": "Source: https://github.com/imjszhang/js-eyes\nReleases: https://github.com/imjszhang/js-eyes/releases\nClawHub: https://clawhub.ai/skills/js-eyes\nAuthor: @imjszhang\nLicense: MIT"
      }
    ],
    "body": "JS Eyes\n\nBrowser extension + WebSocket server that gives AI agents full browser automation capabilities.\n\nWhat it does\n\nJS Eyes connects a browser extension (Chrome / Edge / Firefox) to an AI agent framework via WebSocket, enabling the agent to:\n\nList and manage browser tabs\nOpen URLs and navigate pages\nExtract full HTML content from any tab\nExecute arbitrary JavaScript in page context\nRead cookies for any domain\nMonitor connected browser clients\nArchitecture\nBrowser Extension  <── WebSocket ──>  JS-Eyes Server  <── WebSocket ──>  AI Agent (OpenClaw)\n (Chrome/Edge/FF)                     (Node.js)                         (Plugin: index.mjs)\n\n\nThe browser extension runs in the user's browser and maintains a persistent WebSocket connection to the JS-Eyes server. The OpenClaw plugin connects to the same server and exposes 7 AI tools + a background service + CLI commands.\n\nProvided AI Tools\nTool\tDescription\njs_eyes_get_tabs\tList all open browser tabs with ID, URL, title\njs_eyes_list_clients\tList connected browser extension clients\njs_eyes_open_url\tOpen a URL in new or existing tab\njs_eyes_close_tab\tClose a tab by ID\njs_eyes_get_html\tGet full HTML content of a tab\njs_eyes_execute_script\tRun JavaScript in a tab and return result\njs_eyes_get_cookies\tGet all cookies for a tab's domain\nCLI Commands\nopenclaw js-eyes status          # Server connection status\nopenclaw js-eyes tabs            # List all browser tabs\nopenclaw js-eyes server start    # Start the built-in server\nopenclaw js-eyes server stop     # Stop the built-in server\n\nSkill Bundle Structure\n\nThis skill bundle is published from the repository root and contains all files required to run the OpenClaw plugin:\n\njs-eyes/\n├── SKILL.md                        ← Skill entry point (this file)\n├── package.json                    ← Root package — declares ws dependency\n├── LICENSE\n├── openclaw-plugin/\n│   ├── openclaw.plugin.json        ← Plugin manifest (ID, config schema, UI hints)\n│   ├── package.json                ← ESM module descriptor, declares entry point\n│   └── index.mjs                   ← Plugin logic — registers 7 AI tools, 1 service, CLI\n├── server/\n│   ├── index.js                    ← HTTP + WebSocket server\n│   ├── ws-handler.js               ← Connection and message handling\n│   └── package.json\n└── clients/\n    └── js-eyes-client.js           ← Node.js client SDK for browser automation\n\n\nopenclaw-plugin/index.mjs imports from ../server/ and ../clients/ via relative paths, so the directory layout above must be preserved — openclaw-plugin/ cannot be used in isolation.\n\nPrerequisites\nNode.js >= 16\nA supported browser: Chrome 88+ / Edge 88+ / Firefox 58+\nDeploy to .openclaw\n\nInstall the skill via ClawHub:\n\nclawhub install js-eyes\n\n\nClawHub installs into ./skills under your current working directory (or your configured OpenClaw workspace). The bundle is self-contained — it includes the plugin, WebSocket server, and client SDK.\n\n1. Install Node.js dependencies — the ws package is required at runtime:\n\ncd ./skills/js-eyes   # from the dir where you ran clawhub install; or ~/.openclaw/skills/js-eyes if using legacy sync\nnpm install\n\n\nRun npm install if ws was not auto-installed via the Skills UI.\n\n2. Register the plugin in ~/.openclaw/openclaw.json. The path must point to the openclaw-plugin subdirectory inside the skill, not the skill root:\n\nInstall method\t<SKILL_ROOT>\tPlugin path for plugins.load.paths\nClawHub (workspace)\t./skills/js-eyes or $WORKSPACE/skills/js-eyes\t./skills/js-eyes/openclaw-plugin (use absolute path if needed)\nClawHub (legacy sync)\t~/.openclaw/skills/js-eyes\t~/.openclaw/skills/js-eyes/openclaw-plugin\n\nExample config (replace the path with your actual install location — use pwd after cd into the skill to get the absolute path). If you already have other plugins, append this path to the existing paths array:\n\n{\n  \"plugins\": {\n    \"load\": {\n      \"paths\": [\"/path/to/skills/js-eyes/openclaw-plugin\"]\n    },\n    \"entries\": {\n      \"js-eyes\": {\n        \"enabled\": true,\n        \"config\": {\n          \"serverPort\": 18080,\n          \"autoStartServer\": true\n        }\n      }\n    }\n  }\n}\n\n\nPath note: index.mjs imports from ../server/ and ../clients/ relative to itself, so the bundle directory layout must be preserved. Point paths at the openclaw-plugin subdirectory only.\n\n3. Restart OpenClaw to load the plugin.\n\nFor developers: clone the full repository and point plugins.load.paths to the openclaw-plugin directory inside your clone.\n\nBrowser Extension Setup\n\nThe plugin talks to browsers through the JS Eyes extension. Install it separately (independent of ClawHub):\n\nDownload from GitHub Releases:\n\nChrome / Edge: js-eyes-chrome-vX.Y.Z.zip — open chrome://extensions/ (or edge://extensions/), enable Developer mode, click \"Load unpacked\", select the extracted folder\nFirefox: js-eyes-firefox-vX.Y.Z.xpi — drag and drop into the browser window\n\nClick the JS Eyes extension icon in the toolbar, enter http://localhost:18080 as the server address, click Connect — the status should turn green.\n\nVerify\n\nRun the CLI command to confirm everything is working:\n\nopenclaw js-eyes status\n\n\nExpected output:\n\n=== JS-Eyes Server Status ===\n  Uptime: ...s\n  Browser extensions: 1\n  Automation clients: ...\n\n\nYou can also ask the AI agent to list your browser tabs — it should invoke js_eyes_get_tabs and return the tab list.\n\nPlugin Configuration\nOption\tType\tDefault\tDescription\nserverHost\tstring\t\"localhost\"\tServer listen address\nserverPort\tnumber\t18080\tServer port (must match extension config)\nautoStartServer\tboolean\ttrue\tAuto-start server when plugin loads\nrequestTimeout\tnumber\t60\tPer-request timeout in seconds\nTroubleshooting\nSymptom\tCause\tFix\nExtension shows \"Disconnected\"\tServer not running\tCheck openclaw js-eyes status; ensure autoStartServer is true\njs_eyes_get_tabs returns empty\tNo extension connected\tClick extension icon, verify address is correct, click Connect\nCannot find module 'ws'\tDependencies not installed\tRun npm install in the skill root (where package.json declares ws)\nTools not appearing in OpenClaw\tPlugin path wrong or not enabled\tEnsure plugins.load.paths points to the openclaw-plugin subdirectory, not the skill root\nPlugin path not found (Windows)\tPath format\tUse forward slashes in JSON, e.g. C:/Users/you/skills/js-eyes/openclaw-plugin\nLinks\nSource: https://github.com/imjszhang/js-eyes\nReleases: https://github.com/imjszhang/js-eyes/releases\nClawHub: https://clawhub.ai/skills/js-eyes\nAuthor: @imjszhang\nLicense: MIT"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/imjszhang/js-eyes",
    "publisherUrl": "https://clawhub.ai/imjszhang/js-eyes",
    "owner": "imjszhang",
    "version": "1.4.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/js-eyes",
    "downloadUrl": "https://openagent3.xyz/downloads/js-eyes",
    "agentUrl": "https://openagent3.xyz/skills/js-eyes/agent",
    "manifestUrl": "https://openagent3.xyz/skills/js-eyes/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/js-eyes/agent.md"
  }
}