Skip to content

Slack Gif Creator

Anthropic skill that generates Slack-optimized animated GIFs using PIL — enforces size, color, and duration limits and provides easing plus validation helpers.

What it does

Activates when a user asks Claude to produce an animated GIF for Slack, either as a custom emoji (128x128) or an inline message GIF (480x480). It loads a Python toolkit built on Pillow that draws frames from primitives, applies easing functions for natural motion, assembles them via a GIFBuilder, and runs a validator that checks Slack’s dimension, color-count, and file-size constraints. Best fit when you want a one-off, custom animation generated on demand rather than sourced from a GIF library.

Use cases

  • Design a custom Slack emoji — describe a concept like “party parrot but a hedgehog” and Claude draws frames with PIL primitives, keeps the output at 128x128 with 48 colors, and verifies it passes Slack’s emoji validator before returning the file.
  • Animate a team milestone reaction — request a bouncing trophy or confetti burst at 480x480 for a channel message, using the built-in easing helpers (bounce_out, back_out) for motion that doesn’t look mechanical.
  • Turn an uploaded logo into a spinning or pulsing emoji — attach a PNG and ask Claude to loop it as a Slack-ready GIF, letting the skill handle rotation, alpha blending, and color-palette reduction.

When to use it

  • You need a GIF sized and encoded specifically for Slack (emoji or message) without hand-tuning FFmpeg or gifsicle flags.
  • You want vector-style animations drawn from shapes — circles, stars, particles — rather than raster video conversion.
  • You want automatic validation that the output actually meets Slack’s upload limits before you try it.

When NOT to use it

  • You need to convert an existing video clip (MP4, MOV) to a GIF — this skill draws frames, it doesn’t transcode video.
  • You want photorealistic or AI-generated imagery; the toolkit renders with PIL primitives, not a diffusion model.
  • You need text-heavy GIFs with custom fonts or emoji glyphs — font rendering across platforms is explicitly out of scope.
  • You want a large library of pre-made templates; the skill provides building blocks, not finished designs.

Installation

Install in Claude Code

/plugin install slack-gif-creator@anthropic-agent-skills

If you haven’t added the Anthropic marketplace yet, run this first:

Add Marketplace

/plugin marketplace add anthropics/skills

After install, just mention it in conversation:

Prompt

Make me a 128x128 Slack emoji GIF of a coffee cup pulsing with steam rising above it.

Troubleshooting

The generated GIF exceeds Slack’s emoji size limit (128 KB). Re-run with more aggressive optimization: pass num_colors=48, optimize_for_emoji=True, and remove_duplicates=True to GIFBuilder.save(). If it still fails, drop the FPS from 20 to 10 or shorten the animation to under 2 seconds. The validate_gif() helper reports which specific limit was breached.

Lines and shapes look choppy or amateurish. Always set width=2 or higher on ImageDraw outline calls — width=1 aliases badly at 128x128. Layer shapes (a star with a smaller star inside, a circle with a highlight arc) and use create_gradient_background instead of a flat fill for more depth.

Motion feels robotic and linear. Replace manual position math with interpolate(start, end, t, easing='ease_out') from core.easing. For bouncing objects use bounce_out; for overshoot/settle motion use back_out. Linear motion almost never looks right in a short loop.

Import errors when running the generated script. Install the required Python dependencies in the environment Claude is executing in: pip install pillow imageio numpy. The skill assumes these are available and won’t install them automatically.