vhs-demo
Installation
SKILL.md
vhs-demo
Generate a terminal-demo GIF from a Charm VHS tape, rendered headless in Docker. The tape is committed; the GIF is a build artifact regenerated from it.
[!IMPORTANT] The tape is the source of truth. Always edit the
.tapeand re-render. Never hand-edit, re-time, or recompress the GIF — it cannot be reproduced and the next render will overwrite it.
Why Docker
VHS normally wants a real TTY (and on macOS, Homebrew + sometimes a screen recorder). The official ghcr.io/charmbracelet/vhs image renders fully headless, so it works in WSL/root environments with no Homebrew, no TTY, no OBS. Everything below assumes Docker is the only host dependency.
Naming convention (enforce exactly)
- Single demo in the repo → files are
demo.tapeanddemo.gifin.github/assets/. The README references exactly that one.github/assets/demo.gif. - Multiple demos → one descriptive name per demo, and the tape + its GIF always share the base name:
quickstart.tape/quickstart.gif,ci.tape/ci.gif, etc. - The Dockerfile stays generic: always
.github/assets/vhs.Dockerfile— never name it after a demo.