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]>
47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# 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.
|