Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add thewolffish/wolffish-app --skill memesgit clone --depth 1 https://github.com/thewolffish/wolffish-appWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/thewolffish/wolffish-app/memes)<a href="https://agentmods.dev/skills/thewolffish/wolffish-app/memes"><img src="https://agentmods.dev/badge/skills/thewolffish/wolffish-app/memes/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/thewolffish/wolffish-app/memes"><img src="https://agentmods.dev/badge/skills/thewolffish/wolffish-app/memes.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00030 | $0.02196 |
| Opus 5 | $0.00015 | $0.01098 |
| Sonnet 5 | $0.00006 | $0.00439 |
| Haiku 4.5 | $0.00003 | $0.00220 |
Grade A, and why
memes scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 201 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Memes
When to meme
Proactively (sparingly): If the user seems frustrated, stressed, or the conversation naturally calls for humor — include a relevant meme. Once per conversation at most unless the user asks for more.
On request: When the user explicitly asks for a meme, says "send me a meme", "make a meme about X", "I need a laugh", "cheer me up", etc.
When NOT to meme: Don't send memes during genuinely serious issues, focused deep-work sessions, or when the tone is clearly not playful.
Picking a provider
- Giphy — preferred first choice. If a Giphy API key is configured, search for a relevant GIF before generating a captioned meme. Giphy results are fast, expressive, and usually land better than generated text memes. Use
gif_searchwith a descriptive query matching the mood or topic. - memegen.link — fallback for captioned memes. Use when Giphy has no good match, the user explicitly asks for a captioned/template meme, or no Giphy API key is configured.
- Imgflip — only if the user has configured credentials AND specifically asks for it. Its library is just ~100 popular templates with no real search, so
meme_templateswithprovider: imgflipoften comes back empty — drop the provider to search memegen instead.
One rule that prevents wasted calls: never mix provider and id. The id from meme_templates already carries its provider (slug = memegen, all-numeric = Imgflip). Pass that id straight to meme_generate and leave provider off — meme_generate routes by the id. Don't take a memegen slug like db and call it with provider: imgflip; that combination is what used to fail.
Popular templates and when to use them
| Template ID | Name | When to use |
|---|---|---|
drake |
Drake Hotline Bling | Preferring one thing over another |
distracted-boyfriend |
Distracted Boyfriend | Being tempted by something new |
this-is-fine |
This Is Fine | Everything is on fire but you're pretending it's okay |
change-my-mind |
Change My Mind | Hot takes, controversial opinions |
uno-draw-25 |
UNO Draw 25 | Refusing to do something obvious |
always-has-been |
Always Has Been | Realizations about how things have always been |
expanding-brain |
Expanding Brain | Escalating levels of an idea (use 4 lines) |
panik-kalm-panik |
Panik Kalm Panik | Alternating emotions (use 3 lines) |
buzz |
Buzz Lightyear | "X, X everywhere" |
fry |
Futurama Fry | "Not sure if X or Y" |
success |
Success Kid | Celebrating a small win |
rollsafe |
Roll Safe | Clever but questionable logic |
picard-facepalm |
Picard Facepalm | Disappointment, disbelief |
doge |
Doge | Such X, much Y, very Z |
bad-luck-brian |
Bad Luck Brian | When something goes hilariously wrong |
one-does-not-simply |
One Does Not Simply | When something is harder than expected |
batman-slapping-robin |
Batman Slapping Robin | Shutting down a bad idea |
two-buttons |
Two Buttons | Choosing between two options |
afraid-to-ask |
Afraid to Ask Andy | Too embarrassed to admit ignorance |
disaster-girl |
Disaster Girl | Mischievous chaos |
aliens |
Ancient Aliens | Attributing everything to one cause |
woman-yelling-at-cat |
Woman Yelling at Cat | Heated disagreement with a calm counterpoint |
bernie-sitting |
Bernie Sitting | Showing up unexpectedly |
surprised-pikachu |
Surprised Pikachu | Predictable outcome that still surprises |
is-this-a-pigeon |
Is This a Pigeon | Misidentifying something completely |
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 201 lines · 30 tokens per session scan A 29d8e7d0fe80
memes is a skill published in the GitHub repository thewolffish/wolffish-app (5 stars, last pushed 2d ago), licensed MIT. It adds 30 tokens to every session and 2,196 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
make-viral-video
Build a short news-explainer video tuned for shareability. One striking moment per video; real fetched assets; self-heal validation; pluggable TTS (Gemini-free default, OpenAI fallback).
image-generation
Generate and edit images using Gemini Flash Image, and generate videos using Veo. Supports text-to-image, image editing, text-to-video, and image-to-video.
gemini-tts
Render text to mp3 via Google Gemini Flash TTS. Free-tier eligible (1500 req/day). Use for video narration, demo voiceovers, audio notes. Parallels openai-tts; default for make-viral-video.
audio-transcribe
Transcribes audio files and voice notes to text via Gemini 2.5-flash. Integrates with Slack, Discord, and Telegram bridges so voice clips surface as readable text in tasks.
screen-record
Start or stop a screen recording of the Mac via ffmpeg. Use when the user asks to record/capture their screen to a video file (a demo, a repro, a walkthrough) — not for a single still screenshot (use macos-tools screen capture for that).
openai-tts
Render text to mp3 via OpenAI's tts-1-hd. Use for video narration, demo voiceovers, audio notes.