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.