skill
Demo authoring skillpack
Public Made by Adomby adom
How Adom bridges give a guided, narrated, recorded demo on a user's desktop: real content, an instant remote, captions and TTS, windows forward once and sized into slots, every beat verified, motion that stays on the content, first-run hardening, recording with audio.
← Commit history
Publish 1.0.1
3 files changed
+80−22
package.json+1−1@@ -1,6 +1,6 @@ { "name": "adom/demo-authoring-skillpack",- "version": "1.0.0",+ "version": "1.0.1", "description": "Author a guided, narrated, recorded demo tour for an Adom bridge or dashboard: content, remote, captions and narration, windows, verification, motion, first-run boxes, recording, the true user flow. Measured on the KiCad bridge tour.", "type": "skill", "discovery_triggers": [
page.json+50@@ -23,6 +23,56 @@ } ], "hero": {+ "type": "image", "path": "docs/hero.png"+ },+ "name": "adom/demo-authoring-skillpack",+ "version": "1.0.1",+ "description": "Author a guided, narrated, recorded demo tour for an Adom bridge or dashboard: content, remote, captions and narration, windows, verification, motion, first-run boxes, recording, the true user flow. Measured on the KiCad bridge tour.",+ "discovery_triggers": [+ "build a demo",+ "demo tour",+ "guided tour",+ "record the demo",+ "demo remote",+ "demo panel",+ "demo captions",+ "demo narration",+ "demo motion",+ "verify the demo",+ "play the demo",+ "fusion demo tour",+ "dashboard demo",+ "demo authoring"+ ],+ "files": [+ "SKILL.md",+ "skills/demo-content/SKILL.md",+ "skills/demo-remote/SKILL.md",+ "skills/demo-captions-narration/SKILL.md",+ "skills/demo-windows/SKILL.md",+ "skills/demo-verification/SKILL.md",+ "skills/demo-motion/SKILL.md",+ "skills/demo-first-run/SKILL.md",+ "skills/demo-recording/SKILL.md",+ "skills/demo-true-user-flow/SKILL.md",+ "skills/demo-fusion-mapping/SKILL.md",+ "README.md",+ "package.json",+ "install.sh",+ "uninstall.sh",+ "page.json",+ "docs/hero.png"+ ],+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ },+ "slug": "demo-authoring-skillpack",+ "dependencies": {},+ "org": "adom",+ "author": {+ "name": "John Lauer",+ "email": "[email protected]" } }
skills/demo-recording/SKILL.md+29−21@@ -1,14 +1,16 @@ --- name: demo-recording description: >-- Record a bridge demo as a whole-desktop video with system audio and get it to the user: which- recorder serves which verb today (pup serves desktop_record_* until ab core takes it), a 20- second survival test, the system-mute check, watching the recorder during the tour, pulling the- clip, ffmpeg trimming and sizing, the 30 MB chat limit, and attaching the full file to a wiki- issue for a tappable link. Read before recording a tour. Trigger words: record the demo, record- a video of the demo, desktop recording with audio, desktop_record_start, recorder HUD, recording- died, pull the recording, transcode, ffmpeg, video too big to send, 30 MB limit, attach video to- wiki, record_window_start.+ Record a bridge demo as a whole-desktop video with system audio and get it to the user: ab's+ native recorder (2.1.35+: desktop_record_start records one monitor plus the system audio mix to+ MP4, no browser), the pup screen-share recorder as fallback, the routing pitfall while ab still+ forwards desktop_record_* to pup, a 20 second survival test, the system-mute check, watching the+ recorder during the tour, pulling the clip, ffmpeg trimming and sizing, the 30 MB chat limit,+ and attaching the full file to a wiki issue for a tappable link. Read before recording a tour.+ Trigger words: record the demo, record a video of the demo, desktop recording with audio,+ desktop_record_start, native recorder, pup_screen_record_start, recording died, pull the+ recording, transcode, ffmpeg, video too big to send, 30 MB limit, attach video to wiki,+ record_window_start. --- Parent skill: **demo-authoring-skillpack**@@ -17,28 +19,34 @@ Parent skill: **demo-authoring-skillpack** ## Which recorder -From ab 2.1.35 (adom-bridge#143, shipped 2026-09-05) `desktop_record_start/stop/status/list` is NATIVE-ab core: one monitor via Windows Graphics Capture plus the SYSTEM AUDIO mix via WASAPI loopback, muxed-to an H.264/AAC MP4 under %TEMP%\adom-bridge-recordings on the desktop. No browser, no picker, no HUD-process; consent is a persistent caption at the top of the screen for the whole take. The per-window-recorder is `desktop_record_window_start/stop/status` (WGC, background-capturable, no audio). Chrome's-screen-share recorder (picker consent, VP9 WebM) moved to the puppeteer bridge as `pup_screen_record_*`-and is a different tool. On a box with ab older than 2.1.35 the desktop_record_* names are still served-by pup and die when pup cannot spawn (adom-bridge#142); check `adom-bridge targets` for the version.-Kyle's **demo-recording** and **video-post** skills cover script, captions and post-production; this-skill is the capture itself.+- **ab 2.1.35+ native (preferred)**: `desktop_record_start {monitor:"primary"|index, fps, audio:true, maxDurationMs, reason}`+ records one monitor with Windows Graphics Capture plus the SYSTEM AUDIO mix with WASAPI loopback to an+ H.264/AAC MP4 under %TEMP%\adom-bridge-recordings on the desktop. No browser, no picker, no HUD; consent is a+ persistent caption at the top of the screen. Start returns `{recordingId, path, encoder, hardwareEncoder,+ audio, audioNote}`; `audioNote` explains an automatically disabled track (no output device, unsupported mix).+ `desktop_record_stop {recordingId}` returns the file with bytes, frames and audioFrames; `desktop_record_status`+ lists takes (`autoStopped:true` = hit maxDurationMs, still call stop); `desktop_record_list` lists files.+ `desktop_recorder_open/close` are retired. Per-window: `desktop_record_window_start/stop/status` (no audio).+- **pup screen-share (fallback)**: `pup_screen_record_start/stop/status/list` + `pup_recorder_open/close`, Chrome+ getDisplayMedia to VP9/Opus WebM through a HUD window; needs the puppeteer bridge alive and Chrome for Testing+ installed. On pup older than 2.0.400 these were also reachable under the `desktop_record_*` names.+- **Routing pitfall (measured 2026-09-05, adom-bridge#144)**: ab 2.1.36 still forwarded `desktop_record_*` to the+ puppeteer bridge after pup dropped the prefix, answering "Unknown command ... puppeteer bridge appears stale".+ Test with `desktop_record_status {}` first; if you see that error, record with `pup_screen_record_*` and note it.+- Kyle's **demo-recording** and **video-post** skills cover script, captions and post-production; this skill is+ the capture itself. ## Before the take -1. `desktop_record_status` must answer. On ab older than 2.1.35 that also needs `pup_readiness` ready (a timeout means pup is down).+1. `desktop_record_status {}` must answer with a recordings list. "Unknown command" means the routing pitfall above; a timeout on the pup path means pup is down (`pup_readiness`). 2. **Survival test**: start a take, wait 20 s, stop, list. You want a file with a duration. On one box a take started fine and vanished without a stop; a 110 s idle test proved the recorder itself was fine and the tour's own restart of the app had killed it. 3. **System mute check**: screenshot the tray and read the speaker icon, or record 5 s while a line plays and measure with `ffmpeg -af volumedetect`. A muted box records silence (peak -29 dB). See **demo-captions-narration**.-4. Start with `confirmDesktopNotTabRecording:true`, `monitor:"primary"`, `fps:30`, `audio:true`,- `maxDurationMs` above the tour length, and a reason the HUD shows.+4. Start with `monitor:"primary"`, `fps:30`, `audio:true`, `maxDurationMs` above the tour length, and a reason+ the consent caption shows (the pup path additionally needs `confirmDesktopNotTabRecording:true`). ## During the take