---
name: pixel-gif-maker
description: "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 PIL, no dependencies, byte-exact deterministic). Use when someone wants a celebration GIF, a 'ship it' GIF, a custom Slack GIF, a launch-day animation, or to make a team win feel like one. Produces a ready-to-drag .gif file."
homepage: https://mohitagw15856.github.io/pm-claude-skills/skill/pixel-gif-maker.html
metadata:
  {
    "openclaw": { "emoji": "🧠" }
  }
---

# Pixel GIF Maker Skill

The most-reacted message in any Slack channel is never the status update — it's the
GIF. This skill makes custom ones in a retro pixel style: your words, four
animations, eight colors, and a file small enough to drag anywhere. The whole
encoder is a bundled pure-stdlib Python script — this library's calculators are
dependency-free and deterministic, and so is its confetti.

## What This Skill Produces

- A `.gif` file (GIF89a, looping) with the user's text in chunky 5×7 pixel type
- One of four animations: **scroll** (marquee), **pulse** (heartbeat zoom),
  **party** (hue-cycling text + confetti), **sparkle** (twinkling stars)
- Sized for chat: typically 10–60KB, well under any upload limit

## Required Inputs

Ask for (if not already provided):
- The text — **under 24 characters**; pixel fonts are for punchlines
  ("SHIP IT", "1000 STARS", "GG TEAM", "V63 IS LIVE"). Type `*` for a ♥.
- The mood → mode: victory lap = `party` · announcement = `scroll` ·
  emphasis = `pulse` · appreciation = `sparkle`
- Optional: colors (`night, plum, teal, mint, gold, coral, white, ink, violet`)
  and `--scale 1-4` (default 3)

## Process

1. Run the bundled script — no installs, Python 3 stdlib only:
   ```bash
   python3 scripts/pixel_gif.py --text "SHIP IT" --mode party --out shipit.gif
   python3 scripts/pixel_gif.py --text "GG TEAM *" --mode sparkle --fg gold --bg night --out gg.gif
   python3 scripts/pixel_gif.py --self-test    # verify all four modes, print hashes
   ```
2. Uppercase renders best (the font is A–Z, 0–9, and common punctuation; unknown
   characters become `?` — warn the user rather than surprise them).
3. Same arguments + same `--seed` → byte-identical file; change `--seed` to
   reshuffle confetti/star positions.
4. Hand back the file path and one line on which mode was chosen and why.

## Output Format

The `.gif` itself, plus:

```
🎉 shipit.gif — 159×57, 10 frames, party mode (confetti for a launch).
Drag it into Slack. Want it calmer (sparkle) or bigger (--scale 4)?
```

## Quality Checks

- [ ] Text length checked BEFORE generating — over 24 characters, ask them to cut
      (offer the punchline edit: "SHIPPED THE MIGRATION" → "SHIPPED IT")
- [ ] Mode matches the moment — a layoff-week channel does not get confetti;
      when in doubt, sparkle
- [ ] Script ran without error and the reported file size is under ~200KB
- [ ] Any character outside the font set was flagged to the user, not silently
      turned into `?`

## Anti-Patterns

- [ ] Do not reach for image libraries or external services — the point of the
      bundled encoder is zero dependencies and deterministic output
- [ ] Do not generate GIFs containing colleagues' names in mocking contexts —
      celebration tool, not a roast tool; decline and suggest the kind version
- [ ] Do not cram sentences in — if the user insists past 24 characters, use
      scroll mode and say why
- [ ] Do not promise Slack emoji-size rendering — this makes message GIFs;
      custom emoji have their own size rules the user handles in Slack settings
