Agent Native

bowser

This skill automates headless browser tasks using the Playwright CLI, supporting parallel sessions with persistent profiles and token-efficient operation.

by dislerCommunity

Community author

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
License
MIT (permissive)
Pin
0ed11f4pinned Oct 9, 2026
Context cost
about 1,100 tokenswhen the skill loads
GitHub stars
1,708on disler/pi-vs-claude-code
Scripts
None found

What it does

“Headless browser automation using Playwright CLI. Use when you need headless browsing, parallel browser sessions, UI testing, screenshots, web scraping, or browser automation that can run in the background. Keywords - playwright, headless, browser, test, screenshot, scrape, parallel.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill automates headless browser tasks using the Playwright CLI, supporting parallel sessions with persistent profiles and token-efficient operation. It enables web scraping, UI testing, screenshots, and browser automation without rendering the browser by default. The agent can manage multiple independent browser instances simultaneously and preserve state across commands.

When to use it

  • Testing web application flows across multiple pages or scenarios
  • Capturing screenshots or PDFs of web pages for documentation
  • Scraping data from websites or testing dynamic content loading
  • Running parallel browser sessions for load testing or concurrent workflows

When not to

  • Requiring interactive browser debugging or real-time visual inspection
  • Tasks needing JavaScript evaluation beyond basic page interaction
  • Testing applications with complex JavaScript frameworks needing full DOM access

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add disler/pi-vs-claude-code --skill bowser

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install disler/pi-vs-claude-code bowser@0ed11f44932fdef29bd98467700019762298f50d

Installs the commit we checked (0ed11f4).

Copy by hand

Download the folder at 0ed11f4 and put it in .claude/skills/bowser for Claude Code and in .agents/skills/bowser for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 0ed11f4

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "bowser" by disler.

Source, pinned to commit 0ed11f44932fdef29bd98467700019762298f50d:
https://github.com/disler/pi-vs-claude-code/tree/0ed11f44932fdef29bd98467700019762298f50d/.pi/skills/bowser

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/bowser/ for Claude Code and .agents/skills/bowser/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/disler/bowser

SKILL.md at the pin

---
name: bowser
description: Headless browser automation using Playwright CLI. Use when you need headless browsing, parallel browser sessions, UI testing, screenshots, web scraping, or browser automation that can run in the background. Keywords - playwright, headless, browser, test, screenshot, scrape, parallel.
allowed-tools: Bash
---

# Playwright Bowser

## Purpose

Automate browsers using `playwright-cli` — a token-efficient CLI for Playwright. Runs headless by default, supports parallel sessions via named sessions (`-s=`), and doesn't load tool schemas into context.

## Key Details

- **Headless by default** — pass `--headed` to `open` to see the browser
- **Parallel sessions** — use `-s=<name>` to run multiple independent browser instances
- **Persistent profiles** — cookies and storage state preserved between calls
- **Token-efficient** — CLI-based, no accessibility trees or tool schemas in context
- **Vision mode** (opt-in) — set `PLAYWRIGHT_MCP_CAPS=vision` to receive screenshots as image responses in context instead of just saving to disk

## Sessions

**Always use a named session.** Derive a short, descriptive kebab-case name from the user's prompt. This gives each task a persistent browser profile (cookies, localStorage, history) that accumulates across calls.

```bash
# Derive session name from prompt context:
# "test the checkout flow on mystore.com" → -s=mystore-checkout
# "scrape pricing from competitor.com"    → -s=competitor-pricing
# "UI test the login page"               → -s=login-ui-test

playwright-cli -s=mystore-checkout open https://mystore.com --persistent
playwright-cli -s=mystore-checkout snapshot
playwright-cli -s=mystore-checkout click e12
```

Managing sessions:
```bash
playwright-cli list                                     # list all sessions
playwright-cli close-all                                # close all sessions
playwright-cli -s=<name> close                          # close specific session
playwright-cli -s=<name> delete-data                    # wipe session profile
```

## Quick Reference

```
Core:       open [url], goto <url>, click <ref>, fill <ref> <text>, type <text>, snapshot, screenshot [ref], close
Navigate:   go-back, go-forward, reload
Keyboard:   press <key>, keydown <key>, keyup <key>
Mouse:      mousemove <x> <y>, mousedown, mouseup, mousewheel <dx> <dy>
Tabs:       tab-list, tab-new [url], tab-close [index], tab-select <index>
Save:       screenshot [ref], pdf, screenshot --filename=f
Storage:    state-save, state-load, cookie-*, localstorage-*, sessionstorage-*
Network:    route <pattern>, route-list, unroute, network
DevTools:   console, run-code <code>, tracing-start/stop, video-start/stop
Sessions:   -s=<name> <cmd>, list, close-all, kill-all
Config:     open --headed, open --browser=chrome, resize <w> <h>
```

## Workflow

1. Derive a session name from the user's prompt and open with `--persistent` to preserve cookies/state. Always set the viewport via env var at launch:
```bash
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 playwright-cli -s=<session-name> open <url> --persistent
# or headed:
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 playwright-cli -s=<session-name> open <url> --persistent --headed
# or with vision (screenshots returned as image responses in context):
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 PLAYWRIGHT_MCP_CAPS=vision playwright-cli -s=<session-name> open <url> --persistent
```

3. Get element references via snapshot:
```bash
playwright-cli snapshot
```

4. Interact using refs from snapshot:
```bash
playwright-cli click <ref>
playwright-cli fill <ref> "text"
playwright-cli type "text"
playwright-cli press Enter
```

5. Capture results:
```bash
playwright-cli screenshot
playwright-cli screenshot --filename=output.png
```

6. **Always close the session when done.** This is not optional — close the named session after finishing your task:
```bash
playwright-cli -s=<session-name> close
```

## Configuration

If a `playwright-cli.json` exists in the working directory, use it automatically. If the user provides a path to a config file, use `--config path/to/config.json`. Otherwise, skip configuration — the env var and CLI defaults are sufficient.

```json
{
  "browser": {
    "browserName": "chromium",
    "launchOptions": { "headless": true },
    "contextOptions": { "viewport": { "width": 1440, "height": 900 } }
  },
  "outputDir": "./screenshots"
}
```

## Full Help

Run `playwright-cli --help` or `playwright-cli --help <command>` for detailed command usage.

See [docs/playwright-cli.md](docs/playwright-cli.md) for full documentation.

From disler/pi-vs-claude-code at 0ed11f4, shown as plain text under its license: MIT (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at 0ed11f4

Files

1 file, 4.6 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 0ed11f4
All Testing and QA skills
  • triaging-visual-review-runs

    Inspects PostHog Visual Review screenshot regression runs that gate pull requests, helping engineers triage diff results, identify flaky stories, and decide…

    by PostHogOfficial publisher

    Claude Code, Codex, Cursor +4 · about 8.9K tokens · pinned 7 days ago

  • webapp-testing

    This skill enables agents to test local web applications using Playwright by writing Python automation scripts.

    by SnykOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 890 tokens · pinned 7 days ago

  • browser-probe

    This skill probes a URL with escalating headless browser configurations to detect CDN bot protection systems like Akamai and Cloudflare, then generates a…

    by Adobe, Inc.Official publisher

    Contains scripts

    Claude Code · about 1K tokens · pinned 7 days ago

  • browser-navigation

    This skill enables agents to automate browser interactions including navigation, form filling, element clicking, screenshots, and data extraction from web…

    by FactoryOfficial publisher

    Claude Code, Codex, Cursor +3 · about 2.5K tokens · pinned 7 days ago

  • triaging-visual-review-runs

    Inspects PostHog Visual Review runs that gate PR merges with screenshot regression checks.

    by PostHogOfficial publisher

    Claude Code, Codex, Cursor +4 · about 8.9K tokens · pinned 7 days ago

  • clerk-testing

    This skill enables end-to-end testing of Clerk authentication flows using Playwright or Cypress test frameworks.

    by ClerkOfficial publisher

    Claude Code, Codex, Cursor +4 · about 480 tokens · pinned 7 days ago

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use