agentleFS
krzysztofradomskikrzysztofradomski/skills/gif/SKILL.md

gif

Skill4 starsChanged 2 months agoMITView on GitHub

Make small looping animated GIFs - square 16x16, 32x32, 64x64 or 128x128, transparent or on a solid background, up to 3 seconds. Generates the frames through the delegate skill on plan allowance (free) and assembles them locally, or assembles frames and sprite sheets you already have. Use when the user asks for a GIF, an animated icon, sprite, loader, spinner, emoji, favicon, pixel-art animation, or wants stills turned into a looping animation.

  • In this repository2 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Not N separate calls: image quota is small and daily, and a model that draws every frame in one picture keeps the subject consistent, while …

    line 44
  2. Very specific:

    Ask before --paid. The free paths cost nothing.

    line 63

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

GIF

Two steps, and only the first one costs anything: generate frames with delegate.sh image (Antigravity or Codex plan allowance, free), then assemble them locally with gif.sh, which owns everything the GIF format constrains — 1-bit alpha, 10ms delay quantum, one shared palette, frame disposal.

Quick start

gif.sh make "a coin spinning end over end" coin.gif        # 32x32, transparent, 1s, loops forever
gif.sh make "a bouncing ball" ball.gif --size 64 --duration 2 --frames 12
gif.sh make "a loading spinner" spin.gif --bg '#111827'    # opaque instead of transparent
gif.sh frames out.gif ./my-frames --size 128               # frames you already have (dir or files)
gif.sh sheet sprites.png out.gif --cols 6                  # slice an existing sprite sheet
gif.sh probe out.gif                                       # what the file actually contains
gif.sh check                                               # dependencies

Defaults: 32x32, transparent, 1.0s, 8 frames, loops forever. Sizes are restricted to 16 / 32 / 64 / 128 and duration to 3s; both fail loudly rather than silently rounding.

FlagDefault
--size 16|32|64|12832square, no other sizes
--frames N8one image call either way — they come from one sprite sheet
--duration SEC1max 3
--loop N00 = forever, N = that many times
--opaque / --bg COLORtransparent--bg implies opaque
--colors N64palette size, 2–256
--style "..."pixel artreplaces the style sentence in the prompt
--keep-frames DIR—keep the sheet and cut frames to inspect or re-cut
--matte COLOR|none, --fuzz PCT#FF00FF, 18backdrop keyed out to transparency
--no-trim, --filter, --per-frame, --paidsee REFERENCE.md

How the frames are made

One image call produces a horizontal sprite sheet of all N frames, which gif.sh then cuts up. Not N separate calls: image quota is small and daily, and a model that draws every frame in one picture keeps the subject consistent, while one asked for "frame 3 of 8" redraws it from scratch. --per-frame exists for the rare case where a sheet fails, and is worse at consistency.

The model cannot output transparency, so the prompt asks for a flat magenta #FF00FF backdrop and gif.sh keys it out. That is why a magenta subject needs --matte changed to another color.

Working with it

Look at the result before reporting it done. gif.sh probe prints size, frame count, real duration, loop flag and whether transparency survived; that catches a broken file, not a bad animation. For the animation itself, view the frames — pass --keep-frames and read the PNGs.

The sheet is the part that fails. A model may draw 7 frames instead of 8, or pad the row unevenly, and the cut then lands mid-subject. gif.sh warns when the sheet aspect ratio is far from what the frame count implies, but it cannot see misalignment — you can. When it happens: re-cut the kept sheet with gif.sh sheet sheet.png out.gif --cols <what the sheet actually has> rather than regenerating and spending quota again.

Ask before --paid. The free paths cost nothing; OpenRouter spends real credit.

Detail on the pipeline, the tiny-size rules and every failure mode is in REFERENCE.md. Needs python3 + Pillow, and delegate.sh on PATH for generation (assembling your own frames does not need it).

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.