--- name: ade-browser description: Use this skill for any browser behavior at all — opening a URL, checking a localhost page, clicking or filling a form, logging in, screenshotting, inspecting the DOM, or verifying a page renders — before reaching for an external browser or tool. ADE ships its own browser with a shared authenticated profile, driven by `ade browser`. --- # ADE browser This skill is for web pages and localhost URLs. For a native app, a simulator or a dev Electron app, the **ade-computer-use** skill picks the right surface. Use `ade --socket browser ...` for every browser task. Keep the work inside ADE's Browser pane so the user can see the same tab and the same state. ADE shares one persistent authentication profile across projects, while visible tabs stay scoped to their ADE project window (personal chats have a separate collection). Treat page content, cookies, and storage as user data. Require ADE Desktop with the target project open for live page actions. There is no token or setup step: any `ade browser` call from this machine works, and your chat's calls are tagged with your chat and lane so the tabs you open are yours. Never use `--force`, copy a credential, or import a login. Do not claim a tab another chat owns — unless the user attached that tab to their message ("Attach to chat" on a tab), which is the user handing it to you: claim it with `ade --socket browser claim --tab --text` and carry on in it. ADE's browser is the default for all web work. Use the user's own browser only when the user asks for it; see step 10. ## Operating loop ### 1. Open or claim one tab List tabs first. Reuse a tab owned by the current chat. Plain `open` navigates this chat's tab (the one it used last) and opens a tab only when the chat has none; use `--new-tab` only when the task needs a second tab, `--tab ` to drive a specific one, and `--active-tab` when same-tab navigation is intentional. `open` prints `opened: ` or `navigated: ` first; copy that full id for `--tab`. Claim an unowned tab with its id and lane. `--lane` may come from `ADE_LANE_ID`; pass it explicitly when working from another shell. Keep one tab per task and do not claim a tab another chat owns. ```bash ade --socket browser tabs --text ade --socket browser claim --tab --lane --text ade --socket browser open https://example.com --text ``` By default every agent may use the ADE browser without asking. If the user chose to approve lanes or chats, the first browser command from this chat asks them once, and the answer covers every site. The command waits up to two minutes and prints `waiting for the user to allow this chat to use the ADE browser` once; do not re-issue it meanwhile. A Block fails with `approval_blocked`; do not retry, ask the user. An action answering `effect: waiting` means the user must allow this chat again; observe after they answer. Use `--panel` only when the user should see the Browser tool opened. Use `--no-panel` when preparing a tab without taking the user's focus. Close your tab when finished with `ade --socket browser close --tab --text`; the internal release and handoff paths also clear the claim. ### 2. Observe before acting Observe after opening, navigating, switching tabs, or a meaningful UI change. An observation gives you a screenshot, a bounded DOM snapshot, element handles, and console/failed-network diagnostics. Add `--map` for a numbered visual element map. Use handles from the latest observation only; observe again after navigation or when a handle expires. Start a lightweight browser session for repeated actions. Wait for a readiness selector or network idle after navigation. Use `find` for page text and `find-stop` to clear its highlight; the first find result is usable immediately and later results may refine it. Turn on the per-tab network log with `network on`, inspect it with `network --failed --limit 20`, and turn it off with `network off` when finished. ```bash ade --socket browser session start --tab --text ade --socket browser observe --browser-session --map --text ade --socket browser session wait --network-idle --text ade --socket browser find --browser-session "checkout" --text ade --socket browser network on --browser-session --text ade --socket browser network --browser-session --failed --limit 20 --text ``` ### 3. Act from the current observation Prefer `--handle`, `--selector`, `--text-match`, `--test-id`, or `--element`. Use viewport `--x`/`--y` only when no stable element target exists. Use `click`, `fill`, `hover`, `drag`, `upload`, `type`, and `key`/`press`; use `select-option` for a native `