← Commit history
skills/demo/SKILL.mddeleted−80@@ -1,80 +0,0 @@-name: demo-description: Run a WATCHABLE, narrated live demo of the Adom browser extension driving the user's real Chrome. The two rules — caption EVERY action, and bring the window to the FRONT for every action — so the user never misses what's happening.--# Demoing the Adom Browser Extension--A demo only lands if the user can *see* it happen on their screen. Two non-negotiable rules:--1. **Caption EVERY action.** Before (or as) each action, put up a caption saying what's happening. No- silent steps — if you do something, narrate it. Use AD's fullscreen overlay as the spine and the- in-page caption for the page-level label.-2. **Bring the window to the FRONT for every action.** The user must be looking at the right window.- `nbrowser_focus` alone does NOT raise a window on Windows (OS foreground-lock) — you MUST also call- AD's `desktop_bring_to_front`.--Always pass `--target AdomLapper` (the laptop) — with the winvm on the relay, no-target errors-`ambiguous_target`.--## Helpers (paste at the top of any demo script)-```bash-T="--target AdomLapper"-# fullscreen, unmissable, top-level overlay (AD) — the spine of the narration.-# position MUST be "bottom" — "top" covers the address bar + Chrome's "debugging" warning banner.-adcap(){ adom-desktop $T desktop_caption "{\"text\":\"$1\",\"id\":\"demo\",\"size\":\"large\",\"position\":\"bottom\",\"duration\":${2:-8000}}" >/dev/null 2>&1; }-# in-page caption: $3 = subtitle (default, calm bottom) | alert (red pulsing top)-cap(){ adom-desktop $T nbrowser_caption "{\"tabId\":$1,\"text\":\"$2\",\"style\":\"${3:-subtitle}\",\"durationMs\":${4:-7000}}" >/dev/null 2>&1; }-# raise the WINDOW to the foreground (Win32) — by page-title substring-front(){ adom-desktop $T desktop_bring_to_front "{\"titleContains\":\"$1\",\"state\":\"restore\"}" >/dev/null 2>&1; }-# activate the right TAB inside its window-foc(){ adom-desktop $T nbrowser_focus "{\"tabId\":$1}" >/dev/null 2>&1; }-tid(){ python3 -c "import sys,json;print(json.loads(json.load(sys.stdin)['output'])['tabId'])"; }-```--## The per-step pattern (do this for EVERY action)-```bash-adcap "STEP N — <what's about to happen>" # fullscreen narration (can't be missed)-foc $TID # activate the tab-front "<distinctive page title>" # RAISE the window so the user sees it-cap $TID "<same label>" alert # in-page caption (alert=red pulse for key moments)-sleep 3 # let the user read + look-<do the action: type / click / navigate / open_tab / ...>-sleep 3 # let the result land on screen-```-Pace it slow — 3–5s per step. A demo that races by is a demo the user misses.--## Caption style guide-- **`adcap` (AD fullscreen)** — the spine: one per step, big, top, replaces by `id:"demo"`. The user- cannot miss it. **Dismiss at the end** with `desktop_caption {"action":"hide","id":"demo"}` (it also- auto-expires, but clean up anyway).-- **`cap` alert (red pulse)** — for headline/important steps (the "wow" moments, e.g. reading the real- signed-in account).-- **`cap` subtitle** — for calmer narration / showing results (e.g. "Scraped 41 links, 6 headings").--## Reliable "wow" beats to include-- **Multi-tab:** open 2–3 tabs, raising + captioning each.-- **isTrusted typing:** `nbrowser_type` into a visible search box (`input.landing-search-input` on the- wiki) — the user watches text appear.-- **Scraping:** `nbrowser_eval` to pull `document.querySelectorAll('a').length` + headings, then caption- the result.-- **🔑 Real-session proof** (the thesis): open `https://www.google.com`, eval- `document.querySelector('a[aria-label*=Account i]')?.getAttribute('aria-label')` → it reads the user's- actual signed-in account (e.g. `Google Account: … ([email protected])`). No sandboxed automation could do- that — caption it as `alert`.--## Cleanup (always, at the end)-```bash-adom-desktop $T desktop_caption '{"action":"hide","id":"demo"}' >/dev/null 2>&1-adom-desktop $T nbrowser_close_window '{"sessionId":"demo"}' >/dev/null 2>&1 # close the demo window-```--## Run it in the background + tell the user to watch-A full demo has long `sleep`s (~50s) — launch it as a background task and, in the SAME message, tell the-user **"👀 watch your screen now"** so they're looking before windows start popping. Report the captured-results (tab titles, scraped counts, the signed-in account) when it finishes.--## Notes-- Transient relay timeouts on `screenshot`/`eval` happen (worse with winvm on the relay) — retry.-- Don't trust `d['output']` one-liner parses — verbs succeed even when the parse prints None/errors;- re-check raw JSON. (See `skills/driving-the-extension/SKILL.md`.)