Skip to content
Development
Skill

/browser-automation

Browser automation for rendered UI exploration, validation, screenshots,

From plugin
cc-thingz
3828 skills6 agents

Claude Code

$ npx -y skills add alexei-led/cc-thingz --skill browser-automation --agent claude-code

SKILL.md

browser-automation.SKILL.md
description: 'Browser automation for rendered UI exploration, validation, screenshots,
  recordings, and end-to-end flows. Use when a task needs an actual browser or rendered
  DOM: inspect UI state, click/fill forms, debug frontend behavior, capture evidence,
  verify a feature, or run/generate browser tests. NOT for API checks or pure logic
  tests where curl, unit tests, or JSDOM is cheaper.'
name: browser-automation

Browser Automation

Prove rendered behavior in a real browser and report pass, fail, or blocked with evidence. Keep automation temporary unless the user asks for permanent tests.

Runtime

Use the cheapest runtime that proves the claim:

1. Browser tools exposed in the current session. See [`references/platform-browser-tools.md`](references/platform-browser-tools.md). 2. The project's configured browser runner. Infer the package manager from the lockfile; do not invent a runner. 3. The bundled Playwright scripts in this skill's `scripts/` directory. Read [`references/playwright.md`](references/playwright.md) for setup, the script skeleton, helpers, and custom headers. 4. None available: report blocked and name the missing tool or package.

Rules

  • Target: reuse a reachable dev server; start one only when its command is

known. Ask when no server or several servers are found.

  • Data: use seeded users, fixed dates, reset state, and mocked external

services. Credentials, production data, and destructive actions need explicit user approval.

  • Locators: role, label, text, or test id first; CSS last.
  • Waiting: wait on observable state such as a selector, URL, network response,

or accessibility snapshot. Never add fixed sleeps. For SPA or HTMX pages, assert the DOM after swaps and client-side route changes.

  • Headless: when the platform exposes no visible browser (Pi, CI, most CLIs),

use headless screenshots plus a manifest as visual evidence. Use headed mode only when the user can see the browser.

  • Files: write generated scripts and artifacts to `/tmp/playwright-*`. Write to

the project only when the user asked for permanent tests, and never write into the skill directory.

  • Failures: fix the app or tests only when that is in scope. After two failed

scoped attempts, save evidence, quote the failing line or UI state, and stop.

  • Permanent tests: done when the relevant build/test/lint checks pass on what

you changed, or you name each check that did not run and why.

Bundled Playwright scripts

Run them by absolute path from the caller's working directory, where `<skill-dir>` is the directory that contains this `SKILL.md`. Prefer the screenshot scripts over custom batch scripts:

node <skill-dir>/scripts/screenshot-url.js --url <url> --selector <ready-selector> \
  --out /tmp/playwright-page.png --json
node <skill-dir>/scripts/screenshot-sequence.js --url-template '<url/{n}>' --from 1 --to 10 \
  --selector <ready-selector> --out-dir /tmp/playwright-shots --json
node <skill-dir>/scripts/run.js --json /tmp/playwright-check.js
  • Manifests record URL, title, screenshot path, viewport, console errors,

network failures, and HTTP responses with status >=400.

  • `run.js` keeps the caller's working directory and writes its status logs to

stderr. Pass `--json` or `--quiet` whenever stdout must carry only the script's JSON: without them, a first-run Playwright install also writes to stdout. Playwright globals such as `chromium` and `helpers` stay available when the script also uses `require("fs")` or `require("path")`.

Platform additions

No target-specific additions.

Output

## Browser Automation Result

Target: <page, feature, or flow>
Runtime: <built-in browser | project runner | bundled Playwright | blocked>
Actions: <commands or browser actions>
Result: <pass | fail | blocked>
Evidence: <screenshot, manifest, or trace paths, or the key observation>
Next fix: <only when failing or blocked>

Report blocked, not pass, when the check did not run.

Read more
@alexei-led
Ships withcc-thingz

Portable skills, agents, hooks, and Pi-native extensions for Claude Code, Codex CLI, GitHub Copilot, Cursor, Grok, and Pi. Gemini is retired.

3828 skills6 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
38
Star history of alexei-led/cc-thingz on GitHub, a chart by star-history.com

Other skills on cc-thingz.

releasing-code

releasing-code

Prepare, publish, or repair a software release and write its release notes. Use for cutting a versioned release or editing…

reviewing-code

reviewing-code

Produce findings, not edits, for the requested diff, PR, changed files, or file list. Read `references/severity-rubric.md` before…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills13d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react4d252k
@facebook@facebookInstall Skill

Questions about browser-automation.

Which coding agents can use browser-automation?
browser-automation installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.