From chatcut
Verifies ChatCut timeline edits (trims, layers, captions, effects, markers, crops, transitions) using visual frame capture and project structure inspection.
How this skill is triggered — by the user, by Claude, or both
Slash command
/chatcut:verificationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Prefer two signals:
Prefer two signals:
read_project discovery for structure: timeline tracks, one track's items and placement, asset library, or targeted item/asset detail.Use view_timeline_frames for composed timeline proof when the host exposes it.
This verifies the edited ChatCut timeline: trims, layers, captions, effects,
markers, placeholders, crops, transitions, and layout. Hosted connectors return
one temporary Lambda image resource link per requested frame. If Codex cannot
inspect the signed URLs directly, create a temporary folder with
tmp_dir=$(mktemp -d "${TMPDIR:-/tmp}/chatcut-frames.XXXXXX"), download each
full shell-quoted URI with
curl --fail --location "$URI" --output "$tmp_dir/<frame-name>.jpg", and open
the local files with the native image-reading tool. Inspect them individually
or stitch only the temporary local copies into a contact sheet for comparison.
Successful rendering and timeline metadata are not visual proof until Codex
actually inspects the pixels.
For raw source-asset frame inspection, choose the cheapest path based on where the bytes live:
sourcePath returned
by the import helper, inspect that file locally with Codex-native tools such
as ffmpeg/ffprobe and your normal image-read flow. Do not call
view_asset_frames for those assets just to get source frames; the remote
tool would duplicate work and may wait on upload/editor routing unnecessarily.view_asset_frames with the current project asset id. Hosted connectors render
remote video timestamps on Lambda and return separate temporary image links;
cloud still images return their existing resource link directly.get_contact_sheet is not available on the Codex surface.Use local/remote source-frame artifacts only for source understanding, moment selection, and rough trim decisions, not as edited output or timeline proof.
For local-only or upload-in-progress media, composed timeline proof may be
blocked until the asset has bytes available to the renderer. Source-frame
inspection is still possible locally when Codex has the original path, or via
view_asset_frames when an open editor tab can provide the asset bytes.
If both visual proof paths are blocked, ask the user to inspect the ChatCut editor directly and note the blocker explicitly.
Useful checks:
read_project({ "assetId": "<prefix>" })read_project({ "itemId": "<prefix>" }); otherwise discover the track with view:"timeline", then read that track with view:"track".view_timeline_frames({ "frames": [30, 45, 75] }), then inspect each returned frame link.ffmpeg from the source file and inspect those images. Use that only to choose source files, moments, and rough trims; it may run in parallel with importing obvious or likely-needed originals and should not become an upload gate unless choosing the subset is actually the task or importing everything is unreasonable. Build the visible edit as ChatCut timeline items. Do not treat raw source inspection as timeline verification or as permission to produce the edited video locally.view_asset_frames({"assetId":"...","sourceTimesMs":[...]}) after read_project({"view":"assets"}) confirms the asset id/type. Prefer this over asking the user to reattach the file.When talking about seconds, verify the fps from read_project or use adapter tools that resolve fps internally.
When reporting a timeline item location, use only the latest targeted item detail or view:"track" response for track alias, item id, start, duration, and asset id. Do not infer placement from the orientation summary, planned/default tracks, or tool-call intent.
Do not treat a command-line JSON response alone as sufficient when the user asks whether the editor reflects the result. Use the editor URL or visual proof when practical.
If verification fails, classify the gap before changing tools:
read_project did not expose enough statenpx claudepluginhub chatcut-inc/agent-plugin --plugin chatcutProvides the ChatCut project model and editing context for Claude Code. Invoke this skill before using the ChatCut MCP server tools for video editing.
Extracts frames from videos/images, renders Remotion to MP4/stills/GIF, checks specs like resolution/fps/codec, and visually verifies quality via ffmpeg/ffprobe shell toolkit.
Edits CapCut/JianYing video projects programmatically: read/write subtitles, timing, speed, volume, templates, animations, and cut long-form to shorts via CLI.