npx skills add ...
npx skills add composiohq/awesome-claude-skills --skill slack-gif-creator
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
npx skills add composiohq/awesome-claude-skills --skill slack-gif-creator
A toolkit for creating animated GIFs optimized for Slack. Provides validators for Slack's constraints, composable animation primitives, and optional helper utilities. Apply these tools however needed to achieve the creative vision.
Slack has specific requirements for GIFs based on their use:
Message GIFs:
Emoji GIFs:
Emoji GIFs are challenging - the 64KB limit is strict. Strategies that help:
This skill provides three types of tools:
Complete creative freedom is available in how these tools are applied.
To ensure a GIF meets Slack's constraints, use these validators:
File size validator:
Dimension validator:
Complete validation:
These are composable building blocks for motion. Apply these to any object in any combination:
To compose primitives freely, follow these patterns:
These are optional helpers for common needs. Use, modify, or replace these with custom implementations as needed.
Key features:
For small GIFs like emojis, text readability is challenging. A common solution involves adding outlines:
To implement custom text rendering, use PIL's ImageDraw.text() which works fine for larger GIFs.
Professional-looking GIFs often use cohesive color palettes:
To work with colors directly, use RGB tuples - whatever works for the use case.
Optional effects for impact moments:
Smooth motion uses easing instead of linear interpolation:
Available easings: linear, ease_in, ease_out, ease_in_out, bounce_out, elastic_out, back_out (overshoot), and more in core/easing.py.
Basic drawing utilities if you need them:
When your GIF is too large:
For Message GIFs (>2MB):
For Emoji GIFs (>64KB) - be aggressive:
optimize_for_emoji=True in save methodThis toolkit provides building blocks, not rigid recipes. To work with a GIF request:
The goal is creative freedom within Slack's technical constraints.
To use this toolkit, install these dependencies only if they aren't already present: