opencli-browser — Claude Code skill: what it does, how to install
This skill drives Chrome through OpenCLI to inspect pages, use logged-in sites, capture API evidence, and manage native tabs and windows.
npx skills add jackwener/OpenCLI --skill opencli-browser -a claude-codeWhat opencli-browser does
opencli-browser gives an agent browser commands through OpenCLI. It can open pages, read interface state, locate elements, fill fields, click controls, select values, upload files, handle dialogs, and wait for XHR, selectors, text, or downloads. The same session name can be reused across a task.
Page work uses sessions, while a Chrome profile can be selected when needed. Results come back as JSON with data or error fields. The network commands expose captured request keys, response shapes, and raw bodies; static analysis adds API candidates from loaded scripts, with source locations and observed evidence. Those candidates still need checking. opencli doctor helps diagnose a connection problem.
Install it when an agent must inspect a live site or repeat actions in a logged-in Chrome session. It is a poor fit for tasks that do not involve Chrome or OpenCLI.
What it helps with
- inspect a page in a logged-in Chrome session
- locate a control and fill a form
- capture API request keys and response bodies
- take a screenshot after an interaction
- create and group native Chrome tabs
Example prompts for the agent
- Open the site with `opencli browser open`, reuse the `research` session, and inspect its state.
- Find the Search button by role and name, click it, and wait for the XHR response.
- List the page requests, then inspect one with `opencli browser network --detail`.
How to install opencli-browser
1Skills CLI (Vercel)
npx skills add jackwener/OpenCLI --skill opencli-browser -a claude-code2Manually: put the files in place
~/.claude/skills/opencli-browser/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/opencli-browser/
1Skills CLI (Vercel)
npx skills add jackwener/OpenCLI --skill opencli-browser -a codex2Manually: put the files in place
.agents/skills/opencli-browser/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add jackwener/OpenCLI --skill opencli-browser -a cursor2Manually: put the files in place
.cursor/skills/opencli-browser/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install jackwener/OpenCLI opencli-browser2Manually: put the files in place
.github/skills/opencli-browser/SKILL.md1Skills CLI (Vercel)
npx skills add jackwener/OpenCLI --skill opencli-browser -a gemini-cli2Platform CLI
gemini skills install https://github.com/jackwener/OpenCLI --path skills/opencli-browserManually: put the files in place
.devin/skills/opencli-browser/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add jackwener/OpenCLI --skill opencli-browser -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set3
The whole set →Similar
Questions about opencli-browser
How do I install opencli-browser in Claude Code?
Run npx skills add jackwener/OpenCLI --skill opencli-browser -a claude-code. The skill file is placed at ~/.claude/skills/opencli-browser/SKILL.md.
What does opencli-browser do?
It drives Chrome through OpenCLI, inspects pages, interacts with elements, captures network evidence, and manages tabs, groups, and windows.
Which platforms support opencli-browser?
The skill supports Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, and OpenCode.
Source text
SKILL.md · Apache-2.0
---
name: opencli-browser
description: Drive Chrome with OpenCLI to inspect pages, interact with logged-in sites, capture API evidence, and manage native tabs, groups and windows. For reusable adapters, see opencli-adapter-author.
allowed-tools: Bash(opencli:*), Read, Edit, Write
---
# Browser tools for agents
Use the capability that fits the task. Discover commands with `opencli list <query>`;
read exact arguments with `opencli browser <command> --help -f json`.
Run `opencli doctor` when diagnosing a connection problem.
## Scope and results
Page commands require `--session <name>`. Reuse that name across a task; different
sessions isolate page work. `--profile <name>` selects a Chrome profile when needed.
Options can follow command arguments:
```sh
opencli browser open https://example.com --session research
opencli browser state --session research
opencli browser click --role button --name Search --session research
opencli browser close --session research
```
Default output is one JSON value: `{ "ok": true, "data": ... }`.
Failures return `{ "ok": false, "error": { "code": "...", "message": "...", "hint": "..." } }`
and a nonzero exit code. Diagnostic logs go to stderr. `network --follow` and
`console --follow` stream one envelope per line. Help, version and shell completion
are inspection/export surfaces; structured help uses `--help -f json`.
Read the returned data and error fields. When `error.outcome` is `unknown`, inspect
the affected state before retrying a write.
## Page targets and interaction
- `state` returns URL and interactive element refs. `--diagnostics` also reports
page title and available initial-state globals; `--source ax` selects the AX tree.
- `find` locates elements. Interaction targets accept a ref, CSS selector, or
semantic flags such as `--role`, `--name`, `--label`, `--text`, `--testid`.
- Use `--nth` to resolve deliberate multiple matches. On stale refs, read fresh
state or locate the element again; refs describe the observed page.
- `fill` replaces a field and verifies its value; `type` types text. Other actions
include `click`, `select`, `check`, `upload`, `drag`, `keys` and `dialog`.
- `get text|value|attributes|html`, `extract`, `screenshot` and `eval` expose page data.
`eval` executes JavaScript in the page and can mutate state.
- `wait xhr|selector|text|download` observes an expected condition. Consult help for
timeouts and matching rules.
- `tab list|new|select|close` manages session tabs. `--tab` accepts the page identity
returned by these commands; these are different from numeric native Chrome IDs.
- `frames` lists frame targets; `eval --frame` evaluates in a selected frame.
`bind --session research` attaches the current user tab. Bound sessions permit
navigation but block tab creation, selection and closure. `unbind` releases the
binding without closing the user tab. Owned sessions keep leased tabs until
`close` or idle expiry. `--window foreground|background` controls owned windows.
## Network and scripts
```sh
opencli browser network --session research
opencli browser network --detail RequestKey --session research
opencli browser network --static --session research
```
`network` returns captured request keys and response shapes. `--detail` reads a
cached request; `--filter` selects shapes; `--raw` exposes response bodies.
`--static` adds Acorn AST candidates from loaded scripts, with source locations,
methods, query/body parameter names and observed request evidence. `EXPR` means
an unresolved expression. Static candidates are not executed or proven APIs.
Check `analysisComplete`, script errors, omitted scripts and `networkSource`.
An empty live capture can reuse a recent cache; reported provenance distinguishes it.
## Native Chrome management
Native calls need no session and do not attach a page:
```sh
opencli browser chrome describe
opencli browser chrome describe tabs.group
opencli browser chrome call tabs.query '[{}]'
opencli browser chrome call tabs.group '[{"tabIds":[123,456],"createProperties":{"windowId":10}}]'
opencli browser chrome call tabGroups.update '[789,{"title":"Research","color":"blue"}]'
```
Use numeric IDs returned by Chrome, replacing the example IDs. `describe` lists
supported methods, signatures, live permissions and official documentation.
Native-created tabs/windows persist. Mutations touching active OpenCLI session
tabs or managed groups return `managed_resource_conflict`; ordinary groups can be
created, renamed, recolored, moved and dissolved with `tabs.ungroup`.
© jackwener · Apache-2.0 · jackwener/OpenCLI