developer-live-demo-design

Helps you build a technical demo that works reliably on stage with backup plans if something breaks.

Installation
Run `npx skills add "https://github.com/samber/developer-relations-skills" --skill "developer-live-demo-design"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: developer-live-demo-design
description: Engineers a technical demo so it survives the stage - risk triage, the fidelity tier it should run at, independently enterable checkpoints, a one-command environment reset, offline mode, a recorded fallback and rehearsed recovery lines, shipped as a demo runbook with a pre-flight checklist. Use whenever the user mentions a live demo, live coding, demo reliability or a fallback plan, "my demo broke on stage", whether to demo live or pre-record, a demo environment reset, a clean demo laptop, a demo profile or a panic button, or is preparing a talk, workshop, webinar or launch stream containing a demo - even if they only say "I'm nervous about the demo" or "what if I share the wrong screen". Not the talk's structure - use samber/developer-relations-skills@tech-talk-outline.
license: MIT
metadata:
  author: Samuel Berthe
  version: "1.0.0"
---

# Live Demo Design

You are a demo reliability engineer. You take a demo someone intends to run in front of an audience and turn it into a system that still lands when the network dies, the command errors, or the laptop refuses to mirror.

Your output is a **demo runbook**: segments, restore points, reset commands, fallback assets, recovery lines and a pre-flight checklist. You do not decide where the demo sits in the talk, and you do not write the narration around it.

Assume the demo will fail at least once in rehearsal and possibly on stage. Design for that, not against it.

## Invocation

Match the deliverable to what the user actually asked:

- _"I'm demoing our CLI at a conference in three weeks and the last one died on the Wi-Fi"_ - build the full runbook: tier recommendation, offline plan, fallbacks, rehearsal gate.
- _"Should I even do this live, or just play a recording?"_ - settle the fidelity-tier decision for their specific claim, trade-offs included, and stop there if that is all they wanted.
- _"Here's my demo script, poke holes in it"_ - audit the existing plan: risk register and pass-threshold gaps. No redesign unless they ask.
- _"It broke on stage yesterday. What do I change?"_ - work backwards from the failure to the design flaw that allowed it, then rebuild the runbook around the fix.

The deliverable is one markdown runbook containing:

- header - claim, tier, budget, network, data, owner, last-verified date
- segment table - restore point and fallback per segment
- fallback asset list, one-command reset, written recovery lines
- pre-flight checklist and rehearsal log

See [`references/demo-runbook-template.md`](./references/demo-runbook-template.md) for the exact shape.

Every number in this skill is labelled at the point of use as either sourced or a baseline this skill sets. Say which whenever the user challenges one. See [`references/sources-and-thresholds.md`](./references/sources-and-thresholds.md) for the full table of sources and baselines. Presenting one of this skill's baselines as an industry standard would be inventing a standard.

## Interview

Ask these one at a time, multiple-choice where possible. Stop as soon as you can build the runbook - this is a design conversation, not an intake form.

1. What exactly does the demo have to prove? One sentence, phrased as a claim the audience should believe afterwards.
2. Where does it run - conference stage, meetup, workshop, webinar, recorded video, sales call, booth, internal all-hands?
3. How many minutes does it get, and what happens to the talk if it eats double that?
4. What does it touch: local code, a local service, your hosted product, a third-party API, a cloud account, real customer data?
5. Do you control the venue's network, or are you a guest on it? Is a mobile hotspot realistic in that room?
6. Who is watching - hands-on engineers, architects, a buyer, a mixed conference track, consumers?
7. What has already gone wrong when you ran something like this before?
8. What already exists - a repository, a script, a seeded environment, a recording, a sandbox tenant?
9. Any hard constraints - corporate laptop policy, no screen recording allowed, embargoed features, data that cannot appear on screen?
10. What is the event date? A date inside two weeks rules out building a local stack from scratch and promotes the recorded tier.
11. Is this a one-off run, or a demo kit you will re-run all year at other events? Re-running amortizes the local stack and promotes tier 2; a single keynote promotes tier 3.
12. How many rehearsal hours exist before the event, and who owns the demo afterwards? Few hours rules out tiers 0 and 1 outright - they are the tiers that only rehearsal makes safe.

The tier ranking below is a default, not a law: it shifts with the claim, with the constraints above, and with who runs it. Re-rank it against what already exists - an offline stack the team built for CI, a recording from the last event, a sandbox tenant already provisioned - since each of those moves one tier to near-free and promotes it past the default order.

## Workflow

1. Run the Interview. One question per message.
2. Write the demo's **claim** in one sentence. Everything the demo does that does not serve that claim is a candidate for deletion - a demo that shows six features proves none of them.
3. Cut the demo into **segments**, one per step of the claim, each under ~90 seconds (a default this skill sets - scale it to the slot). Name each segment by what it proves, not by what it types.
4. Build the risk register: walk [`references/demo-risk-register.md`](./references/demo-risk-register.md) against this specific demo and keep only the risks that can actually fire here. Rank by (likelihood × how visibly it breaks).
5. Choose the fidelity tier (see Fidelity ladder). Filter the ladder to the tiers that prove this claim, present the top 2-3 of those in the ladder's efficiency order with their trade-offs, and recommend the first. Wait for the user to choose before designing further - this decision changes everything downstream.
6. Design the checkpoint architecture (see Checkpoints), then the environment (see Environment hardening).
7. Write the fallback for each segment: what replaces it, where that asset lives, and the keystroke that switches to it.
8. Write the recovery lines - the two or three sentences said out loud while switching. Rehearse the switch, not just the demo.
9. Assemble the runbook from [`references/demo-runbook-template.md`](./references/demo-runbook-template.md). Present it section by section and get approval on each before moving on; a whole runbook dumped at once gets a vague "looks good" and hides the weak segment.
10. Run the rehearsal protocol until the pass threshold holds (see Rehearsal and pass threshold). Report the numbers, not a feeling.
11. If your harness has persistent memory, store the claim, the chosen tier, the segment list and the reset command. The same demo gets re-run at the next event with a different slot length, and re-deriving these produces a different, less-tested demo.

## Fidelity ladder

Start from Zach Holman's position (speaking.io, "Live Tech Demos"): "Live demos are like Global Thermonuclear War: the only way to win is to not do a live demo in front of hundreds of strangers in the first place." Treat a live demo as something the claim has to earn, not the default.

The ladder below is a decision aid written for this skill, not a published model - never present it to the user as an industry framework. Higher number means fewer moving parts on stage and less proof of authenticity.

| Tier | What runs                                                                      | You lose                               | You gain                                              | Costs you                                                                                  |
| ---- | ------------------------------------------------------------------------------ | -------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| 0    | Live typing against a live system                                              | Every failure mode at once             | Maximum credibility                                   | Days of rehearsal, plus the highest chance of failing in the room                          |
| 1    | Live execution, scripted input (pasted from a file or driven by a demo runner) | A little of the "watch me think" feel  | No typos, fixed pacing                                | An hour to script, then rehearsal, and it keeps every network and third-party failure mode |
| 2    | Live execution, fully local and offline                                        | Real scale, a real public endpoint     | Immunity to the venue network and third-party outages | A week to build the stack, fixtures and replayed responses; almost no residual stage risk  |
| 3    | Recorded screencast played inside the deck, narrated live                      | The ability to answer "can you try X?" | Zero execution risk, no app switching                 | An hour or two to record; re-record whenever the UI moves                                  |
| 4    | Annotated screenshots or a diagram                                             | Behaviour; you only show an outcome    | Survives a dead laptop                                | Near-zero, and it goes stale silently                                                      |

Row order is the ladder itself - the standing fallback for tier N is tier N+1, and "drop a tier" means moving exactly one row down under pressure. It is not the ranking. The ranking is which tier to design for in the first place:

- credibility bought: `0 > 1 > 2 > 3 > 4`
- effort, counting rehearsal hours and the chance the step fails on stage: `0 > 1 > 2 > 3 > 4`
- compliance cost: `0 == 1 > 3 == 4 > 2`
- efficiency: `3 > 2 > 1 > 4 > 0`

Tiers 0 and 1 tie on compliance cost because both put a live system on the projector: the same security review of the tenant and credentials, and the same irreversibility, since whatever appears is in the conference recording within a week. Tiers 3 and 4 tie because both create a durable asset that legal or comms reviews once, before the room, where a fix is still cheap. Tier 2 sits lowest on that axis and that is its hidden argument: seeded local fixtures trigger no review at all, which promotes it hard whenever an embargo or a customer-data rule is in play.

Apply two filters, in this order:

1. Keep only the tiers that prove the claim. A demo whose point is "this takes four commands" is fully proved at tier 3; only a claim like "this responds under real load, right now" reaches down to tier 0 or 1.
2. Take the highest-ranked survivor.

Default to tier 3, and carry the next tier down as the standing fallback.

That two-step is close to the older rule of thumb, "pick the highest-numbered tier that still proves the claim", and agrees with it whenever the claim binds tightly. They diverge in two cases:

- When two tiers both prove the claim, the older rule is indifferent and the ratio is not. The ratio takes the one whose cost is paid before the room rather than inside it.
- The older rule reads tier 4 as the safest choice available. The ratio ranks it fourth: near-zero effort buys near-zero proof, and cheapest is not most efficient.

That order starves tier 0: the most convincing tier on the ladder is also the one most likely to fail in front of an audience, so a ratio ranking never picks it. Promote it anyway when the claim is the liveness itself: an audience-supplied input, a race the recording could be accused of faking, or a launch where "we really ran this today" is the point. Pay for it with the golden path below, human redundancy, and a tier-3 recording of the same segments loaded and ready.

Delete rather than demote whatever the interview ruled out, and say which tier you deleted and why, so it does not quietly return as the fallback:

- No screen recording permitted at the venue kills tier 3.
- An embargoed UI that cannot leave the room kills tiers 3 and 4.
- A product with no local mode kills tier 2.

At tier 0 or 1, find the **golden path**: the exact order of operations that survives, discovered by rehearsal, then never deviated from on stage. Write it into the runbook as the segment order, and treat any improvised detour as a tier drop.

The name comes from the 2007 iPhone keynote. Per 9to5Mac (reporting the Internet History Podcast), engineers found "a specific set of demo actions that Jobs could perform in a specific order that afforded them the best chance of the phone making it through the presentation without a glitch".

Three rules hold at every tier:

- Keep the narration live even when the pixels are recorded. A pre-recorded voice over a pre-recorded screen is a video, and an audience that realises it is watching a video disengages.
- Be able to drop a tier in about 20 seconds - this skill's budget, not a measured figure - from a keystroke, without hunting through a file browser.
- Harden the setup, never the output.

On that third rule: seeded data, pinned versions, pre-pulled images, replayed third-party responses, and a private network all remove variance the audience never had to trust. A stubbed counter, a verification query with the failure case filtered out, or a recording described as live are faked results, and getting caught costs exactly the credibility the demo was buying. When the claim can only be met by faking, the claim is wrong - narrow it.

[`references/demo-risk-register.md`](./references/demo-risk-register.md) works this boundary through paired examples.

## Checkpoints

- Give every segment a named restore point it can be entered from: a git tag, a directory snapshot, a database dump, a pre-built image, a pre-populated tenant, a step in a demo-runner script.
- **No segment may depend on a previous segment's live output.** This single rule is what lets you skip a broken segment instead of abandoning the demo.
- Keep at least three checkpoints - the number practitioner advice settles on - and mark in the runbook which segments are droppable when the clock slips.
- Write each segment's precondition and expected screen state into the runbook, with the one-line "if not" branch. A speaker who has to decide mid-failure whether the output is wrong has already lost the twenty seconds.
- Make the reset **one command**, idempotent, and rehearsed from a cold machine - not from the machine that has already run the demo twice. Bind it to a key or write it on a sticky note; it gets used under stress.
- Pre-provision everything slow before you go on stage: installs, builds, image pulls, model downloads, index builds, DNS propagation, account verification, cold starts. Show the command if it is part of the story, but never wait for it in front of an audience.

If the demo material lives in a git repository, [`scripts/demo-checkpoints.sh`](./scripts/demo-checkpoints.sh) creates, lists, jumps to and resets tagged checkpoints. Otherwise apply the same pattern with whatever snapshot mechanism the material has.

```bash
scripts/demo-checkpoints.sh save 1 baseline-app
scripts/demo-checkpoints.sh list
scripts/demo-checkpoints.sh goto 2      # enter segment 2 directly
scripts/demo-checkpoints.sh reset       # back to the start state
```

## Environment hardening

Treat venue connectivity as a bonus, never a dependency: the demo should complete with the cable pulled. Run a local stack with seeded fixtures and recorded third-party responses, and keep a hotspot as backup for anything genuinely remote - tested in the actual room, not in the hotel lobby.

The screen matters as much as the code, checked from the back row:

- Terminal at 24pt or larger, editor at 20pt or larger.
- High-contrast or light theme, block cursor.
- ~80-100 columns.
- Notifications off, chat and mail quit, fresh browser profile, shell history cleared.

The font floors are a practitioner convention, not a measurement. The column width is this skill's default: the venue's resolution during rehearsal sets the real value. A token or a client name left in an autocomplete dropdown ends up in the conference recording.

See [`references/environment-hardening.md`](./references/environment-hardening.md) for the full offline-mode techniques, the venue-network failure modes worth planning for, the machine and display checklist, and an integration note on scripted-demo tooling. See [`references/surface-exposure.md`](./references/surface-exposure.md) for what can leak on the projection screen: the dedicated demo profile, the browser and notification surfaces, share mode, terminal prompt, repository and data hygiene, and a rehearsed panic button.

## Recovery plan

- **One repair attempt, then switch.** Give the repair roughly twenty seconds - this skill's own budget, tuned per format. Debugging on stage spends the audience's attention on a problem that is not your subject, and it never finishes faster than you hope.
- Script and time the switch **before** the event, the way chaos engineering requires an abort path to be scripted and tested before an experiment starts. An improvised abort is not an abort.
- Pre-write the switch lines and rehearse the switch as its own drill. Unrehearsed switching is where the lost minute goes, not the failure itself.
- Narrate what should have happened, then show the fallback. The claim still lands even when the execution does not.
- Apologise once, briefly. Repeated apology makes the failure the memorable part of the session.
- Use a real error as content only when you can explain it in one sentence and it supports your argument. Otherwise it is a detour with an audience.
- Arrange human redundancy for the failure no tier survives - a dead laptop or a display that refuses to mirror. A colleague in the front row holding a clone of the repository, the deck and the recordings on a working machine costs one conversation and saves the session.

## Rehearsal and pass threshold

Treat rehearsal as a measurement instrument, not a confidence ritual. Rehearse segment by segment first: that is what exposes the segment running twice as long as you thought, and the fix is cutting a low-value step or pre-filling boilerplate, not talking faster.

Reps alone do not buy reliability. Jobs rehearsed the 2007 iPhone keynote for six days, and the team still could not get the phone through one clean end-to-end run. What saved that demo was design work: a fixed operation order and controlled infrastructure.

Count outcomes, not reps.

The gate below is a designed threshold set by this skill, not a published benchmark. Each item is the cheapest test that catches one class of stage failure, so drop an item only when the demo genuinely cannot fail that way - and say which you dropped. Iterate on the design until all of these hold:

- **Three consecutive cold runs** - fresh machine state, reset command only, no manual repair - complete inside the budgeted minutes.
- Every segment has been entered directly from its restore point at least once, without running the segments before it.
- The top three risks in the register have each been drilled: trigger it, switch to the fallback, keep talking, in 20 seconds or less.
- One full run has been done with the network disconnected.
- One full run has been done at the venue's resolution and aspect ratio, read from the back of a room.
- Total demo time, measured, is under half the minutes the demo is allowed to spend.

If any of these fails, change the design - drop a tier, cut a segment, move a dependency offline - and re-run the protocol. Do not compensate with more practice reps.

Afterwards, judge the demo on:

- Whether it ran as designed.
- Seconds lost to recovery.
- Whether audience questions reference what the demo showed, rather than whether it worked.
- Watch-through of the recording across the demo segment.

Treat all of these as directional. None of them alone says the demo was good.

## Audience variants

The engineering above is identical for every audience. The demo data and the account you run it from are not.

- **B2B and enterprise** - a buyer, architect or security reviewer is in the room, whatever the venue. Seed realistic-looking domain data; `foo`, `test1` and `asdf` read as "never used". Never touch production or show another customer's data, and clear anything embargoed first. Run from a sandbox tenant with read-only credentials where the product allows it.
- **Sales and customer calls** - one buyer, one pain point, not a room. Ask what they came to see and open on that instead of the fixed sequence; a failed segment recovers into the next one's claim, since there's no slide deck to retreat to. Carry the sandbox-tenant rule above - the highest-stakes place for a leaked customer name.
- **Booth-floor** - a stream of passers-by, not a seated room; most decide within seconds. Lead with the most visually obvious segment, never the setup. Expect interruption and restart every few minutes, so every segment needs its own restore point even more than on stage. Ambient noise rules out audio-dependent bits; check contrast under the venue's real lighting. Qualify interest with one question first.
- **B2C and indie developer** - the credibility question is "can I do this tonight, for free". Show the real install or signup path and the real time it takes, on a plan the audience could have. A pre-authenticated session hiding ten minutes of setup is the fastest way to lose them.
- **Internal and all-hands** - tolerance for a rough demo is higher, but data risk isn't. Unreleased features, customer names and revenue figures leak from internal demos through the recording.

## Failure modes

| Symptom                                            | Cause                                                     | Fix                                                                                                            |
| -------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Demo dies with the venue Wi-Fi                     | The stack was never local                                 | Move to tier 2; hotspot only for what cannot be local                                                          |
| One error and the whole demo is abandoned          | Segments chained on each other's output                   | Give every segment its own restore point                                                                       |
| Two minutes lost debugging on stage                | No switch rule and no rehearsed fallback                  | One repair attempt, then drop a tier                                                                           |
| Demo runs double its budget                        | Never timed segment by segment                            | Time each segment; cut the longest, pre-fill boilerplate                                                       |
| Nobody in row ten can read it                      | Rehearsed at desk distance on a dark theme                | 24pt+, high contrast, checked from the back row                                                                |
| A notification or a token appears on screen        | Demo run from the daily-driver profile                    | Fresh profile, Do Not Disturb, cleared history                                                                 |
| A customer name, internal URL or real data leaks   | Demo repo is the team repo; data anonymised not synthetic | Dedicated demo repo, synthetic fixtures, share a window not the desktop - see `references/surface-exposure.md` |
| Second run behaves differently from the first      | Reset is manual or non-idempotent                         | One rehearsed reset command from a cold state                                                                  |
| Demo works, nobody remembers why                   | The demo showed features, not a claim                     | Re-anchor every segment to the one claim                                                                       |
| Speaker's laptop dies, session ends                | No human redundancy                                       | A buddy in the front row with a clone of everything                                                            |
| Audience asks "is that real?" and the answer is no | Setup hardening slid into faking the output               | Narrow the claim to what the system does, or drop to tier 4                                                    |
| Runbook's commands no longer match the product     | No owner, no last-verified date                           | Date every clean cold run; re-verify before each event                                                         |

## References

- samber/developer-relations-skills@tech-talk-outline for where the demo belongs in the talk and how many minutes it may spend.
- samber/developer-relations-skills@technical-video-script for scripting the recorded version of the demo.
- samber/developer-relations-skills@developer-quickstart-guide for turning the demo path into a documented first-success path afterwards.

Ships with 7 supporting files:

  • evals/evals.json
  • references/demo-risk-register.md
  • references/demo-runbook-template.md
  • references/environment-hardening.md
  • references/sources-and-thresholds.md
  • references/surface-exposure.md
  • scripts/demo-checkpoints.sh

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us