Chrome CDP Browser Control
zenstory-ai/oh-story-claudecode
Drives a Chrome window over the DevTools Protocol with the agent-browser CLI, so the agent can reuse your logged-in sessions, read pages and pull tokens.
Orients an agent on OpenCLI, which turns websites and Electron apps into opencli site-command calls, covering adapters, strategies, install and which skill to load next.
$ npx skills add jackwener/OpenCLI --skill opencli-usage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jackwener/OpenCLI opencli-usage --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jackwener/OpenCLI.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/opencli-usage .claude/skills/opencli-usage && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "opencli-usage" agent skill from https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usage into .claude/skills/opencli-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opencli-usage", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usageType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jackwener/OpenCLI --skill opencli-usage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jackwener/OpenCLI opencli-usage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackwener/OpenCLI.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/opencli-usage .agents/skills/opencli-usage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "opencli-usage" agent skill from https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usage into .agents/skills/opencli-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opencli-usage", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jackwener/OpenCLI --skill opencli-usage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jackwener/OpenCLI opencli-usage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackwener/OpenCLI.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/opencli-usage .cursor/skills/opencli-usage && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "opencli-usage" agent skill from https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usage into .cursor/skills/opencli-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opencli-usage", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jackwener/OpenCLI.git --path skills/opencli-usage--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jackwener/OpenCLI --skill opencli-usage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jackwener/OpenCLI opencli-usage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackwener/OpenCLI.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/opencli-usage .gemini/skills/opencli-usage && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "opencli-usage" agent skill from https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usage into .gemini/skills/opencli-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opencli-usage", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jackwener/OpenCLI opencli-usageInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jackwener/OpenCLI --skill opencli-usage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jackwener/OpenCLI.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/opencli-usage .github/skills/opencli-usage && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "opencli-usage" agent skill from https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usage into .github/skills/opencli-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opencli-usage", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jackwener/OpenCLI --skill opencli-usage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jackwener/OpenCLI opencli-usage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jackwener/OpenCLI.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/opencli-usage .opencode/skills/opencli-usage && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "opencli-usage" agent skill from https://github.com/jackwener/OpenCLI/tree/main/skills/opencli-usage into .opencode/skills/opencli-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opencli-usage", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
opencli-usageOrients an agent on OpenCLI, which turns websites and Electron apps into opencli site-command calls, covering adapters, strategies, install and which skill to load next.
OpenCLI exposes websites and Electron desktop apps as a uniform opencli site-and-command surface that agents can drive without screen-scraping. This skill is the orientation layer: it explains adapter commands (built-in ones in clis/, user ones in ~/.opencli/clis/), browser driving through opencli browser subcommands for ad-hoc work, and current-tab binding that attaches a Chrome tab you already logged into to a session.
Each adapter has a strategy tag shown by opencli list: PUBLIC needs nothing but HTTP, COOKIE reuses a logged-in Chrome session through the OpenCLI extension, INTERCEPT adds an automation window to capture a signed request, UI does full DOM interaction, and LOCAL talks to a local endpoint. Install is through a global npm package (Node 20.18.1 or newer), and opencli doctor diagnoses the browser bridge, which only the cookie, intercept, UI and browser commands need.
Read from SKILL.md and the folder at commit 2413694. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(opencli:*)ReadFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmgitnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
chromewebstore.google.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
OpenCLI Usage Map loads about 2.3k tokens when it runs. Until then it costs about 78 tokens; SKILL.md has 930 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jackwener/OpenCLI at commit 2413694, republished under its Apache-2.0 licence (© jackwener). 930 words, ~2,319 tokens.
.claude/skills/opencli-usage/SKILL.md (or your agent's skills folder).OpenCLI turns websites and Electron desktop apps into a uniform opencli <site> <command> surface that agents can drive without screen-scraping. This skill is the orientation layer — once you know what you want to do, load one of the specialized skills below.
opencli <site> <command> [...]. Built-in adapters live in clis/, user adapters in ~/.opencli/clis/. Each is backed by a strategy (PUBLIC | COOKIE | INTERCEPT | UI | LOCAL) that tells you whether a Chrome session is needed.opencli browser * subcommands (open, state, click, type, select, find, extract, network, …) for ad-hoc interaction and scraping when no adapter covers the task. See opencli-browser.opencli browser <session> bind attaches the Chrome tab the user already opened/logged into to that browser session. Follow-up commands use opencli browser <session> .... See opencli-browser before using it; bound sessions still block tab mutation.# npm global
npm install -g @jackwener/opencli # binary: opencli, requires Node >= 20.18.1
opencli doctor # run before browser-dependent work (see below)
# From source
git clone git@github.com:jackwener/OpenCLI.git
cd OpenCLI && npm install
npx tsx src/main.ts <command> # same surface, no global installopencli doctor prints a structured DoctorReport — daemon status, extension connection, version checks, and a live browser connectivity probe. Scope is narrow: it diagnoses the browser bridge (daemon + extension + Chrome wiring). PUBLIC / LOCAL adapters, opencli list, validate, verify, and plugin commands don't need it to be green — only COOKIE / INTERCEPT / UI adapters and the opencli browser * subcommands do. Flag: -v (verbose).
Strategy tag on opencli list | What it needs |
|---|---|
PUBLIC | Nothing — pure HTTP, no browser. |
COOKIE | Chrome logged into the target site + OpenCLI extension installed from the Chrome Web Store. Command captures the credential from your live session — no re-login. |
INTERCEPT | Same as COOKIE, plus opencli opens an automation window to capture a signed request. |
UI | Same as COOKIE, full DOM interaction. |
LOCAL | No browser; talks to a local/dev endpoint. |
Electron desktop apps (cursor, codex, chatwise, discord-app, doubao-app, antigravity, chatgpt-app) route through CDP against the running app — same cookie-less flow as a logged-in browser. Make sure the app is running before invoking.
opencli list # table, grouped by site
opencli list -f json # machine-readable; pipe to jq or your agent
opencli list | grep -i twitter # find commands for a specific site
opencli <site> --help # see that site's commands + flags
opencli <site> <command> --help # see positional args and command-specific flagsDo not hard-code adapter lists — there are 100+ sites and the count moves every week. opencli list -f json is the source of truth; it emits one entry per command with {site, name, aliases, description, strategy, browser, args, columns, ...}. For an agent, that is always better than grepping a doc.
Before falling back to raw opencli browser commands on high-change authenticated sites, check whether a site adapter already exposes the workflow. For example, ChatGPT web has higher-level commands for conversation reads and Deep Research result extraction; discover the current surface with opencli chatgpt --help or opencli list -f json.
| flag | effect |
|---|---|
-f, --format <fmt> | table (default in TTY) · yaml (default in non-TTY) · json · plain · md · csv. Pass explicitly when you want a specific shape; agents almost always want -f json. |
-v, --verbose | Debug logs + stack traces on failure; also sets OPENCLI_VERBOSE=1 for the process. |
Command-specific flags (--limit, --tab, --filter, …) are not universal — consult <site> <command> --help.
json — pretty-printed, 2-space indent. Default choice for agents.plain — prints a single primary field for chat-style commands (response/content/text/value). Useful for piping to another tool.yaml — fallback when output is not a TTY and -f is not explicit.table — color-coded, site-grouped; meant for humans.md, csv — straightforward tabular dumps.A few commands override the default via cmd.defaultFormat (e.g. chat commands default to plain), so don't assume without reading --help.
| variable | default | purpose |
|---|---|---|
OPENCLI_BROWSER_CONNECT_TIMEOUT | 45 | Seconds to wait for the browser bridge. |
OPENCLI_BROWSER_COMMAND_TIMEOUT | 60 | Per-command timeout. |
OPENCLI_CDP_ENDPOINT | — | Manual CDP endpoint override (dev / remote Chrome / Electron). |
OPENCLI_CACHE_DIR | ~/.opencli/cache | Network capture + browser-state cache. |
OPENCLI_WINDOW | command-specific | foreground or background browser window mode. |
OPENCLI_VERBOSE | false | Verbose logging (also triggered by -v). |
When an adapter command fails because the site changed (selectors drifted, API rotated, response schema shifted), re-run with --trace retain-on-failure. The error envelope includes a trace block pointing at summary.md; patch only the adapterSourcePath from that summary and retry. Max 3 repair rounds. The full flow is in opencli-autofix.
Two-path storage:
~/.opencli/clis/<site>/<command>.js — no build step, hot-available, not visible in the public package.clis/<site>/<command>.js — for upstream contribution; requires build.Scaffolding & verification:
opencli browser init <site>/<command> # generates a skeleton
opencli validate [target] # semantic checks on the loaded registry (description, domain, pipeline step names, func|pipeline|_lazy presence, arg duplicates) — no network, no browser
opencli verify [target] [--smoke] # run the command with synthetic args
opencli browser verify <site>/<command> # end-to-end smoke inside the bridgeAdapters import only @jackwener/opencli/registry and @jackwener/opencli/errors. columns must align 1:1 (in name and order) with keys of the object returned by func. For the full workflow see opencli-adapter-author.
Plugins are third-party extensions pulled from git, separate from the main adapter registry:
opencli plugin install github:user/repo # install
opencli plugin list [-f json] # see installed
opencli plugin update [name] | --all # keep current
opencli plugin uninstall <name>
opencli plugin create <name> # scaffold a new pluginopencli completion bash # also: zsh, fish
# -> script on stdout; source or save per your shell's convention| If you're about to… | Load this skill |
|---|---|
| Drive a live browser ad-hoc (no adapter available, or prototyping) | opencli-browser |
| Write a new adapter, or add a command to an existing site | opencli-adapter-author |
| Fix a broken adapter after a command failure | opencli-autofix |
| Route a search / lookup / research request to the right adapter | smart-search |
The following were removed in the PR #1094 consolidation — don't try to invoke them:
opencli explore <url> — superseded by opencli browser network + opencli browser find for live API discovery, and by the opencli-adapter-author workflow for capture.opencli record <url> — removed; manual capture now lives in opencli browser network --detail.opencli web read / opencli desktop * as top-level groups — folded into their respective adapters (opencli web read still exists as the web adapter's read command, but there is no standalone web / desktop top-level group command).opencli list -f json at the start of a task instead.PUBLIC and LOCAL don't. Check the strategy field.fetch — --trace retain-on-failure gives you the browser evidence and adapter source path. Do that first.© jackwener, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/opencli-usage of jackwener/OpenCLI.
Open the folder on GitHubat commit 2413694
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in jackwener/OpenCLI, which our catalogue first saw on October 7, 2026.
OpenCLI Usage Map next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| OpenCLI Usage Map this skilljackwener/OpenCLI | 30k | 1 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Chrome CDP Browser Controlzenstory-ai/oh-story-claudecode | 7.3k | 2 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Agent Browser Automationwithkynam/vibecode-pro-max-kit | 1.1k | — | ~2.6k | Automated safety check: Pass | Apache-2.0 | |
| Still2rig Psdshinshin86/still2rig-psd | 128 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Electron Devtools Testingankitvgupta/exo | 496 | — | ~2.4k | Automated safety check: Pass | Custom licence | |
| Page AgentTommy-yw/RunbookHermes | 546 | 3 repos | ~2.3k | Automated safety check: Notes | MIT |
zenstory-ai/oh-story-claudecode
Drives a Chrome window over the DevTools Protocol with the agent-browser CLI, so the agent can reuse your logged-in sessions, read pages and pull tokens.
withkynam/vibecode-pro-max-kit
Drives a browser through the agent-browser CLI, using compact snapshots with element refs to keep context small in long sessions, plus video recording and cloud browsers.
shinshin86/still2rig-psd
Convert a user-provided static anime character image into a verified rig-ready PSD by coordinating the Still2Rig PSD local job CLI with a user-approved Google Colab session through Colab MCP Go.
ankitvgupta/exo
Test the Electron app interactively using Chrome DevTools Protocol.
Tommy-yw/RunbookHermes
Embed alibaba/page-agent into your own web application — a pure-JavaScript in-page GUI agent that ships as a single <script tag or npm package and lets end-users of your site drive the UI with…
sickn33/agentic-awesome-skills
Automate browsers (Playwright) and Windows desktop applications (UI automation) for reverse-engineering evidence collection, UI-driven workflows, and network observation during analysis.
jackwener/OpenCLI
Walks through writing an OpenCLI adapter for a new site or a new command on an existing one, from first recon and field decoding to coding and verification.
jackwener/OpenCLI
Routes a search question to the most suitable opencli source, normally one AI site plus up to two specialist sites, with call limits per question and a recap at the end.
jackwener/OpenCLI
Drives a real Chrome window through the opencli CLI to inspect pages, fill forms, click through logged-in flows and extract data from structured command responses.
jackwener/OpenCLI
Repairs a broken OpenCLI site adapter after a command fails: collects a trace, patches only the adapter, retries, and files an upstream GitHub issue once fixed.
Works with
Categories
Orients an agent on OpenCLI, which turns websites and Electron apps into opencli site-command calls, covering adapters, strategies, install and which skill to load next. OpenCLI exposes websites and Electron desktop apps as a uniform opencli site-and-command surface that agents can drive without screen-scraping.opencli/clis/), browser driving through opencli browser subcommands for ad-hoc work, and current-tab binding that attaches a Chrome tab you already logged into to a session.
OpenCLI Usage Map fits situations like: starting an OpenCLI session and finding the right adapter command; deciding whether a command needs a logged-in Chrome session; diagnosing the browser bridge with opencli doctor; choosing which specialized OpenCLI skill to load next.
Run `npx skills add jackwener/OpenCLI --skill opencli-usage -a claude-code`. Or copy the skill folder (skills/opencli-usage in jackwener/OpenCLI) into .claude/skills/opencli-usage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jackwener/OpenCLI --skill opencli-usage -a codex`. Or copy the skill folder (skills/opencli-usage in jackwener/OpenCLI) into .agents/skills/opencli-usage in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jackwener/OpenCLI --skill opencli-usage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/opencli-usage, .gemini/skills/opencli-usage, .github/skills/opencli-usage and .opencode/skills/opencli-usage in your project.
Going by SKILL.md and its folder, OpenCLI Usage Map needs the command-line tools its instructions call (npm, git and npx). Our summary lists: Node.js 20.18.1 or newer and the opencli npm package; The OpenCLI Chrome extension for cookie, intercept and UI adapters. Its frontmatter pre-approves these tools: Bash(opencli:*), Read.
SKILL.md names 1 domain. As links in the text: chromewebstore.google.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
OpenCLI Usage Map is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with OpenCLI Usage Map: Chrome CDP Browser Control (zenstory-ai/oh-story-claudecode, 7.3k stars), Agent Browser Automation (withkynam/vibecode-pro-max-kit, 1.1k stars), Still2rig Psd (shinshin86/still2rig-psd, 128 stars) and Electron Devtools Testing (ankitvgupta/exo, 496 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jackwener (a GitHub user) maintains it in jackwener/OpenCLI, which has 29,886 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 24, 2026.
Source: jackwener/OpenCLI on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.