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 sylin-org/ghostlight --skill control-browsergit clone --depth 1 https://github.com/sylin-org/ghostlightWrote 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/sylin-org/ghostlight/control-browser)<a href="https://agentmods.dev/skills/sylin-org/ghostlight/control-browser"><img src="https://agentmods.dev/badge/skills/sylin-org/ghostlight/control-browser/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/sylin-org/ghostlight/control-browser"><img src="https://agentmods.dev/badge/skills/sylin-org/ghostlight/control-browser.svg" alt="Reviewed on agentmods" width="80" 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.00079 | $0.00569 |
| Opus 5.5 | $0.00032 | $0.00228 |
| Sonnet 5.5 | $0.00016 | $0.00114 |
| Haiku 4.5 | $0.00008 | $0.00057 |
Grade A, and why
control-browser 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 17d 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 — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Controlling the browser with Ghostlight
These tools drive the user's visible Chromium browser through one governed path. The tool descriptions and the server instructions say what each tool takes and what it returns. This skill adds the working habits they cannot carry.
Observe, then act
- Do not guess at page structure or reuse selectors from memory. Get handles from browser_find or browser_inspect, then act on those handles.
- After an action that should change the page, observe again to confirm the change landed. Do not assume it did.
- A stale handle means the page changed since you looked. Observe again instead of retrying the same handle.
Coordinates come from a view
Never invent pixel coordinates. Take them from the image browser_screenshot returned, and pass the view_ handle it returned. A view belongs to one tab as it looked at that moment, so after a navigation, a zoom or a resize, take a fresh screenshot. For precision, capture a magnified region and use the new view it returns.
Credentials
Set user_authorized_credentials only when the user explicitly told you to enter credentials.
An instruction the user already gave is enough, so do not ask again, and set it on the first
call. It covers only the call that carries it. Without it, a credential field is refused before
anything is typed, and nothing is held or paused because of it. The acknowledgement never overrides configured
policy or the person's Pause or End session, and Ghostlight cannot verify it.
Telling the truth about effects
- Each result says what happened, whether repeating it is safe, and what to do next. Read that before deciding.
- When a result says repeating the call is not safe, or not known to be safe, do not replay it. Observe and decide.
- When a result says some work may have happened, or that its effect is unknown, say so in what you report. Never claim more than the result claims.
When a request is refused
- A refusal names its reason and its remedy. When a refusal surprises you, call policy_explain first, before you retry or ask the user.
- A refused request does not pause the session. Do not ask the user to review or resume the session because a request was refused.
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.
- 17d ago Changed · -44 lines 66e3e71b00cd
- 1mo ago Changed · +6 lines e13905eec638
- 1mo ago Changed · -4 lines 6e4a208d6bb1
- 1mo ago Changed · +3 lines 6d9634619d64
- 2mo ago First seen · 90 lines · 79 tokens per session scan A 15291469a195
control-browser is a skill published in the GitHub repository sylin-org/ghostlight (1 stars, last pushed 8d ago), licensed Apache-2.0. It adds 79 tokens to every session and 569 once invoked, about $0.0003 per session on Opus 5.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.
control-browser compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| control-browsersylin-org/ghostlight | Skill | 1 | 8d ago | Apache-2.0 | A | 79 | Claude Code |
| Browser-Use AutomationPramodDutta/qaskills | Skill | 245 | 3d ago | MIT | B | 38 | Claude Code, Codex |
| opencode-browser-pluginQuindart-com/opencode-chromium | Skill | 22 | yesterday | MIT | A | 20 | Codex |
| interceptor-browserHacker-Valley-Media/Interceptor | Skill | 605 | yesterday | none | A | 122 | Claude Code, Codex |
| fortress-stealth-browsertiliondev/fortress | Skill | 786 | 3d ago | none | A | 130 | Claude Code, Codex |
| interceptor-researchHacker-Valley-Media/Interceptor | Skill | 605 | yesterday | none | A | 168 | Claude Code, Codex |
| interceptor-macosHacker-Valley-Media/Interceptor | Skill | 605 | yesterday | none | A | 136 | Claude Code, Codex |