From video-editing
Detect the user's GPU and ffmpeg hardware encoders (NVENC, VAAPI, QSV, AMF) and persist the result to system-profile.json. Run this once per machine before using render-profile or transcode skills. Use when the user says "profile my system", "detect my GPU", "what encoders do I have", or before any render skill that complains about a missing profile.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin video-editingThis skill is limited to using the following tools:
Detect the host's GPU and ffmpeg encoder capabilities so other skills (`create-render-profile`, `render-with-profile`, `transcode`) can pick the right hardware encoder instead of falling back to CPU x264.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Detect the host's GPU and ffmpeg encoder capabilities so other skills (create-render-profile, render-with-profile, transcode) can pick the right hardware encoder instead of falling back to CPU x264.
DATA_DIR="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/video-editing"
PROFILE_FILE="$DATA_DIR/system-profile.json"
mkdir -p "$DATA_DIR"
If $PROFILE_FILE already exists, show the user the current contents and ask whether to re-detect.
lspci | grep -iE 'vga|3d|2d'
Identify NVIDIA / AMD / Intel from the output. Also probe:
command -v nvidia-smi >/dev/null && nvidia-smi --query-gpu=name --format=csv,noheader
command -v vainfo >/dev/null && vainfo 2>/dev/null | grep -E 'Driver version|VAProfile' | head -20
ls /dev/dri/ 2>/dev/null
Record the VAAPI render node (typically /dev/dri/renderD128) — needed for AMD/Intel hardware encode.
ffmpeg -hide_banner -encoders 2>/dev/null | grep -iE 'nvenc|vaapi|qsv|amf|videotoolbox' || true
Bucket what's available per codec:
| Codec | Preferred order |
|---|---|
| H.264 | h264_nvenc (NVIDIA) → h264_vaapi (AMD/Intel on Linux) → h264_qsv (Intel) → h264_amf (AMD) → libx264 |
| HEVC | hevc_nvenc → hevc_vaapi → hevc_qsv → hevc_amf → libx265 |
| AV1 | av1_nvenc → av1_vaapi → av1_qsv → av1_amf → libsvtav1 → libaom-av1 |
For AMD on Linux, prefer VAAPI over AMF — Mesa's VAAPI is more reliable and produces smaller files at the same quality than AMF in most ffmpeg builds.
For the chosen H.264 encoder, run a 1-second synthetic test:
ffmpeg -hide_banner -f lavfi -i testsrc=duration=1:size=1280x720:rate=30 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
-c:v h264_vaapi -f null - 2>&1 | tail -5
(Adjust the command per encoder family.) Record working: true|false per encoder. A listed-but-broken encoder is common on AMD setups missing the right Mesa packages.
system-profile.json{
"detected": "<ISO-8601>",
"gpu": {
"vendor": "AMD|NVIDIA|Intel|unknown",
"model": "<lspci string>",
"render_node": "/dev/dri/renderD128"
},
"encoders": {
"h264": { "preferred": "h264_vaapi", "available": ["h264_vaapi", "libx264"], "working": ["h264_vaapi", "libx264"] },
"hevc": { "preferred": "hevc_vaapi", "available": ["hevc_vaapi", "libx265"], "working": ["hevc_vaapi", "libx265"] },
"av1": { "preferred": "libsvtav1", "available": ["libsvtav1"], "working": ["libsvtav1"] }
},
"ffmpeg_version": "<ffmpeg -version | head -1>"
}
Write atomically: jq (or cat <<EOF) to $PROFILE_FILE.tmp, then mv.
Print a short summary: vendor, render node, preferred H.264 / HEVC / AV1 encoders. Suggest the user run create-render-profile next.