name: fusion-demo description: > Run a FIRST-TIME-USER demo of the Fusion 360 bridge - the guided tour Hydrogen Desktop's installer fires when someone new wants to see what this thing does. Covers the one verb (fusion_demo), the staged loop, and the two rules that make or break it: FINISH the Autodesk sign-in (never leave a new user parked on the sign-in page) by driving the user's NATIVE browser via ABE/nbrowser_* (already signed into Autodesk) instead of pup (anonymous), and SET UP APS cloud search rather than just mentioning it, then prove it with a live sample search. Then show real work in order: electronics PROJECT -> SCHEMATIC -> 2D BOARD -> 3D BOARD. Trigger words - fusion demo, demo the bridge, show me fusion, first time user demo, hd installer demo, demo verb, guided tour, showcase fusion, new user onboarding demo, fusion_demo.

Demoing the Fusion bridge to a brand-new user

Why this exists

HD's installer ran a "demo" that opened Fusion and then sat on the Autodesk sign-in page doing nothing (John, 2026-07-20). A first-time user watched an app open and stall. That is the single worst first impression this bridge can make, and this skill exists to make it impossible.

A demo is not "launch the app." A demo finishes the blockers and shows real work.

The one verb

adom-desktop fusion_demo '{}'                       # start / resume the tour
adom-desktop fusion_demo '{"query":"BQ25792"}'      # demo a specific design
adom-desktop fusion_demo '{"stage":"skip_aps"}'     # user declined cloud-search setup

It is staged and resumable. Every call advances as far as it safely can and returns:

Field Use it for
stage where you are: not_installed, signin, aps_setup, open_design, done, ...
done keep calling fusion_demo until this is true
narrate say this to the user, verbatim-ish. It is written for a newcomer, not an engineer
screenshots [{label,path}] - SHOW these; labels are project, schematic, board_2d, board_3d
steps what it actually did, for your own logging
_hint the exact next action, including the nbrowser_* calls for the browser leg

Loop: call it, do what _hint says, narrate, call it again. Do not improvise a different order.

Rule 1: FINISH the sign-in, in the user's NATIVE browser

fusion_demo does not just tell you to do this - at stage:"signin" it already opened the Autodesk sign-in in the user's own browser, in the BACKGROUND, so their current work is never interrupted. The response tells you where it landed:

Field Meaning
signinOpened true if the background tab is up
signinWhere the EXACT place, e.g. "Chrome - John Personal ([email protected])" - say this verbatim
signinProfileChoices every profile (describe/email/displayName/active/live/extensionInstalled)
signinProfile / signinSession the ABE profile + sessionId (fusion-signin) to drive it

Pick the profile by EVIDENCE, never by "whichever is active"

fusion_demo probes every live profile with nbrowser_login_state {profile, url:"https://accounts.autodesk.com/"} and picks the one that actually holds an Autodesk session (auth cookies), reporting why in signinProfileReason and the per-profile autodesk / autodeskConfidence / autodeskCookies in signinProfileChoices.

This exists because the first version just grabbed the active profile and landed in John's personal Chrome with no analysis at all - on another machine that would have been simply wrong. A user's Autodesk seat can live in any profile, and it is frequently NOT the one they happen to be using. Ask the browser; do not assume.

  • Relay the reason to the user ("I used X because it's the profile actually signed into Autodesk").
  • If signinProfileAmbiguous is true (nothing signed in anywhere, or several are), ASK which account their Autodesk login belongs to rather than picking for them.
  • Profiles that are asleep or lack the extension come back unprobed - say so instead of silently skipping them.

Never say "it's in your browser" or even "your Chrome". A power user runs several profiles - personal, work, media - and a vague pointer sends them hunting through windows. Always name the browser AND the identity from signinWhere. If signinProfileChoices has more than one, say which one you used and offer to switch to another. If the profile they want shows extensionInstalled:false, it needs the one-time extension install in THAT specific profile (extensions are per-profile).

Always tell the user where it is waiting, then offer all three paths:

  1. They finish it themselves, whenever they like - it is sitting there, backgrounded.
  2. You bring it to the front for them (foreground that nb window) if they would rather do it now.
  3. You drive it for them - ASK first (AskUserQuestion), then click through "Continue with Google/Apple/Microsoft" on their warm session.

Never silently sit and wait, and never foreground it uninvited.

Then:

  • Use ABE (nbrowser_*), never pup. pup is an anonymous browser, so Autodesk demands a full login with password + 2FA. The user's real Chrome/Edge profile is typically already signed into Autodesk, so the same flow is one click. nbrowser_profiles lists their real profiles; ABE exposes these verbs even before the browser extension is installed.
  • Click Fusion's Sign In in the BACKGROUND (desktop_find_control + desktop_ui_click), never a coordinate click, never steal focus.
  • That fires the OAuth at the default browser. If that is the signed-in profile it completes itself; if it lands logged-out, re-open the auth URL with nbrowser_open_window {profile:"chrome:<their account>"}.
  • The handoff back is the Autodesk Identity Manager overlay: tick "Always allow", click "Open".
  • Never type their password or 2FA. If a secret is demanded, fusion_notify_owner toasts their machine so they type it. Sign-in codes expire in ~2 minutes; if it expires, click Sign In again for a fresh one.

Full detail: the fusion-autodesk-signin skill.

Rule 2: SET UP APS, don't just name-drop it

When stage:"aps_setup", actually configure it (fusion_aps_status -> fusion_aps_set_client_id if unconfigured -> fusion_aps_signin driven in the native browser -> poll until tokenLive:true). Then the demo runs a live sample search so the user watches their whole Autodesk hub return results in about two seconds.

If they decline, call fusion_demo {stage:"skip_aps"} and still TELL them what it is: server-indexed search across the team hub in seconds. The old in-app search took 30+ minutes and crashed Fusion, so it is disabled - APS is the only cloud-search path. See fusion-aps-search.

Rule 3: the tour order is fixed

electronics PROJECT -> SCHEMATIC -> 2D BOARD -> 3D BOARD. That sequence tells the story of how a board is actually made, and each step is screenshotted so you can show it. Always open the PROJECT (EcadDesignProductType), never a .brd/.sch/3D child - a child opens an isolated, often empty view and the demo looks broken.

Landing it

Close by offering next steps in the user's own words, not verb names: "export the Gerbers", "make me a SOIC-8 with my part number etched on it", "check this against JLCPCB rules", "find my other boards". The full catalog is fusion_describe.

If Fusion isn't installed: offer it, and say what they actually get

Do not just report "not installed". OFFER, and be concrete AND honest about the tiers:

  • Free 30-day trial: fully featured. Every step of this demo works - electronics design, schematic, 2D board, 3D board, Gerber/BOM/CPL exports, APS cloud search. This is the one to start on; there is no reason to hedge about it.
  • After the trial: Fusion for Personal Use is free for non-commercial work. Still genuinely useful for hobby PCBs, but it LIMITS electronics (roughly 2 layers, 2 schematic sheets, a modest board area) and some export options. Say that plainly rather than letting them discover it.
  • Even an expired / read-only install still OPENS and VIEWS designs (it only blocks save/export/modify), so nothing they make gets locked away.

Then fusion_install_fusion (no shell approval needed, streams the installer, 10-30 min), poll fusion_readiness until installed:true, and call fusion_demo again to pick the tour back up. Full flow: fusion-onboarding.

If something else is missing

  • Nothing to open -> ask which board, or fusion_aps_search and open the first hit.
  • Never end a demo on an error screen. If a stage fails, say what you tried, and offer the next thing.