From 9e4da09581a1a6b0c7de218bb6cb610fe3a77877 Mon Sep 17 00:00:00 2001 From: admin9webs Date: Fri, 10 Jul 2026 16:11:45 +0800 Subject: [PATCH] Add misc/browser-skill --- skills/misc/browser-skill/SKILL.md | 229 +++++++++++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 skills/misc/browser-skill/SKILL.md diff --git a/skills/misc/browser-skill/SKILL.md b/skills/misc/browser-skill/SKILL.md new file mode 100644 index 0000000..5edf9ea --- /dev/null +++ b/skills/misc/browser-skill/SKILL.md @@ -0,0 +1,229 @@ +--- +name: browser-skill +description: | + Use when the user asks to perform browser automation tasks against their + logged-in browser: visit and read pages, fill forms, scrape data, click + through a flow, regression-test a PR's UI, validate a deployed page. + Requires the bsk CLI installed and the browser-skill extension loaded. +--- + +# browser-skill + +Drive the user's **real Chromium browser** (with their logins and cookies) through the `bsk` CLI. The extension opens an isolated **Agent Window** for automation; the user's normal windows stay protected unless you explicitly borrow a tab. + +## When to use + +- Open pages, read titles/text, scrape structured data from sites the user can already access +- Fill forms, click through multi-step flows, smoke-test a UI change +- Understand pages with `bsk snapshot` first; use `bsk get-html` or `bsk screenshot` only when the snapshot is insufficient +- Operate on a specific user tab they point you at (after `bsk tab borrow`) + +## When NOT to use + +- Tasks with **no browser** involved (files, APIs, databases only) +- Installing or configuring the extension (point the user to setup docs instead) +- **Credential harvesting** — never run `bsk evaluate` on banking, SSO, or password-manager pages to extract tokens, cookies, or secrets +- Long-lived control of a user's personal login window — borrow only for the immediate step, then `bsk tab return` or end the session +- Replacing the user's manual browsing when they only wanted an explanation + +## Prerequisites + +1. `bsk` on `PATH` (Rust CLI from browser-skill) +2. browser-skill **extension** loaded in Chromium and connected (popup shows green) +3. Any `bsk` command auto-starts background services as needed; use `bsk doctor` if anything fails + +## Mandatory workflow + +Every automation task **must** follow this lifecycle. Do **not** rely on idle timeouts (default session idle is 5 minutes). + +``` +1. bsk session start → capture the 4-letter session id printed on stdout +2. … every tool command … → always pass --session +3. bsk session stop → REQUIRED when done (even on error paths) +``` + +Optional: `bsk session start --browser ` when multiple browsers are connected (`bsk browsers` / error output lists them). + +Emergency cleanup: `bsk session stop --all` or the Agent Window overlay **Stop all**. + +## Core interaction loop + +Write operations only affect tabs in the **Agent Window** (or tabs you **borrowed** into it). + +``` +bsk navigate --session +bsk snapshot --session → aria tree with @e1, @e2, … refs +bsk click @e3 --session → or bsk fill, bsk select, bsk press +bsk snapshot --session → again after navigation / DOM change +``` + +**Refs invalidate after navigation** — always re-snapshot before clicking, filling, or selecting on a new page. + +Prefer `@eN` refs from the latest snapshot over raw CSS selectors. Use `--ref` / `--selector` when ambiguous (`bsk click --help`). + +## Observation priority + +Start with `bsk snapshot` to understand page structure, text, controls, and element refs. Only escalate when the latest snapshot cannot answer the question: + +1. `bsk snapshot` — default for page understanding and interaction planning +2. `bsk get-html` — when hidden DOM, metadata, or markup details are required +3. `bsk screenshot` — when visual layout, canvas/image content, or styling cannot be inferred from the snapshot. Use `--ref @eN` (from the latest snapshot) to crop to one element; omit `--ref` for the full visible tab. + +Do **not** call `bsk get-html` or `bsk screenshot` first just to inspect a page. + +## Sandbox rules + +| Rule | Detail | +|------|--------| +| Agent Window | `bsk tab create`, `bsk navigate`, `bsk click`, etc. work on agent tabs by default | +| User tabs | Read-only until borrowed: `bsk tab list --session --scope user` then `bsk tab borrow --session ` | +| Return borrowed tabs | Call `bsk tab return --session ` when finished; unreturned tabs are **auto-returned** on `bsk session stop` | +| Writes off-agent | Commands that mutate the page fail if the tab is not in the Agent Window — borrow or create a tab first | + +## Global flags + +| Flag | Purpose | +|------|---------| +| `--json` | Machine-readable JSON on stdout (errors too) | +| `--quiet` | Suppress informational stderr | +| `-v` / `-vv` | More verbose logging | + +Command-specific flags (timeouts, `--tab-id`, `--wait-until`, …): **`bsk --help`** + +## CLI command reference (one line each) + +Details and flags: **`bsk --help`** + +### Diagnostics + +| Command | Summary | +|---------|---------| +| `bsk status` | Connection health, connected browsers, active sessions | +| `bsk doctor` | Deep diagnostics and repair hints | +| `bsk browsers` | List connected browser instances (ids, labels, versions) | + +### Session + +| Command | Summary | +|---------|---------| +| `bsk session start` | Open Agent Window; prints **4-letter session id** | +| `bsk session stop ` | End session, close Agent Window, auto-return borrowed tabs | +| `bsk session stop --all` | Stop every active session | +| `bsk session list` | List active sessions | + +### Tabs (require `--session `) + +| Command | Summary | +|---------|---------| +| `bsk tab list` | List tabs (`--scope user\|agent\|all`, default `all`) | +| `bsk tab create` | New tab in Agent Window (`--url`, `--no-active`, `--index`) | +| `bsk tab close ` | Close an agent tab | +| `bsk tab select ` | Focus an agent tab | +| `bsk tab borrow ` | Move a user tab into the Agent Window | +| `bsk tab return ` | Return a borrowed tab to its original window | + +### Observation (require `--session` unless noted) + +| Command | Summary | +|---------|---------| +| `bsk snapshot` | First-choice page understanding: accessibility tree with `@eN` element refs | +| `bsk get-html` | Raw HTML dump after snapshot is insufficient (high token cost) | +| `bsk screenshot` | PNG capture after snapshot is insufficient: full visible tab, or `--ref @eN` to crop to one element (`--out` path optional) | + +### Navigation + +| Command | Summary | +|---------|---------| +| `bsk navigate ` | Go to URL in agent tab (`--wait-until`, `--timeout`) | +| `bsk navigate-back` | History back one step | +| `bsk navigate-forward` | History forward one step | +| `bsk reload` | Reload current tab (`--hard` bypass cache) | + +(`bsk navigate back` / `bsk navigate forward` are equivalent subcommands.) + +### Interaction + +| Command | Summary | +|---------|---------| +| `bsk click ` | Click element (`--button`, `--click-count`, `--modifiers`) | +| `bsk fill --value ` | Clear and type into input | +| `bsk select --value ` | Set `