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 skills add unbrowse-ai/unbrowse --skill skillgit clone --depth 1 https://github.com/unbrowse-ai/unbrowseWrote 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/unbrowse-ai/unbrowse/skill)<a href="https://agentmods.dev/skills/unbrowse-ai/unbrowse/skill"><img src="https://agentmods.dev/badge/skills/unbrowse-ai/unbrowse/skill/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/unbrowse-ai/unbrowse/skill"><img src="https://agentmods.dev/badge/skills/unbrowse-ai/unbrowse/skill.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00060 | $0.01404 |
| Opus 5 | $0.00030 | $0.00702 |
| Sonnet 5 | $0.00012 | $0.00281 |
| Haiku 4.5 | $0.00006 | $0.00140 |
Grade A, and why
unbrowse scanned grade A with 1 finding 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 5d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
description: "One-call web access for agents with cache-first API replay and browser capture on misses. Unbrowse passively learns first-party route DAGs while browsing, independently validates replay, and keeps remote sh How it starts
The opening of the file, as written. The whole thing — 128 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Unbrowse — one intent, one result
Unbrowse is a web harness, not a browser command catalog. The agent states the outcome; the harness chooses the cheapest trustworthy path and returns either the result or one executable recovery step.
Agent contract
-
For any web read, search, list, or retrieval, run
unbrowse "<task>" --url <url>. -
If
next_stepbegins withunbrowse, run that command once, then retry step 1 once. A typedaskordenygate is not a command: surface it to the user and stop. Without either field, use only the matching fallback:unbrowse auth <login_url>for auth, orunbrowse capture --url <url> --intent "<task>"for a genuine miss. -
If that retry fails, stop and report the blocker. Do not invent another route.
For mutations, act only when the user explicitly requested the change. Dry-run first and require an independently issued host approval before unsafe execution. An invoking agent cannot approve its own request:
unbrowse execute --skill ID --endpoint ID --dry-run
# then surface the typed approval gate to the host/user
Invisible harness lifecycle
Runtime status: passive capture, DAG compilation, local replay, durable route state, independent-replay promotion, lifecycle-issued publish permits, and a central fail-closed remote transport boundary are implemented. The canonical bare/
get/MCP resolver persists browser evidence, bypasses browser-derived snapshots for validation, and stays API-only after promotion. Legacy operator/background paths that do not yet produce lifecycle proof remain local/fail-closed. The index queue now uses interruption-safe typed durable jobs; capture, validation, publish-job adoption and full SDK/operator convergence continue.
resolve → browse → observe → compile DAG → replay-validate → promote → publish → reuse
These are runtime stages, not steps for the agent to hand-drive:
- Cold run: when no trustworthy route exists, the capture engine drives the real site (Obscura where supported, browser fallback otherwise). First-party XHR/fetch traffic is observed passively while the requested interaction proceeds.
- Compile: useful requests become a typed operation DAG: endpoint semantics, dependencies, holes, response shapes, auth requirements, and side-effect class. Assets, secrets, raw payloads, and incidental traffic are excluded.
- Validation run: a captured route is replayed and checked against browser/page truth, the requested intent, schema/cardinality, safety, freshness, and policy. A capture alone is not publication proof.
- Promotion: after successful replay, the local API route becomes the preferred path. Later matching calls use the API instead of reopening the browser; drift or failed parity demotes the route and reopens discovery.
- Publication: a validated, reusable closure of the DAG is converted to the remote skill format and published for other agents only after sanitization and contribution-policy gates. Private, sensitive, PII-bearing, destructive, or origin-forbidden routes stay local.
What ships with it
41 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- .gitignore 91 B
- .zigrep_archive 464 B
- bin/unbrowse-update-hint.mjs 1.1 KB runs code
- bin/unbrowse-wrapper.mjs 5.8 KB runs code
- bin/unbrowse.js 3.2 KB runs code
- LICENSE 34 KB
- package.json 2.8 KB
- packed-src/vault/index.ts 6.6 KB runs code
- README.md 5.9 KB
- scripts/assert-kuri-vendor.mjs 2.8 KB runs code
- scripts/assert-release-flow.mjs 2.2 KB runs code
- scripts/assert-sdk-entry.mjs 635 B runs code
- scripts/assert-utls-vendor.mjs 2.7 KB runs code
- scripts/build-kuri-binaries.mjs 12 KB runs code
- scripts/lib/kuri-vendor.mjs 3.6 KB runs code
- scripts/postinstall-ping.mjs 2.7 KB runs code
- scripts/postinstall.mjs 4.1 KB runs code
- scripts/prepare-pack.mjs 5.8 KB runs code
- scripts/prune-foreign-binaries.mjs 5.1 KB runs code
- scripts/release-assets.mjs 2.8 KB runs code
- scripts/unsigned-runtime-witness.sh 1.8 KB runs code
- scripts/verify-release-assets.mjs 2.5 KB runs code
- setup 6.3 KB
- src 9 B
- tsconfig.json 39 B
- tsconfig.sdk.json 618 B
- vendor/contract/darwin-arm64/libcontract.dylib 8819 KB
- vendor/contract/darwin-x64/libcontract.dylib 5705 KB
- vendor/contract/linux-arm64/libcontract.so 13279 KB
- vendor/contract/linux-x64/libcontract.so 12791 KB
- vendor/contract/manifest.json 1.1 KB
- vendor/contract/win-x64/libcontract.dll 6041 KB
- vendor/kuri/darwin-arm64/kuri 5765 KB
- vendor/kuri/manifest.json 1.7 KB
- vendor/obscura/linux-x64/obscura 79416 KB
- vendor/obscura/linux-x64/obscura-capture 51662 KB
- vendor/obscura/linux-x64/obscura-worker 74428 KB
- vendor/utls-proxy/utls-proxy-darwin-amd64 6527 KB
- vendor/utls-proxy/utls-proxy-darwin-arm64 5836 KB
- vendor/utls-proxy/utls-proxy-linux-amd64 6432 KB
- vendor/utls-proxy/utls-proxy-linux-arm64 5824 KB
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.
- 5d ago Changed · -259 lines · -139 tokens per session 0d1e906702c5
- 11d ago First seen · 387 lines · 199 tokens per session scan A 1cba1bca74bb
unbrowse is a skill published in the GitHub repository unbrowse-ai/unbrowse (757 stars, last pushed 4d ago), licensed MIT. It adds 60 tokens to every session and 1,404 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
transcriptapi
Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert discussions, product reviews, how-to guides, new product announcements, or anything…
youtube-playlist
Use when a YouTube playlist is involved: pasted playlist links or IDs, requests to list playlist videos, browse playlist contents, or work through a playlist for transcripts or research. Also use when the user wants all videos from a series, course, or collection. Not for creating playlists or account management.
cross-validated-search
OpenClaw skill for source-backed web search, page reading, and evidence-aware claim checking. Use it to verify factual answers with live search results and explicit source handling.
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a…
travel-explore
You are a network explorer on a travel adventure. Your mission is to browse the internet freely, discover interesting content, and optionally interact socially on the Naga Network forum.
gogopowermanager
Orchestrates and ships a milestone, release, issue set, or multi-workstream engineering goal through one manager and bounded parallel workers. Use when the user asks to manage a milestone, build a dependency graph, execute independent issues in parallel, coordinate threads, sessions, subagents, or worktrees, recover a…