opencli-browser
- Use it when:
- A one-off task needs a real web page, including a site you're signed in to.
- It does:
- Lists a page's interactive elements, then clicks, types, fills, uploads, extracts, screenshots or runs JavaScript, one opencli command at a time.
- Also does:
- Captures the page's network requests, finds likely API calls in its scripts, and manages native Chrome tabs, windows and tab groups.
- Needs:
- The opencli CLI connected to Chrome; opencli doctor diagnoses the connection.
- Not for:
- Reusable site commands, which OpenCLI's opencli-adapter-author skill writes.
Works in your own Chrome, so it can act on the sites you're signed in to.
TL;DR
The OpenCLI project's skill for browsing with an agent. Page work happens in a named session, so separate tasks don't touch each other's tabs, and a profile flag picks the Chrome profile. The state command returns the URL and the page's interactive elements with refs, and actions target a ref, a CSS selector or flags such as role, name, label, text or test ID. fill replaces a field and checks its value, eval runs JavaScript in the page and can change it, wait holds for a request, selector, text or download, and frames and tabs are covered too. bind attaches the tab you already have open: the agent can navigate it but can't open, switch or close tabs. For data, network lists captured requests with their response shapes, and a static mode scans loaded scripts for candidate API calls without running them, which it treats as unproven. Native Chrome calls such as tabs.query or tabGroups.update need no session, and the tabs and windows they create stay open. Every command returns JSON with ok and data, or an error with a code and a hint; when a write's outcome is unknown, the agent checks the page before retrying.
Summarizes the skill at 36bbbd7.
npx skills add https://github.com/jackwener/opencli --skill opencli-browser skills.sh pageSource on GitHubAll skills from jackwener/opencli
- Total Downloads
- 20,600 on skills.sh, Nov 9, 2026
- Repo stars
- 30,974 jackwener/opencli
- First seen
- Apr 8, 2026 on skills.sh
Weekly values
| Week to | Installs |
|---|---|
| Sep 21 | 255 |
| Sep 28 | 273 |
| Oct 5 | 223 |
| Oct 12 | 241 |
| Oct 19 | 300 |
| Oct 26 | 297 |
| Nov 2 | 251 |
| Nov 9 | 231 |
| Category |
Drive browsers, scrape pages and search the web. Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills. |
|---|---|
| Type |
Operates a CLI, API, app or bundled script to get something done. |
| Effect |
Its own steps change something outside your machine: post, send, deploy, provision, file issues, drive a website, or upload data to a service. |
| Needs |
A specific command-line tool or desktop app must be installed, such as gh, agent-browser, LibreOffice, Obsidian or a vendor CLI. Drives a real Chromium or Chrome browser. |
| Publisher |
A verified publisher on skills.sh, or the company or maintainer behind the product the skill operates. |
| Topics | |
| Stack |
SKILL.md
From jackwener/opencli at 36bbbd7. Checked daily, last changed Nov 6, 2026.
Frontmatter
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, WriteBrowser 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:
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
statereturns URL and interactive element refs.--diagnosticsalso reports page title and available initial-state globals;--source axselects the AX tree.findlocates elements. Interaction targets accept a ref, CSS selector, or semantic flags such as--role,--name,--label,--text,--testid.- Use
--nthto resolve deliberate multiple matches. On stale refs, read fresh state or locate the element again; refs describe the observed page. fillreplaces a field and verifies its value;typetypes text. Other actions includeclick,select,check,upload,drag,keysanddialog.get text|value|attributes|html,extract,screenshotandevalexpose page data.evalexecutes JavaScript in the page and can mutate state.wait xhr|selector|text|downloadobserves an expected condition. Consult help for timeouts and matching rules.tab list|new|select|closemanages session tabs.--tabaccepts the page identity returned by these commands; these are different from numeric native Chrome IDs.frameslists frame targets;eval --frameevaluates 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
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:
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.