Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/crawlio-app/crawlio-browser/web-researchnpx skills add Crawlio-app/crawlio-browser --skill web-researchgit clone --depth 1 https://github.com/Crawlio-app/crawlio-browserWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/crawlio-app/crawlio-browser/web-research)<a href="https://agentmods.dev/skills/crawlio-app/crawlio-browser/web-research"><img src="https://agentmods.dev/badge/skills/crawlio-app/crawlio-browser/web-research.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00026 | $0.01831 |
| Opus 5 | $0.00013 | $0.00915 |
| Sonnet 5 | $0.00005 | $0.00366 |
| Haiku 4.5 | $0.00003 | $0.00183 |
Grade A, and why
web-research scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 203 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Web Research Protocol
When to Use
Use this skill when the user wants to:
- Audit a website (performance, SEO, security, accessibility, tech stack)
- Compare competitors or analyze multiple sites
- Conduct structured web research with evidence
- Review site quality, trust signals, or conversion flows
- Extract structured data across multiple pages
Protocol: Acquire → Normalize → Analyze
Every research task follows three phases:
Phase 1: Acquire
Connect to each target page and extract comprehensive data using smart.extractPage():
// Connect first
await connect_tab({ url: "https://example.com", background: true })
// Extract everything in one call
const page = await smart.extractPage()
// Returns: { capture, performance, security, fonts, meta, accessibility, mobileReadiness, gaps }
For visual evidence, add smart.scrollCapture():
const visuals = await smart.scrollCapture({ maxSections: 5 })
// Returns: { sectionCount, sections: [{ index, scrollY, screenshot }] }
Wait for dynamic content with smart.waitForIdle() instead of sleep():
const idle = await smart.waitForIdle(5000)
// Returns: { status: 'idle' | 'timeout' }
Phase 2: Normalize
Structure evidence into canonical per-page records. Each page record should include:
const record = {
url: page.capture.url,
title: page.capture.title,
framework: page.capture.framework,
network: page.capture.network, // { total, failed, byType, errors }
console: page.capture.console, // { total, errors, warnings }
cookies: page.capture.cookies, // { total, names }
dom: page.capture.dom, // { nodeCount, forms, links, images, inputs }
performance: page.performance, // LCP, CLS, FCP, Web Vitals
security: page.security, // TLS, cert, mixed content
fonts: page.fonts, // declared + computed
meta: page.meta, // OG tags, structured data, headings, nav links
accessibility: page.accessibility, // node count, landmarks, images without alt, heading structure
mobileReadiness: page.mobileReadiness, // viewport meta, media queries, overflow
gaps: page.gaps, // what data failed — check before trusting null fields
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 203 lines · 26 tokens per session scan A 00f0fa69162f
web-research is a skill published in the GitHub repository Crawlio-app/crawlio-browser (6 stars, last pushed 27d ago), licensed Apache-2.0. It adds 26 tokens to every session and 1,831 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
owb
Open Web Bridge (OWB) — drive the user's own real browser with the owb command. Read pages behind their existing logins, gather and cross-check information, fill forms, walk multi-step flows, debug their site, audit responsive/accessibility behavior, and capture or reverse-engineer network traffic. Use this whenever…
browsertap-default
浏览器自动化默认入口。任何打开网页、填表、点击、截图、抓取或复用已登录 Chrome/Edge 的任务,优先使用 browsertap-mcp (BTAP) MCP 工具。.
browsertap-bridge-recovery
恢复 browsertap-mcp (BTAP) 的 CDP 桥连。触发:桥断了 / MCP 浏览器工具挂住 / getsetupstatus 转圈 / listtabs 拿不到 tab / Unknown command: downloads。分层排错:netstat → /link curl → listtabs,别把 MCP 层挂当成桥断。.
browser
Use this skill when the user says browser, /browser, test in Chrome, inspect a webpage, verify a localhost app, capture screenshots, check console/network errors, run browser QA, or automate browser flows with the Mochi browser MCP.
control-chrome-bridge
Drive the user's real Chrome browser — their own profile, tabs, cookies and logged-in sessions — through the chrome-bridge MCP server. Use for tasks that need existing browser state: reading a page behind a login, filling a form on a site the user is signed into, testing a local app in a real browser, or inspecting…
tabrix_browser
Route AI assistant browser tasks to Tabrix first. Use when the user needs to control their real Chrome session, reuse existing login state or tabs, operate a remote browser over Streamable HTTP, or troubleshoot Tabrix browser automation. Prefer Tabrix over shell commands, synthetic browser sandboxes, or alternative…