Skip to content
cccskills
FreePublished on GitHub

vhs-demo

Create a short, repeatable terminal GIF from real commands run against caller-selected executables. The skill helps demonstrate one observed behavior or compare a controlled before-and-after change, while keeping the tape and evidence local for review.

OriginalShow the original description

Use when creating a terminal GIF, recording a CLI demonstration, authoring a VHS tape, or producing visual before/after evidence for reviewers.

cli/cli46,749 stars(GitHub 46,749 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Create a terminal GIF of a CLI demonstration
  • Record a saved VHS tape
  • Show visual before-and-after evidence
  • Capture real command output for reviewers

Files included (5)

  • SKILL.md7.3 KB
  • scripts/inspect.ps14.1 KB
  • scripts/inspect.sh2.0 KB
  • scripts/preflight.ps11.5 KB
  • scripts/preflight.sh1003 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

VHS Demo

Produce a short, repeatable GIF that shows real commands and unedited output from caller-selected executables. The GIF is evidence of one observed flow, not proof of general correctness and not a replacement for tests.

Evidence contract

A finished demo must make these claims defensible:

  • VHS rendered a saved tape; no fallback recorder or vhs publish was used.
  • Every visible command ran against an identified executable.
  • Hidden setup created state but did not create, paste, rewrite, or overlay the output attributed to the product.
  • Configuration, credentials, hosts, and data were isolated and synthetic by default.
  • The native-resolution animation was inspected, including any transient state.

The caller decides where the artifact is ultimately used. Return local paths and evidence; do not require an upload, PR edit, or repository change.

Workflow

1. Define the claim

Record the intended audience or destination, the behavior to evidence, exact visible commands, required initial state, and any size constraint. Storyboard the visible beats and their approximate duration before writing the tape.

Prefer one coherent claim per GIF. Use a synthetic supporting service or fixture only when the real product cannot safely or deterministically reach the required state; disclose and remove it afterward. The visible command must still run the selected real executable. Never substitute a fake or wrapper that generates product output. Split success and error flows when combining them would obscure either result.

For before/after evidence, identify the controlled variable. Keep the shell, terminal geometry, commands, typing speed, synthetic data, and equivalent application state fixed.

2. Prove the toolchain and executables

Run the platform preflight from the repository root:

.github/skills/vhs-demo/scripts/preflight.sh
& .\.github\skills\vhs-demo\scripts\preflight.ps1

If VHS, ffmpeg, ffprobe, or ttyd is missing or cannot execute, or VHS is older than 0.11.0, name the failure and stop. Do not install tools or substitute asciinema, screen recording, hosted VHS, or fabricated terminal text.

The caller chooses every executable, including separate baseline and changed binaries. Before recording each one, capture its absolute path, version, source or revision, and preferably SHA-256. Build separate binaries from separate checkouts; never overwrite one binary or switch the active checkout between takes.

Invoke absolute paths in visible commands. If natural spelling such as gh is part of the presentation, create an isolated command-name mapping to that exact path and put it ahead of the tape's PATH. Do not trust aliases or the ordinary PATH.

3. Isolate the take

Use the platform's secure temporary-directory API to create one workspace per GIF. Keep the tape, GIF, fixtures, config, command mappings, and inspection frames there, never in the repository.

Use synthetic names, repositories, hosts, and content. Remap home and config roots into the workspace, then clear inherited credential variables and quarantine every config source the selected product can read. For gh, point GH_CONFIG_DIR at an empty private directory and clear GH_TOKEN, GITHUB_TOKEN, GH_ENTERPRISE_TOKEN, GITHUB_ENTERPRISE_TOKEN, GH_HOST, and GH_REPO. If the behavior inherently needs a service, use only an approved synthetic endpoint and account; stop if safe credentials or data are unavailable.

Select a shell accepted by Set Shell in the installed VHS version and use only that shell's syntax in Type commands. An executable being installed does not mean VHS supports it. VHS 0.11 shell definitions suppress startup profiles and set a generic prompt; confirm both with a probe before trusting prompt waits or PATH.

4. Author and render the tape

Adapt this structure, replacing every placeholder:

Output "<ABSOLUTE_TEMP_PATH>/demo.gif"
Require <SHELL_COMMAND>
Set Shell <SHELL_COMMAND>
Set Width <WIDTH_FOR_CONTENT>
Set Height <HEIGHT_FOR_CONTENT>
Set FontSize 22
Set FontFamily "<VERIFIED_MONOSPACE_FONT>"
Set TypingSpeed 35ms
Set CursorBlink false
Set WaitTimeout 120s

Env GH_CONFIG_DIR "<ABSOLUTE_TEMP_PATH>/config"
Env HOME "<ABSOLUTE_TEMP_PATH>/home"
Env XDG_CONFIG_HOME "<ABSOLUTE_TEMP_PATH>/config"
Env GH_TOKEN ""
Env GITHUB_TOKEN ""
Env GH_ENTERPRISE_TOKEN ""
Env GITHUB_ENTERPRISE_TOKEN ""
Env GH_HOST ""
Env GH_REPO ""
Env NO_COLOR "1"

Hide
Type "<SHELL-SPECIFIC SETUP AND CLEAR>"
Enter
Wait+Line /<DETERMINISTIC PROMPT>/
Show

Type "<EXPLICIT EXECUTABLE> <VISIBLE ARGUMENTS>"
Enter
Wait+Screen /<MEANINGFUL EXPECTED OUTPUT>/
Sleep 2s

Use hidden commands only for fixtures, isolated config, approved synthetic services, deterministic prompts, directory changes, and clearing the screen. Type every visible command and let it run. Use Wait+Screen for observable results and condition-based waits for prompts; use Sleep only for pacing. Let waits capture spinners and other motion rather than sleeping past them.

Verify the selected font is installed and resolves as monospaced using the platform font registry or a native-resolution ruler probe. Render a sample frame, then size width, height, and font for the content. Increase geometry instead of shrinking or clipping text.

Run vhs <tape>. A parse or directive failure after preflight is an incompatibility: report it rather than deleting a safeguard.

5. Inspect the evidence

From the repository root, pass the matching helper an inspection directory outside the repository:

.github/skills/vhs-demo/scripts/inspect.sh <demo.gif> <inspection-dir>
& .\.github\skills\vhs-demo\scripts\inspect.ps1 <demo.gif> <inspection-dir>

The helper rejects repository paths, verifies GIF metadata, and extracts native-resolution first, final, one-frame-per-second, and every-frame sequences.

Inspect the images and the tape together. Confirm executable selection, visible commands, unedited output, intentional wrapping, readable monospaced text, clean first and final frames, useful pacing, and absence of secrets, private paths, real hosts, identities, notifications, and hidden setup. Inspect every frame when checking privacy or any spinner, crash, exit, relaunch, or other transient claim. Fix unsafe input at its source and rerender. Never redact the GIF after capture.

6. Return evidence

Report the absolute tape and GIF paths; dimensions, duration, frame count when available, and size; visible commands; each executable's path, version, revision/source, and hash when recorded; whether sampled or all frames were inspected; the intended use; and any limitation on what the demo proves.

Stop shortcuts

ShortcutRequired response
"Use my existing login/config"Isolate config and use synthetic credentials or stop.
"Both clips say gh, so selection is obvious"Map the name to each proven binary explicitly.
"Any recorder is fine if VHS is missing"Stop and report the failed prerequisite.
"Put the GIF in the repo for convenience"Keep all generated media in a temporary workspace.
"The final frame proves the spinner"Inspect the transient frame sequence.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

This dispatcher helps with GitHub Agentic Workflows by identifying whether a request is about design, creation, configuration, updates, debugging, or upgrades. It selects the matching workflow prompt or skill file so the agent can follow task-specific guidance.

  • Design a GitHub Agentic Workflow from scratch
  • Create or configure a workflow engine
  • Update or debug an existing workflow
cli/cli46.7KUpdated Oct 25, 2026

cli-exercise

FreeSummary

Exercise a real command-line program with specified cases or a stated goal, then capture and verify the observed behavior. It produces local media evidence such as a session video, helping reviewers see what the command did without treating the recording as proof of general correctness.

  • Record specified CLI test cases
  • Demonstrate a command’s behavior
  • Validate an interactive terminal workflow
cli/cli46.7KUpdated Oct 25, 2026

Verify CLI exercise expectations against recorded evidence, render requested media, inspect the results, and return local artifacts with case outcomes. The workflow keeps failures visible and does not publish evidence by default.

  • Verifying a recorded CLI exercise
  • Rendering and inspecting session evidence
  • Returning local artifacts without publishing
cli/cli46.7KUpdated Oct 25, 2026

Use this skill to execute supplied CLI test cases without changing their commands, inputs, ordering, or assertions. It guides preparation, exercise, and validation case by case, then classifies results as passed, failed, blocked, or observed based on actual evidence.

  • Run caller-supplied CLI cases in their specified order
  • Preserve literal inputs and expected assertions
  • Validate each case against observed output or state
cli/cli46.7KUpdated Oct 25, 2026

Use this skill to explore a CLI goal by choosing observable checks within an approved scope. It guides the agent through preparation, one exercise, and immediate validation for each case, then helps report what the evidence established and what remained unreachable.

  • Explore a CLI task with a clear goal and approved boundaries
  • Choose checks for an outcome such as uploading a file
  • Run and validate CLI cases one at a time
cli/cli46.7KUpdated Oct 25, 2026

This internal module checks whether cli-exercise can use its required build, terminal, and media tools. When a dependency is missing, it identifies a suitable setup path and requires approval before installation, then rechecks readiness. It does not authorize recordings or other actions.

  • Check cli-exercise tool readiness
  • Find missing recording or rendering dependencies
  • Prepare an approved dependency installation
cli/cli46.7KUpdated Oct 25, 2026

See all skills by cli

Report a problem with this skill