Skip to content
Back to skills

Browser Run

ASecurity

Read blocked pages or interact with them using Cloudflare Browser Run.

  • 25 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 18, 2026
ai-agentsgotestingapiperformance

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add nikolanovoselec/codeflare --skill browser-run --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Browser Run?

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

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

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-run
description: Read blocked pages or interact with them using Cloudflare Browser Run.
---

# Browser Run (Pi)

A real headless browser (Cloudflare Browser Run, headless Chrome) for public web pages that the built-in web fetch can't read or that you need to *interact* with. There are **two surfaces**, and picking the cheaper one is the point — a real browser session is the most expensive way to touch a page.

| Surface | Tools | Cost | Use it for |
|---|---|---|---|
| **Markdown / read** (one-shot) | native `browser_markdown`, `browser_content`, `browser_scrape` | Cheap — one request, no live session | **Reading** a page: article/doc content, verifying rendered text/structure, pulling specific elements. The default when you just need to *see what the page says*. |
| **Interactive** | `chrome-devtools` via the `mcp` proxy (`navigate_page`, `take_snapshot`, `take_screenshot`, `click`, `fill`, `evaluate_script`, `resize_page`) | Expensive — opens a remote Chrome/CDP session | **Driving** a page: multi-step flows, clicking/typing, screenshots, viewport testing, e2e. |

Both are Pro (advanced) only, and only when a Cloudflare API token with the **Browser Rendering – Edit** scope is configured. If the native `browser_*` tools are absent, Browser Run is not enabled for this session.

## Decision order (cheapest that does the job)

1. **Find pages on the web** → `web_search` (pi-web-access), not Browser Run.
2. **Static / normal page** → use `ctx_fetch_and_index` when context-mode is available; otherwise use `fetch_content` (pi-web-access). Plain HTTP, no JS — fast and cheap. Context-mode is optional.
3. **Raw HTTP / JSON API** → `curl`.
4. **Blocked or JS-only, but you only need to READ it** → `browser_markdown` (clean Markdown — smallest, best for content), `browser_content` (rendered HTML/DOM), or `browser_scrape` (specific CSS selectors). One-shot, no session — **prefer this over chrome-devtools whenever you don't need to interact.** Don't retry `curl` on a page you already know needs JS.
5. **You need to INTERACT** — navigate a multi-step flow, click/fill, take a screenshot, test a viewport → drive `chrome-devtools` through the `mcp` proxy (see the `pi-mcp-adapter` skill for the proxy mechanics; list its tools, then call them). This is where e2e lives; see the `browser-e2e` skill.
6. Public URLs only. Never point Browser Run at internal hosts, `localhost`, private IPs, or anything requiring the user's session/credentials.

## Read tools

| Tool | Use it for |
|---|---|
| `browser_markdown` | The default. Returns the page as clean Markdown — best for reading article/doc content. |
| `browser_content` | Returns the fully-rendered HTML (after JS). Use when you need raw DOM/structure that Markdown drops. |
| `browser_scrape` | Returns text + HTML + attributes for specific CSS selectors. Use to pull structured bits without ingesting the whole page. |

All three take `url` and an optional `wait_until`. For JS-heavy pages or SPAs, pass `wait_until: "networkidle0"` so content has rendered before capture.

## Version and tool discovery

The consolidation source pins Chrome DevTools MCP 1.10.1; verify the installed version independently, and use its configured remote CDP server, not an `npx @latest` installation or an implicitly launched local browser. Discover the server's current tool names and input schemas through `mcp` before calling them. Pi adapter 3.x reads `mcp-adapter.json`; preserve custom server credentials and retention settings. An unavailable interactive tool is not permission to weaken authentication or replace the user's MCP config. Performance tools may send trace URLs to Google's CrUX service; do not submit private URLs or sensitive traces without authorization.

## Notes

- Output is capped (~120k chars) to protect the context window; narrow with `browser_scrape` if a page is huge.
- The read tools are one-shot fetches with no state between calls. For multi-step interactive automation (clicking through a flow, screenshots, viewport e2e), use the interactive chrome-devtools surface above — Pi has full parity with Claude here through the adapter.

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.