Agent skill

Vhs Demo

by babarot in babarot/gh-infra

A skill your agent uses when running demo recordings, diagnosing recording failures, or regenerating GIFs from existing MP4s.

MITAuto-check passedDevOps & Cloud

Install Vhs Demo

skills CLI
$ npx skills add babarot/gh-infra --skill vhs-demo -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install babarot/gh-infra vhs-demo --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/babarot/gh-infra.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/vhs-demo .claude/skills/vhs-demo && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
vhs-demo
GitHub stars
136
Token cost
~1.2k tokens
SKILL.md length
489 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when running demo recordings, diagnosing recording failures, or regenerating GIFs from existing MP4s.

  • Works in 3 steps: Count existing tapes: ls… → Calculate total: count × per-container… → Compare against Docker Desktop memory…
  • Running demo recordings
  • SKILL.md covers When To Use, Prerequisites, Pipeline and Why MP4 → GIF Instead of…, plus 6 more sections
  • Calls docker, make and go

What it does

Vhs Demo is an agent skill from babarot/gh-infra. Use when running demo recordings, diagnosing recording failures, or regenerating GIFs from existing MP4s. Covers the Docker + VHS + ffmpeg pipeline.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Containers and Video production. It works with Docker and FFmpeg. The repository describes itself as: Declarative GitHub infrastructure management via YAML. The licence is MIT.

When your agent uses it

  • Running demo recordings
  • Diagnosing recording failures
  • Regenerating GIFs from existing MP4s

Example prompts

  • “/vhs-demo”

Requirements

  • Docker

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Count existing tapes: ls docs/tapes/*.tape | wc -l
  2. Calculate total: count × per-container memory
  3. Compare against Docker Desktop memory allocation

What it can do on your machine

Read from SKILL.md and the folder at commit 11bab7d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • docker
    • make
    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Vhs Demo loads about 1.2k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 489 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from babarot/gh-infra at commit 11bab7d, republished under its MIT licence (© babarot). 489 words, ~1,190 tokens.

Download SKILL.mdSave it as .claude/skills/vhs-demo/SKILL.md (or your agent's skills folder).
name
vhs-demo
description
Use when running demo recordings, diagnosing recording failures, or regenerating GIFs from existing MP4s. Covers the Docker + VHS + ffmpeg pipeline.

VHS Demo Recording

Use this skill to run, debug, or regenerate gh-infra demo GIF recordings.

When To Use

  • Running make demo or docs/tapes/vhs.sh directly
  • Diagnosing why a recording failed or produced a 0-byte GIF
  • Regenerating GIFs from existing MP4s without re-recording
  • Understanding the recording pipeline

Prerequisites

  • Docker must be running
  • Go toolchain (for cross-compiling the Linux binary)

Pipeline

text
make demo
  1. go build -o docs/tapes/.gh-infra  (GOOS=linux GOARCH=amd64)
  2. docs/tapes/vhs.sh
     a. docker build → gh-infra-vhs image (VHS + vim)
     b. For each *.tape in parallel:
        docker run --memory=1g --cpus=2 → produces .mp4
     c. For each .mp4 sequentially:
        docker run jrottenberg/ffmpeg:7-alpine → produces .gif
  3. Copy GIFs to docs/public/
  4. Clean up .gh-infra binary

Why MP4 → GIF Instead of Direct GIF

VHS's built-in GIF output is unreliable when multiple containers run in parallel on macOS. The workaround is to output MP4 only from VHS, then convert to GIF via ffmpeg with high-quality settings (lanczos scaling, sierra2_4a dithering, 256 colors).

Key Files

FileRole
docs/tapes/vhs.shOrchestrator: parallel recording + sequential GIF conversion
docs/tapes/Dockerfileghcr.io/charmbracelet/vhs + vim
docs/tapes/*.tapeVHS scenario files
docs/tapes/setup*.shPer-demo setup scripts (mock data, gh wrapper)
docs/tapes/mock-ghGeneric mock for gh CLI
docs/tapes/.gh-infraCross-compiled Linux binary (ephemeral)

Output Locations

  • Raw recordings: docs/tapes/*.mp4 and docs/tapes/*.gif
  • Published assets: docs/public/demo*.gif (copied by Makefile)

Environment Variables

make demo forwards DEMO_ENV variables into Docker via -e flags. Use this to pass environment overrides (e.g. GH_INFRA_OUTPUT) into the recording containers.

Resource Planning

All tapes run in parallel. Each container requests --memory and --cpus (see vhs.sh). The total resource demand is:

total memory = number_of_tapes × per-container memory
total CPUs   = number_of_tapes × per-container CPUs

For example, 6 tapes × --memory=2g --cpus=2 = 12 GB / 12 CPUs.

This is constrained by Docker Desktop's resource allocation, not host RAM. Docker Desktop defaults are often low (e.g. 7.6 GB on a 24 GB machine). If total demand exceeds Docker Desktop's allocation, containers will OOM or produce 0-byte outputs.

Show full SKILL.md (243 more words)Show less
When Adding New Tapes

Adding a tape increases parallel resource demand. Before adding, check:

  1. Count existing tapes: ls docs/tapes/*.tape | wc -l
  2. Calculate total: count × per-container memory
  3. Compare against Docker Desktop memory allocation

If the total exceeds Docker Desktop's limit, you have two options:

  • Increase Docker Desktop memory — Open Docker Desktop → Settings → Resources → Memory. On an M-series Mac with 24+ GB RAM, allocating 16 GB is safe and is the recommended approach since it's a one-time setting.
  • Reduce per-container resources — Lower --memory in vhs.sh. This is a last resort since it may cause recording failures for complex tapes.

For comfortable parallel recording of 6+ tapes:

SettingRecommended
Memory16 GB (minimum: number_of_tapes × 2 GB)
CPUs8+

Troubleshooting

SymptomCauseFix
0-byte GIFMP4 was also 0-byte or missingCheck the tape's setup script and mock data
0-byte MP4VHS crashed or setup script failedRun the single tape manually: docker run --rm -v docs/tapes:/data -w /data gh-infra-vhs <name>.tape
gh-infra: not found in recordingBinary not copied or wrong archVerify GOOS=linux GOARCH=amd64 go build succeeded
Docker OOMContainer hit memory limitCheck Docker Desktop memory allocation (see Resource Planning above)
Multiple tapes fail simultaneouslyDocker Desktop memory too low for parallel countIncrease Docker Desktop memory or reduce tape count
"Docker is not running"Docker daemon not startedStart Docker Desktop or dockerd

Regenerating GIFs Only

To re-convert existing MP4s without re-recording, run the ffmpeg step manually:

bash
docker run --rm -v docs/tapes:/data -w /data jrottenberg/ffmpeg:7-alpine \
  -y -i <name>.mp4 \
  -vf "fps=10,scale=1200:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256[p];[s1][p]paletteuse=dither=sierra2_4a" \
  <name>.gif

© babarot, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/vhs-demo of babarot/gh-infra.

Open the folder on GitHubat commit 11bab7d

Compare with similar skills

Vhs Demo next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Vhs Demo compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vhs Demo this skillbabarot/gh-infra136—~1.2kAutomated safety check: PassMIT
Setup Mulmoclaudereceptron/mulmoclaude371—~1kAutomated safety check: NotesMIT
Classical Poem Silk VideoMr-funny/hbg-classical-poem-silk-video361—~1.6kAutomated safety check: PassMIT
Verifylkmeta/txtify135—~583Automated safety check: PassApache-2.0
Runpoddigitalsamba/claude-code-video-toolkit2.2k—~2.1kAutomated safety check: NotesMIT
Floor Bot Analysisfossasia/eventyay-interpretation1.6k—~1kAutomated safety check: NotesApache-2.0

Similar skills

  • Setup Mulmoclaude

    receptron/mulmoclaude

    Interactively guide MulmoClaude setup following README instructions.

    371 GitHub stars~1k tokensUpdated today
    Media & CreativeAuto-check: notes
  • Classical Poem Silk Video

    Mr-funny/hbg-classical-poem-silk-video

    Turn Chinese classical poems and ci into coherent vertical Chinese-art videos with poem-driven scene grouping, GPT ImageGen stills, Docker-only Gemini I2V, retained model-generated ambience, Gemini…

    361 GitHub stars~1.6k tokensUpdated 2 mo ago
    DevOps & CloudAuto-check passed
  • Verify

    lkmeta/txtify

    Verify a Txtify change end-to-end. An agent skill from lkmeta/txtify.

    135 GitHub stars~583 tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Runpod

    digitalsamba/claude-code-video-toolkit

    Cloud GPU processing via RunPod serverless. An agent skill from digitalsamba/claude-code-video-toolkit.

    2.2k GitHub stars~2.1k tokensUpdated 4 days ago
    Backend & APIsAuto-check: notes
  • Floor Bot Analysis

    fossasia/eventyay-interpretation

    Use this skill for floor bot analysis.

    1.6k GitHub stars~1k tokensUpdated 5 days ago
    Media & CreativeAuto-check: notes
  • GreptimeDB Dev Docker Image

    GreptimeTeam/greptimedb

    Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.

    6.7k GitHub stars~4k tokensUpdated today
    DevOps & CloudAuto-check: notes

More from babarot/gh-infra

  • File Manifest

    babarot/gh-infra

    Complete YAML schema reference for File and FileSet resources.

    136 GitHub stars~793 tokensUpdated today
    Auto-check passed
  • Gh Infra

    babarot/gh-infra

    Overview of gh-infra and command workflow (import, validate, plan, apply).

    136 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Import Into

    babarot/gh-infra

    A skill your agent uses when pulling live GitHub state back into existing gh-infra manifests with gh infra import --into, especially for write/patch/skip decisions, shared file sources…

    136 GitHub stars~746 tokensUpdated today
    Auto-check passed
  • Repository Manifest

    babarot/gh-infra

    Complete YAML schema reference for Repository and RepositorySet resources.

    136 GitHub stars~914 tokensUpdated today
    Auto-check passed
  • Vhs Tape Authoring

    babarot/gh-infra

    A skill your agent uses when creating new VHS demo tapes or editing existing ones.

    136 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • CI CD

    babarot/gh-infra

    CI/CD integration patterns for gh-infra: auto-apply on merge, scheduled drift detection, self-managed vs central-management layouts, and authentication setup for GitHub Actions workflows.

    136 GitHub stars~482 tokensUpdated today
    Auto-check passed

Works with

Questions about Vhs Demo

What does Vhs Demo do?

A skill your agent uses when running demo recordings, diagnosing recording failures, or regenerating GIFs from existing MP4s. Vhs Demo is an agent skill from babarot/gh-infra. Use when running demo recordings, diagnosing recording failures, or regenerating GIFs from existing MP4s.

When should I use Vhs Demo?

Vhs Demo fits situations like: running demo recordings; diagnosing recording failures; regenerating GIFs from existing MP4s.

How do I install Vhs Demo in Claude Code?

Run `npx skills add babarot/gh-infra --skill vhs-demo -a claude-code`. Or copy the skill folder (.claude/skills/vhs-demo in babarot/gh-infra) into .claude/skills/vhs-demo in your project. Claude Code loads it when a task matches its description.

How do I install Vhs Demo in Codex?

Run `npx skills add babarot/gh-infra --skill vhs-demo -a codex`. Or copy the skill folder (.claude/skills/vhs-demo in babarot/gh-infra) into .agents/skills/vhs-demo in your project. Codex loads it when a task matches its description.

Can I use Vhs Demo in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add babarot/gh-infra --skill vhs-demo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vhs-demo, .gemini/skills/vhs-demo, .github/skills/vhs-demo and .opencode/skills/vhs-demo in your project.

What does Vhs Demo need to run?

Going by SKILL.md and its folder, Vhs Demo needs the command-line tools its instructions call (docker, make and go). Our summary lists: Docker.

Does Vhs Demo access the network?

SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Vhs Demo safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Vhs Demo use?

Vhs Demo is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Vhs Demo use?

About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Vhs Demo?

Skills that share tags, products or a category with Vhs Demo: Setup Mulmoclaude (receptron/mulmoclaude, 371 stars), Classical Poem Silk Video (Mr-funny/hbg-classical-poem-silk-video, 361 stars), Verify (lkmeta/txtify, 135 stars) and Runpod (digitalsamba/claude-code-video-toolkit, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vhs Demo?

babarot (a GitHub user) maintains it in babarot/gh-infra, which has 136 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 10, 2026.

Source: babarot/gh-infra on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.