Record VHS Demo
SkillFiles & storageLets your agent record and polish terminal walkthrough videos or GIFs of Bruin CLI commands using VHS tape files.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Record VHS Demo skill
About this capability
Create, update, render, and visually verify polished Bruin CLI terminal demos with VHS. Use when recording a terminal walkthrough, adding or editing a .tape file, exporting a demo video or GIF, improving terminal-demo styling or readability, or reproducing a Bruin command sequence for documentation
What this skill tells your AI
The instructions your AI receives, as published by bruin-data/bruin in .agents/skills/record-vhs-demo/SKILL.md and read by ahel’s review.
Create concise, deterministic terminal recordings whose source remains reusable in the repository.
Repository layout
- Store every canonical
.tapefile under<repo>/resources/, using a descriptive kebab-case name. - Store stable demo fixtures under
<repo>/resources/<demo-name>/when the tape needs them. - Store generated videos, GIFs, screenshots, and contact sheets under
<repo>/.context/vhs-demos/unless the user explicitly requests a tracked documentation asset. - Confirm
.context/is ignored withgit check-ignore. If it is not, add.context/to the repository's local.git/info/exclude; do not add generated demo artifacts to the tracked.gitignoremerely for a recording. - Never put real credentials, tokens, personal paths, or production data in a tape or fixture. Use unmistakably fake values.
Workflow
-
Confirm the short story the recording should tell. Show only commands and output that support it.
-
Validate the underlying Bruin behavior outside VHS before recording it.
-
Build the appropriate binary:
- Prefer
make build-no-duckdbandbin/bruin-no-duckdbfor demos that do not need DuckDB. - Use
make buildandbin/bruinwhen the demo needs DuckDB.
- Prefer
-
Create or edit the canonical tape under
resources/. Put any reproducible fixtures beside it under a demo-specific directory. -
Render from the tape's directory with the bundled script:
python3 .agents/skills/record-vhs-demo/scripts/render_demo.py resources/<demo-name>.tape -
Inspect the generated contact sheet with an image-viewing tool. Extract and inspect a full-resolution frame when text color, masking, alignment, or spacing needs closer review.
-
Iterate until the recording has no command failures, accidental secrets, unreadable ANSI colors, clipped lines, excessive dead time, or irrelevant output.
Visual defaults
Start with these settings unless the user asks for a different format:
Set Shell bash
Set FontSize 20
Set Width 1280
Set Height 720
Set Margin 0
Set Padding 28
Set LineHeight 1.15
Set TypingSpeed 30ms
Set Framerate 30
Set CursorBlink false
Set Theme "GitHub Dark"
-
Use a plain dark terminal canvas without a window frame, title bar, or outer margin.
-
Keep internal padding so text does not touch the video edge.
-
Prefer Bash for predictable prompts and hidden setup.
-
Use a leading newline in
PS1to add space between prompt blocks without changing regular output line spacing:export PS1="$(tput setaf 6)\n❯$(tput sgr0) " -
In the hidden setup, run
unset NO_COLOR, setTERM=xterm-256color, and setCLICOLOR=1. The agent environment may otherwise suppress Bruin's ANSI output. -
Do not add
--no-colorto a demo command. -
For a one-asset Bruin demo, make worker coloring deterministic by wrapping the binary with
--workers 1during hidden setup. This avoids a random worker selecting an unreadable ANSI color while keeping the visible command clean. -
Hide setup commands, paths, fixture preparation, aliases/functions, and terminal clearing.
-
Do not show
--help, installation steps, decorative titles, or commentary that delays the feature demonstration unless requested. -
Use
--no-validation,--no-timestamp, or--minimal-logsonly when they remove irrelevant output without hiding the behavior being demonstrated. -
Add short sleeps after meaningful output, not after every command. Keep social clips compact.
Reliable tape setup
- Run tapes from their own directory. Resolve repository files from
git rev-parse --show-toplevel, not fragile multi-level relative aliases. - Use
mktemp -dfor disposable working fixtures. Copy tracked examples into the temporary directory during hidden setup. - Create the
Outputdirectory before rendering. The bundled script does this automatically. - Keep the visible commands representative of what a user would actually type.
Verification bar
Do not call a demo complete until all of the following are true:
vhs validatepasses.- VHS exits successfully and produces a non-empty artifact.
- VHS reports no internal
error:line; some versions can emit a partial video after an EOF error while still exiting with status 0. ffprobereports a valid duration.- The contact sheet has been visually inspected.
- A full-resolution output frame is inspected when color or text readability matters.
- Every command in the recording succeeds.
- Expected values are visible and any credentials are masked.
- Prompt spacing affects prompt blocks only, not ordinary output lines.
- ANSI colors have sufficient contrast on the selected dark theme.
The renderer reports the artifact and QA image paths; include the final artifact path in the handoff.
Signals
- GitHub stars
- 2k
- Forks
- 90
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
record-vhs-demo- Source
- github.com/bruin-data/bruin