# Bowser

> 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.

- **Type:** Skill
- **Install:** `agentstack add skill-chankov-agent-fleet-bowser`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [chankov](https://agentstack.voostack.com/s/chankov)
- **Installs:** 0
- **Category:** [Web & Browser](https://agentstack.voostack.com/c/web-and-browser)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [chankov](https://github.com/chankov)
- **Source:** https://github.com/chankov/agent-fleet/tree/main/.versions/0.0.4/.pi/skills/bowser

## Install

```sh
agentstack add skill-chankov-agent-fleet-bowser
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 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.

## Requirements

This skill drives the external **Playwright Agent CLI** (`playwright-cli`). It is **not** bundled with agent-fleet — install it once before using this skill (the guided setup checks for it when `bowser` is selected).

- **Node.js 20+**
- **`playwright-cli`** — install globally:

```bash
npm install -g @playwright/cli@latest
playwright-cli --help                 # verify it responds
```

Or run ad-hoc without a global install via `npx playwright-cli `.

Browsers are downloaded automatically on first use; to pre-install explicitly:

```bash
playwright-cli install-browser               # default (chromium)
playwright-cli install-browser firefox       # a specific browser
playwright-cli install-browser --with-deps   # include system dependencies
```

Full install docs: 

## When to use this vs Chrome DevTools MCP

This skill (`playwright-cli`) and the `chrome-devtools-mcp` pi extension are **complementary**, not redundant — they differ by tool model, not just headless-vs-headful (both can do either):

- **`bowser` / `playwright-cli` (this skill)** — CLI-driven, headless-first, parallel named sessions, token-efficient (no tool schemas in context). It needs only Bash, so it works as a **dispatched subagent** under `--no-extensions`. Use it for automated, parallel, or background runtime-UI evidence and scraping.
- **`web-debugger` / `chrome-devtools-mcp`** — live `chrome_devtools__*` tools (DOM/console/network/performance traces) for **interactive headful** debugging with a human in the loop. Those tools come from an always-on extension, so they are reachable in the main session or a **coms peer**, not a `--no-extensions` subagent. Use it to *understand* a failure in a running dev app.

## Key Details

- **Headless by default** — pass `--headed` to `open` to see the browser
- **Parallel sessions** — use `-s=` 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= close                          # close specific session
playwright-cli -s= delete-data                    # wipe session profile
```

## Quick Reference

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

## 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= open  --persistent
# or headed:
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 playwright-cli -s= open  --persistent --headed
# or with vision (screenshots returned as image responses in context):
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 PLAYWRIGHT_MCP_CAPS=vision playwright-cli -s= open  --persistent
```

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

3. Interact using refs from snapshot:
```bash
playwright-cli click 
playwright-cli fill  "text"
playwright-cli type "text"
playwright-cli press Enter
```

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

5. **Always close the session when done.** This is not optional — close the named session after finishing your task:
```bash
playwright-cli -s= 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 ` for detailed command usage.

See the [Playwright Agent CLI docs](https://playwright.dev/agent-cli/installation) for full documentation.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [chankov](https://github.com/chankov)
- **Source:** [chankov/agent-fleet](https://github.com/chankov/agent-fleet)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-chankov-agent-fleet-bowser
- Seller: https://agentstack.voostack.com/s/chankov
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
