Creating VHS Tape Files
Quick Reference
When creating a new command, also create a corresponding VHS tape file for documentation GIFs.
| Command Type | Tape File Location | Output GIF |
|---|---|---|
| Top-level | vhs/<command-name>.tape | docs/assets/vhs/<command-name>.gif |
| Subcommand | vhs/<group>-<subcommand>.tape | docs/assets/vhs/<group>-<subcommand>.gif |
Tape File Structure
Basic Template
Source config.tape Output docs/assets/vhs/<command-name>.gif Type "kindplane <command-name>" Sleep 500ms Enter Sleep 2s
With Prerequisites
Commands requiring config file (validate, config-show, etc.):
Source config.tape Output docs/assets/vhs/<command-name>.gif # Ensure config file exists Hide Type "kindplane init --force" Enter Sleep 1s Show # Run the command Type "kindplane <command-name>" Sleep 500ms Enter Sleep 2s
Commands requiring cluster (status, logs, chart commands, etc.):
Source config.tape Output docs/assets/vhs/<command-name>.gif # Note: Requires a running cluster (run 'kindplane up' first) # For demo purposes, assuming cluster exists Type "kindplane <command-name>" Sleep 500ms Enter Sleep 3s
Commands with flags (showing help):
Source config.tape Output docs/assets/vhs/<command-name>.gif # Note: Requires a running cluster (run 'kindplane up' first) # Showing help for demo purposes Type "kindplane <command-name> --help" Sleep 500ms Enter Sleep 2s
Commands that stream output (logs, follow mode):
Source config.tape Output docs/assets/vhs/<command-name>.gif # Note: Requires a running cluster (run 'kindplane up' first) Type "kindplane <command-name> --component crossplane" Sleep 500ms Enter Sleep 2s Ctrl+C
Naming Conventions
Top-Level Commands
- •Command:
kindplane doctor→ File:vhs/doctor.tape - •Command:
kindplane init→ File:vhs/init.tape - •Command:
kindplane status→ File:vhs/status.tape
Subcommands
- •Command:
kindplane chart list→ File:vhs/chart-list.tape - •Command:
kindplane provider add→ File:vhs/provider-add.tape - •Command:
kindplane config show→ File:vhs/config-show.tape
Use kebab-case with hyphens separating group and subcommand names.
Prerequisites Detection
Determine prerequisites based on command behaviour:
| Prerequisite | Commands | Tape Pattern |
|---|---|---|
| None | doctor, cluster-list | Basic template |
| Config file | validate, config-show, config-diff, up | Include init --force setup |
| Running cluster | status, logs, diagnostics, apply, dump, down, chart/, provider/, credentials/* | Add cluster requirement comment |
Sleep Timing Guidelines
| Command Type | Sleep Duration | Reason |
|---|---|---|
| Simple output | Sleep 2s | Quick commands (list, show, validate) |
| Cluster operations | Sleep 3s | Status checks, diagnostics |
| Long operations | Sleep 10s | Cluster creation (up command) |
| Streaming | Sleep 2s then Ctrl+C | Logs, follow modes |
Integration with Command Creation
When creating a new command using the kindplane-commands skill:
- •Create the command file (via kindplane-commands skill)
- •Create the VHS tape file (this skill)
- •Update Taskfile.yaml - Add tape to
vhs:alltask in correct order - •Update documentation - Add GIF reference to command docs
Taskfile Integration
Add the new tape to Taskfile.yaml in the vhs:all task, maintaining dependency order:
vhs:all:
cmds:
# ... existing tapes ...
- vhs vhs/<new-command>.tape # Add in appropriate section
Documentation Integration
Add GIF reference to command documentation:
# kindplane <command-name>  Command description...
Examples
Example 1: Simple Command (doctor)
File: vhs/doctor.tape
Source config.tape Output docs/assets/vhs/doctor.gif Type "kindplane doctor" Sleep 500ms Enter Sleep 3s
Example 2: Command Requiring Config (validate)
File: vhs/validate.tape
Source config.tape Output docs/assets/vhs/validate.gif # Ensure config file exists Hide Type "kindplane init --force" Enter Sleep 1s Show # Validate the configuration Type "kindplane validate" Sleep 500ms Enter Sleep 2s
Example 3: Subcommand (chart-list)
File: vhs/chart-list.tape
Source config.tape Output docs/assets/vhs/chart-list.gif # Note: Requires a running cluster (run 'kindplane up' first) # For demo purposes, assuming cluster exists Type "kindplane chart list" Sleep 500ms Enter Sleep 2s
Checklist
When creating a VHS tape for a new command:
- • Tape file created in
vhs/directory - • Filename follows naming convention (kebab-case)
- • Uses
Source config.tapeat the top - • Output path is
docs/assets/vhs/<name>.gif - • Includes appropriate prerequisites (init setup or cluster comment)
- • Sleep timing matches command duration
- • Added to
Taskfile.yamlvhs:alltask in correct order - • GIF reference added to command documentation
Related Skills
- •kindplane-commands: Create the actual CLI command implementation
- •This skill handles the documentation recording
Generating GIFs
After creating tape files:
# Generate single recording task vhs:single TAPE=<command-name> # Generate all recordings task vhs:all
GIFs will be created in docs/assets/vhs/ and automatically included in documentation builds.