Skip to content
Back to skills

Dex Browser

ASecurity

Browser automation via Playwright. Use when pages are JS-rendered, require user interaction (click/fill), or need screenshots. Part of the 3-layer web tool hierarchy: search (SearXNG) → extract (web_fetch) → interact (browser). This is the last resort layer.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 9, 2026
developmentjavascriptpythonjavabashreactvueangularapi

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add Lord1Egypt/awesome-skill-forge --skill dex-browser --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dex Browser?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dex Browser
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lord1egypt-dex-browser/badge)](https://www.skillsdirectory.com/skills/lord1egypt-dex-browser)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: browser-automation
description: "Browser automation via Playwright. Use when pages are JS-rendered, require user interaction (click/fill), or need screenshots. Part of the 3-layer web tool hierarchy: search (SearXNG) → extract (web_fetch) → interact (browser). This is the last resort layer."
---

# Browser Automation

## When to Use This Skill

**Trigger conditions:**
- `web_fetch` returned empty, garbled, or incomplete content
- Target page is JavaScript-rendered (React/Vue/Angular SPAs)
- Need to interact with UI: click buttons, fill forms, navigate flows
- Need a screenshot of a page's current rendered state
- Multi-step flows: login → navigate → scrape
- Extracting structured data from dynamically loaded content

**Do NOT use this skill when:**
- Page is static HTML — `web_fetch` is faster
- Only need to find a URL — `web_search` is the right first step
- You need API data — check if the site has a public API first
- The page requires authentication you don't have

## The 3-Layer Web Tool Hierarchy

```
Layer 1 — Search:    web_search → find URLs
Layer 2 — Extract:   web_fetch → get page content (static pages only!)
Layer 3 — Interact:  browser.py → JS rendering, interaction, screenshots
```

Always try Layer 1 and 2 before reaching for browser automation.

---

## Setup Check

```bash
python3 skills/browser-automation/scripts/init.py
```

Should return `{"ready": true}`. If not, Playwright needs installation.

---

## Scripts

All scripts exit with code 0 on success, 1 on usage error, 2 on browser error.

### screenshot.py — Capture a page

```bash
python3 skills/browser-automation/scripts/screenshot.py <url> [path]
# Default path: /tmp/screenshot.png
```

Returns: `{success, saved, title}`

### scrape.py — Get rendered HTML

```bash
python3 skills/browser-automation/scripts/scrape.py <url>
```

Returns: `{success, title, url, html}` (html truncated to 50k chars)

### extract.py — Pull structured data

```bash
python3 skills/browser-automation/scripts/extract.py <url> <selector>
```

CSS selector targets elements. Extracts up to 50 elements, each with `text`, `href`, `src`, `alt`.

Returns: `{success, count, selector, items[]}`

### interact.py — Click and fill

```bash
# Click
python3 skills/browser-automation/scripts/interact.py click <selector> [url]

# Fill input
python3 skills/browser-automation/scripts/interact.py fill <selector> <value> [url]

# Hover
python3 skills/browser-automation/scripts/interact.py hover <selector> [url]
```

If `url` is provided, navigates there first. Returns: `{success, action, selector, title, url}`

---

## Reference Docs

- `references/selectors.md` — CSS selector syntax and common patterns
- `references/patterns.md` — Login flows, search pagination, infinite scroll, stealth mode, error recovery

---

## Examples

### JS-rendered page (would fail web_fetch)
```bash
# web_fetch gives nothing on HN — use extract
python3 scripts/extract.py "https://news.ycombinator.com" ".titleline > a"
```

### Screenshot a page
```bash
python3 scripts/screenshot.py "https://site.com/dashboard" "/tmp/dashboard.png"
```

### Form login flow
```bash
python3 scripts/interact.py fill "#username" "user@example.com" "https://site.com/login"
python3 scripts/interact.py fill "#password" "secret123"
python3 scripts/interact.py click "button[type=submit]"
python3 scripts/scrape.py "https://site.com/dashboard"
```

### Get structured data from a list
```bash
python3 scripts/extract.py "https://jobs.site.com/postings?q=engineer" ".job-listing h2"
```

---

## Quick Reference

| Task | Command |
|---|---|
| Screenshot | `screenshot.py <url> [path]` |
| HTML | `scrape.py <url>` |
| Data | `extract.py <url> <selector>` |
| Click | `interact.py click <selector> [url]` |
| Fill | `interact.py fill <selector> <value> [url]` |
| Setup check | `init.py` |

---

## Skill Metadata

- **Scripts:** `init.py`, `screenshot.py`, `scrape.py`, `extract.py`, `interact.py`
- **References:** `selectors.md`, `patterns.md`
- **Requires:** Playwright (`pip install playwright && playwright install chromium`)
- **Exit codes:** 0=success, 1=usage error, 2=browser error

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…