ryanthedev/oberskills/browser

Claude Code and agent skill by ryanthedev/oberskills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Controls a live Chrome browser through a persistent puppeteer-core MCP connection — click, type, hover, drag, fill forms; navigate pages; take screenshots and export PDFs; read the DOM and accessibility tree; run Lighthouse audits and Core Web Vitals traces; intercept, record, stub, or block network requests; export HAR traffic; emulate devices and network conditions; manage browser storage; upload and download files. Use when interacting with or automating a running browser, clicking elements, taking screenshots, running Lighthouse, capturing network traffic as HAR, checking the accessibility tree, intercepting or stubbing requests, or emulating a device or viewport. Not for: web search or fetching public URLs without a browser session (use web-research), reading a static HTML file already on disk, fixing TypeScript or JavaScript build or compile errors, debugging source code without a running page, or tasks that don't require controlling a live browser.

Install

npx vskill@latest install ryanthedev/oberskills/browser

SKILL.md

browser

Persistent Chrome/CDP control via puppeteer-core. The primary interaction model is snapshot → stable ref → action. Selectors and coordinates are fallbacks only. Output size decides where a read lands: at or above the server's inline threshold (PAYLOAD_THRESHOLD_BYTES in mcp-browser/src/lib/payload.ts) the payload is written to a temp file and the tool returns the path; below it the payload comes back inline with written: false and no path. Handle both cases — see references/interaction.md in this skill directory for the per-tool result fields. Screenshots, PDFs, traces, HAR, Lighthouse reports, and saved storage state are always files, however small.

Prerequisites

Call browser_connect before any other tool. Mode launch spawns (or reuses) a Chrome process; mode attach connects to a running Chrome via browser_url or ws_endpoint.

Primary loop: snapshot → ref → act

browser_snapshot → returns compact AX tree; every interactive node carries a stable ref id
browser_click(ref=...) → act on the ref (also: browser_type, browser_hover, browser_select, browser_fill_form, browser_press_key, browser_drag)
browser_snapshot → verify the new state

Refs last until the next browser_snapshot, which invalidates every earlier ref. Re-snapshot after navigation or DOM changes. stale_ref means the ref predates the current snapshot or its element left the DOM; interaction_failed means the element resolved but the action itself failed (hidden, no layout box, re-rendered mid-action). Both recover the same way: take a new snapshot and retry. Selector/coordinate targeting is the fallback when a ref is unavailable; a selector must resolve to exactly one element (refinements and ambiguous_match in references/interaction.md in this skill directory).

Screenshot, DOM, and AX — route to a subagent when available

Screenshots, DOM trees, and accessibility trees usually run far past the inline threshold, and a full-page capture can be very large. Loading them directly bloats the main context. Use the host's subagent tool when available: dispatch a small reviewer that reads the file path and returns a text summary, so the artifact never enters this conversation. If the host has no subagent surface, summarize inline only when the artifact is small enough; otherwise use local deterministic tools or ask how to proceed.

One read may not cover a large artifact. Shrink it at capture time first — selector on browser_screenshot and browser_dom, max_depth/max_nodes on browser_snapshot — and check bytes (and a screenshot's width/height, which drive image read cost) before dispatching. For a file that is still large, tell the reviewer to search it or read it in chunks rather than assume a single read saw the whole thing.

Claude Code dispatch shape (other hosts: see Compatibility below):

Dispatch Agent:
model: haiku
description: "browser: analyze [screenshot|dom|accessibility]"
prompt: |
The browser tool wrote an artifact to: <PATH>
Read that file with the Read tool. If it is too large for one read,
search it or read it in chunks until the question is answered.
Return a concise text summary: what the page shows, key elements,
errors or state, and the specific answer to: <USER_QUESTION>
Return text only — no raw HTML, JSON, or image data.

Tools that produce large artifacts: browser_screenshot, browser_dom, browser_accessibility, browser_export_har, browser_performance_stop_trace, browser_pdf. Pass the returned path to a subagent for reading when available.

Navigation and waiting

browser_navigate accepts http/https by default. allow_internal=true also permits file: and about: URLs (a local HTML file, about:blank); javascript: and every other scheme stay blocked (blocked_url) regardless. After navigation, use browser_wait (strategy navigation or selector) to confirm the page settled before interacting. For text-triggered flows use browser_wait_for_text.

Tool surface by group

Full parameter details in the references below. Load the relevant one when planning work in that group.

GroupReference
Snapshot + refs interaction · Navigation · Read + extractreferences/interaction.md in this skill directory
Performance · Lighthouse · HAR · Network routing · Throttlingreferences/perf-network.md in this skill directory
Storage · Device emulation · Geolocation · Capture (PDF / screencast / upload / download)references/storage-capture.md in this skill directory

Payload discipline

ArtifactWhere it livesIn main context?
Screenshot PNGfile path from browser_screenshotPrefer subagent; inline only if small enough
DOM HTMLfile path from browser_domPrefer subagent; inline only if small enough
AX tree JSONfile path from browser_accessibilityPrefer subagent; inline only if small enough
HAR filefile path from browser_export_harPrefer subagent; inline only if small enough
Performance tracefile path from browser_performance_stop_traceNo — analyze via browser_analyze_insight
PDFfile path from browser_pdfPrefer subagent; inline only if small enough
Subagent text summaryreturned textYes
Sub-threshold output (written: false, no path)inlined in resultYes

Compatibility

Tool names here are the server's short names (browser_click, browser_snapshot, …). Claude Code exposes them under its plugin-prefixed MCP naming; on Codex or another host, use that host's equivalent name for the same mcp-browser tool. The dispatch block above is Claude Code's shape, including its model value: elsewhere, substitute the host's subagent call with a small, cheap model, or read the artifact inline when the host has no subagent surface and the artifact is small enough.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
43
Repository forks
4
7-day trend score
19

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ryanthedev/oberskills/browser/badge)](https://verified-skill.com/skills/ryanthedev/oberskills/browser)

Something wrong with this skill or its page? Tell us.