Help us improve
Share bugs, ideas, or general feedback.
From claude-commands
Records captioned terminal evidence videos showing git provenance, commit logs, code diffs, and PR status, then publishes them as GitHub PR attachments with sanitized output.
npx claudepluginhub jleechanorg/claude-commands --plugin claude-commandsHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-commands:tmux-video-evidenceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Prove terminal execution against a specific commit and publish reviewable evidence that both humans and agents can consume directly from the PR.
Records captioned browser/UI evidence videos, uploads to GitHub PR attachments, and links sanitized artifacts in a self-contained gist. Provides mandatory video frames and GitHub hosting automation.
Records browser interactions into MP4 feature demo video, uploads to GitHub, and embeds in PR description for reviewer walkthroughs.
Records browser interactions as a video walkthrough of a feature, stitches screenshots into MP4 with ffmpeg, uploads to GitHub, and embeds in PR description. Useful for visual PR demos and reviewer walkthroughs.
Share bugs, ideas, or general feedback.
Prove terminal execution against a specific commit and publish reviewable evidence that both humans and agents can consume directly from the PR.
Every terminal evidence package must include:
.mp4 preferred).gif recommended).vtt/.srt acceptable).mp4 or .mp4.zip)Record these sections in order:
| # | Section | Must show |
|---|---|---|
| 1 | Git Provenance | git rev-parse HEAD, branch, merge-base |
| 2 | Commit Log | git log --oneline origin/main..HEAD |
| 3 | Code Diffs | git diff origin/main...HEAD (not just --stat) |
| 4 | PR Status | gh pr view <N> |
| 5 | Live Work | Real test/deploy/command output |
| 6 | Post-run SHA | Same git rev-parse HEAD as section 1 |
Create /tmp/<work_name>_evidence.sh:
#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="<absolute path to repo>"
cd "$REPO_ROOT"
HEAD_SHA="$(git rev-parse HEAD)"
echo "=== 1. GIT PROVENANCE ==="
echo "HEAD: $HEAD_SHA"
git branch --show-current
git merge-base HEAD origin/main
echo "=== 2. COMMIT LOG ==="
git log --oneline origin/main..HEAD
echo "=== 3. CODE DIFFS ==="
git diff origin/main...HEAD -- <important file 1> | head -80
git diff origin/main...HEAD -- <important file 2> | head -80
echo "=== 4. PR STATUS ==="
gh pr view <PR_NUMBER> --json number,title,url,state,headRefName
echo "=== 5. LIVE TEST EXECUTION (SANITIZED) ==="
<test command> 2>&1 \
| sed -E \
-e 's#/Users/[^/]+/#/Users/REDACTED/#g' \
-e 's#/private/var/folders/[^[:space:]]+#/private/var/folders/REDACTED#g'
echo "=== 6. POST-RUN SHA ==="
POST_SHA="$(git rev-parse HEAD)"
echo "PRE=$HEAD_SHA"
echo "POST=$POST_SHA"
[ "$HEAD_SHA" = "$POST_SHA" ] && echo "SHA MATCH"
chmod +x /tmp/<work_name>_evidence.sh
# Option A: direct screen recording (mp4)
# (Use Kap or equivalent and run /tmp/<work_name>_evidence.sh in the visible terminal)
# Option B: asciinema capture, then convert to mp4
timeout 120 asciinema rec /tmp/<work_name>.cast --command "/tmp/<work_name>_evidence.sh" --idle-time-limit 5 --overwrite
agg --cols 120 --rows 50 /tmp/<work_name>.cast /tmp/<work_name>.gif
ffmpeg -y -i /tmp/<work_name>.gif -movflags +faststart -pix_fmt yuv420p /tmp/<work_name>.mp4
For every tmux video, provide captions by either:
/tmp/<work_name>.vtt and linking it in PR + gist.Use ~/.claude/skills/video-caption/SKILL.md when you need to generate burned-in captions reliably.
Preferred path:
zip -j /tmp/terminal.mp4.zip /abs/path/to/terminal.mp4
gh release create evidence-pr-<PR_NUMBER> --draft --title "PR #<PR_NUMBER> Evidence" --notes "" 2>/dev/null || true
gh release upload evidence-pr-<PR_NUMBER> /tmp/terminal.mp4.zip /abs/path/to/terminal.gif /abs/path/to/terminal.srt --clobber
gh release view evidence-pr-<PR_NUMBER> --json assets,url
gh pr comment <PR_NUMBER_OR_URL> --body-file /tmp/evidence_comment.md
Behavior:
gh.gif, .mp4.zip, and captionsOptional path:
$HOME/.claude/scripts/github_pr_media_upload.py can still be used when native user-attachments URLs are explicitly desired and browser auth is availableGitHub free plans often cap video uploads at 10 MB. Compress when needed:
ffmpeg -y -i /tmp/<work_name>.mp4 -vcodec h264 -crf 23 -preset medium /tmp/<work_name>.compressed.mp4
A reviewer should reject evidence if any are missing:
gh release/comment workflow or optional native-attachment helper used instead of manual drag-drop