Borrowing it
Nothing to install: this file belongs to babarot/gh-infra. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/babarot/gh-infra/main/.claude/skills/vhs-demo/SKILL.mdgit clone --depth 1 https://github.com/babarot/gh-infraWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/babarot/gh-infra/vhs-demo)<a href="https://agentmods.dev/skills/babarot/gh-infra/vhs-demo"><img src="https://agentmods.dev/badge/skills/babarot/gh-infra/vhs-demo/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/babarot/gh-infra/vhs-demo"><img src="https://agentmods.dev/badge/skills/babarot/gh-infra/vhs-demo.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00035 | $0.01415 |
| Opus 5.5 | $0.00014 | $0.00566 |
| Sonnet 5.5 | $0.00007 | $0.00283 |
| Haiku 4.5 | $0.00003 | $0.00142 |
Grade A, and why
vhs-demo scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 18d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 123 lines — stays where its author put it; the contents beside it link to each section on GitHub.
VHS Demo Recording
Use this skill to run, debug, or regenerate gh-infra demo GIF recordings.
When To Use
- Running
mise run demoordocs/tapes/vhs.shdirectly - 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)
Recording some tapes
mise run demo demo demo-light records only the named tapes (docs/tapes/<name>.tape) and copies only their GIFs; docs/tapes/vhs.sh takes the names the same way. Use it after changing one scene instead of recording all of them. Only demo* tapes are copied to docs/public/; others, such as showcase (16:9, for use outside the docs), stay as docs/tapes/<name>.gif and .mp4. VHS needs an even width and height for the MP4.
Pipeline
mise run demo (scripts/demo.sh)
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 the recorded 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
| File | Role |
|---|---|
docs/tapes/vhs.sh |
Orchestrator: parallel recording + sequential GIF conversion |
docs/tapes/Dockerfile |
ghcr.io/charmbracelet/vhs + vim |
docs/tapes/*.tape |
VHS scenario files |
docs/tapes/setup*.sh |
Per-demo setup scripts (mock data, gh wrapper) |
docs/tapes/mock-gh |
Generic mock for gh CLI |
docs/tapes/.gh-infra |
Cross-compiled Linux binary (ephemeral) |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 18d ago Changed · +4 lines fa0c29a35639
- 2mo ago First seen · 119 lines · 35 tokens per session scan A 5ab1b10c9a7e
vhs-demo is a skill published in the GitHub repository babarot/gh-infra (140 stars, last pushed 3d ago), licensed MIT. It adds 35 tokens to every session and 1,415 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
vhs-demo compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| vhs-demobabarot/gh-infra | Skill | 140 | 3d ago | MIT | A | 35 | Claude Code |
| gh-attachsudosubin/gh-attach | Skill | 45 | 10d ago | MIT | A | 94 | Claude Code, Codex |
| gh-stackgithub/gh-stack | Skill | 1.7k | 3d ago | MIT | A | 80 | Claude Code, Codex |
| pkup-enchantpPrecel/pkup-gen | Skill | 12 | 2mo ago | MIT | A | 59 | Claude Code, Codex |
| pkup-genpPrecel/pkup-gen | Skill | 12 | 2mo ago | MIT | A | 27 | Claude Code, Codex |
| dd-code-generationDataDog/pup | Skill | 1.0k | yesterday | Apache-2.0 | A | 16 | Claude Code |
| write-zot-themespatriceckhart/zot | Skill | 359 | yesterday | MIT | A | 23 | Claude Code, Codex |