Vox Director
Alisa0808/vox-director
Turn ONE topic into a finished Vox-style paper-collage explainer / ad video, end to end on the Atlas Cloud API + local ffmpeg — script, collage keyframes, motion, voice-over, music, captions, all…
Stitch video segments with ffmpeg concat, xfade, overlay, audio mux, and export settings, and trim a source into named clips at exact windows (trimclips.py).
$ npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gooseworks-ai/goose-skills stitch-videos-ffmpeg --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg .claude/skills/stitch-videos-ffmpeg && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "stitch-videos-ffmpeg" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg into .claude/skills/stitch-videos-ffmpeg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stitch-videos-ffmpeg", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpegType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gooseworks-ai/goose-skills stitch-videos-ffmpeg --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg .agents/skills/stitch-videos-ffmpeg && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "stitch-videos-ffmpeg" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg into .agents/skills/stitch-videos-ffmpeg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stitch-videos-ffmpeg", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gooseworks-ai/goose-skills stitch-videos-ffmpeg --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg .cursor/skills/stitch-videos-ffmpeg && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "stitch-videos-ffmpeg" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg into .cursor/skills/stitch-videos-ffmpeg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stitch-videos-ffmpeg", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gooseworks-ai/goose-skills.git --path skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gooseworks-ai/goose-skills stitch-videos-ffmpeg --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg .gemini/skills/stitch-videos-ffmpeg && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "stitch-videos-ffmpeg" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg into .gemini/skills/stitch-videos-ffmpeg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stitch-videos-ffmpeg", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gooseworks-ai/goose-skills stitch-videos-ffmpegInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg .github/skills/stitch-videos-ffmpeg && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "stitch-videos-ffmpeg" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg into .github/skills/stitch-videos-ffmpeg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stitch-videos-ffmpeg", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gooseworks-ai/goose-skills stitch-videos-ffmpeg --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg .opencode/skills/stitch-videos-ffmpeg && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "stitch-videos-ffmpeg" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg into .opencode/skills/stitch-videos-ffmpeg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stitch-videos-ffmpeg", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
stitch-videos-ffmpegStitch video segments with ffmpeg concat, xfade, overlay, audio mux, and export settings, and trim a source into named clips at exact windows (trimclips.py).
Stitch Videos Ffmpeg is an agent skill from gooseworks-ai/goose-skills. Stitch video segments with ffmpeg concat, xfade, overlay, audio mux, and export settings, and trim a source into named clips at exact windows (trimclips.py). Ships montage.py, a free montage assembler (python3 + ffmpeg, no keys). It takes a JSON EDL of clips and stills, normalizes them and hard-cuts them in order, burns captions from an SRT, a cue list or word timings, and lays a VO over a music bed that ducks under it, mastered to -14 LUFS.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including scripts (for example `scripts/composite.py`, `scripts/composite_final.py` and `scripts/composite_final.sh`).
It sits in Media & Creative, covering Video production. It works with FFmpeg and Python. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 7 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Stitch Videos Ffmpeg loads about 3.4k tokens when it runs. Until then it costs about 117 tokens; SKILL.md has 1,676 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 1,676 words, ~3,410 tokens.
.claude/skills/stitch-videos-ffmpeg/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Stitch video segments with ffmpeg concat, xfade, overlay, audio mux, and export settings.
Implementation status: refactored from existing repository skills. The workflow consolidates behavior that previously lived across larger skills.
Sources: ad-studio, voiceover-product-ad, ugc-product-video, voiceless-music-transformation-reel, product-stopmotion-ad.
Extraction notes: assembly and composite scripts.
scripts/montage.pyA free, deterministic way to cut a montage ad from finished clips. It needs python3 and
ffmpeg/ffprobe only (Pillow is optional, see Captions). It makes no network or provider
calls and needs no keys, so re-cuts cost nothing.
| Step | What it does |
|---|---|
edl | Checks a JSON spec and writes edl.json. Every file must exist and is probed with ffprobe; every cut must fit inside its clip. All problems are listed at once. |
assemble | Scales each cut to one size (default 1080×1920, cover crops to fill, contain pads), one frame rate (default 30), square pixels and yuv420p. Then it hard-cuts them in order with the filter_complex concat filter, never the -f concat demuxer. Each cut gets an exact frame count, so the output length equals the EDL total. |
captions | Burns an SRT, a JSON cue list, or word timings (one cue per --per words) into the video. The cue text is kept exactly as given (wrapping only turns spaces into line breaks). |
mix | Lays the VO over the video and adds an optional music bed that ducks under the VO (sidechain compression, 20:1). Then it masters to -14 LUFS / -1 dBTP with two-pass loudnorm. |
run | Runs all four steps from one spec and writes manifest.json. |
Each step prints a one-line JSON summary. Exit codes: 0 ok, 1 ffmpeg failed, 2 bad
spec or arguments, 3 a tool is missing (ffmpeg, ffprobe, or a caption renderer).
After gooseworks fetch stitch-videos-ffmpeg (or as a dependency of a format package), the
scripts are in /tmp/gooseworks-scripts/stitch-videos-ffmpeg/scripts/:
S=/tmp/gooseworks-scripts/stitch-videos-ffmpeg/scripts # or this folder's scripts/ in a checkout
python3 $S/montage.py run --spec montage.json --out edits/master.mp4 --workdir edits/work
# or one step at a time
python3 $S/montage.py edl --spec montage.json --out edits/edl.json
python3 $S/montage.py assemble --edl edits/edl.json --out edits/body.mp4
python3 $S/montage.py captions --video edits/body.mp4 --words audio/vo.words.json \
--respell '{"symbiotic": "synbiotic"}' --color "#FFE800" --out edits/captioned.mp4
python3 $S/montage.py mix --video edits/captioned.mp4 --vo audio/vo.mp3 \
--music audio/bed.mp3 --out edits/master.mp4Paths are relative to the spec file. Times are seconds or a timecode string ("SS",
"MM:SS", "HH:MM:SS", optional .ms).
{
"output": {"width": 1080, "height": 1920, "fps": 30, "fit": "cover"},
"words": "audio/vo.words.json",
"clips": [
{"file": "clips/scene-01.mp4", "label": "hook", "word_range": [0, 4]},
{"file": "clips/scene-02.mp4", "label": "feature", "in": 0.2, "out": 1.6},
{"file": "clips/scene-03.mp4", "label": "reaction", "in": "00:00.5", "duration": 0.9},
{"file": "clips/scene-04.mp4", "label": "b-roll", "t_in": 4.1, "t_out": 5.0},
{"file": "clips/scene-05.mp4"},
{"file": "overlays/landing-page.png", "label": "landing-page", "duration": 1.5,
"pan": {"from": {"x": 0.5, "y": 0.2, "zoom": 1.0}, "to": {"x": 0.5, "y": 0.7, "zoom": 1.6}}},
{"file": "brand/end-card.png", "label": "end-card", "duration": 2.0}
],
"clip_audio": "drop",
"captions": {"words": "audio/vo.words.json", "per": 1, "respell": {"symbiotic": "synbiotic"},
"style": {"color": "#FFE800", "y": 0.5}},
"audio": {"vo": "audio/vo.mp3", "music": "audio/bed.mp3", "music_start": 14.2}
}How long each cut is (first match wins):
word_range: [i, j] cuts on the VO's word boundaries. It needs a top-level words file,
used as the transcriber wrote it: a flat [{text|word, start, end}] list, {words: [...]}
(OpenAI, ElevenLabs; spacing entries are skipped), Whisper's {segments: [{words: [...]}]}
(goose-studio's transcribe-audio-fal), or fal's {chunks: [{text, timestamp: [s, e]}]}.
Words with no time are skipped, and leading spaces are stripped. The cut runs from the start of word i to the start of word
j + 1, or to the last word's end. The first cut starts at 0 so it covers the lead-in.
Consecutive ranges tile the VO with no gaps.t_in / t_out give a window on the timeline. The cut is t_out - t_in long. A window
that does not start where the previous cut ended is reported as a gap or overlap warning;
--strict turns warnings into errors.in + out, or in + duration, trim the source clip.in, default 0).Every cut starts at in in its source (default 0). A still image (.png, .jpg, .webp)
needs a length; pan zooms and pans across it. The still is first cover-cropped to the output
aspect (9:16 by default), and x/y are the window centre as a fraction of that cropped image
(zoom ≥ 1). A video clip may be up to 0.1 s short of its cut, and then its
last frame is held. Anything shorter is an error.
clip_audio (--clip-audio on assemble): drop (default) or keep. keep keeps each
clip's own sound and fills silence under stills and silent clips.
srt, cues (a list or a JSON file of {start, end, text}), or words
(any of the word-file shapes above) plus per and an optional respell map. respell
swaps a misheard word for the locked spelling and keeps the punctuation around it.
Overlapping cues: the later one wins.per: 1 that is one
word at a time, each held until the next. There is no active-word (karaoke) highlight.font, font_size (px, default 4.5% of the height), color, outline_color,
outline (px), y (centre of the caption block as a fraction of the height, default
0.72) and max_width (default 0.86 of the width).auto uses Pillow when it is installed, so captions look the same on
every machine. Otherwise it uses libass, which needs an ffmpeg with the ass filter.
Some ffmpeg builds (Homebrew's default) have no libass and no drawtext, so Pillow is
the dependable renderer. With neither, the step exits 3 and says so.| Setting | Default | Meaning |
|---|---|---|
vo_lufs | -16 | VO level before mixing (static gain from a measured pass) |
music_lufs | -24 | Bed level between VO lines, before ducking |
duck_threshold / duck_ratio | 0.02 / 20 | The bed ducks while the VO is above the threshold. ffmpeg caps the ratio at 20. |
duck_attack / duck_release | 20 / 400 ms | How fast the bed dips and comes back |
vo_start, music_start | 0 | Where each track enters on the timeline. vo_start moves only the VO audio, not word_range cuts or word captions, so keep it 0 when those come from the same VO. |
music_fade_in / music_fade_out | 0 / 1 s | A bed shorter than the video loops (with a warning) |
target_lufs / target_tp | -14 / -1 | Master loudness. off skips it. |
keep_video_audio | false | Mix the video's own audio in too (not ducked) |
A VO that runs past the end of the video is cut and reported as a warning, so lengthen the EDL (for example, the end card) instead.
tests/test_stitch_montage.py makes tiny synthetic clips, a still and two tones with ffmpeg,
then checks: the output length equals the EDL total to the frame, size/fps/pixel shape are
normalized, captions appear only on their cue frames with the exact text, the bed ducks
under the VO (about 14 dB on the fixture), and the master is at -14 ±1 LUFS. It runs in CI
(media-tests) and locally:
python3 -m pytest -q skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg/testscomposite.py, composite_final.py / .sh, normalize_clip.sh,
voiceless/composite.py) are unchanged.mix-master remains the multi-clip VO + SFX mix. A montage.py master is already at
-14 LUFS, so a later -14 LUFS finishing pass barely changes it.caption-burn remains the place for plate, seam and hook-card caption styles.scripts/trim_clips.pyCuts one source video into named clips at exact windows (this replaces the studio's trim-video-clips). Each clip is re-encoded with libx264, so cuts land on the requested frames and drop cleanly into an edit. Deciding which windows to cut is the caller's job.
python3 scripts/trim_clips.py --source source.mp4 --clips clips.json --output-dir clips/ [--crf 18] [--overwrite]clips.json is a list of {name, start, end} or {name, start, duration}; times are seconds or
SS, MM:SS, HH:MM:SS with optional .ms:
[
{"name": "hook-laptop-close", "start": 0, "end": 2.6},
{"name": "mac-mini-glow", "start": "00:03", "duration": 5}
]<slug>.mp4 per clip, and manifest.json with each clip's window, real duration and status.errors; the other clips still cut. A window that runs past the end of the source gives a
shorter clip and a warning with both lengths.--overwrite. A source with no audio gives clips
with no audio.Measured traps when joining and finishing. Each lives here once.
eq=contrast=1.05:saturation=0.95,colorbalance=bs=0.05:bm=-0.02
is a starting point.-loop 1 -framerate 30 -t <length> before that -i. The build reports no error.-vsync. The old flag fails the whole command; use -fps_mode, or drop it
(-update 1 alone overwrites frame by frame).-ss before -i can land on a keyframe (always with stream copy). A re-encoded cut is
exact; a measurement a decision depends on puts -ss after -i or decodes the range.crop rounds offsets to whole pixels, so a gentle sine move becomes a still with one-pixel
snaps. Scale up 4x, crop, scale back. Judge motion on the median, not the p90.select then tile takes consecutive frames. Seek with -ss before the input, then
fps=N, then tile.filter_complex fails the build silently behind a captured subprocess,
and an older render on disk then passes the checks. Strip trailing commas and read the build's
own exit status.skills/test-runs/<timestamp>/<skill-name>/ during tests.manifest.json for executable runs with status, provider, outputs, warnings, and errors.manifest.json for executable runs.verification.md or a short verification summary that names the checks performed.© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files (scripts) in skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg of gooseworks-ai/goose-skills.
Open the folder on GitHubat commit c650c6d
Stitch Videos Ffmpeg next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Stitch Videos Ffmpeg this skillgooseworks-ai/goose-skills | 1.2k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Vox DirectorAlisa0808/vox-director | 2.2k | — | ~5.6k | Automated safety check: Pass | MIT | |
| Ffmpeg Skillkajisho5/ffmpeg-skill | 1.9k | — | ~7.4k | Automated safety check: Pass | MIT | |
| OpenStoryline Install HelperFireRedTeam/FireRed-OpenStoryline | 3.5k | — | ~1.5k | Automated safety check: Notes | Apache-2.0 | |
| Cassette Video EditCassette-Editor/oh-my-cassette | 119 | 1 repos | ~3.4k | Automated safety check: Pass | MIT | |
| Whiteboard Videognipbao/codex-whiteboard-video-skill | 327 | — | ~7.2k | Automated safety check: Notes | MIT |
Alisa0808/vox-director
Turn ONE topic into a finished Vox-style paper-collage explainer / ad video, end to end on the Atlas Cloud API + local ffmpeg — script, collage keyframes, motion, voice-over, music, captions, all…
kajisho5/ffmpeg-skill
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…
FireRedTeam/FireRed-OpenStoryline
Installs, repairs and starts a local source checkout of FireRed-OpenStoryline, from prerequisites and a venv to resources, config and the MCP and web servers.
Cassette-Editor/oh-my-cassette
Edit, trim, cut, caption, subtitle, reframe, combine, add background music to, or export video, audio, and image files through Cassette.
gnipbao/codex-whiteboard-video-skill
Generate smooth hand-drawn whiteboard and story videos directly inside Codex from text scripts, GPT Image 2 color storyboards, scene plans, SVGs, line art, or local images.
Anil-matcha/vox-ai-motion-graphics-generator
Turn ONE topic, talking-head video, or photo into a finished Vox-style paper-collage explainer / ad video on the MuAPI platform (api.muapi.ai) + local ffmpeg — script, collage keyframes, motion…
gooseworks-ai/goose-skills
Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.
gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.
gooseworks-ai/goose-skills
Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.
gooseworks-ai/goose-skills
Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.
gooseworks-ai/goose-skills
Find leads by scraping engagers from a competitor's top LinkedIn posts.
gooseworks-ai/goose-skills
Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…
Categories
Stitch video segments with ffmpeg concat, xfade, overlay, audio mux, and export settings, and trim a source into named clips at exact windows (trimclips.py). Stitch Videos Ffmpeg is an agent skill from gooseworks-ai/goose-skills.py).
Stitch Videos Ffmpeg fits situations like: tasks that involve Video production.
Run `npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a claude-code`. Or copy the skill folder (skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg in gooseworks-ai/goose-skills) into .claude/skills/stitch-videos-ffmpeg in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a codex`. Or copy the skill folder (skills/ads/packs/video-ad-formats/stitch-videos-ffmpeg in gooseworks-ai/goose-skills) into .agents/skills/stitch-videos-ffmpeg in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill stitch-videos-ffmpeg -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/stitch-videos-ffmpeg, .gemini/skills/stitch-videos-ffmpeg, .github/skills/stitch-videos-ffmpeg and .opencode/skills/stitch-videos-ffmpeg in your project.
Going by SKILL.md and its folder, Stitch Videos Ffmpeg needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3; A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Stitch Videos Ffmpeg is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Stitch Videos Ffmpeg: Vox Director (Alisa0808/vox-director, 2.2k stars), Ffmpeg Skill (kajisho5/ffmpeg-skill, 1.9k stars), OpenStoryline Install Helper (FireRedTeam/FireRed-OpenStoryline, 3.5k stars) and Cassette Video Edit (Cassette-Editor/oh-my-cassette, 119 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.
Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.