Agent SkillsTencent/BrowserSkill › browser-skill

browser-skill

GitHub

通过 bsk CLI 自动化操作用户 Chromium 浏览器,执行页面访问、表单填写、数据抓取及 UI 回归测试等任务。

crates/bsk-cli/skill/SKILL.md Tencent/BrowserSkill

Trigger Scenarios

自动化登录后的浏览器操作 UI 回归测试 网页数据抓取 表单填写与流程操作

Install

npx skills add Tencent/BrowserSkill --skill browser-skill -g -y
More Options

Non-standard path

npx skills add https://github.com/Tencent/BrowserSkill/tree/main/crates/bsk-cli/skill -g -y

Use without installing

npx skills use Tencent/BrowserSkill@browser-skill

指定 Agent (Claude Code)

npx skills add Tencent/BrowserSkill --skill browser-skill -a claude-code -g -y

安装 repo 全部 skill

npx skills add Tencent/BrowserSkill --all -g -y

预览 repo 内 skill

npx skills add Tencent/BrowserSkill --list

SKILL.md

Frontmatter
{
    "name": "browser-skill",
    "description": "Use when the user asks to automate their logged-in Chromium browser: visit\nand read pages, fill forms, scrape data, click through flows, regression-test\na PR's UI, validate a deployed page, or operate a tab they identify. Requires\nthe bsk CLI and browser extension."
}

browser-skill

Drive the user's real Chromium browser through bsk. Automation runs in an isolated Agent Window with the user's existing logins and cookies. User-window tabs remain protected unless they are explicitly borrowed.

Do not use this skill for tasks with no browser, for extension installation, or when the user only wants instructions. Never extract credentials, cookies, tokens, or other secrets from pages.

Required lifecycle

Every browser task owns a bounded session:

1. bsk session start              # retain the printed 4-letter session id
2. bsk ... --session <id>         # pass it to every session-scoped command
3. bsk session stop <id>          # always run on success and error paths

Do not rely on the idle timeout for cleanup. Stop the session as soon as the goal is met unless the user explicitly asks to keep it open. Stopping also returns borrowed tabs.

Any bsk command auto-starts the background services it needs; never manage the daemon by hand. When multiple browsers are connected, use bsk browsers and start with bsk session start --browser <id-or-label>. Add --no-focus to that same start command when the Agent Window does not need to interrupt the user's current work; it is not a flag on other commands. Run bsk doctor when startup or transport problems persist after one retry.

Work toward one observable goal

  • Derive a concrete success condition from the user's request or a supplied trace.
  • Take the shortest purposeful path: observe, act, then make at most one observation to confirm an ambiguous result.
  • Once success is visible, do not click, refresh, navigate, switch tabs, or perform extra checks.
  • If a human-only step appears or two attempts make no progress, request help instead of brute-forcing.

With a trace, follow its semantic target information and values in order, but treat its refs as record-local hints. Stop when its purpose or last meaningful effect is satisfied. A trace guides the task; it does not expand the user's goal or authorize additional actions.

Observe, act, observe

Use this default loop:

bsk navigate <url> --session <id>
bsk observe --session <id>
bsk click|hover|fill|select|press ... --session <id>
bsk observe --session <id>             # after navigation or a meaningful DOM change

Prefer fresh @eN refs over CSS selectors. Navigation invalidates refs; large DOM changes may also make them stale. Observe again before the next interaction.

An observation marks a hover-only surface as @e1 button "Products" [hover first: Shoes | Bags]. The listed items are labels, not usable refs: hover the trigger, observe again, then act on the revealed item's own ref. Do not click the trigger itself unless the user wants the trigger's action. [has-submenu] and [expanded] mark the same kind of trigger without listing what it hides.

bsk observe does not hover the page on its own. Reach for --probe-hover when a control you have good reason to expect is absent and no marker points at a trigger — that combination is what a CSS-only hover menu looks like from here. It hovers a bounded set of likely triggers, so it costs a few seconds and touches the live page; once you know which element hides the menu, bsk hover <ref> is cheaper and more precise.

Escalate page reading only as needed:

  1. bsk observe for normal semantic understanding, text, controls, and refs.
  2. bsk observe --probe-hover once when an expected control is missing and no marker points at a trigger.
  3. bsk snapshot when a stricter static accessibility tree is more useful.
  4. bsk get-html for exact markup or hidden metadata that semantic views cannot provide.
  5. bsk screenshot for layout, styling, canvas, images, or requested visual evidence.

Do not start with raw HTML or screenshots merely to discover ordinary controls. When interaction is needed, obtain a fresh observation before acting on screenshot or HTML findings.

Respect the Agent Window boundary

Normal page writes affect only Agent Window tabs. To operate a user tab, first list it with bsk tab list --scope user --session <id>, then bsk tab borrow <tab-id>. Return it immediately after the relevant step with bsk tab return <tab-id>; never invent a tab id or keep a personal tab borrowed across unrelated work.

Ask the human when needed

Use bsk request-help for login, captcha, OTP, payment confirmation, consent, or another step the user must complete. Give a precise prompt and pass fresh --target refs/selectors when concrete controls can be highlighted. Use completion criteria only when the page has a clear stable success signal.

The result outcome is one of continued, completed, cancelled, timed_out, or disabled (navigated is deprecated — never treat navigation as a completion signal). Resume only after continued or completed. Treat cancelled as rejection, and timed_out or disabled as a blocker rather than a reason to retry. After control returns, run a fresh bsk observe before reasoning about the page or using refs.

Command inventory

This list of names is complete. Never invent a command outside it; read bsk <command...> --help for flags instead of guessing them.

session start|stop|list   browsers   status   doctor   update   logs
navigate   navigate-back   navigate-forward   reload   wait-for-navigation   wait-ms
observe   snapshot   get-html   screenshot   console   network
click   hover   fill   select   press   evaluate
tab list|create|close|select|borrow|return   window resize   emulate
upload   download   request-help   record start|stop

Required flags that are easy to get wrong:

bsk fill <ref> --value <text>      bsk select <ref> --value <option-value>
bsk screenshot --out <path>        bsk emulate --device <preset-id>
bsk upload <ref> --file <path>     bsk download <ref> --out <path>

select matches an option's value attribute, not its visible label. Device preset ids are lowercase and hyphenated, such as iphone-14.

  • console and network provide bounded, read-only debugging evidence.
  • emulate applies viewport, user-agent, and touch overrides to one tab; new tabs do not inherit them. Use --off to restore the real environment.
  • evaluate is a last resort when observe plus normal interactions cannot complete the task. With --json, inspect .ok: a JavaScript exception may still have CLI exit code 0 because the RPC succeeded. Never evaluate credential surfaces to read storage, cookies, or auth data.
  • record captures a user's actions for later replay. Read bsk record start --help before use, and never record banking, SSO, password-manager, or other sensitive pages.

File transfer

upload and download stage files through the daemon; the agent never touches browser-internal paths. Treat upload as disclosure to the website, download as accepting website-controlled bytes.

Upload has two independent mechanisms — choose explicitly, never rely on automatic fallback:

  • Default (input mode): for upload buttons, file-input labels, or "upload from computer" actions. The command clicks the target and intercepts the native file chooser.
  • --mode drop: for reliably identified attachment-receiving areas — an explicit drop zone, chat composer, email editor, or form attachment area. Do not target page whitespace, generic containers, or areas whose attachment ownership is ambiguous.

Decision sequence when uploading:

  1. Try input mode (the default).
  2. If it returns reason=file_input_not_activated with effect_state=none, re-observe. When a reliable attachment target exists, try --mode drop once against that target.
  3. Otherwise fall back to request-help.
  4. Never switch mechanisms or repeat when effect_state is unknown or committed — the browser may already have applied the file.

A successful drop means Chrome dispatched the native file-drop event; it does not prove the site accepted the attachment. Observe the page once after the command.

Download default-refuses to overwrite; pass --overwrite when replacing an existing file is intended. Read bsk upload --help and bsk download --help for all flags and error details.

Recover without wandering

  • Stale ref: observe again and retry the intended action once.
  • Unknown tab or session: list current tabs/sessions; never guess identifiers.
  • Timeout: inspect current page state before deciding whether one longer purposeful wait is useful.
  • Unsupported command: continue with available capabilities; suggest updating only when the missing command is necessary.
  • Unrecoverable failure: report the blocker and stop the session in a finally-style path.

The CLI's current help and error hints are authoritative for flags, parameters, and recovery details.

Version History

  • 945bf15 Current 2026-09-02 23:02

    压缩文档并整合文件传输指南,精简内容同时保持通过率。

  • f060a7c 2026-08-27 10:50

    新增功能:支持导出带有稳定页面状态的Trace v3 bundles。

  • f81a1e7 2026-08-12 23:14

    新增 session start 的 --no-focus 参数以支持后台启动 Agent Window;重构窗口创建接口以兼容大小设置选项。

  • 238a984 2026-08-12 11:14
  • 0f264c5 2026-08-06 10:45

    新增移动端设备模拟功能,支持通过CDP Emulation域设置视口、UA及触摸属性,提供多种预设设备配置并优化了状态合并逻辑。

  • 49378d7 2026-08-05 16:51

    新增Agent窗口尺寸控制功能,支持启动时指定宽高及运行时调整大小。

  • 71255ae 2026-08-02 23:44

    新增BSK_REQUEST_HELP环境变量以禁用帮助请求拦截,优化扩展代码格式并精简文档。

  • 3f09131 2026-07-30 22:01

    新增bsk record功能以捕获语义化用户操作轨迹;添加弹出式启动器和动作记录面板;支持--browser参数指定浏览器实例;默认记录URL设为example.com;修复早期控制返回及生命周期问题。

  • 913a3f8 2026-07-11 16:59

Same Skill Collection

packages/dsh-plugin-browserskill/skill/SKILL.md
skill/SKILL.md

Metadata

Files
0
Version
945bf15
Hash
c9f43e8a
Indexed
2026-07-11 16:59

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-05 20:00
浙ICP备14020137号-1 $お客様$