sirallap/agentglass/browser-use
Claude Code and agent skill by sirallap/agentglass
- community
Checking that the SKILL.md file is still in the repository.
Drive agentglass's built-in browser — the one already signed in to the sites this project uses. Use when a task needs a page behind a login (a dashboard, a ticket, a staging app), when a URL fetched with curl comes back signed out or JavaScript-rendered, or when the user asks you to look at, click through, or screenshot something in a browser. It is a full browser for agents: DevTools, fake network responses, isolated profiles, a virtual clock.
Install
npx vskill@latest install sirallap/agentglass/browser-useSKILL.md
Using the built-in browser
curl gets you the signed-out version of everything that matters, because the session lives in a browser. agentglass has one, already signed in to whatever the person using it is signed in to. agentglass-browser drives it, and it is built for you rather than lent to you: the whole DevTools protocol is here, so is running JavaScript, so is faking a broken API.
Start here, in this order
observe is the verb to reach for first. One answer with the url and title, whether the view is visible and focused, the console and the network since last time, a tree of the interactive page addressed by role and accessible name, the current value of every input, and optionally the picture. Polling six verbs in turn is where the time goes.
After the first look, ask for only what changed:
added are whole nodes, removed are ids gone from the page, unlisted are ids still there but past the tree's cap, changed is {e, field: new value} (null = the field went away), same is how many did not move. New console and network rows only. form, storage and viewport appear only when they changed — absent means unchanged. Positions (at) are not diffed. After a navigation, with no earlier look, or after a look you only saw part of (--max-tokens, --summary), you get the full answer with delta:false and a reason. Plain observe is always the full page.
A page that is mostly below the fold or a menu you already know the id of does not need the whole tree:
Both are looks at a part: they are not a baseline, so they neither replace nor break the one --delta is measured against, and they cannot be combined with it. Unnamed layout wrappers (role presentation/none/generic with no name, id or test id) are left out of every tree, counted in wrappers, and an empty name is not written.
The baseline (and checkup's "since your last checkup") is kept per --as name; callers without one share a single baseline, so pass --as to get your own.
click and press wait for what they caused (the navigation, or a quiet page with no request in flight, capped at 1 s) and answer with an effect: navigated, newDocument, newErrors, failedRequests, dialog, settledBy. Often that is all you need to know — no look at all.
Did it break? One call
The edit → reload → "is it broken?" loop is one verb:
The first field is the verdict, ok or N problems. Problems are uncaught exceptions and console errors — including the ones thrown while the page loaded, which console and observe cannot see — failed requests (4xx/5xx, CORS, blocked) and visible error text (role=alert, so an alert toast counts). Chromium's issues, perf (LCP, CLS) and a11y (unlabelled controls, with ids) come along as advice and do not count. A screenshot path only when something failed (--no-shot to skip; shot: "unavailable: …" when there is no frame to take).
Then the whole interaction in ONE call
Starting this process costs ~69 ms before it says a word, so six separate verbs spend most of a second on startup alone. do spends it once. Measured: 618 ms → 94 ms for six verbs. Steps stop at the first failure, which comes back with its own console errors and failed requests.
Every round you spend re-reads everything above it, so the count of calls is the cost. Three rules:
- Act, wait for the end state and look, in ONE call. A form is one
fill --field e3=... --field e4=... --submit --observe; a click that should lead somewhere is do "click e9" "wait #done" --observe. Do not split an action from the look that checks it.
- Trust the receipt.
clickandpressalready say whether the page
navigated, errored, opened a dialog or opened a tab (effect.popups: [{page, url}], so the next call is --page <page>), and --observe already shows the page after. fill names any field the page changed from what you typed (changedByPage); no entry means every value took. Do not observe again to confirm what the answer just told you; look again only when it says something you did not expect. An act waits up to 3 s for its selector to appear and for a passing overlay to clear, so do not wait before a click on something that is about to render. An id the page re-rendered is refused with the id that replaced it (... is now e43): repeat the call with that one.
- Stop when the result is on the page. The task is done the moment the
page shows it (a confirmation, the new URL, the saved value). Do not check it a second way, take a screenshot "to be sure", or re-read the page.
A loop or a condition is ONE script call
A task with a loop or a condition is one script call, not a round per verb. CODE is Python (a quoted string, or - for a heredoc). Every verb is a function that returns its value or raises BrowserError with the server's sentence; print() and a variable named result come back in one JSON answer with the page after (a delta when you observed it before; --no-observe drops it).
Verbs: open observe click type press select wait waitfor text read links extract eval, fill({sel: value}, submit=True), and b("op", **args) for any other. A failure stops the script with line N: <sentence>; the printed output and the final observe still come back. The ceiling is 200 verb calls and 120 s. The code runs with the CLI's own rights, the same your shell already has. script is CLI-only: the MCP tools have no equivalent.
Wait for something instead of polling for it
The cost of polling is not the clock, it is the twenty answers sitting in your context for the rest of the session. events waits on the server and answers once. "Nothing happened in thirty seconds" is an answer, not a failure.
The verbs, by what you reach for them for
The structured readers — what an agent actually wants from a page
read gives you the page, but as one wall of text. When the question is a question, not "give me the page", reach for the verb that answers it:
All eight are reads, all eight are clamped by --max-tokens and the same redaction seam as everything else, and only extract, search and attr take arguments — the others answer with the whole page in the right shape. extract's answer names the fields that matched nothing, so you never invent a value for a field that was not there. interactive and forms hand out the same ids observe does, so what they list is what the next click or fill takes; a password's value never travels in any of them.
Tools a page offers (WebMCP)
Some pages announce tools of their own (document.modelContext). tools lists them, call-tool NAME --args '{...}' runs one. Both need AGENTGLASS_BROWSER_WEBMCP=1 on the server and answer with a refusal naming the flag without it. The DOM path stays the default: observe, then click or fill. Reach for a page tool only when the page offers one for exactly what you are doing, and go back to the DOM path the moment it fails.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 96 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/browser-use/SKILL.md
Popularity
- Repository stars
- 328
- Repository forks
- 41
- 7-day trend score
- 29
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/sirallap/agentglass/browser-use)