Use this skill when the user asks to watch, view, or analyze a video file (.mov, .mp4, .webm, .avi). Extracts frames as images since Claude cannot view videos directly.
Extracts frames from video files for visual analysis since Claude cannot view videos directly.
npx claudepluginhub ramonclaudio/skillsThis skill is limited to using the following tools:
Claude cannot directly view video files, but can view images. This skill extracts frames from videos using ffmpeg, allowing Claude to "watch" videos by viewing sampled frames.
Requires ffmpeg to be installed:
brew install ffmpeg # macOS
apt install ffmpeg # Linux
IMPORTANT: File paths with spaces, timestamps, and special characters are problematic. ALWAYS use this pattern:
Extract a unique identifier from the user's path (like a timestamp) and use glob:
/bin/cp -f /path/to/dir/*UNIQUE_PART* /tmp/video.mov && \
mkdir -p /tmp/video-frames; \
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,duration -of csv=p=0 /tmp/video.mov && \
ffmpeg -y -v warning -i /tmp/video.mov /tmp/video-frames/frame_%03d.png && \
/bin/ls /tmp/video-frames/ | wc -l
Example for Screen Recording 2026-01-10 at 11.33.27 AM.mov:
/bin/cp -f ~/Desktop/Screen*11.33.27* /tmp/video.mov && \
mkdir -p /tmp/video-frames; \
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,duration -of csv=p=0 /tmp/video.mov && \
ffmpeg -y -v warning -i /tmp/video.mov /tmp/video-frames/frame_%03d.png && \
/bin/ls /tmp/video-frames/ | wc -l
This returns: frame_rate,duration on one line, then frame count.
Sample frames evenly. Use Read tool on PNG files:
# List available frames
/bin/ls /tmp/video-frames/
Then read frames with the Read tool:
| Problem | Solution |
|---|---|
| Spaces in filenames | /bin/cp -f with glob pattern handles any filename |
| Quoted paths fail | /bin/cp -f with glob avoids quoting issues |
cd fails (zoxide) | Never use cd, use absolute paths |
| Overwrite prompts | /bin/cp -f forces overwrite |
| Shell aliases interfere | Use /bin/cp, /bin/ls for reliability |
For videos longer than 10 seconds, extract at lower FPS:
# 2 FPS for long videos
ffmpeg -y -v warning -i /tmp/video.mov -vf "fps=2" /tmp/video-frames/frame_%03d.png
# 1 FPS for very long videos
ffmpeg -y -v warning -i /tmp/video.mov -vf "fps=1" /tmp/video-frames/frame_%03d.png
# Keyframes only (scene changes)
ffmpeg -y -v warning -i /tmp/video.mov -vf "select=eq(pict_type\,I)" -vsync vfr /tmp/video-frames/frame_%03d.png
# Extract 10 seconds starting at 1 minute
ffmpeg -y -v warning -ss 00:01:00 -t 10 -i /tmp/video.mov /tmp/video-frames/frame_%03d.png
# Scale to 640px width (smaller files, faster reads)
ffmpeg -y -v warning -i /tmp/video.mov -vf "scale=640:-1" /tmp/video-frames/frame_%03d.png
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.