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 instructions/smm-h/browserbuddy/claude-mdgit clone --depth 1 https://github.com/smm-h/browserbuddyWrote 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/instructions/smm-h/browserbuddy/claude-md)<a href="https://agentmods.dev/instructions/smm-h/browserbuddy/claude-md"><img src="https://agentmods.dev/badge/instructions/smm-h/browserbuddy/claude-md.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 | $0.03163 | $0.03163 |
| Opus 5 | $0.01581 | $0.01581 |
| Sonnet 5 | $0.00633 | $0.00633 |
| Haiku 4.5 | $0.00316 | $0.00316 |
Grade B, and why
browserbuddy CLAUDE.md scanned grade B 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 4d 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.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
`README.md` and `CLAUDE.md` at the repo root are generated by selfdoc from `docs/_README.md` and `docs/_CLAUDE.md`. They carry an auto-generated header and are chmod 444 — never edit them directly. Edit the template in ` How it starts
The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.
BrowserBuddy
BrowserBuddy 0.2.1 is a shared browser for you and your coding agent: a cross-browser MV3 WebExtension (Chrome and Firefox, one codebase) paired with a Node.js server that serves 25 MCP tools. By default the browser starts the server: the extension calls connectNative, the browser spawns native-host-bin.js, and that host serves Streamable-HTTP MCP on a stable loopback port behind a bearer token it publishes in mcp-endpoint.json — set up with browserbuddy install-host, attached with browserbuddy client-config. The older carrier (browserbuddy serve: MCP stdio server plus a WebSocket hub on 127.0.0.1:8590, dialled by the extension) still works and is selected by the TRANSPORT constant in background.js. The agent acts through the tools and observes the user's own clicks, typing, navigation and downloads as a queryable event log — the same window, the same session, no debug port and no automation flags. Node 22+, no build step, no transpiler.
Component map
extension/— the WebExtension, loaded unpacked (Chrome) or as a temporary add-on (Firefox).manifest.json— MV3 manifest; declares both background entry points (service worker for Chrome, event page for Firefox) andstrict_min_version128 for Firefox.background.js— transport selection (TRANSPORT,nativeby default), reconnect ladder, browser-level observation (tabs, navigation, downloads), RPC dispatch, badge state. The WebSocket client is still here, dormant, reached only whenTRANSPORTiswebsocket.transport-native.js— theconnectNativetransport. Shares the background global scope (ChromeimportScripts, Firefoxbackground.scripts); surfaces a precise hard error naming the host and both expected manifest paths when the host cannot be spawned.content.js— injected into pages: DOM observation, selector construction, redaction, and the page-level half of the RPC surface.
server/src/— the Node process.index.js—browserbuddybin entry point; runs the CLI and reports fatal errors on stderr.cli.js— strictcli app (servewith--port,--data-dir;install-hostwith--browser,--user-data-dir/--home,--data-dir;client-config), plusstartServerwhich wires hub, store, demos and the MCP server together.client-config.js— theclient-configcommand: reads the live endpoint descriptor and renders the MCP client registration (claude mcp add --transport http …plus anmcpServersblock), or hard-errors with the whole setup order.--applyruns the registration; printing is the default. The CLI's only stdout writer.hub.js— WebSocket server: one extension connection at a time, RPC request/response correlation with timeouts, event fan-out.rpc-peer.js—PendingRpcs, the one in-flight RPC table both transports use.native-host-bin.js— the executable the browser spawns viaconnectNative. Deliberately not a strictcli app: the browser appends its own arguments. Hands fd 1 to the framing channel and points the process stdout stream at stderr.native-messaging.js— the browser's wire framing: 32-bit little-endian length + UTF-8 JSON, incremental decoder, and the per-direction size caps (host → browser just under 1 MB, browser → host 128 MB).native-hub.js— the Hub interface (isConnected/rpc/event) over the native pipe, somcp.jsis transport-blind.http-mcp.js— Streamable-HTTP MCP on an ephemeral loopback port behind a bearer token; one MCP session perinitialize.endpoint-file.js— atomic, mode-0600mcp-endpoint.json(the live url and token an MCP client dials, validated against the host's pid on read) andendpoint-state.json(the token and port the next host respawn reuses).host-manifest.js— Chrome/Firefox native-messaging host manifests, the launcher script, and the Chrome-id-from-key derivation.install-host.js— the one implementation of the host install (manifest + launcher, platform-default profile discovery, Linux-only guard), used by bothbrowserbuddy install-hostandscripts/install-native-host.mjs.store.js— event store: 1000-entry ring buffer, per-UTC-day JSONL append,queryandwaitFor(the lockstep primitive).mcp.js— the MCP tool surface: 18 acting, 3 observing, 4 learning tools, with zod schemas.demos.js— demonstration recorder: captures user events while recording, cleans them into a replayable step list, persists one JSON file per demo.version.js— the one place the server learns its version: it readspackage.json, which is what the release bump edits.cli.js,mcp.js,hub.jsandnative-hub.jsall import it instead of holding a literal.
server/test/—node --testsuite, including a fake extension driver (fake-extension.js) for hub/MCP tests and a fake browser (fake-native-extension.js) that spawns the real host over real pipes.scripts/e2e-smoke.mjs— live end-to-end smoke test of the WebSocket carrier against a real browser with the real extension.scripts/spike-nativemsg.mjs— live end-to-end proof of the native-messaging carrier on both browsers: installs the host manifest into a throwaway Chromium profile or a throwaway HOME, lets the browser spawn the host, then drives the MCP tools over HTTP.--browser firefoxinstallsextension/as a temporary add-on over the remote debugging protocol.scripts/firefox-harness.mjs— the shared Firefox half of both live harnesses: profile prefs (including theoriginControls.grantByDefaultthat stands in for the human permission grant), the launch, and the RDP client that installs a temporary add-on.scripts/check-manifest-version.mjs— the version-drift guardrail: fails whenextension/manifest.jsonandpackage.jsondisagree. Registered as themanifest-version-lockstepexternal check in.rlsbl/config.json(tagpreflight), so it runs underrlsbl check --alland blocks a release.scripts/install-native-host.mjs— development CLI overserver/src/install-host.js: writes the host manifest and launcher for a named Chromium user-data-dir or Firefox HOME. End users runbrowserbuddy install-host --browser chrome|firefoxinstead.docs/—PROTOCOL.md(normative wire contract) andARCHITECTURE.md(components, data flow, rationale), both hand-maintained;_README.mdand_CLAUDE.mdare the selfdoc templates for the root files.pypi/— PyPI name-reservation placeholder package only. Not the product; do not grow it.
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.
- 4d ago First seen · 76 lines · 3,163 tokens per session scan B a0775a240c12
browserbuddy CLAUDE.md is an instructions file published in the GitHub repository smm-h/browserbuddy (0 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 3,163 tokens to every session, about $0.0158 per session on Opus 5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
Browser4 CLAUDE.md
Claude Code instructions for platonai/Browser4, covering browser4 — project context for claude, architecture, key dispatch chain (cli → browser), batch commands and e2e test structure.
cc-websearch CLAUDE.md
Claude Code instructions for Djarvur/cc-websearch, covering project, constraints, technology stack, what not to add and conventions.
fix-quera AGENTS.md
Instructions for AlirezaKeshavarz83/fix-quera, covering agent guidance, project shape, visual style, quera page data findings and compatibility findings.
sniff AGENTS.md
AGENTS.md instructions for Aboudjem/sniff, covering agents.md: sniff, what this repo is, how an agent should use sniff, handling the playwright setup gate and finding output schema.
fast-browser CLAUDE.md
Claude Code instructions for m4ttstack/fast-browser, covering fast browser plugin, where a change belongs, fork branch: use fast-browser-runtime, releasing a new runtime and re-pinning this repo: use the script.
sendblue-browser-use AGENTS.md
Instructions for sendblue-api/sendblue-browser-use, covering agents.md — sendblue-browser-use, what this repo is, setup, common commands and health (no auth).