Official agent skill

Slack GIF Creator

by anthropics in anthropics/skills

Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages.

OfficialApache-2.0Auto-check passedMedia & Creative

Install Slack GIF Creator

skills CLI
$ npx skills add anthropics/skills --skill slack-gif-creator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install anthropics/skills slack-gif-creator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/slack-gif-creator .claude/skills/slack-gif-creator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
slack-gif-creator
GitHub stars
180k
Used in
29 other repos
Token cost
~2k tokens
SKILL.md length
687 words
Files
7
Skills in repo
16
Repo updated
First seen
Licence
Apache-2.0

At a glance

Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages.

  • Works in 5 steps: Fewer frames - Lower FPS (10 instead of… → Fewer colors - num_colors=48 instead of… → Smaller dimensions - 128x128 instead of… → …
  • Making a custom animated emoji for a Slack workspace
  • SKILL.md covers Slack Requirements, Core Workflow, Drawing Graphics and Available Utilities, plus 4 more sections
  • Runs Python scripts from its folder; calls pip

What it does

The skill states Slack's constraints: emoji GIFs at 128x128 are recommended and message GIFs at 480x480, with 10 to 30 frames per second and 48 to 128 colors, and emoji GIFs kept under 3 seconds, since a lower frame rate and fewer colors make smaller files. Frames are drawn with Pillow, either from a user's uploaded image, where the agent first works out whether to animate it directly or use it as inspiration, or from scratch with ImageDraw primitives.

Its design advice is to avoid emoji fonts and assumed pre-packaged graphics, use lines of width 2 or more, add depth with gradient backgrounds and layered shapes, add highlights and glows, use vibrant contrasting colors, and build complex shapes from polygons and ellipses. The Python core has a GIFBuilder in gif_builder that assembles frames and optimizes for Slack, plus easing, frame_composer and validators modules and a requirements.txt.

When your agent uses it

  • Making a custom animated emoji for a Slack workspace
  • Building a short animated GIF to post in a Slack message
  • Checking that a GIF fits Slack's size and duration limits
  • Animating an uploaded image for Slack

Example prompts

  • “Make me a GIF of a cat juggling stars for Slack.”
  • “Turn this logo into a 128x128 pulsing emoji GIF.”
  • “Check whether this GIF meets Slack's emoji requirements and shrink it if it does not.”

Requirements

  • Python with Pillow and the packages in requirements.txt

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Fewer frames - Lower FPS (10 instead of 20) or shorter duration
  2. Fewer colors - num_colors=48 instead of 128
  3. Smaller dimensions - 128x128 instead of 480x480
  4. Remove duplicates - remove_duplicates=True in save()
  5. Emoji mode - optimize_for_emoji=True auto-optimizes

What it can do on your machine

Read from SKILL.md and the folder at commit dbd4588. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Slack GIF Creator loads about 2k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 687 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~61
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from anthropics/skills at commit dbd4588, republished under its Apache-2.0 licence (© anthropics). 687 words, ~1,961 tokens.

Download SKILL.mdSave it as .claude/skills/slack-gif-creator/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
slack-gif-creator
description
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."
license
Complete terms in LICENSE.txt

Slack GIF Creator

A toolkit providing utilities and knowledge for creating animated GIFs optimized for Slack.

Slack Requirements

Dimensions:

  • Emoji GIFs: 128x128 (recommended)
  • Message GIFs: 480x480

Parameters:

  • FPS: 10-30 (lower is smaller file size)
  • Colors: 48-128 (fewer = smaller file size)
  • Duration: Keep under 3 seconds for emoji GIFs

Core Workflow

python
from core.gif_builder import GIFBuilder
from PIL import Image, ImageDraw

# 1. Create builder
builder = GIFBuilder(width=128, height=128, fps=10)

# 2. Generate frames
for i in range(12):
    frame = Image.new('RGB', (128, 128), (240, 248, 255))
    draw = ImageDraw.Draw(frame)

    # Draw your animation using PIL primitives
    # (circles, polygons, lines, etc.)

    builder.add_frame(frame)

# 3. Save with optimization
builder.save('output.gif', num_colors=48, optimize_for_emoji=True)

Drawing Graphics

Working with User-Uploaded Images

If a user uploads an image, consider whether they want to:

  • Use it directly (e.g., "animate this", "split this into frames")
  • Use it as inspiration (e.g., "make something like this")

Load and work with images using PIL:

python
from PIL import Image

uploaded = Image.open('file.png')
# Use directly, or just as reference for colors/style
Drawing from Scratch

When drawing graphics from scratch, use PIL ImageDraw primitives:

python
from PIL import ImageDraw

draw = ImageDraw.Draw(frame)

# Circles/ovals
draw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)

# Stars, triangles, any polygon
points = [(x1, y1), (x2, y2), (x3, y3), ...]
draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)

# Lines
draw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)

# Rectangles
draw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)

Don't use: Emoji fonts (unreliable across platforms) or assume pre-packaged graphics exist in this skill.

Making Graphics Look Good

Graphics should look polished and creative, not basic. Here's how:

Use thicker lines - Always set width=2 or higher for outlines and lines. Thin lines (width=1) look choppy and amateurish.

Add visual depth:

  • Use gradients for backgrounds (create_gradient_background)
  • Layer multiple shapes for complexity (e.g., a star with a smaller star inside)

Make shapes more interesting:

  • Don't just draw a plain circle - add highlights, rings, or patterns
  • Stars can have glows (draw larger, semi-transparent versions behind)
  • Combine multiple shapes (stars + sparkles, circles + rings)

Pay attention to colors:

  • Use vibrant, complementary colors
  • Add contrast (dark outlines on light shapes, light outlines on dark shapes)
  • Consider the overall composition

For complex shapes (hearts, snowflakes, etc.):

  • Use combinations of polygons and ellipses
  • Calculate points carefully for symmetry
  • Add details (a heart can have a highlight curve, snowflakes have intricate branches)

Be creative and detailed! A good Slack GIF should look polished, not like placeholder graphics.

Available Utilities

GIFBuilder (core.gif_builder)

Assembles frames and optimizes for Slack:

python
builder = GIFBuilder(width=128, height=128, fps=10)
builder.add_frame(frame)  # Add PIL Image
builder.add_frames(frames)  # Add list of frames
builder.save('out.gif', num_colors=48, optimize_for_emoji=True, remove_duplicates=True)
Validators (core.validators)

Check if GIF meets Slack requirements:

python
from core.validators import validate_gif, is_slack_ready

# Detailed validation
passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)

# Quick check
if is_slack_ready('my.gif'):
    print("Ready!")
Easing Functions (core.easing)

Smooth motion instead of linear:

python
from core.easing import interpolate

# Progress from 0.0 to 1.0
t = i / (num_frames - 1)

# Apply easing
y = interpolate(start=0, end=400, t=t, easing='ease_out')

# Available: linear, ease_in, ease_out, ease_in_out,
#           bounce_out, elastic_out, back_out
Frame Helpers (core.frame_composer)

Convenience functions for common needs:

python
from core.frame_composer import (
    create_blank_frame,         # Solid color background
    create_gradient_background,  # Vertical gradient
    draw_circle,                # Helper for circles
    draw_text,                  # Simple text rendering
    draw_star                   # 5-pointed star
)

Animation Concepts

Shake/Vibrate

Offset object position with oscillation:

  • Use math.sin() or math.cos() with frame index
  • Add small random variations for natural feel
  • Apply to x and/or y position
Pulse/Heartbeat

Scale object size rhythmically:

  • Use math.sin(t * frequency * 2 * math.pi) for smooth pulse
  • For heartbeat: two quick pulses then pause (adjust sine wave)
  • Scale between 0.8 and 1.2 of base size
Bounce

Object falls and bounces:

  • Use interpolate() with easing='bounce_out' for landing
  • Use easing='ease_in' for falling (accelerating)
  • Apply gravity by increasing y velocity each frame
Spin/Rotate

Rotate object around center:

  • PIL: image.rotate(angle, resample=Image.BICUBIC)
  • For wobble: use sine wave for angle instead of linear
Show full SKILL.md (278 more words)Show less
Fade In/Out

Gradually appear or disappear:

  • Create RGBA image, adjust alpha channel
  • Or use Image.blend(image1, image2, alpha)
  • Fade in: alpha from 0 to 1
  • Fade out: alpha from 1 to 0
Slide

Move object from off-screen to position:

  • Start position: outside frame bounds
  • End position: target location
  • Use interpolate() with easing='ease_out' for smooth stop
  • For overshoot: use easing='back_out'
Zoom

Scale and position for zoom effect:

  • Zoom in: scale from 0.1 to 2.0, crop center
  • Zoom out: scale from 2.0 to 1.0
  • Can add motion blur for drama (PIL filter)
Explode/Particle Burst

Create particles radiating outward:

  • Generate particles with random angles and velocities
  • Update each particle: x += vx, y += vy
  • Add gravity: vy += gravity_constant
  • Fade out particles over time (reduce alpha)

Optimization Strategies

Only when asked to make the file size smaller, implement a few of the following methods:

  1. Fewer frames - Lower FPS (10 instead of 20) or shorter duration
  2. Fewer colors - num_colors=48 instead of 128
  3. Smaller dimensions - 128x128 instead of 480x480
  4. Remove duplicates - remove_duplicates=True in save()
  5. Emoji mode - optimize_for_emoji=True auto-optimizes
python
# Maximum optimization for emoji
builder.save(
    'emoji.gif',
    num_colors=48,
    optimize_for_emoji=True,
    remove_duplicates=True
)

Philosophy

This skill provides:

  • Knowledge: Slack's requirements and animation concepts
  • Utilities: GIFBuilder, validators, easing functions
  • Flexibility: Create the animation logic using PIL primitives

It does NOT provide:

  • Rigid animation templates or pre-made functions
  • Emoji font rendering (unreliable across platforms)
  • A library of pre-packaged graphics built into the skill

Note on user uploads: This skill doesn't include pre-built graphics, but if a user uploads an image, use PIL to load and work with it - interpret based on their request whether they want it used directly or just as inspiration.

Be creative! Combine concepts (bouncing + rotating, pulsing + sliding, etc.) and use PIL's full capabilities.

Dependencies

bash
pip install pillow imageio numpy

© anthropics, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files in skills/slack-gif-creator of anthropics/skills.

  • SKILL.md
  • LICENSE.txt
  • core/easing.py
  • core/frame_composer.py
  • core/gif_builder.py
  • core/validators.py
  • requirements.txt

Open the folder on GitHubat commit dbd4588

Used in 29 other repositories

We found 40 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 29 other GitHub owners. This page covers the copy in anthropics/skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Slack GIF Creator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Slack GIF Creator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Slack GIF Creator this skillanthropics/skills180k29 repos~2kAutomated safety check: PassApache-2.0
Pixel Gif Makermohitagw15856/pm-claude-skills1.4k—~937Automated safety check: PassMIT
Visual Flow GifAI-Builder-Club/skills1.3k—~845Automated safety check: PassNone
Graphic GifVarnan-Tech/opendirectory674—~3kAutomated safety check: PassMIT
AnalyzeKumarSashank/motiscope122—~3.1kAutomated safety check: NotesMIT
Scenario Blender Grease Pencilscenario-labs/skills946—~4.5kAutomated safety check: PassMIT

Similar skills

  • Pixel Gif Maker

    mohitagw15856/pm-claude-skills

    Generate retro pixel-text animated GIFs for Slack, Teams, or a PR comment — scrolling marquees, heartbeat pulses, confetti parties, twinkling sparkles — from a bundled pure-stdlib Python script (no…

    1.4k GitHub stars~937 tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Visual Flow Gif

    AI-Builder-Club/skills

    Create animated flow diagrams from articles, workflow notes, architecture sketches, or process descriptions using a JSON specification and a local Python/Pillow renderer.

    1.3k GitHub stars~845 tokensUpdated 25 days ago
    Media & CreativeAuto-check passed
  • Graphic Gif

    Varnan-Tech/opendirectory

    Creates animated looping GIFs from CSS animations (default) or AI image-to-video.

    674 GitHub stars~3k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Analyze

    KumarSashank/motiscope

    Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code.

    122 GitHub stars~3.1k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Scenario Blender Grease Pencil

    scenario-labs/skills

    A skill your agent uses when drawing or animating with Grease Pencil in Blender 5.x from Python: 2D or 2.5D illustration, frame-by-frame animation, a cutout or part-based 2D character, strokes with…

    946 GitHub stars~4.5k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Manim Video

    HybridAIOne/hybridclaw

    Plan, script, render, and stitch Manim Community Edition videos in Python.

    159 GitHub stars~4.7k tokensUpdated today
    Media & CreativeAuto-check: notes

More from anthropics/skills

All 16 skills in this repo
  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Auto-check passed
  • PDF Processing

    anthropics/skills

    Official

    Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.

    180k GitHub starsUsed in 47 repos~2k tokens
    Auto-check passed
  • Web Artifacts Builder

    anthropics/skills

    Official

    Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.

    180k GitHub starsUsed in 40 repos~769 tokens
    Auto-check passed
  • Official

    Creates original generative art in two steps: a written algorithmic philosophy, then a p5.js sketch with seeded randomness and an interactive viewer for exploring parameters.

    180k GitHub starsUsed in 38 repos~4.9k tokens
    Auto-check passed
  • Canvas Design

    anthropics/skills

    Official

    Creates original posters and static art as PNG or PDF by first writing a short design philosophy, then expressing it visually on a canvas.

    180k GitHub starsUsed in 52 repos~3k tokens
    Auto-check passed
  • DOCX Creation and Editing

    anthropics/skills

    Official

    Creates, edits and reviews Word documents: new files with docx-js, edits through the underlying XML, plus tracked changes, comments and conversions.

    180k GitHub starsUsed in 5 repos~1.7k tokens
    Auto-check passed

Works with

Questions about Slack GIF Creator

What does Slack GIF Creator do?

Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages. The skill states Slack's constraints: emoji GIFs at 128x128 are recommended and message GIFs at 480x480, with 10 to 30 frames per second and 48 to 128 colors, and emoji GIFs kept under 3 seconds, since a lower frame rate and fewer colors make smaller files. Frames are drawn with Pillow, either from a user's uploaded image, where the agent first works out whether to animate it directly or use it as inspiration, or from scratch with ImageDraw primitives.

When should I use Slack GIF Creator?

Slack GIF Creator fits situations like: making a custom animated emoji for a Slack workspace; building a short animated GIF to post in a Slack message; checking that a GIF fits Slack's size and duration limits; animating an uploaded image for Slack.

How do I install Slack GIF Creator in Claude Code?

Run `npx skills add anthropics/skills --skill slack-gif-creator -a claude-code`. Or copy the skill folder (skills/slack-gif-creator in anthropics/skills) into .claude/skills/slack-gif-creator in your project. Claude Code loads it when a task matches its description.

How do I install Slack GIF Creator in Codex?

Run `npx skills add anthropics/skills --skill slack-gif-creator -a codex`. Or copy the skill folder (skills/slack-gif-creator in anthropics/skills) into .agents/skills/slack-gif-creator in your project. Codex loads it when a task matches its description.

Can I use Slack GIF Creator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add anthropics/skills --skill slack-gif-creator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/slack-gif-creator, .gemini/skills/slack-gif-creator, .github/skills/slack-gif-creator and .opencode/skills/slack-gif-creator in your project.

What does Slack GIF Creator need to run?

Going by SKILL.md and its folder, Slack GIF Creator needs Python for the scripts in its folder and the command-line tools its instructions call (pip). Our summary lists: Python with Pillow and the packages in requirements.txt.

Does Slack GIF Creator access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Slack GIF Creator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Slack GIF Creator use?

Slack GIF Creator is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Slack GIF Creator use?

About 2k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Slack GIF Creator?

Skills that share tags, products or a category with Slack GIF Creator: Pixel Gif Maker (mohitagw15856/pm-claude-skills, 1.4k stars), Visual Flow Gif (AI-Builder-Club/skills, 1.3k stars), Graphic Gif (Varnan-Tech/opendirectory, 674 stars) and Analyze (KumarSashank/motiscope, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Slack GIF Creator?

anthropics (a GitHub organization, an official publisher) maintains it in anthropics/skills, which has 180,214 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 9, 2026.

Source: anthropics/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.