ALWAYS invoke this skill when user says 'browser [site]', 'open [site]', or asks to navigate to a website. Never call MCP browser tools directly.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add 0xMaxMa/claude-gateway --skill open-browser --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Open Browser?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/0xmaxma-open-browser)More formats (shields.io, HTML) on the badges page.
---
name: open-browser
description: "ALWAYS invoke this skill when user says 'browser [site]', 'open [site]', or asks to navigate to a website. Never call MCP browser tools directly."
user-invocable: true
---
# open-browser
When user says "open X in browser", "navigate to X", "open chrome", "browser to X", "switch to tab X", etc.
## Rules
- Use ONLY `mcp__gateway__browser_*` tools — never Python, never CDP direct, never filesystem
- NEVER use `wait: "networkidle"` — it hangs on SPAs. Omit `wait` entirely (fire-and-forget)
- Always check tab state before navigating — tab IDs change between sessions
- Do NOT pass `session_id` — it is injected automatically from agent context
## Fast Open Flow
### Step 1 — Create/resume session
Call `mcp__gateway__browser_create_session` with NO arguments (session_id is auto-injected).
Result contains session status only.
### Step 2 — Check current tabs
Call `mcp__gateway__browser_tabs` — returns list of `{tab_id, url, title}`.
Use this to:
- Know which tab is active / which tab to navigate
- Decide whether to open a new tab or reuse existing one
### Step 4 — Navigate (fire-and-forget)
**Option A — Navigate active tab** (no tab_id):
```
browser_navigate(url)
```
**Option B — Navigate specific tab**:
```
browser_navigate(url, tab_id="t1")
```
**Option C — Open in new tab**:
```
browser_new_tab() → returns tab_id
browser_navigate(url, tab_id=<new_tab_id>)
```
If `browser_navigate` or `browser_navigate_tab` returns error like `tab "t99" not found (available: [t1, t2])` → call `browser_tabs` again and pick correct tab_id.
### Step 5 — Screenshot and confirm
Call `mcp__gateway__browser_screenshot` → `result` is an **absolute file path**.
Detect channel: `api_reply` tool available = API session; `telegram_reply` tool available = Telegram session.
| Channel | Action |
|---------|--------|
| API | `api_reply(files=[result])` — caller receives it as an attachment with a URL |
| Telegram | `telegram_reply(files=[result])` |
| Other | include path in text response |
## Multi-tab Management
- `browser_tabs` — list all tabs with tab_id, url, title
- `browser_new_tab()` — open new blank tab, returns tab_id
- `browser_navigate(url, tab_id)` — navigate specific tab (optional tab_id)
- `browser_close_tab(tab_id)` — close tab
## Available MCP tools (complete list)
- `browser_create_session` — create/resume session, returns stream_url
- `browser_close_session` — close session
- `browser_get_stream_url` — get stream URL for active session
- `browser_navigate` — navigate to URL; optional tab_id to target specific tab
- `browser_navigate_tab` — navigate specific tab by tab_id (legacy, prefer browser_navigate with tab_id)
- `browser_snapshot` — accessibility tree of current page
- `browser_click` — click element by ref or CSS selector
- `browser_fill` — fill input element
- `browser_type` — type text into focused element
- `browser_evaluate` — run JavaScript in browser
- `browser_scroll` — scroll page
- `browser_wait` — wait for element/networkidle/URL
- `browser_get_text` — get text content of element
- `browser_new_tab` — open new tab, returns tab_id
- `browser_close_tab` — close tab by tab_id
- `browser_tabs` — list all open tabs with tab_id + url + title
- `browser_screenshot` — capture viewport as JPEG, returns absolute file path
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!