Agent skill

Vhs E2E Gif

by dimetron in dimetron/pi-go

Record a test run, a TUI session, or any terminal command as a GIF with VHS and attach it to a GitHub PR as a release-hosted asset, never a repo commit.

MITAuto-check passedTesting & QA

Install Vhs E2E Gif

skills CLI
$ npx skills add dimetron/pi-go --skill vhs-e2e-gif -a claude-code

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

GitHub CLI
$ gh skill install dimetron/pi-go vhs-e2e-gif --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/dimetron/pi-go.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pi-go/skills/vhs-e2e-gif .claude/skills/vhs-e2e-gif && 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-e2e-gif
GitHub stars
207
Token cost
~1.7k tokens
SKILL.md length
869 words
Files
3 (incl. scripts)
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Record a test run, a TUI session, or any terminal command as a GIF with VHS and attach it to a GitHub PR as a release-hosted asset, never a repo commit.

  • Works in 4 steps: The tape's shell starts in the tape… → Typing before the TUI has painted drops… → A loose completion regex fires… → …
  • Asked to record an e2e run
  • SKILL.md covers The one trap, Workflow, Choosing what to record and Recording an interactive TUI, plus 3 more sections
  • Runs Shell scripts from its folder; calls go, gh and make

What it does

Vhs E2E Gif is an agent skill from dimetron/pi-go. Record a test run, a TUI session, or any terminal command as a GIF with VHS and attach it to a GitHub PR as a release-hosted asset, never a repo commit. Use when asked to record an e2e run, demo a fix on a PR, attach a GIF or screen recording to a pull request, show a test passing visually, or produce a terminal recording of pi-go. Encodes the sandbox trap that makes VHS segfault on the first attempt.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/attach-gif-to-pr.sh` and `scripts/record-gif.sh`).

It sits in Testing & QA, covering End-to-end testing and Pull requests. It works with GitHub. The repository describes itself as: Go implementation of AI coding agent. The licence is MIT.

When your agent uses it

  • Asked to record an e2e run
  • Demo a fix on a PR
  • Screen recording to a pull request
  • Show a test passing visually

Example prompts

  • “/vhs-e2e-gif”

Requirements

  • A Bash shell

Workflow steps

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

  1. The tape's shell starts in the tape file's directory, not yours. ./pi
  2. Typing before the TUI has painted drops the keystrokes. READY_RE holds
  3. A loose completion regex fires mid-render. WAIT_RE='took ' matched while
  4. TUI captures are several MB. A full-screen repaint at 50fps is the

What it can do on your machine

Read from SKILL.md and the folder at commit 24d1f2b. 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

    Ships 2 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • go
    • gh
    • make
    • brew

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

  • Network

    No URLs in SKILL.md. Its commands use gh, 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 E2E Gif loads about 1.7k tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 869 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from dimetron/pi-go at commit 24d1f2b, republished under its MIT licence (© dimetron). 869 words, ~1,746 tokens.

Download SKILL.mdSave it as .claude/skills/vhs-e2e-gif/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
vhs-e2e-gif
description
Record a test run, a TUI session, or any terminal command as a GIF with VHS and attach it to a GitHub PR as a release-hosted asset, never a repo commit. Use when asked to record an e2e run, demo a fix on a PR, attach a GIF or screen recording to a pull request, show a test passing visually, or produce a terminal recording of pi-go. Encodes the sandbox trap that makes VHS segfault on the first attempt.

Recording an e2e run as a GIF on a PR

Turn a test run into a short GIF and hang it off the PR, so a reviewer sees the suite go green without checking out the branch.

The one trap

VHS segfaults inside the agent sandbox. It binds a loopback port for ttyd, the sandbox refuses, and randomPort() dereferences the nil listener:

panic: runtime error: invalid memory address or nil pointer dereference
main.randomPort()
	github.com/charmbracelet/vhs/tty.go:22

That is the sandbox, not a broken tape. Run every vhs invocation with the sandbox disabled. Same for gh (network) — the upload step needs it too.

Dependencies: vhs, ttyd, ffmpeg (brew install vhs ttyd ffmpeg). VHS pulls in the other two, but check before blaming a tape.

Workflow

1. Record.

bash
OUT=/tmp/e2e-tool-calls.gif DIR=$PWD \
  scripts/record-gif.sh "go test -tags e2e ./internal/agent/ -run TestE2E -v 2>&1 | grep -E '^(--- |ok|FAIL)'"

The script writes the tape, runs VHS, and extracts the final frame next to the GIF as <name>.last.png.

2. Read the last frame before posting. A GIF is opaque to you — the PNG is not. Open it and confirm the run actually passed. Posting a recording of a failing suite as evidence of a passing one is the failure mode this step exists to prevent.

3. Attach.

bash
CAPTIONS='e2e: tool calls after the fix' \
  scripts/attach-gif-to-pr.sh 246 /tmp/e2e-tool-calls.gif

Uploads as a release asset — never a repo commit — and posts, or edits, a single recording comment on the PR, so a re-record updates that comment in place instead of adding another.

Choosing what to record

Record the narrowest command that proves the claim, filtered to result lines. A full go test ./... scroll is unreadable at 14pt and the interesting line scrolls off. These read well:

bash
go test -tags e2e ./internal/agent/ -run TestE2E -v 2>&1 | grep -E '^(--- |ok|FAIL)'
go test -tags e2e ./... 2>&1 | grep -vE '(no test files)$'
make lint

Sizing: 1280x720 at font size 14 fits ~30 result lines and lands around 150 KB. Go wider only if lines wrap.

Recording an interactive TUI

A TUI is two input steps, not one: launch the program, then type into it. That is what READY_RE and INPUT are for.

bash
OUT=/tmp/pi-tui-tools.gif DIR=$PWD \
  READY_RE='tkn:' INPUT='show me your tools' \
  WAIT_RE='took [0-9]+[.][0-9]+s' WAIT_TIMEOUT=240s \
  HEIGHT=800 FRAMERATE=20 PLAYBACK_SPEED=2 SHRINK=1 \
  scripts/record-gif.sh "./pi"

Four things that go wrong, in the order they bite:

  1. The tape's shell starts in the tape file's directory, not yours. ./pi becomes No such file or directory and you get a 60 KB GIF of a bash error. DIR is the fix — the script always emits the cd.
  2. Typing before the TUI has painted drops the keystrokes. READY_RE holds until the program's own output proves it is up. For pi-go, tkn: (the statusline token counter) is a good marker; the banner is not, it renders before the deferred init finishes.
  3. A loose completion regex fires mid-render. WAIT_RE='took ' matched while the answer was still streaming and cut the recording off at "thinking…". Require the digits — took [0-9]+[.][0-9]+s — so only the finished summary line can match.
  4. TUI captures are several MB. A full-screen repaint at 50fps is the worst case for GIF deltas. SHRINK=1 recompresses (12fps, 1000px, 96 colors) and cut 2.9 MB to 1.3 MB with no loss of legibility.

The alternate screen itself is a non-issue — VHS captures it correctly.

Exiting is optional: the recording stops when WAIT_RE matches, and VHS kills the shell. /exit or /quit quits pi-go's TUI if you want the exit in frame.

Show full SKILL.md (383 more words)Show less

Where the GIF gets hosted

Never commit a recording to the repo. A recording is review scaffolding with a lifetime of days; a committed binary is in history forever and in every clone. MODE=release (the default) attaches the GIFs to a release tag instead — GitHub renders a release-asset URL as a real inline <img data-animated-image>, no camo proxy, and git history stays clean.

bash
CAPTIONS='The TUI, after the fix|e2e: 19 tests green' \
  scripts/attach-gif-to-pr.sh 246 /tmp/pi-tui-tools.gif /tmp/e2e-tool-calls.gif

MODE=branch still exists for a repo with releases disabled. Do not reach for it here.

Immutable releases change the rules

pi-go has immutable releases enabled, which constrains the release path in two ways the script works around:

  1. Assets attach at creation time only. gh release create <tag> a.gif b.gif works; a later gh release upload on a published release does not:
    HTTP 422: Cannot upload assets to an immutable release.
    So pass every GIF for a PR in one invocation. Adding one later means a new release.
  2. A deleted tag stays burned. Re-creating a tag that once held an immutable release fails with tag_name was used by an immutable release, even after gh release delete and deleting the git tag. The script probes for a free media-pr<N>, media-pr<N>-2, … rather than assuming.

Neither the release-asset URL nor a raw URL renders for signed-out readers on a private repo; the script checks visibility and refuses rather than posting a broken image.

Tape gotchas

  • The command and INPUT are typed into double-quoted tape strings, so neither may contain a double quote. Use single quotes; the script rejects the rest with a clear error rather than emitting a broken tape.
  • Wait+Screen@<timeout> /regex/ ends the take when the result line appears. A regex that never matches burns the whole timeout and then fails the recording, so match both outcomes (ok|FAIL), never just the happy one.
  • Hide / Show around the cd keeps the setup out of the frame.
  • VHS resets the shell's cwd afterwards; run it from a scratch directory and pass DIR rather than relying on where you were.

Scripts

ScriptDoes
scripts/record-gif.sh <command...>Tape → GIF → last-frame PNG. Knobs: OUT, DIR, READY_RE, INPUT, WAIT_RE, WAIT_TIMEOUT, SHRINK, SHRINK_WIDTH, WIDTH, HEIGHT, FONT_SIZE, THEME, PADDING, FRAMERATE, PLAYBACK_SPEED
scripts/attach-gif-to-pr.sh <pr> <file.gif> [more.gif ...]Publish as release assets, post/edit one PR comment. Knobs: CAPTIONS (|-separated), TAG, MODE (release/branch), MEDIA_DIR

Both are pi-go-agnostic — they take any command and any PR.

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

Files

SKILL.md and 2 other files (scripts) in .pi-go/skills/vhs-e2e-gif of dimetron/pi-go.

  • SKILL.md
  • scripts/attach-gif-to-pr.sh
  • scripts/record-gif.sh

Open the folder on GitHubat commit 24d1f2b

Compare with similar skills

Vhs E2E Gif 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 E2E Gif compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vhs E2E Gif this skilldimetron/pi-go207—~1.7kAutomated safety check: PassMIT
Record E2E Giflablup/backend.ai-webui133—~907Automated safety check: NotesLGPL-3.0
Dev Issuehmislk/hmis236—~5kAutomated safety check: PassGPL-3.0
Verify PRvfarcic/dot-agent-deck109—~7.3kAutomated safety check: PassMIT
Issue Assessmentffroliva/gflow-cli264—~2.1kAutomated safety check: PassMIT
Address Issuenubjs/nub4.4k—~2.6kAutomated safety check: PassMIT

Similar skills

  • Record E2E Gif

    lablup/backend.ai-webui

    Record Playwright e2e tests as one GIF per test case (video → ffmpeg palette GIF) and return a markdown table for a PR description.

    133 GitHub stars~907 tokensUpdated yesterday
    Testing & QAAuto-check: notes
  • Dev Issue

    hmislk/hmis

    Run a GitHub issue through its full lifecycle end-to-end: investigate, discuss the approach, gather test context (department/data), implement, rebuild + local redeploy, verify with Playwright and…

    236 GitHub stars~5k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Verify PR

    vfarcic/dot-agent-deck

    Deeply verify a pull request written by someone else and end with an explicit merge recommendation.

    109 GitHub stars~7.3k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Issue Assessment

    ffroliva/gflow-cli

    A skill your agent uses when triaging a GitHub issue for gflow-cli — a reporter's bug claim, a freshly-filed issue, or deciding whether and how to act on one.

    264 GitHub stars~2.1k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Address Issue

    nubjs/nub

    End-to-end playbook for working a GitHub issue (or bug-fix PR) on nubjs/nub: triage → acknowledge an external report with an "Investigating" comment → reproduce it yourself → SIZE it → fix it at…

    4.4k GitHub stars~2.6k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Create GitHub PR

    openJiuwen-ai/sciencediscovery

    Open or update a pull request on GitHub's openJiuwen-ai/sciencediscovery: run the UT/ST/E2E layers locally, push the branch to the operator's own GitHub fork, write a body that says what was…

    151 GitHub stars~3k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from dimetron/pi-go

All 21 skills in this repo
  • Agents Md

    dimetron/pi-go

    Generate AGENTS.md files for Go, Rust, TypeScript, and Java projects.

    207 GitHub stars~1.7k tokensUpdated 7 days ago
    Auto-check passed
  • Bubbletea Testing

    dimetron/pi-go

    A skill your agent uses whenever writing tests for Bubble Tea (charmbracelet/bubbletea) TUI applications in Go.

    207 GitHub stars~3.6k tokensUpdated 7 days ago
    Auto-check passed
  • Memory Index

    dimetron/pi-go

    Index a folder's contents into the MemPalace semantic memory for search and retrieval.

    207 GitHub stars~1.5k tokensUpdated 7 days ago
    Auto-check passed
  • Nightly Session Watch

    dimetron/pi-go

    Nightly sweep of the last 24h of pi-go sessions — anomalous runs, loop aborts, tool error rates, token waste, real prompt-token spend, and whether the observation and palace pipelines are still…

    207 GitHub stars~1.5k tokensUpdated 7 days ago
    Auto-check passed
  • Osx Tuning

    dimetron/pi-go

    Tune macOS resource limits and sysctls for best performance with Go development, Docker/OrbStack, and Linux VMs.

    207 GitHub stars~1.6k tokensUpdated 7 days ago
    Auto-check: notes
  • Pgo

    dimetron/pi-go

    Profile-guided optimization (PGO) for the pi binary. An agent skill from dimetron/pi-go.

    207 GitHub stars~1.4k tokensUpdated 7 days ago
    Auto-check passed

Works with

Questions about Vhs E2E Gif

What does Vhs E2E Gif do?

Record a test run, a TUI session, or any terminal command as a GIF with VHS and attach it to a GitHub PR as a release-hosted asset, never a repo commit. Vhs E2E Gif is an agent skill from dimetron/pi-go. Record a test run, a TUI session, or any terminal command as a GIF with VHS and attach it to a GitHub PR as a release-hosted asset, never a repo commit.

When should I use Vhs E2E Gif?

Vhs E2E Gif fits situations like: asked to record an e2e run; demo a fix on a PR; screen recording to a pull request; show a test passing visually.

How do I install Vhs E2E Gif in Claude Code?

Run `npx skills add dimetron/pi-go --skill vhs-e2e-gif -a claude-code`. Or copy the skill folder (.pi-go/skills/vhs-e2e-gif in dimetron/pi-go) into .claude/skills/vhs-e2e-gif in your project. Claude Code loads it when a task matches its description.

How do I install Vhs E2E Gif in Codex?

Run `npx skills add dimetron/pi-go --skill vhs-e2e-gif -a codex`. Or copy the skill folder (.pi-go/skills/vhs-e2e-gif in dimetron/pi-go) into .agents/skills/vhs-e2e-gif in your project. Codex loads it when a task matches its description.

Can I use Vhs E2E Gif 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 dimetron/pi-go --skill vhs-e2e-gif -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-e2e-gif, .gemini/skills/vhs-e2e-gif, .github/skills/vhs-e2e-gif and .opencode/skills/vhs-e2e-gif in your project.

What does Vhs E2E Gif need to run?

Going by SKILL.md and its folder, Vhs E2E Gif needs a shell for the scripts in its folder and the command-line tools its instructions call (go, gh, make and brew). Our summary lists: A Bash shell.

Does Vhs E2E Gif access the network?

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

Is Vhs E2E Gif 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Vhs E2E Gif use?

Vhs E2E Gif 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 E2E Gif use?

About 1.7k tokens (SKILL.md is roughly 7k 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 E2E Gif?

Skills that share tags, products or a category with Vhs E2E Gif: Record E2E Gif (lablup/backend.ai-webui, 133 stars), Dev Issue (hmislk/hmis, 236 stars), Verify PR (vfarcic/dot-agent-deck, 109 stars) and Issue Assessment (ffroliva/gflow-cli, 264 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vhs E2E Gif?

dimetron (a GitHub user) maintains it in dimetron/pi-go, which has 207 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 1, 2026.

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