VHS terminal recording best practices from Charmbracelet (formerly charmbracelet-vhs)...
Comprehensive best practices guide for VHS terminal recordings, maintained by Charmbracelet. Contains 47 rules across 8 categories, prioritized by impact to guide creation of professional, portable, and optimized terminal demos.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Configuration Structure | CRITICAL | config- |
| 2 | Dependency Management | CRITICAL | deps- |
| 3 | Command Syntax | HIGH | cmd- |
| 4 | Timing & Synchronization | HIGH | timing- |
| 5 | Output Optimization | MEDIUM-HIGH | output- |
| 6 | Visual Quality | MEDIUM | visual- |
| 7 | CI/Automation | MEDIUM | ci- |
| 8 | Advanced Patterns | LOW | advanced- |
config-settings-order - Place all settings before commandsconfig-output-first - Declare output at file startconfig-shell-explicit - Explicitly set shell typeconfig-typing-speed-global - Set global TypingSpeed earlyconfig-dimensions-explicit - Set explicit terminal dimensionsconfig-comments-document - Use comments to document tape structuredeps-require-early - Use Require for dependency validationdeps-require-order - Place Require before settingsdeps-require-all - Require all external commandsdeps-system-requirements - Verify system dependenciescmd-type-syntax - Use correct Type command syntaxcmd-enter-explicit - Always follow Type with Entercmd-key-repeat - Use key repeat countscmd-ctrl-combinations - Use Ctrl combinations for terminal controlcmd-hide-show - Use Hide/Show for sensitive operationscmd-env-variables - Use Env for environment variablescmd-screenshot - Use Screenshot for static capturescmd-multiline-type - Handle multiline commands properlytiming-sleep-after-enter - Add Sleep after commands for outputtiming-wait-pattern - Use Wait for dynamic command completiontiming-type-speed-override - Override TypingSpeed for emphasistiming-sleep-units - Use explicit time unitstiming-final-sleep - End recordings with final Sleeptiming-natural-pauses - Add natural pauses between actionstiming-wait-timeout - Set appropriate Wait timeoutstiming-playback-speed - Use PlaybackSpeed for final adjustmentsoutput-format-selection - Choose output format based on use caseoutput-framerate - Optimize framerate for file sizeoutput-dimensions-optimize - Right-size terminal dimensionsoutput-loop-offset - Use LoopOffset for seamless loopsoutput-multiple-formats - Generate multiple output formatsoutput-relative-paths - Use relative paths for portabilityvisual-font-readable - Choose readable font settingsvisual-theme-selection - Select appropriate themevisual-window-decoration - Add window decorations for polishvisual-spacing - Adjust letter and line spacingvisual-padding-margin - Use padding and margins effectivelyvisual-cursor-visibility - Ensure cursor visibilityci-github-action - Use official VHS GitHub Actionci-auto-commit - Auto-commit generated assetsci-golden-files - Use golden files for integration testingci-matrix-builds - Generate platform-specific demosci-caching - Cache VHS dependencies in CIadvanced-source-include - Use Source for reusable tape componentsadvanced-clipboard - Use Copy and Paste for complex inputadvanced-recording-live - Record live sessions then editadvanced-server-mode - Use server mode for remote accessRead individual reference files for detailed explanations and code examples:
| File | Description |
|---|---|
| AGENTS.md | Complete compiled guide with all rules |
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |