Skip to content
Automation
Skill

/browsing

Use when you need direct browser control - teaches Chrome DevTools Protocol for controlling existing browser sessions, multi-tab management, form automation, and content extraction via use_browser MCP tool

From plugin
superpowers-chrome
3391 skill1 agent
Install
$ npx -y skills add obra/superpowers-chrome --skill browsing --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/browsing

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when you need direct browser control - teaches Chrome DevTools Protocol for controlling existing browser sessions, multi-tab management, form automation, and content extraction via use_browser MCP tool

SKILL.md

browsing.SKILL.md
name: browsing
description: Use when you need direct browser control - teaches Chrome DevTools Protocol for controlling existing browser sessions, multi-tab management, form automation, and content extraction via use_browser MCP tool
allowed-tools: mcp__chrome__use_browser

Browsing with Chrome Direct

Overview

Control Chrome via DevTools Protocol using the `use_browser` MCP tool. Single unified interface with auto-starting Chrome.

**Announce:** "I'm using the browsing skill to control Chrome."

When to Use

**Use this when:**

  • Controlling authenticated sessions
  • Managing multiple tabs in running browser
  • Playwright MCP unavailable or excessive

**Use Playwright MCP when:**

  • Need fresh browser instances
  • Generating screenshots/PDFs
  • Prefer higher-level abstractions

Auto-Capture

Every DOM action (navigate, click, type, select, eval, keyboard_press, hover, drag_drop, double_click, right_click, file_upload) automatically saves:

  • `{prefix}.png` — viewport screenshot
  • `{prefix}.md` — page content as structured markdown
  • `{prefix}.html` — full rendered DOM
  • `{prefix}-console.txt` — browser console messages

Files are saved to the session directory with sequential prefixes (001-navigate, 002-click, etc.). You must check these before using extract or screenshot actions.

The use_browser Tool

Single MCP tool with action-based interface. Chrome auto-starts on first use.

**Parameters:**

  • `action` (required): Operation to perform
  • `selector` (optional): CSS or XPath selector for element operations
  • `payload` (optional): Action-specific data (string or object)
  • `timeout` (optional): Timeout in ms for await operations (default: 5000)

**Active tab**: Every action operates on the current `activeTab`. Use `switch_tab` to change it.

Actions Reference

Navigation

  • **navigate**: Navigate to URL
  • `payload`: URL string
  • Example: `{action: "navigate", payload: "https://example.com"}`
  • **await_element**: Wait for element to appear
  • `selector`: CSS selector
  • `timeout`: Max wait time in ms
  • Example: `{action: "await_element", selector: ".loaded", timeout: 10000}`
  • **await_text**: Wait for text to appear
  • `payload`: Text to wait for
  • Example: `{action: "await_text", payload: "Welcome"}`

Interaction

  • **click**: Click element
  • `selector`: CSS selector
  • Example: `{action: "click", selector: "button.submit"}`
  • **type**: Text input
  • `selector`: Optional — clicks to focus first
  • `payload`: Text to type (`\t`=Tab, `\n`=Enter)
  • Example: `{action: "type", selector: "#email", payload: "user@example.com"}`
  • **double_click**: Double-click element (fires dblclick event)
  • `selector`: CSS selector
  • Example: `{action: "double_click", selector: ".item"}`
  • **right_click**: Right-click element (fires contextmenu event)
  • `selector`: CSS selector
  • Example: `{action: "right_click", selector: ".row"}`
  • **select**: Select dropdown option
  • `selector`: CSS selector
  • `payload`: Option value(s)
  • Example: `{action: "select", selector: "select[name=state]", payload: "CA"}`
  • **keyboard_press**: Press special keys (Tab, Enter, Escape, Arrow keys, F1-F12)
  • `payload`: Key name (string) or `{"key": "Tab", "modifiers": {"shift": true, "ctrl": false, "alt": false, "meta": false}}`
  • Example: `{action: "keyboard_press", payload: "Tab"}`
  • Example with modifiers: `{action: "keyboard_press", payload: {"key": "Tab", "modifiers": {"shift": true}}}`

Mouse Actions (CDP-Level)

These use CDP Input.dispatchMouseEvent, bypassing synthetic event restrictions.

  • **hover**: Move mouse over element (CSS :hover, tooltips, menus)
  • `selector`: CSS selector
  • Example: `{action: "hover", selector: ".menu-trigger"}`
  • **drag_drop**: Drag element to target (native drag-and-drop via CDP)
  • `selector`: Source element
  • `payload`: Target selector or JSON coordinates `{"x":N,"y":N}`
  • Example: `{action: "drag_drop", selector: ".card", payload: ".column-2"}`
  • **mouse_move**: Move mouse to coordinates
  • `payload`: JSON `{"x":N,"y":N}` (optional: `steps`, `fromX`, `fromY` for smooth movement)
  • Example: `{action: "mouse_move", payload: "{\"x\":100,\"y\":200}"}`
  • **scroll**: Scroll via mouse wheel events
  • `payload`: Direction (up/down/left/right) or JSON `{"deltaX":N,"deltaY":N}`
  • `selector`: Optional — scroll within element
  • Example: `{action: "scroll", payload: "down"}`

File Upload

  • **file_upload**: Set files on input[type=file] elements (can't be done via JavaScript)
  • `selector`: File input element
  • `payload`: File path or JSON `{"files":["/path/a.pdf","/path/b.jpg"]}`
  • Example: `{action: "file_upload", selector: "#upload", payload: "/tmp/doc.pdf"}`

Extraction

  • **extract**: Get page content
  • `payload`: Format ('markdown'|'text'|'html')
  • `selector`: Optional - limit to element
  • Example: `{action: "extract", payload: "markdown"}`
  • Example: `{action: "extract", payload: "text", selector: "h1"}`
  • **attr**: Get element attribute
  • `selector`: CSS selector
  • `payload`: Attribute name
  • Example: `{action: "attr", selector: "a.download", payload: "href"}`
  • **eval**: Execute JavaScript
  • `payload`: JavaScript code
  • Example: `{action: "eval", payload: "document.title"}`

Export

  • **screenshot**: Capture screenshot of a specific element
  • `payload`: Filename
  • `selector`: Optional - screenshot specific element
  • Viewport screenshots are auto-captured after every DOM action. Use this only when you need a specific element.
  • Example: `{action: "screenshot", payload: "/tmp/chart.png", selector: ".chart"}`

Tab Management

  • **list_tabs**: List all open tabs
  • Example: `{action: "list_tabs"}`
  • **new_tab**: Create new tab
  • Example: `{action: "new_tab"}`
  • **close_tab**: Close the active tab
  • Example: `{action: "close_tab"}`
  • **switch_tab**: Switch the active tab (sticky — stays until changed)
  • `payload`: Tab index (number), URL substring, or title
Read more
Ships withsuperpowers-chrome

Direct browser control via Chrome DevTools Protocol. Two modes available: Skill Mode - CLI tool for Claude Code agents (browsing skill) MCP Mode - Ultra-lightweight MCP server for any MCP client

Get the whole plugin
Stats
339
Stars
52
Forks
Active
Maintenance
JavaScript
Language
MIT
License
2d ago
Last commit
9mo ago
Created

Repo: obra/superpowers-chrome