browser
Automate a web browser — use when asked to click buttons, fill forms, navigate multi-step flows, extract data from JS-rendered pages, log into a site, record…
Skill by 5uck1ess
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/5uck1ess-browser
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, testing, data, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/browser
What's inside
- Skill name
browser- Description
- Automate a web browser — use when asked to click buttons, fill forms, navigate multi-step flows, extract data from JS-rendered pages, log into a site, record user interactions, or test a web app in a real browser. Use for anything beyond simple article scraping.
- License
- MIT
- Instructions
- 158 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Browser Automation
Drive a real browser via Playwright to interact with pages — click, fill forms, extract data from SPAs, run multi-step flows, or record user interactions.
Use this skill for anything beyond simple article scraping: JS-heavy data extraction, form filling, multi-step auth flows, codegen recording, or E2E testing. For static article→markdown use `scrape`; for pure image capture use `screenshot`.
## Step 1: Verify Playwright
Run `npx playwright --version`. If it fails, stop and tell the user: `Playwright required — install with: npx playwright install chromium`. Do not attempt workarounds.
## Step 2: Parse the Request
- **Target URL(s)** — starting page (validate per Rules before launching)
- **Actions** — navigate, click, fill, extract, wait
- **Data** — what fields, what format (JSON usually)
- **Auth** — are credentials needed? Read from env, never hardcode
- **Repeatability** — one-off throwaway, or save script for reuse?
If the request is vague ("scrape this site"), clarify which fields, whether login is needed, and whether it'll be re-run.
## Step 3: Choose the Right Mode
### Mode A — Codegen (recording)
When the user wants to figure out selectors or hand off a repeatable flow:
```bash
npx playwright codegen {url}
```
Opens a browser. User interacts. Playwright prints the equivalent script. Best for:
- Complex pages where selectors aren't obvious
- Building reusable flows
- Teaching users how Playwright works
### Mode B — Inline script (one-off)
Write the script to a file that reads args from `process.argv`, then pass values via shell variables:
```bash
cat > /tmp/devkit-browser-flow.mjs <<'EOF'
import { chromium } from 'playwright';
const url = process.argv[2];
if (!url) { console.error('usage: node devkit-browser-flow.mjs <url>'); process.exit(2); }
const browser = await chromium.launch();
let exitCode = 0;
try {
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
// Example: extract items from a JS-rendered list
const data = await page.evaluate(() =>
Array.from(document.querySelectorAll('.item')).map(el => ({
title: el.querySelector('h3')?.textContent?.trim(),
link: el.querySelector('a')?.href,
}))
);
console.log(JSON.stringify(data, null, 2));
} catch (err) {
console.error('flow failed:', err.message);
exitCode = 1;
} finally {
try { await browser.close(); } catch (e) { /* suppress close errors so the real error propagates */ }
}
process.exit(exitCode);
EOF
URL=https://example.com node /tmp/devkit-browser-flow.mjs "$URL"
```
### Mode C — Persistent test (for web apps)
If the user is building a web app and wants E2E tests:
```bash
# Scaffold Playwright test framework
npm init playwright@latest
# Generates playwright.config.ts and tests/ directory
# Run with:
npx playwright test
```
Then write test specs in `tests/*.spec.ts`.
### Mode D — Form fill + auth flow
Same pattern as Mode B, plus `page.fill` / `page.click` for the login form. Credentials come from env, never from hardcoded strings or the command line:
```bash
cat > /tmp/devkit-browser-auth.mjs <<'EOF'
import { chromium } from 'playwright';
const loginUrl = process.argv[2];
const targetUrl = process.argv[3];
if (!loginUrl || !targetUrl) {
console.error('usage: node devkit-browser-auth.mjs <login_url> <target_url>');
process.exit(2);
}
const browser = await chromium.launch();
let exitCode = 0;
try {
const page = await browser.newPage();
await page.goto(loginUrl);
await page.fill('input[name="email"]', process.env.EMAIL);
await page.fill('input[name="password"]', process.env.PASSWORD);
await page.click('button[type="submit"]');
await page.waitForURL('**/dashboard');
await page.goto(targetUrl);
const content = await page.content();
console.log(content);
} catch (err) {
console.error('auth flow failed:', err.message);
exitCode = 1;From 5uck1ess/devkit, MIT.
More from 5uck1ess/devkit
- 0.619score
adr
5uck1ess
Generate Architecture Decision Records — use when asked to document a decision, create an ADR, record why we chose X, or capture architectural rationale.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
mega-pr
5uck1ess
Fan-out PR review that runs BOTH `/devkit:tri-review` AND `/pr-review-toolkit:review-pr` in parallel for maximum coverage, then presents unified results —…
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
health
5uck1ess
Check devkit health — which external CLIs (codex, gemini, gh, rtk, sg, gcli) are installed, which agents are available, which skills are ready to use.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
changelog
5uck1ess
Generate a structured changelog from git history — use when asked to create a changelog, release notes, or summarize what changed between…
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
autoloop
5uck1ess
Autonomous improvement loop inspired by karpathy/autoresearch — use when asked to run an autoloop, auto loop, autonomous improvement, or run experiments…
SkillAFreshness: A★ 5Claude Code +9 - 0.616score
creating-workflows
5uck1ess
REFERENCE ONLY — schema documentation for authoring devkit workflow YAML files (step types, variable interpolation, loops, parallel groups, examples).
SkillAFreshness: A★ 5Claude Code +9 - 0.616score
dont-reinvent
5uck1ess
Don't reinvent the wheel — use existing libraries, tools, and stdlib before building custom solutions.
SkillAFreshness: A★ 5Claude Code +9 - 0.615score
pr-ready
5uck1ess
Full end-to-end PR pipeline — validate → necessity-check → lint (loop) → test (loop) → security scan → doc-check → changelog → create-pr → monitor reviews…
SkillAFreshness: A★ 5Claude Code +9 - 0.615score
deep-research
5uck1ess
High-stakes research with Analysis of Competing Hypotheses, disconfirmation testing, evidence matrices, and sensitivity checks (~400k token budget) — use when…
SkillAFreshness: A★ 5Claude Code +9 - 0.614score
bugfix
5uck1ess
Deterministic full-lifecycle bugfix workflow — triage → reproduce → diagnose → fix → regression-test → run-tests, with a reproduction gate that must fail…
SkillAFreshness: A★ 5Claude Code +9 - 0.614score
audit
5uck1ess
External-scanner-driven project health check — runs the actual ecosystem tools (npm audit, eslint, govulncheck, semgrep, pip-audit, etc.) to surface what the…
SkillAFreshness: A★ 5Claude Code +9 - 0.614score
harness-audit
5uck1ess
Audit the agent harness itself — CLAUDE.md, hooks, MCP configs, agent definitions, and permissions — for misconfigurations, injection risks, and security gaps.
SkillAFreshness: A★ 5Claude Code +9
Signals
- Stars
- 5
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Apr 10, 2026 (6 months ago)
- Last release
- Oct 21, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/5uck1ess/devkit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from 5uck1ess
- 0.619score
health
5uck1ess
Check devkit health — which external CLIs (codex, gemini, gh, rtk, sg, gcli) are installed, which agents are available, which skills are ready to use.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
mega-pr
5uck1ess
Fan-out PR review that runs BOTH `/devkit:tri-review` AND `/pr-review-toolkit:review-pr` in parallel for maximum coverage, then presents unified results —…
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
adr
5uck1ess
Generate Architecture Decision Records — use when asked to document a decision, create an ADR, record why we chose X, or capture architectural rationale.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
changelog
5uck1ess
Generate a structured changelog from git history — use when asked to create a changelog, release notes, or summarize what changed between…
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
autoloop
5uck1ess
Autonomous improvement loop inspired by karpathy/autoresearch — use when asked to run an autoloop, auto loop, autonomous improvement, or run experiments…
SkillAFreshness: A★ 5Claude Code +9 - 0.616score
dont-reinvent
5uck1ess
Don't reinvent the wheel — use existing libraries, tools, and stdlib before building custom solutions.
SkillAFreshness: A★ 5Claude Code +9
Cite this page
browser skill. Agent Mart. https://agentmart.dev/skills/5uck1ess-browser (last updated 2026-10-24)