Skip to content
Back to skills

Browser

ASecurity

Operate a real, process-isolated Chrome instance via mcp__plugin_warranted_browser__* tools safely and deterministically.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
ai-agentsgoshellbashdebuggingperformance

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add yqi96/warranted --skill browser --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Browser?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Browser
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yqi96-browser/badge)](https://www.skillsdirectory.com/skills/yqi96-browser)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: browser
description: Operate a real, process-isolated Chrome instance via mcp__plugin_warranted_browser__* tools safely and deterministically.
---

# Browser Skill

You are operating a real Chrome browser via the `mcp__plugin_warranted_browser__*` tools. Follow these rules strictly.

> **CRITICAL**: `mcp__plugin_warranted_browser__*` are MCP tools, NOT bash commands. Never use `which`, `command -v`, or any shell check to test their availability. Call them directly.

## Core Workflow

### 0. Opening the browser

You MUST call `mcp__plugin_warranted_browser__browser_open` before any other tool. Each call spawns its own isolated chrome-devtools-mcp process (its own Chrome, its own temp profile) and returns a `session_id`. You MUST pass this `session_id` as `_browser_session` to every subsequent browser tool call — sessions are process-isolated, so one session crashing or navigating away never affects another.

```
mcp__plugin_warranted_browser__browser_open()
→ "Browser opened. Session: <uuid>"
```

Then use the returned session ID for all subsequent calls:
```
mcp__plugin_warranted_browser__navigate_page(type="url", url="https://example.com", _browser_session="<uuid>")
mcp__plugin_warranted_browser__take_screenshot(_browser_session="<uuid>")
```

Close the session when done — this kills that session's Chrome process:
```
mcp__plugin_warranted_browser__browser_close(session_id="<uuid>")
```

### Navigating to a known URL
```
mcp__plugin_warranted_browser__navigate_page(type="url", url="https://example.com", _browser_session="<uuid>")
```

### Clicking a link or button
Never fabricate or guess URLs. Always:
1. Call `mcp__plugin_warranted_browser__take_snapshot` to get the accessibility tree.
2. Find the element's `uid` in snapshot output (`uid=X_Y`).
3. Call `mcp__plugin_warranted_browser__click(uid="X_Y", _browser_session="<uuid>")`.

### Reading page content
- Visual check: `take_screenshot` (preferred for multimodal reasoning)
- Structure and links: `take_snapshot`
- Console/network state: `list_console_messages`, `list_network_requests`

### Filling forms
1. `take_snapshot` to find input uid.
2. `fill(uid="X_Y", value="text", _browser_session="<uuid>")`
3. `press_key(key="Enter", _browser_session="<uuid>")` or click submit.

### Waiting for load
```
mcp__plugin_warranted_browser__wait_for(text=["Expected text on page"], _browser_session="<uuid>")
```

### Downloading files
Prefer `wget`/`curl` once you've discovered the real file URL from the page, network activity, or page state. Only fall back to clicking a download button/link when the URL can't be recovered directly — click-driven downloads may stall on a confirmation dialog that needs human action.

## Tool categories (from upstream chrome-devtools-mcp)

Every tool besides `browser_open`/`browser_close` is proxied straight through to chrome-devtools-mcp — same names, same schemas, plus the required `_browser_session` param. Rough map:

- **Input automation**: `click`, `drag`, `fill`, `fill_form`, `handle_dialog`, `hover`, `press_key`, `type_text`, `upload_file`
- **Navigation**: `list_pages`, `new_page`, `select_page`, `close_page`, `navigate_page`, `wait_for`
- **Emulation**: `emulate`, `resize_page`
- **Debugging**: `take_screenshot`, `take_snapshot`, `evaluate_script`, `list_console_messages`, `get_console_message`, `lighthouse_audit`
- **Network**: `list_network_requests`, `get_network_request`
- **Performance**: `performance_start_trace`, `performance_stop_trace`, `performance_analyze_insight`
- **Memory**: `take_heapsnapshot` + heapsnapshot analysis tools

If a tool isn't listed here, it's still available — check the live tool list, don't assume something is missing.

## Standard Loop

1. **Open**: `browser_open` (if no session yet)
2. **Navigate**: `navigate_page` or `click`
3. **Check**: `take_screenshot`
4. **Interact**: if needed, `take_snapshot` → find uid → `click`/`fill`
5. **Repeat**

## Multi-tab (within one session)

- `list_pages`
- `new_page(url="...")`
- `select_page(pageId=N)`

Multi-tab tools operate on the ONE Chrome process belonging to `_browser_session`. Don't confuse this with opening a second session — use a second `browser_open()` only when you actually need a second, fully independent Chrome process (e.g. a different subagent working concurrently).

## Human Collaboration (Human-in-the-Loop)

**Key insight**: a session's browser window is real and visible — the user can see and interact with it in real time. This unlocks tasks agents cannot do alone.

### When to hand off to the user

Pause and ask the user to act when you hit:
- **Login walls** — credentials, SSO, OAuth flows
- **CAPTCHAs / reCAPTCHA**
- **2FA / MFA** — OTP codes, authenticator apps, SMS
- **Email / phone verification links**
- **Payment forms**
- **Biometric prompts**
- **Any sensitive credential input** — never type passwords on behalf of the user

### How to hand off correctly

1. **Take a screenshot first** so the user can see the current state.
2. **Tell the user exactly what to do**, e.g. "The browser is showing a login page. Please enter your credentials and click Sign In, then tell me when you're done."
3. **Wait** — do not poll or retry. Just pause and wait for the user's reply.
4. **Take a new screenshot** after the user signals completion to confirm the state.
5. **Resume automation** from the new state.

Never skip a human handoff to guess or fake credentials.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.