Charmbracelet VHS Best Practices
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.
When to Apply
Reference these guidelines when:
- Writing new VHS tape files
- Creating terminal demos for documentation
- Setting up CI/CD for automated GIF generation
- Optimizing recording file size and quality
- Troubleshooting tape file issues
- Reviewing tape files for best practices
Rule Categories by Priority
| 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- |
Quick Reference
1. Configuration Structure (CRITICAL)
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 structure
2. Dependency Management (CRITICAL)
deps-require-early- Use Require for dependency validationdeps-require-order- Place Require before settingsdeps-require-all- Require all external commandsdeps-system-requirements- Verify system dependencies
3. Command Syntax (HIGH)
cmd-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 properly
4. Timing & Synchronization (HIGH)
timing-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 adjustments
5. Output Optimization (MEDIUM-HIGH)
output-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 portability
6. Visual Quality (MEDIUM)
visual-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 visibility
7. CI/Automation (MEDIUM)
ci-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 CI
8. Advanced Patterns (LOW)
advanced-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 access
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
Reference Files
| 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 |