Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Chrome DevTools Protocol, extension Manifest V3, and debugging patterns that prevent common automation failures.
Chrome DevTools Protocol, extension Manifest V3, and debugging patterns that prevent common automation failures.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
Get tab WebSocket URL first: Never connect to ws://localhost:9222/devtools/browser directly. Fetch http://localhost:9222/json/list and use webSocketDebuggerUrl from the active tab. Enable domains before use: Runtime.enable and Page.enable must be called before any Runtime.evaluate or Page.navigate commands. CDP is async: Wait for response before sending next command. Use Promise-based wrapper with response ID tracking. Screenshot on high-DPI: Include fromSurface: true and scale: 2 in Page.captureScreenshot params for Retina displays. Get response body separately: Network.responseReceived doesn't include body. Call Network.getResponseBody with requestId after response completes.
Permissions split: Use permissions for APIs, host_permissions for URLs. Never use http://*/* in permissions. Service workers terminate: No persistent state. Use chrome.storage.local instead of global variables. Use chrome.alarms instead of setInterval. Content script isolation: Can't access page globals. Use chrome.scripting.executeScript with func for page context. Use window.postMessage for contentβpage communication. Storage is async: chrome.storage.local.get() returns Promise, not data. Always await. Handle QUOTA_EXCEEDED errors.
Detect actual Chrome (not Edge/Brave): Check window.chrome && navigator.vendor === "Google Inc." and exclude Opera/Edge. Extension context types: chrome.runtime.id exists β content script chrome.runtime.getManifest exists β popup/background/options chrome.loadTimes exists but no runtime β regular Chrome web page Manifest version check: Wrap chrome.runtime.getManifest() in try-catch. Use chrome.action for V3, chrome.browserAction for V2.
Memory API conditional: Check 'memory' in performance before accessing performance.memory.usedJSHeapSize. Use performance marks: performance.mark() and performance.measure() for sub-frame timing. Clear marks to prevent memory leaks. Layout thrash detection: PerformanceObserver with entryTypes: ['measure', 'paint', 'largest-contentful-paint']. Flag entries >16.67ms.
Block before navigate: Call Network.setBlockedURLs before Page.navigate, not after. Request interception: Use Network.setRequestInterception with requestStage: 'Request' for granular control. Return errorReason: 'BlockedByClient' to block.
Mixed content: HTTPS pages can't load HTTP resources. Check location.protocol vs resource URL. CORS errors: TypeError on cross-origin fetch usually means CORS. Check DevTools Network tab for specific error. Secure context required: File System Access API, Clipboard API require window.isSecureContext === true and user gesture.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.