Test Framework Migration Skill
sickn33/agentic-awesome-skills
Migrates and converts test automation scripts between Selenium, Playwright, Puppeteer, and Cypress.
A skill your agent uses whenever the task involves browsing web pages, extracting page content, clicking forms, or completing web workflows.
$ npx skills add JasonHonKL/Openbrowser --skill open-browser -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JasonHonKL/Openbrowser open-browser --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/JasonHonKL/Openbrowser.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/open-browser-only .claude/skills/open-browser && 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 "open-browser" agent skill from https://github.com/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-only into .claude/skills/open-browser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "open-browser", 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/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-onlyType 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 JasonHonKL/Openbrowser --skill open-browser -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JasonHonKL/Openbrowser open-browser --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JasonHonKL/Openbrowser.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/open-browser-only .agents/skills/open-browser && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "open-browser" agent skill from https://github.com/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-only into .agents/skills/open-browser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "open-browser", 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 JasonHonKL/Openbrowser --skill open-browser -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JasonHonKL/Openbrowser open-browser --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JasonHonKL/Openbrowser.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/open-browser-only .cursor/skills/open-browser && 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 "open-browser" agent skill from https://github.com/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-only into .cursor/skills/open-browser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "open-browser", 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/JasonHonKL/Openbrowser.git --path .github/skills/open-browser-only--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 JasonHonKL/Openbrowser --skill open-browser -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JasonHonKL/Openbrowser open-browser --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JasonHonKL/Openbrowser.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/open-browser-only .gemini/skills/open-browser && 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 "open-browser" agent skill from https://github.com/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-only into .gemini/skills/open-browser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "open-browser", 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 JasonHonKL/Openbrowser open-browserInstalls 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 JasonHonKL/Openbrowser --skill open-browser -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JasonHonKL/Openbrowser.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/open-browser-only .github/skills/open-browser && 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 "open-browser" agent skill from https://github.com/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-only into .github/skills/open-browser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "open-browser", 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 JasonHonKL/Openbrowser --skill open-browser -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JasonHonKL/Openbrowser open-browser --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JasonHonKL/Openbrowser.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/open-browser-only .opencode/skills/open-browser && 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 "open-browser" agent skill from https://github.com/JasonHonKL/Openbrowser/tree/main/.github/skills/open-browser-only into .opencode/skills/open-browser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "open-browser", 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.
open-browserA skill your agent uses whenever the task involves browsing web pages, extracting page content, clicking forms, or completing web workflows.
Open Browser is an agent skill from JasonHonKL/Openbrowser. Use this skill whenever the task involves browsing web pages, extracting page content, clicking forms, or completing web workflows. Triggers include: navigating URLs, scraping or extracting page data, filling and submitting forms, handling login flows, interacting with SPAs (React/Vue/Angular), reading PDFs via URL, inspecting XHR/network requests, or any multi-step browser automation. Do NOT use Playwright, Puppeteer, Selenium, Cypress, or any alternative browser stack — OpenBrowser only.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Browser testing, Browser automation and End-to-end testing. It works with Cypress, Playwright, Puppeteer and Selenium. The repository describes itself as: A browser designed for agent. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 35ae8c2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Open Browser loads about 1.6k tokens when it runs. Until then it costs about 127 tokens; SKILL.md has 419 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 JasonHonKL/Openbrowser at commit 35ae8c2, republished under its MIT licence (© JasonHonKL). 419 words, ~1,595 tokens.
.claude/skills/open-browser/SKILL.md (or your agent's skills folder).OpenBrowser is the only permitted browser engine. Never use Playwright, Puppeteer, Selenium, Cypress, or raw Chromium scripts.
| Scenario | Use |
|---|---|
| Multi-step automation | browser_* tools from ai-agent/open-browser (preferred) |
| Persistent CLI session | open-browser repl |
| CDP client connection | open-browser serve |
| One-off page read | open-browser navigate <url> |
| Site structure discovery | open-browser map <url> |
open-browser interact <url> CLI call wipes all cookies, auth tokens, form state, and localStorage. Multi-step flows (e.g. login → form submit) will fail with repeated one-shot calls.browser_new → browser_navigate → … → browser_closeopen-browser repl for persistent CLI sessions[action: ...] tags before interacting. Valid actions: click, fill, toggle, select. Do not guess.1. Open/create session
2. Navigate to target URL
3. Read semantic state (browser_get_state or page output)
4. Identify target by [#ID] + [action: navigate/click/fill/toggle/select]
5. Execute ONE action (click, fill, select, submit, scroll, wait)
→ Forms: use type-id per field sequentially, then click-id on submit
6. Re-read state after every mutation or navigation
7. Repeat until success criteria met
8. Close session--js)Enable when:
wait selector never resolves without JS| Site type | Wait setting |
|---|---|
| Default | --wait-ms 2000 |
| Slow / heavy SPA | --wait-ms 5000 |
Only inline
<script>tags execute. External scripts are not fetched.setTimeout/setIntervalare no-ops.
| Goal | Flag |
|---|---|
| Structured data extraction | --format json |
| Navigation graph | --format json --with-nav |
| Tree structure inspection | --format tree |
| General reading (default) | (omit — markdown is default) |
--format llmdoes not exist. Always include source URL and relevant section in extracted answers.
Site Exploration — use before interacting with unknown or complex sites:
open-browser map https://example.com --depth 2 --output kg.json
# Read kg.json → states (url, title, semantic_tree) + transitions (verified edges)PDF Handling — navigate directly, no external parser needed:
open-browser navigate https://example.com/report.pdf
# Auto-detects application/pdf, returns parsed semantic treeXHR / Dynamic Data — inspect raw API responses:
open-browser navigate https://example.com --network-log --format jsonNew Tab Handling — after a flow opens a new tab:
open-browser tab list # find the new tab ID
open-browser tab switch <id> # switch context explicitly
# In REPL: tab list → tab switch <id># Navigate and read semantic tree (HTML or PDF)
open-browser navigate "https://example.com"
open-browser navigate "https://example.com/report.pdf"
# Output formats
open-browser navigate "https://example.com" --format json
open-browser navigate "https://example.com" --format json --with-nav
open-browser navigate "https://example.com" --format tree
# Interactive elements only
open-browser navigate "https://example.com" --interactive-only
# JavaScript mode
open-browser navigate "https://example.com" --js --wait-ms 2000
# Network debug / XHR extraction
open-browser navigate "https://example.com" --network-log --format json
# Auth bypass
open-browser navigate "https://api.example.com/data" --header "Authorization: Bearer <token>"
# Form filling by element ID
open-browser interact "https://example.com/login" type-id 1 "my_username"
open-browser interact "https://example.com/login" type-id 2 "my_password"
open-browser interact "https://example.com/login" click-id 3
# Map site structure
open-browser map "https://example.com" --depth 2 --output kg.json
# Persistent REPL session
open-browser repl
open> visit https://example.com
open [https://example.com]> click #3
open [https://example.com]> type #5 "search query"
open [https://example.com]> tab open https://example.com/page2
open [https://example.com/page2]> back
open [https://example.com]> exit
# CDP server
open-browser serve --host 0.0.0.0 --port 9222| Error | Fix |
|---|---|
| Element ID stale after navigation | Re-read state before retrying — IDs reset on every page load |
| Semantic tree nearly empty | Add --js --wait-ms 3000 and re-read |
method not found from CDP | Fall back to open-browser CLI or REPL |
| External scripts not executing | By design — use --wait-ms to let inline-script async content settle |
| Tab state lost between commands | Tab state doesn't persist across CLI calls — use open-browser repl |
Page.printToPDF is unsupported in semantic-only mode.semanticTree, interact, wait. If a higher-level tool returns method not found, fall back to these.© JasonHonKL, MIT. 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 .github/skills/open-browser-only of JasonHonKL/Openbrowser.
Open the folder on GitHubat commit 35ae8c2
Open Browser 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 |
|---|---|---|---|---|---|---|
| Open Browser this skillJasonHonKL/Openbrowser | 114 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Test Framework Migration Skillsickn33/agentic-awesome-skills | 47k | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Browser Automationynulihao/AgentSkillOS | 617 | — | ~2.2k | Automated safety check: Pass | None | |
| Playwright Coretestdino-hq/playwright-skill | 386 | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Brightdata Proxybrightdata/skills | 264 | — | ~5.1k | Automated safety check: Pass | MIT | |
| Agenttinyfish-io/tinyfish-cookbook | 2.2k | — | ~1.1k | Automated safety check: Pass | MIT |
sickn33/agentic-awesome-skills
Migrates and converts test automation scripts between Selenium, Playwright, Puppeteer, and Cypress.
ynulihao/AgentSkillOS
Non-testing browser automation - web scraping, form filling, screenshot capture, PDF generation, workflow automation.
testdino-hq/playwright-skill
Battle-tested Playwright patterns for writing and debugging reliable E2E, API, component, visual, accessibility, and security tests.
brightdata/skills
Generate working code that routes HTTP requests through Bright Data proxy networks (Datacenter, ISP, Residential, Mobile) and help users decide which network and IP pool type to use (shared pool…
tinyfish-io/tinyfish-cookbook
Default browser automation agent — click, fill forms, navigate, log in, and extract structured data from any website using a natural-language goal, or run the same task across multiple sites in…
affaan-m/ECC
React component testing with React Testing Library, Vitest/Jest, MSW for network mocking, accessibility assertions with axe, and the decision boundary between component tests and Playwright/Cypress…
Categories
A skill your agent uses whenever the task involves browsing web pages, extracting page content, clicking forms, or completing web workflows. Open Browser is an agent skill from JasonHonKL/Openbrowser. Use this skill whenever the task involves browsing web pages, extracting page content, clicking forms, or completing web workflows.
Open Browser fits situations like: the task involves browsing web pages; extracting page content; completing web workflows; include: navigating URLs.
Run `npx skills add JasonHonKL/Openbrowser --skill open-browser -a claude-code`. Or copy the skill folder (.github/skills/open-browser-only in JasonHonKL/Openbrowser) into .claude/skills/open-browser in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JasonHonKL/Openbrowser --skill open-browser -a codex`. Or copy the skill folder (.github/skills/open-browser-only in JasonHonKL/Openbrowser) into .agents/skills/open-browser 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 JasonHonKL/Openbrowser --skill open-browser -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/open-browser, .gemini/skills/open-browser, .github/skills/open-browser and .opencode/skills/open-browser in your project.
SKILL.md names no scripts, command-line tools or credentials: Open Browser is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Open Browser is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.4k 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 Open Browser: Test Framework Migration Skill (sickn33/agentic-awesome-skills, 47k stars), Browser Automation (ynulihao/AgentSkillOS, 617 stars), Playwright Core (testdino-hq/playwright-skill, 386 stars) and Brightdata Proxy (brightdata/skills, 264 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JasonHonKL (a GitHub user) maintains it in JasonHonKL/Openbrowser, which has 114 GitHub stars. The repository was last updated on April 26, 2026.
Source: JasonHonKL/Openbrowser on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.