AgentStack
SKILL verified MIT Self-run

Frames

skill-ramonclaudio-skills-frames · by ramonclaudio

Extract frames from a video file or screen recording (.mov, .mp4, .webm, .avi, .mkv) so Claude can view, review, or analyze it. Do NOT use for GIF conversion (use /gif instead).

No reviews yet
0 installs
16 views
0.0% view→install

Install

$ agentstack add skill-ramonclaudio-skills-frames

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Frames? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Video to Frames

ultrathink

Claude cannot view video files directly but can view images. Extract frames using ffmpeg, then read a sample. Claude supports up to 600 images per request with the 1M context window, so sampling can be generous.

Environment

  • ffmpeg: !which ffmpeg 2>/dev/null && ffmpeg -version 2>&1 | head -1 || echo "NOT INSTALLED - run: brew install ffmpeg"

If ffmpeg is NOT INSTALLED, stop immediately and tell the user to install it. Do not attempt any extraction.

Workflow

Parse the video path from $ARGUMENTS.

Step 1: Copy + Probe

File paths with spaces and special characters break quoting. Copy to a clean /tmp path using glob on a unique substring (timestamp, keyword).

/bin/cp -f /path/to/dir/*UNIQUE_PART* /tmp/video.mov && \
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,duration -of csv=p=0 /tmp/video.mov

Example for Screen Recording 2026-01-10 at 11.33.27 AM.mov:

/bin/cp -f ~/Desktop/Screen*11.33.27* /tmp/video.mov && \
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,duration -of csv=p=0 /tmp/video.mov

Step 2: Extract frames

Select FPS based on duration from the probe output. Scale to 640px width to save context tokens.

| Duration | FPS | Rationale | |----------|-----|-----------| | 2min | 0.5 | Keep frame count manageable |

trash /tmp/video-frames 2>/dev/null; mkdir -p /tmp/video-frames && \
ffmpeg -y -v warning -i /tmp/video.mov -vf "fps=FPS,scale=640:-1" /tmp/video-frames/frame_%04d.png && \
/bin/ls /tmp/video-frames/ | wc -l

For short videos (300 | 50-60 evenly distributed |

Pick frame numbers evenly spaced across the total. Read them with the Read tool, multiple per response.

Why the Copy Pattern?

| Problem | Solution | |---------|----------| | Spaces in filenames | /bin/cp -f with glob handles any filename | | Quoted paths fail | Glob avoids quoting issues | | cd fails (zoxide) | Never use cd, use absolute paths | | Shell aliases interfere | Use /bin/cp, /bin/ls for reliability |

Gotchas

  • scale=640:-1 fails on videos with odd-height dimensions. Use scale=640:-2 if ffmpeg errors with "height not divisible by 2".
  • HDR screen recordings (common on Apple XDR displays) produce washed-out frames. Check color_transfer=smpte2084 in probe output and tone-map to SDR first with avconvert.
  • Long videos at native FPS can dump thousands of PNGs and eat gigabytes of /tmp disk. Always check duration before extracting and pick a conservative FPS.
  • If ffprobe returns no duration (e.g., some .webm or piped streams), the FPS table breaks. Fall back to 1 FPS and count frames after extraction.
  • Glob-based copy (/bin/cp -f *UNIQUE*) matches multiple files if the substring isn't unique. Verify only one file matches before proceeding.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.