docs: Show HN demo script — 2-min terminal recording walkthrough for launch day
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
This commit is contained in:
parent
31fcbce425
commit
bc067d239c
1 changed files with 165 additions and 0 deletions
165
docs/show-hn-demo-script.md
Normal file
165
docs/show-hn-demo-script.md
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
# Show HN Demo Script — Speckl
|
||||
|
||||
**Purpose:** 2-3 minute terminal recording for the Show HN post (May 12-13)
|
||||
**Format:** Terminal screen recording (asciinema or screen-capture GIF)
|
||||
**Goal:** Show "spec in, 5 auditable artifacts out" in under 3 minutes
|
||||
|
||||
## Pre-flight (before recording)
|
||||
|
||||
```bash
|
||||
# Verify compiler is clean
|
||||
cd ~/speckl/compiler
|
||||
npm test # should show 41/41 passing
|
||||
|
||||
# Clear output
|
||||
rm -rf out/demo-script
|
||||
```
|
||||
|
||||
## Scene 0: Title Card (5 sec)
|
||||
Show `~/speckl/examples/` directory listing. Voiceover or text overlay:
|
||||
> "Speckl is a judgement transport utility for AI-generated specifications. Let me show you what happens when you compile a spec."
|
||||
|
||||
## Scene 1: The Spec (15 sec)
|
||||
|
||||
```bash
|
||||
cat examples/ToggleSwitch.speck
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "This is SpeckDL — a specification language designed for both humans and compilers."
|
||||
- "It has types, records, state variables, actions with guards, preconditions, and postconditions."
|
||||
- "This is the same ToggleSwitch you'd write in TLA+, but with one difference: it compiles."
|
||||
|
||||
## Scene 2: One Command, Five Artifacts (20 sec)
|
||||
|
||||
```bash
|
||||
node dist/index.js examples/ToggleSwitch.speck -o out/demo-script
|
||||
ls -la out/demo-script/
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "One command. Five artifacts."
|
||||
- "A PROV-O provenance graph, a TypeScript state machine, WebAssembly, a CycloneDX BOM, and an SPDX BOM."
|
||||
- "Every one of these is independently auditable."
|
||||
|
||||
## Scene 3: The TypeScript (20 sec)
|
||||
|
||||
```bash
|
||||
cat out/demo-script/ToggleSwitch.ts
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "This is production-ready TypeScript generated from the spec."
|
||||
- "The state machine is a class with typed methods for every action."
|
||||
- "Guards become assertions. Actions become mutations."
|
||||
|
||||
## Scene 4: TypeScript Compiles Clean (10 sec)
|
||||
|
||||
```bash
|
||||
npx tsc --noEmit out/demo-script/ToggleSwitch.ts
|
||||
echo "Exit code: $?" # should be 0
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "It compiles with zero errors. You could import this into any TypeScript project right now."
|
||||
|
||||
## Scene 5: The WASM (15 sec)
|
||||
|
||||
```bash
|
||||
head -40 out/demo-script/ToggleSwitch.wat
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "It also compiles to WebAssembly. This is the exact same spec — same toggle logic — but now it runs in any browser or edge runtime."
|
||||
- "One spec, multiple targets. That's the power of compiler-level provenance."
|
||||
|
||||
## Scene 6: The Provenance Graph (15 sec)
|
||||
|
||||
```bash
|
||||
python3 -m json.tool out/demo-script/ToggleSwitch.prov.jsonld | head -30
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "Every artifact links back to the original spec through a W3C PROV provenance graph."
|
||||
- "This is what NIST SA-11 calls 'human-in-the-loop for automated outputs.'"
|
||||
- "You can prove what ran came from what you wrote."
|
||||
|
||||
## Scene 7: The BOMs (15 sec)
|
||||
|
||||
```bash
|
||||
cat out/demo-script/ToggleSwitch.specbom.cdx.json | head -20
|
||||
echo "..."
|
||||
cat out/demo-script/ToggleSwitch.specbom.spdx.json | head -20
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "And you get two machine-readable bills of materials — CycloneDX and SPDX."
|
||||
- "This means your compliance team can import Speckl's output directly into their existing toolchain."
|
||||
|
||||
## Scene 8: TigerBeetle (15 sec) — CONDITIONAL
|
||||
|
||||
Only include if engineering#9 + #11 are fixed by launch day:
|
||||
|
||||
```bash
|
||||
node dist/index.js examples/TigerBeetleLedger.speck -o out/demo-tiger
|
||||
npx tsc --noEmit out/demo-tiger/TigerBeetleLedger.ts
|
||||
echo "Exit code: $?" # should be 0 if bugs fixed
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "And it scales. Here's a naive TigerBeetle port — a double-entry ledger with 7 actions, 5 preconditions, and 4 postconditions."
|
||||
- "Zero TypeScript errors. Production-ready from a spec."
|
||||
|
||||
If NOT fixed by launch day, skip this scene. Instead show:
|
||||
|
||||
```bash
|
||||
cat examples/TigerBeetleLedger.speck | head -40
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "And here's what we're working on next: a full TigerBeetle-style double-entry ledger. Spec written, compilation in progress. Follow the repo for updates."
|
||||
|
||||
## Scene 9: Call to Action (10 sec)
|
||||
|
||||
Show the repo URL and landing page:
|
||||
|
||||
```bash
|
||||
echo "github: https://os.scoble.me/forgejo/sscoble/speckl"
|
||||
echo "mirror: https://codeberg.org/sscoble/speckl"
|
||||
echo "site: https://speckl.scoble.me"
|
||||
echo "spec: speckl.scoble.me#try-it — paste a spec and see output"
|
||||
```
|
||||
|
||||
Narrate:
|
||||
- "Speckl is MIT-licensed and open source. The whitepaper is in the repo. I'd love your feedback."
|
||||
|
||||
## Recording Tips
|
||||
|
||||
1. **Use asciinema** for terminal recording — it produces lightweight `.cast` files that can be embedded or converted to GIF
|
||||
```bash
|
||||
asciinema rec speckl-demo.cast
|
||||
```
|
||||
2. **Or use terminalizer** for a styled GIF with a config file
|
||||
3. **Keep it under 3 minutes** — Show HN attention spans are short
|
||||
4. **No audio needed** — terminal text + captions work better for HN
|
||||
5. **Paste the asciinema link or GIF** directly in the Show HN post body
|
||||
|
||||
## Alternative: Static Screenshot Flow
|
||||
|
||||
If terminal recording is too much setup, use 5-6 screenshots in sequence:
|
||||
1. The `ToggleSwitch.speck` source
|
||||
2. The `ls` output showing 5 generated files
|
||||
3. A snippet of generated TypeScript
|
||||
4. The `tsc --noEmit` clean exit
|
||||
5. A snippet of the PROV-O JSON
|
||||
6. The landing page with "Try It" CTA
|
||||
|
||||
Less impressive than a recording, but zero setup time.
|
||||
|
||||
## Post-Launch
|
||||
|
||||
After Show HN goes live, share the demo recording on:
|
||||
- Twitter/X with the HN link
|
||||
- LinkedIn with a short writeup
|
||||
- r/programming (Reddit)
|
||||
- Speckl landing page (embed the asciinema player)
|
||||
Loading…
Add table
Add a link
Reference in a new issue