A Claude Code skill for sending verified-working memes/gifs to Slack — manually on demand, or automatically via a scheduled "Random Meme Delivery Bot" cron.
The problem this solves: when you ask an LLM to send a meme, it tends to hallucinate a giphy URL from memory or trust a Tenor URL slug as ground truth. Both fail constantly — broken links, or worse: the slug says "futurama-bender-im-a-robot" but the actual GIF is a woman at a table with a candle. This skill enforces a search → verify → send flow so you never ship a broken or off-topic meme.
- Manual sends — "send a meme to alice" → search Slack for alice → search Tenor → verify the gif content matches the topic → DM with a contextual caption.
- Auto-bot mode — a scheduled remote agent that picks a random coworker (filtered to your org's email domain) and sends them a random verified meme ~2x/week, with explicit "this is an automated AI bot" disclosure in the caption.
- Tenor-first because Tenor URLs are more stable than Giphy and the content is easier to verify via
WebFetch. - Probabilistic gate inside the agent prompt to convert a fixed cron schedule into a feels-random ~1-2x/week delivery cadence.
mkdir -p ~/.claude/skills/send-slack-meme
curl -L https://raw.githubusercontent.com/komen205/send-slack-meme/main/SKILL.md \
-o ~/.claude/skills/send-slack-meme/SKILL.mdThat's it. Claude Code auto-discovers skills in ~/.claude/skills/. Trigger via natural language:
- "send a meme to alice on slack"
- "drop a meme in #random"
- "reply to that thread with a meme"
- "set up an auto-meme bot for my coworkers"
First-run prompt: the very first time you trigger the skill, it will ask whether you want manual only, set up the auto-bot now, or both. Your choice is recorded at ~/.claude/skills/send-slack-meme/.setup-complete and won't be asked again. Re-trigger by deleting that file.
- Slack MCP connector (Anthropic-managed connector) — provides
slack_search_usersandslack_send_message. WebFetch— built into Claude Code.RemoteTrigger(only for the auto-bot) — claude.ai routines, available in Claude Code via the/scheduleskill.
- Resolve recipient →
slack_search_users(query="<name>") - Pick a meme topic that fits the conversation context
WebFetch https://tenor.com/search/<topic>-gifs→ list candidate URLs- Verify content:
WebFetch <candidate>→ check the description actually matches the topic (Tenor slugs lie) - Send with a contextual caption
See SKILL.md for the full flow, common mistakes, and the auto-bot setup.
The auto-bot is a claude.ai routine that runs on a fixed cron, gates with a configurable probability inside the prompt, picks a random user from your org's email domain, picks a random meme topic, verifies the gif via WebFetch, and sends the DM with explicit AI-bot disclosure.
The full prompt template (with {{owner_user_id}}, {{owner_email_domain}}, {{gate_pct}} placeholders) and a reference RemoteTrigger create body are in SKILL.md.
Sensible defaults:
| Cron | Gate % | Expected sends/week |
|---|---|---|
0 14,17,20 * * 1-5 (M-F × 3 slots) |
13% | ~2 |
| Same | 7% | ~1 |
- Always filter recipients to your org domain — "totally random" can include external Slack Connect partners or guest accounts. Don't meme your customers.
- Always disclose in the caption that the message is automated. Otherwise coworkers will think you sent a weird DM manually.
- Drop bots, automation, support, and your own user from the recipient pool.
- Provide an opt-out mechanism (e.g. "ping to opt out").
MIT — see LICENSE.
Issues and PRs welcome. Especially:
- Better default meme topic lists
- Adapters for non-Slack chat platforms (Discord, Teams)
- Improved gif-verification prompts