skills/vhs/SKILL.md
Create, edit, debug, or review Charmbracelet VHS terminal demo recordings and .tape files. Use when the task involves terminal GIFs/videos, VHS scripts, demo cassettes, CLI screencasts, reproducible terminal recordings, or converting terminal interactions into renderable tape files.
npx skillsauth add iamkaf/skills vhsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create reproducible terminal recordings with Charmbracelet VHS.
Check the goal, output format, and execution environment.
.gif, .mp4, .webm, screenshots, or a reusable .tape.vhs, ttyd, and ffmpeg are available before planning a render..tape first and rendering second.command -v vhs ttyd ffmpeg || true
vhs --help || true
If dependencies are missing, still write or fix the .tape file and tell the user what is missing to render it.
.tape file.Output, Require, and Set directives at the top.Type, key presses, Sleep, and Wait.vhs path/to/demo.tape.Prefer deterministic tapes over ad hoc recording. Use Wait when output timing depends on command completion. Use Sleep only for deliberate pacing or when no reliable wait condition exists.
Keep tapes readable and predictable.
Output lines.Require lines for commands the tape depends on.Set lines before interaction commands.Source only when splitting a large tape improves reuse.Typical layout:
Output demo.gif
Require glow
Set Shell bash
Set FontSize 32
Set Width 1200
Set Height 700
Set TypingSpeed 80ms
Type "glow README.md"
Enter
Wait /Usage/
Sleep 1s
Use the smallest command set that makes the demo stable.
Type for typed textEnter, Tab, Backspace, arrow keys, and Ctrl+<key> for interactionWait /regex/ or WaitLine /regex/ for command completion or prompt stateSleep for pacing, not synchronizationHide and Show to suppress sensitive or distracting commandsScreenshot for still capturesCopy and Paste when clipboard-style interaction is clearer than long typingIf the UI is noisy or slow, prefer Set TypingSpeed, Hide, and narrower window sizes before adding more sleeps.
When a tape is flaky, check these first.
Set Width, Set Height, padding, or margins.Set TypingSpeed, Set PlaybackSpeed, and targeted Sleep values.Sleep with Wait where possible.Require so failures happen early.Env, or use a sanitized fixture.Set Shell explicitly and prefer controlled demo directories.Prefer fixtures and throwaway working directories.
Output cli-demo.gif
Require mytool
Set Shell bash
Set Width 1100
Set Height 700
Set TypingSpeed 70ms
Type "mytool --help"
Enter
Wait /Commands/
Sleep 1200ms
Type "q"
Output tui.gif
Set Width 1200
Set Height 800
Type "my-tui"
Enter
Wait /Select an option/
Down
Down
Enter
Wait /Completed/
Output frames/
Set Framerate 1
Before finishing, verify the tape and output.
.tape from top to bottom for ordering mistakes.Read these when needed.
vhs manual for the built-in command reference.examples/ from the upstream repository for idiomatic tapes.THEMES.md upstream when the task is mainly about terminal themes.development
Review a git diff, branch, or pull request for newly introduced, high-confidence security vulnerabilities. Use when the user asks for a security review, PR security pass, AppSec triage, exploitability check, or a low-noise audit of changed code, workflows, auth, input handling, secrets, or trust-boundary changes.
testing
Use when implementing a UI from a visual mock and the user wants an imagegen-based compare-and-iterate workflow until the current page closely matches the target screenshot or mock. Covers browser screenshots, explicit side-by-side comparisons, imagegen visual audits, bitmap asset generation, and avoiding stale-reference mistakes.
documentation
Transform boring, flat README files into polished, visually compelling project pages. Use when the user asks to improve, redesign, or make a README more interesting. Covers structure, copy, badges, banner images, and overall presentation. Produces GitHub-flavored Markdown that renders well on GitHub, npm, and similar platforms.
tools
Use when the user asks you to gather requirements, or when the request is vague and needs clarity before acting.