用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Tencent/BrowserSkill --skill browser-skill命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | browser-skill |
| description | Browser automation through six injected domain tools. |
Drive the user's real Chromium browser through the six structured domain tools provided by this
plugin. The browser keeps the user's existing logins and cookies while isolating automation in an
Agent Window. Every call must include the tool's action field; other fields depend on that action.
Loading this skill reveals the browser tools for the rest of the conversation. All browser work must use the injected tools directly. Do not invoke another process to control the browser. Direct tool calls preserve session ownership, the live observation window, cancellation, attachments, and cleanup.
The six tools are:
browser_session: start, stop, or list plugin-owned sessions.browser_page: navigate, back, forward, reload, or wait for navigation.browser_inspect: observe, snapshot, html, screenshot, console, or network.browser_interact: click, hover, fill, select, or press.browser_tabs: list, create, select, close, borrow, or return tabs.browser_assist: resize the Agent Window, emulate a device, or request help from the user.Every browser task follows this lifecycle:
browser_session with action: "start" and retain its returned sessionId.session explicitly when more than one exists.browser_session with action: "stop" when the goal is reached or an error ends the task.
Treat cleanup like a finally path unless the user explicitly asks to keep the session open.Conceptual sequence:
browser_session({ action: "start", url: "https://example.com" })
browser_inspect({ action: "observe", session: sessionId })
browser_interact({ action: "click", session: sessionId, target: "@e4" })
browser_inspect({ action: "observe", session: sessionId })
browser_session({ action: "stop", session: sessionId })
The plugin owns only sessions it starts. Never guess or reuse a session id from another program.
When session is omitted, most actions use the current owned session, but explicit ids are safer.
Browser work is bounded. Define an observable success condition, take the shortest path, and stop as soon as success is visible. Do not refresh or click after success. If an action fails twice without progress, pause instead of brute-forcing. If state is ambiguous, make at most one fresh observation and then ask the user.
Use browser_inspect with action: "observe" as the primary semantic page view. It returns roles,
states, text, and @eN refs. Use action: "snapshot" when a static accessibility tree is more useful.
Prefer a fresh ref over a raw CSS selector for interactions.
Refs invalidate after navigation and may become stale after large DOM changes. Observe again after navigation or a meaningful DOM update before using another ref. If an observation identifies a hover-triggered surface, hover the trigger, observe again, then interact with the revealed control.
Use browser_interact as follows:
action: "click": requires target; optionally accepts button and clickCount.action: "hover": requires target; optionally accepts modifiers, settleMs, and timeoutMs.action: "fill": requires target and value; noClear appends instead of replacing.action: "select": requires target and a non-empty values array. Values are option value
attributes, not necessarily the visible labels.action: "press": requires key; optionally focus target first and set holdMs.Use browser_page with these actions:
navigate requires url and optionally accepts waitUntil and timeoutMs.back and forward move one history entry and optionally accept lifecycle wait fields.reload refreshes the current tab; set hard: true only when bypassing cache is necessary.wait waits for an expected navigation after an interaction that did not already wait.Avoid speculative waits when no navigation is expected. After any page change, discard old refs and observe again.
Escalate page reading only as needed:
browser_inspect with action: "observe" for normal understanding and refs.action: "snapshot" for a stricter static tree.action: "html" for exact markup that semantic views cannot provide; keep maxBytes bounded and
use only a fresh ref when scoping a subtree.action: "screenshot" for layout, styling, canvas, or genuinely visual evidence. A fresh ref
crops to an element; omit it for the visible tab.Do not start with raw HTML or a screenshot merely to discover ordinary controls.
Use browser_tabs with these actions:
list returns visible tabs; scope: "user" finds a user tab before borrowing.create makes an Agent Window tab and optionally accepts url, active, and index.select focuses an Agent Window tab and requires a returned tabId.close closes an Agent Window tab and requires a returned tabId.borrow moves a user tab into the Agent Window and requires a listed user tabId.return restores a borrowed tab and requires that borrowed tabId.Return borrowed tabs as soon as the immediate task finishes. Stopping the session is only fallback cleanup. Never invent a tab id.
Use browser_assist with action: "request-help" for login, captcha, OTP, payment confirmation,
consent, or another human-only step. prompt is required. Optional targets highlight fresh refs or
selectors. completionCriteria can detect explicit stable success through URL, selector, or text
conditions. After the user continues or criteria complete, observe again before reasoning about the
new state.
Use action: "resize" with width and height to resize the outer Agent Window. Use
action: "emulate" with a device preset or explicit width and height; mobile: true also requires
dimensions. Use off: true alone to clear emulation. Emulation is per tab.
Use browser_inspect with action: "console" for buffered logs and exceptions, and
action: "network" for response and failure metadata. Both accept tabId, since, limit, and
maxTextChars; continue with the returned sequence cursor rather than rereading the same entries.
Console additionally accepts includeStack.
Arbitrary page script evaluation and interaction recording are intentionally unsupported. Do not invent tool names or route around that limitation.
On a stale ref, observe again and retry once. On an unknown tab, list tabs instead of guessing. On an unknown session, list owned sessions or start one; never try foreign ids. On timeout, decide whether one longer purposeful wait is justified, and never immediately repeat a failed history action without first checking page state.
Before finishing, verify that the observable goal is met or the blocker is clear, borrowed tabs are returned when practical, the owned session is stopped, and no extra page action occurs after success.