vhs

Record terminal sessions from .tape scripts and render them as GIFs.

10|1|Updated Mar 12, 2026
One-click install
npx skills add https://github.com/juspay/AI --skill vhs-juspay
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: vhs
Source: https://github.com/juspay/AI/tree/main/.opencode/skills/vhs
Command: npx skills add https://github.com/juspay/AI --skill vhs-juspay

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

VHS records terminal sessions by scripting keystrokes into .tape files and rendering them as GIFs, enabling deterministic demonstrations of TUI interactions. It uses Wait+Screen /regex/ to synchronize with interactive elements instead of fragile fixed Sleep durations, and notes that VHS can only detect text that appears on screen.

Core Features & Use Cases

  • Deterministic terminal demos by scripting keystrokes and rendering to GIFs.
  • Wait+Screen /regex/ synchronization to align with dynamic UI elements.
  • Use cases include tutorials, product walkthroughs, and reproducible demonstrations of terminal-based workflows.

Quick Start

Run VHS to create a tape-based demo and render it as a GIF.

Frequently Asked Questions about vhs

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create deterministic terminal demos for tutorials?

Deterministic terminal demos are created by scripting keystrokes into .tape files and rendering them as GIFs. This ensures reproducible interactions by synchronizing with on-screen text using Wait+Screen /regex/ instead of fixed Sleep durations.

What is the best way to record a TUI interaction as a GIF?

Recording a TUI interaction as a GIF is best done using VHS tooling with .tape scripting. You script the terminal keystrokes and use Wait+Screen /regex/ synchronization to reliably capture dynamic UI elements during the rendering process.

Why does my terminal screencast fail to capture dynamic UI elements?

Terminal screencasts fail to capture dynamic UI elements when using fragile fixed Sleep durations. You can fix this by applying Wait+Screen /regex/ synchronization to align the recording with text that actually appears on screen.

Can VHS detect text that is not currently displayed on the screen?

VHS cannot detect text that is not currently displayed on the screen. It relies strictly on visible terminal output, so Wait+Screen /regex/ synchronization only works for on-screen text during the .tape file recording process.

How do I synchronize terminal recordings with regex instead of sleep timers?

You synchronize terminal recordings by applying Wait+Screen /regex/ commands in your .tape files. This aligns the GIF rendering process with specific on-screen text patterns, replacing fragile Sleep durations for deterministic captures.

Do I need VHS tooling to generate reproducible product walkthrough GIFs?

You need VHS tooling and .tape scripting to generate reproducible product walkthrough GIFs. These tools allow you to script deterministic prompts and interactions, ensuring the terminal demonstrations are reliably reproduced every time.