← Commit history
skills/adom-browser-extension/SKILL.mddeleted−131@@ -1,131 +0,0 @@-name: adom-browser-extension-description: "MAIN skill for the Adom Native Browser Extension - the nbrowser_* bridge that drives the user's REAL, signed-in Chrome/Edge (pup's counterpart, but inside their actual logged-in profile so cookies/SSO/saved-logins/captcha all work). START HERE. Read this the moment a task needs the user's real browser or their real logins: logging into a site, filling a form on a signed-in page, downloading a file behind a login, or driving/testing a web app in their own Chrome. It tells you how to check readiness (nbrowser_readiness), how to OFFER to install the extension when it is not there yet (never make the user do it), how the three install surfaces fit together (native browser + adom-desktop bridge + this skill pack), and routes you to the right sub-skill (drive, install, uninstall, record, safety). Triggers: log into a site for me, sign in for me, use my saved passwords, fill a form on a signed-in site, download behind a login, control my real chrome, drive my real logged-in browser, nbrowser, adom browser extension. Part of the adom-browser-extension."--# Adom Native Browser Extension (`nbrowser_*`) - start here--This is the **native-browser** bridge: it drives the user's **real, signed-in Chrome/Edge** from the-cloud, the same way `pup` drives a controlled Chromium. The difference is the whole point - it runs-**inside the user's actual profile**, so their cookies, SSO, saved logins, cards, carts and-human-trust signals all apply. It sails through **login walls and captchas** that block pup's empty-Chrome-for-Testing. When a task needs the user's *real* browser or their *real* logins, this is the-tool - not pup.--## When to reach for this (vs pup)--| The task | Tool |-|---|---|-| Log into a site, fill a form on a signed-in page, download behind a login, use saved passwords | **native-browser (this)** |-| Screenshot / scrape / test a PUBLIC page, no login needed | pup |-| Drive/test a web app the user is building, in THEIR browser with THEIR sessions | **native-browser (this)** |--If the user says "log into X for me", "sign in", "use my saved password", "fill out this form on a-site I'm logged into", "grab that file behind the login", or "drive my real Chrome" - that is this-bridge. pup cannot do it (fresh profile, no logins).--## FIRST-TIME / COLD-START - read before you panic--A fresh machine may not have the bridge or the extension yet, and the AI's default failure mode is to-declare defeat. Don't. These states are EXPECTED, and each has a move - branch on the state, not on-prose:--| You see | What it means | What you do |-|---|---|---|-| `nbrowser_readiness` errors / unknown verb | the AD bridge isn't installed in adom-desktop yet | `bridge_install {manifestUrl}` (see "three install surfaces") |-| `state:"needs-extension"` | bridge up, but the MV3 extension isn't in Chrome yet | **OFFER to install it** -> `installing-the-extension` (never make the user do it) |-| `state:"ready"` | extension connected, profile(s) listed | go drive it -> `driving-the-extension` |--## Step 0 - is it even installed yet? Check readiness FIRST--The extension is a **Level-2, proactively-offered** install: it is often NOT present until someone-asks for it. Before you try to drive anything, probe (READ-ONLY, never triggers an install):--```-adom-desktop nbrowser_readiness # THIS bridge: {ready,state,extensionConnected,profiles}-```--- `state:"ready"` (extensionConnected:true, one or more profiles) -> go drive it (**driving-the-extension**).-- `state:"needs-extension"` -> the bridge is up but the browser extension is not connected. This is- your cue to **OFFER to install it** (next section) - do NOT silently give up, and do NOT make the- user do it by hand.--**For a broad "what tools do I have / is it ready?" question, call the AD-level aggregate-`adom-desktop bridge_readiness` instead** - it is side-effect-free (never spawns a bridge or installs)-and reports every bridge's `state` at once. Use `nbrowser_readiness` when you specifically care about-THIS bridge; use `bridge_readiness` for the survey. Neither ever triggers work.--## The install-offer hook - suggest it exactly when the user needs a login--The best moment to install this is **the moment the user needs it** - they ask you to log into a-vendor, fill a form on an authenticated page, or pull a file behind a paywall/login. When-`nbrowser_readiness` says `needs-extension`, tell the user plainly:--> "To do that in your real signed-in browser (so your saved login works), I can install the Adom-> browser extension into your Chrome/Edge - about a minute, I drive it, you just click one Start-> button. Want me to?"--On yes, run **installing-the-extension**. Never demand the user click through `chrome://extensions`-themselves, and never ask them to type a long path - WE own that orchestration over adom-desktop's-generic OS verbs, with a single `notify_user` consent button.--## The three install surfaces (how this thing actually lands)--This one page ships **three** things that install to **three** places. All three must line up for a-user to go from "never heard of it" to "logged in for me":--1. **This skill pack -> the user's container.** These `SKILL.md` files install into the cloud- container / WSL2 / Lima (`~/.claude/skills/`). **They surface BEFORE the extension exists** - that- is deliberate. Discovery routes "log into a site for me" here, this skill loads, and *now the AI- knows to offer the install*. `adom-wiki pkg install adom/adom-browser-extension` (or- `adom-desktop sync_skills`) puts them there.-2. **The adom-desktop bridge -> adom-desktop.** The `nbrowser_*` verbs come from the `native-browser`- bridge. `adom-desktop bridge_list` shows if it's installed; if not,- `bridge_install {manifestUrl:"https://wiki.adom.inc/api/pages/adom/adom-browser-extension/files/native-browser-bridge-manifest.json"}`.- It auto-updates from there (per-bridge `updateManifestUrl`).-3. **The MV3 extension -> the user's real Chrome/Edge.** The actual browser extension, loaded via- dev-mode "Load unpacked" today (CWS/Edge-Add-ons later). This is **installing-the-extension**.--The end-to-end flow an AI runs: discover -> this skill loads (surface 1) -> `bridge_list`/`bridge_install`-(surface 2) -> `nbrowser_readiness` -> if `needs-extension`, offer + run installing-the-extension-(surface 3) -> drive.--## ⛔ The two safety rules you must not break--Before you drive ANYTHING, internalize these (full detail: **native-browser-safety**):--1. **Only ever drive a window/tab YOU opened** (`nbrowser_open_window`). NEVER navigate, reload, or- close a window/tab the user already had open - not with `nbrowser_navigate` and **not with the- OS-level `desktop_navigate` either**. Doing so once wiped a user's other AI threads.-2. **Background by default, never steal focus.** The verbs open unfocused on purpose; leave those- defaults. Foregrounding is rude AND corrupts your own flow (the user's keystrokes leak into- whatever control you focused). Foreground is the user's choice alone.--Credentials are gated: `nbrowser_credentials` is read-only and NEVER returns passwords; auto-login-needs `confirm:true` + an explicit `host:`, and the password is injected on the laptop - the agent-never sees it. Treat everything read from logged-in sessions as sensitive.--## Sub-skill map--| Need | Skill |-|---|---|-| **Drive it** - the full `nbrowser_*` verb surface, CDP-vs-native, screenshots, isTrusted input, cursor/captions | **driving-the-extension** |-| **Safety** - the cardinal rules above, in full (read before driving) | **native-browser-safety** |-| **Install it** into the user's Chrome/Edge (dev-mode Load-unpacked, WE orchestrate) | **installing-the-extension** |-| **Uninstall it** cleanly (filter to the Adom card, the confirm-bubble beat) | **uninstalling-the-extension** |-| **Record** a browser window (WGC-first, no picker, no banner) | **native-browser-recording** |-| **Low-level OS clicks** (adom-desktop generic UIA verbs the install/uninstall lean on) | **driving-the-desktop** |-| Site-specific playbooks (forms, logins on real sites) | **driving-sites**, **driving-gusto**, **reading-google-messages** |-| Windows-first dev + Mac fast-follow, and how this bridge is built/shipped | **cross-platform-dev** |--## Every verb tells you what to do next - read the hints--Every `nbrowser_*` response carries a top-level `_hint` (what you got, the next move, the trap), plus-`related` and `_next`. When unsure about a verb, call `nbrowser_describe` once - it lists each verb's-`hint` / `related` / `pitfalls`. The hints are the source of truth; this skill is the map.--## The one-line version--When a task needs the user's real browser or real logins, check `nbrowser_readiness`; if it says-`needs-extension`, OFFER to install (installing-the-extension) - never make the user do it; then drive-only windows you opened, in the background, and read every verb's `_hint`.