agentleFS
DeiblerDeibler/edmund-harness/skills/video/SKILL.md

video

Skill24 starsChanged 2 months agoMITView on GitHub

Work with video files — understand what's in a clip, pull frames you can actually look at, edit (trim/join/retime/overlay/re-encode), verify a cut is clean, and deliver it over iMessage. Use whenever someone sends a video, asks for edits to one, or you're producing/forwarding a clip.

61 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use popups, co-marketing and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • CesarjoquinSkill

    popups

    When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also use when the user mentions "exit intent," "popup conversions," "modal optimization," "lead capture popup," "email popup," "announcement banner," "overlay," "collect emails with a popup," "exit popup," "scroll trigger," "sticky bar," or "notification bar." Use this for any overlay or interrupt-style conversion element. For forms outside of popups, see cro. For general page conversion optimization, see cro.

    Also in 22 projects that use this

  • CesarjoquinSkill

    co-marketing

    When the user wants to find co-marketing partners, plan joint campaigns, or brainstorm partnership opportunities. Use when the user says 'co-marketing,' 'partner marketing,' 'joint campaign,' 'who should we partner with,' 'integration marketing,' 'cross-promotion,' 'collaborate with another company,' 'partnership ideas,' or 'co-brand.' For customer referral programs, see referrals. For launch-specific partnerships, see launch.

    Also in 24 projects that use this

  • coreyhaines31Skill

    marketing-council

    When the user wants multiple expert perspectives on a marketing question — a simulated board of advisors staffed by legendary marketers (Seth Godin, David Ogilvy, Eugene Schwartz, April Dunford, Rory Sutherland, Alex Hormozi, Byron Sharp, and more). Also use when the user mentions 'marketing council,' 'board of advisors,' 'advisory board,' 'what would Seth Godin say,' 'what would Ogilvy think,' 'channel Hormozi,' 'get multiple perspectives,' 'debate this,' 'have the council review,' 'marketing mentors,' or asks how a famous marketer would approach their problem. The council gives each advisor's take through their documented frameworks, surfaces where they disagree, and synthesizes a recommendation. For executing the winning direction, hand off to positioning, offers, copywriting, ads, or the relevant skill.

    Also in 17 projects that use this

  • ukunal91appSkill

    community-marketing

    Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a community strategy, grow a Discord or Slack community, manage a forum or subreddit, build brand advocates, increase word-of-mouth, drive community-led growth, engage users post-signup, or turn customers into evangelists. Trigger phrases: "build a community," "community strategy," "Discord community," "Slack community," "community-led growth," "brand advocates," "user community," "forum strategy," "community engagement," "grow our community," "ambassador program," "community flywheel.

    Also in 26 projects that use this

  • roerohanSkill

    emails

    When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program. Also use when the user mentions "email sequence," "drip campaign," "nurture sequence," "onboarding emails," "welcome sequence," "re-engagement emails," "email automation," "lifecycle emails," "trigger-based emails," "email funnel," "email workflow," "what emails should I send," "welcome series," or "email cadence." Use this for any multi-email automated flow. For cold outreach emails, see cold-email. For in-app onboarding, see onboarding.

    Also in 19 projects that use this

  • +7 more from Cesarjoquin

The file

We split this skill into the rules it gives an agent

1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 52 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read its cost section before you roll a second take: video is priced per second, and most "can you change one thing" requests are an ffmpeg …

    line 56

“Common” is measured: kept by at least 6 in 10 of the 52 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

video

You can SEE images but not video — so every video task runs on the same loop: probe → extract frames → look at them → act → re-extract → verify → send. ffmpeg/ffprobe are installed; run them with Bash in the sandbox.

Understand a video you received

The envelope usually already carries [video: 0:14 · 1080×1920 · h264+aac · 18 MB — speech: "…"] — duration, size, and what was said. From there:

  1. Probe (if you need more detail): ffprobe -v error -print_format json -show_format -show_streams IN.mov
  2. Look at it — extract a contact sheet of small frames and Read them: mkdir -p frames && ffmpeg -v error -i IN.mov -vf "fps=1/2,scale=300:-1" frames/f_%02d.jpg -y (1 frame every 2s at 300px is cheap; ~8–30 frames covers most clips. For a fast moment use fps=6 over a -ss START -t DUR window.)
  3. Semantic questions ("what's happening", "is this funny", reading on-screen text in motion): analyze_video(file_path, prompt, async:true) — Gemini watches the whole clip with sound.
  4. Speech only: it's usually already in the envelope; otherwise transcribe_audio(file_path) works on video (audio track is extracted automatically; async:true past ~1 min).

Edit a video

Work in the sandbox; keep the original untouched; name outputs for what they are.

  • Trim (frame-accurate, re-encode): ffmpeg -v error -ss 12.5 -to 31.0 -i IN.mov -c:v libx264 -preset veryfast -crf 22 -c:a aac -pix_fmt yuv420p OUT.mp4 (-c copy is faster but cuts land on keyframes — only for rough cuts.)
  • Join clips: re-encode each piece to IDENTICAL codec/size/fps first, then concat. Stream-copy concat of mismatched clips causes smeared/glitchy boundaries — if you see smear at a joint, re-encode the pieces (or use the concat FILTER, not the demuxer).
  • Speed: video -vf "setpts=PTS/2" + audio -af "atempo=2" (0.5–2.0 per atempo stage, chain for more). For slow-mo without judder add minterpolate or accept the source fps.
  • Text/title plate: drawtext=text='RUSH 2026':fontcolor=white:fontsize=64:x=(w-text_w)/2:y=(h-text_h)/2:enable='between(t,0,2.5)' — or render a PNG card and overlay it (fade with format=rgba,fade=...:alpha=1).
  • Audio: normalize speech with -af loudnorm=I=-16:TP=-1.5; duck/replace music by mixing with amix/volume.
  • Captions: burn an .srt with -vf subtitles=subs.srt (write the .srt from the transcript).

Verify EVERY render before calling it done: re-extract a contact sheet of the OUTPUT and look at it — check cut boundaries (grab fps=8 for ±1s around each joint), title timing, and that motion is real (adjacent frames must differ). Bad renders you can catch this way: frozen video, smeared joints, black frames, wrong aspect. Listen-check isn't possible — check loudness stats instead: ffmpeg -i OUT.mp4 -af volumedetect -f null - 2>&1 | grep -E "mean|max".

Send a video

send_attachment(path) — the harness auto-re-encodes anything too heavy or in an iMessage-hostile format (webm/mkv/vp9/av1) to h264+aac mp4 ≤ ~15 MB. Still, prefer exporting deliverable files yourself: -c:v libx264 -crf 23 -pix_fmt yuv420p -c:a aac -movflags +faststart and keep casual clips ≤ 1080p / a couple of minutes. The tool result tells you if a converted copy was sent.

Generate a video from scratch / from a photo

That's the generation skill (generate_video, OpenRouter models) — not this one. Read its cost section before you roll a second take: video is priced per second, and most "can you change one thing" requests are an ffmpeg edit here, not a new render.

Pace yourself honestly

Long renders are fine inline — the session stays locked to you while you're actively working, however long that takes. But the human is waiting: send_message a one-line heads-up ("cutting it now, ~2 min") before a slow multi-render pass, and again if the plan changes. Don't narrate every command.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.