Files
Steve DudenhoefferandClaude Opus 4.8 fae89a1ed0 feat(gif): animated GIF/MP4 skill pack for Discord
Adapts mort's builtin animate skill into an executus/skillpack:
- plans scenes + a reusable cast so recurring people/props stay consistent
  (built for funny bits 'about ourselves'), incl. multi-minute pieces
- bundled scripts/encode.py owns the fragile encode + format decision: GIF for
  short loops, H.264 MP4 (yuv420p, even dims, +faststart — plays inline in
  Discord) for long pieces OR when a GIF comes out too big, with a
  gifski→ffmpeg-palette fallback
- keeps the workspace discipline, text-readability pacing, and <=3-pass vision
  self-critique from the original; adds a frame budget for long renders

encode.py verified end-to-end (short->gif, long->mp4 confirmed h264/yuv420p/
even/faststart); SKILL.md parses cleanly via the executus skillpack loader.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-04 23:06:25 -04:00

1.9 KiB

executus-skills

Skill packs for executus harnesses (mort, gadfly, …), in the SKILL.md "agent-skills" format. Each pack is its own subfolder with a SKILL.md manifest plus any bundled helper files.

executus-skills/
  gif/
    SKILL.md          # instructions the agent loads on demand
    scripts/encode.py # bundled helper the agent runs in its sandbox

Packs

  • gif — make a funny animated GIF or MP4 for Discord from a description. Plans scenes, keeps recurring people/props consistent via a reusable cast, renders frames in Python, and lets a bundled encode.py pick the format: a GIF for short loops, or an H.264 MP4 (that Discord plays inline) for long bits or when a GIF comes out too big. Adapted from mort's builtin animate skill. Handles multi-minute pieces.

Using a pack from mort

Each subfolder is a separate subscription (pinned by content digest):

.set skillpacks.enabled true                       # then restart mort (boot-read)
.set skillpacks.allowed_sources git:https://gitea.stevedudenhoeffer.com/steve/
.skillpack subscribe git https://gitea.stevedudenhoeffer.com/steve/executus-skills subpath=gif ref=main

Then attach the pack to an agent that already has the tools the pack uses (the pack supplies instructions, not tools). For gif, the agent needs code_exec, image_describe, send_attachments, file_get_metadata, and think in its toolset, a generous max_runtime with critic_enabled: true (long renders run for minutes), and a sandbox image with ffmpeg (plus gifski/gifsicle for nicer GIFs). Add it in the agent's YAML:

low_level_tools: [code_exec, image_describe, send_attachments, file_get_metadata, think]
skill_packs: [gif]

When the pack is updated upstream, .skillpack check reports it and .skillpack apply gif re-pins — nothing an agent runs changes until you apply.