# executus-skills Skill packs for [executus](https://gitea.stevedudenhoeffer.com/steve/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: ```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.