← Cecil-IA Labs FFmpegCONTENT HISTORY

Update to Cecil-IA Labs FFmpeg

Snapshot Sep 30, 2026 · 23:17 UTC · version 2.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "ffmpeg-video-editing",
  "description": "Perform deterministic video trimming, speed changes, still-image video creation, resizing, restoration, and normalization with FFmpeg. Use for temporal edits and single-video transformations that do not primarily require multi-source composition.",
  "included_files": [
    {
      "relative_path": "references/video-editing-reference.md",
      "size_in_bytes": 864
    },
    {
      "relative_path": "scripts/run.mjs",
      "size_in_bytes": 5003
    }
  ],
  "skill_md_contents": "---\nname: ffmpeg-video-editing\ndescription: Perform deterministic video trimming, speed changes, still-image video creation, resizing, restoration, and normalization with FFmpeg. Use for temporal edits and single-video transformations that do not primarily require multi-source composition.\n---\n\n# FFmpeg Video Editing\n\nUse this skill for typed single-video editing operations.\n\n## Activation scope\n\nUse for:\n\n- removing time from the start or end;\n- extracting a temporal range;\n- changing playback speed;\n- creating video from a still image;\n- resizing/upscaling/restoration;\n- normalizing a video for downstream processing.\n\n## Do not use\n\nDo not use for multi-input transitions or slideshows; use `ffmpeg-composition`. Do not use for audio-first tasks; use `ffmpeg-audio`. Do not use repair commands when the primary problem is malformed timestamps or decoding errors; use `ffmpeg-diagnostics`.\n\n## Required inputs\n\nIdentify:\n\n- input file;\n- desired temporal range or speed factor;\n- output path when the default is unsuitable;\n- whether audio must be preserved, retimed, or dropped;\n- target resolution/profile and fit mode for upscale work.\n\n## Preflight\n\n1. Probe the input before operations where duration, audio presence, codec, or dimensions affect the plan.\n2. Use `--dry-run` when the user wants to inspect the FFmpeg invocation first.\n3. Preserve audio unless the requested operation or explicit policy says otherwise.\n\n## Toolkit surface selection\n\nUse the highest-level toolkit surface available to the host:\n\n1. Use the associated `scripts/run.mjs` entry point for supported video actions.\n2. For speed changes, still-image video creation, trim-start/trim-end convenience commands, or other supported video operations, use `cecilia-ffmpeg`.\n3. If the global binary is unavailable, use:\n   `npm exec --yes --package=@cecilialabs/ffmpeg -- cecilia-ffmpeg <command>`.\n4. Use native FFmpeg only for unsupported transforms or an explicit native-command request.\n\n## Associated scripts\n\nUse `scripts/run.mjs` with `input.action` set to `trim-start`, `trim-end`,\n`trim`, `speed`, `from-image`, `restore`, or `upscale`. Common fields include\n`input`, `output`, `overwrite`, and the operation-specific fields for the\nselected action. The script calls the typed video domain directly and returns\nthe shared result envelope.\n\n```bash\nprintf '%s\\n' '{\"context\":\"codex\",\"input\":{\"action\":\"trim-start\",\"input\":\"clip.mp4\",\"seconds\":5,\"output\":\"clip.trimmed.mp4\"}}' \\\n  | node skills/ffmpeg-video-editing/scripts/run.mjs\n```\n\n## Preferred toolkit commands\n\n```bash\ncecilia-ffmpeg video trim-start <input> --seconds <n>\ncecilia-ffmpeg video trim-end <input> --seconds <n>\ncecilia-ffmpeg video trim <input> --start <n> --end <n>\ncecilia-ffmpeg video speed <input> --factor <n>\ncecilia-ffmpeg video from-image <image> --duration <n>\ncecilia-ffmpeg video upscale <input> --resolution <WxH>\ncecilia-ffmpeg video attach-audio <video> <audio>\ncecilia-ffmpeg video add-silence <video>\n```\n\nPrefer the toolkit over constructing arbitrary shell commands for supported operations.\n\nFor supported operations, prefer the toolkit surface selected above over constructing arbitrary FFmpeg shell commands.\n\n## Native FFmpeg fallback\n\nUse native FFmpeg only for unsupported transforms or when explicitly requested. Preserve the toolkit's design principles: argument arrays, explicit mapping, explicit overwrite behavior, and probe-driven decisions.\n\n## Output expectations\n\nA successful file-producing operation should have:\n\n- a deterministic destination;\n- explicit overwrite policy;\n- a non-empty finalized file;\n- FFprobe validation after transformation;\n- structured warnings for copy-mode/keyframe limitations.\n\n## Validation\n\nProbe the result and verify the properties relevant to the request: duration, dimensions, FPS, codec, pixel format, and audio presence.\n\n## Error recovery\n\n- If copy trim is inaccurate, switch to accurate re-encode mode.\n- If speed change causes audio issues, use the toolkit's audio tempo policy rather than changing video PTS alone.\n- If upscale output is incompatible with the target workflow, normalize to explicit dimensions/FPS/pixel format/fit. `video restore` remains a compatibility alias.\n- If decoding/timestamp errors appear, hand off to `ffmpeg-diagnostics`.\n\n## Safety and determinism\n\nNever silently overwrite an existing file. Never replace an input file in place. Prefer transactional output and explicit `--overwrite`.\n\n## References\n\nRead `references/video-editing-reference.md` for mode selection and validation guidance.\n"
}

SHA-256: 836be12c2dbefdc7cbd90013da9753a533b26a6d1c901d8746d12cf4242dbdd9