Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create meme PNGs from templates with Pillow text overlay.
.claude/skills/nousresearch-meme-generation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 95% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 163% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -1% | 0% |
Generate actual meme images from a topic. Picks a template, writes captions, and renders a real .png file with text overlay.
The script supports any of the ~100 popular imgflip templates by name or ID, plus 10 curated templates with hand-tuned text positioning.
| ID | Name | Fields | Best for | |----|------|--------|----------| | this-is-fine | This is Fine | top, bottom | chaos, denial | | drake | Drake Hotline Bling | reject, approve | rejecting/preferring | | distracted-boyfriend | Distracted Boyfriend | distraction, current, person | temptation, shifting priorities | | two-buttons | Two Buttons | left, right, person | impossible choice | | expanding-brain | Expanding Brain | 4 levels | escalating irony | | change-my-mind | Change My Mind | statement | hot takes | | woman-yelling-at-cat | Woman Yelling at Cat | woman, cat | arguments | | one-does-not-simply | One Does Not Simply | top, bottom | deceptively hard things | | grus-plan | Gru's Plan | step1-3, realization | plans that backfire | | batman-slapping-robin | Batman Slapping Robin | robin, batman | shutting down bad ideas |
Any template not in the curated list can be used by name or imgflip ID. These get smart default text positioning (top/bottom for 2-field, evenly spaced for 3+). Search with:
bashpython "$SKILL_DIR/scripts/generate_meme.py" --search "disaster"
--search. SKILL_DIR=$(dirname "$(find ~/.hermes/skills -path '*/meme-generation/SKILL.md' 2>/dev/null | head -1)")
bash python "$SKILL_DIR/scripts/generate_meme.py" <template_id> /tmp/meme.png "caption 1" "caption 2" ...
MEDIA:/tmp/meme.pngUse this when no classic template fits, or when the user wants something original.
image_generate to create a scene that matches the meme concept. Do NOT include any text in the image prompt — text will be added by the script. Describe only the visual scene.--image to overlay text, choosing a mode:bash python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png /tmp/meme.png "top text" "bottom text"
bash python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png --bars /tmp/meme.png "top text" "bottom text" Use --bars when the image is busy/detailed and text would be hard to read on top of it.
vision_analyze is available): Check the result looks good: vision_analyze(image_url="/tmp/meme.png", question="Is the text legible and well-positioned? Does the meme work visually?") If the vision model flags issues (text hard to read, bad placement, etc.), try the other mode (switch between overlay and bars) or regenerate the scene.
MEDIA:/tmp/meme.png"debugging production at 2 AM":
bashpython generate_meme.py this-is-fine /tmp/meme.png "SERVERS ARE ON FIRE" "This is fine"
"choosing between sleep and one more episode":
bashpython generate_meme.py drake /tmp/meme.png "Getting 8 hours of sleep" "One more episode at 3 AM"
"the stages of a Monday morning":
bashpython generate_meme.py expanding-brain /tmp/meme.png "Setting an alarm" "Setting 5 alarms" "Sleeping through all alarms" "Working from bed"
To see all available templates:
bashpython generate_meme.py --list
scripts/.cache/ after first download.The output is correct if:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 6,404 | 2,011 | -69% | 1 | 1 | 0% | 1,234 | 1,773 | +44% | 0 | 0 | — |
case-10 | fail→pass | 9,449 | 1,746 | -82% | 1 | 1 | 0% | 1,702 | 1,692 | -1% | 0 | 0 | — |
case-01 | fail→fail | 12,462 | 5,945 | -52% | 1 | 1 | 0% | 2,503 | 1,762 | -30% | 0 | 0 | — |
case-02 | fail→fail | 6,871 | 21,350 | +211% | 1 | 1 | 0% | 1,033 | 1,808 | +75% | 0 | 0 | — |
case-03 | fail→fail | 5,502 | 10,637 | +93% | 1 | 1 | 0% | 1,000 | 3,094 | +209% | 0 | 0 | — |
case-04 | fail→fail | 6,143 | 5,346 | -13% | 1 | 1 | 0% | 1,231 | 1,776 | +44% | 0 | 0 | — |
case-06 | fail→pass | 4,573 | 2,212 | -52% | 1 | 1 | 0% | 927 | 1,809 | +95% | 0 | 0 | — |
case-07 | fail→pass | 3,891 | 2,944 | -24% | 1 | 1 | 0% | 732 | 1,922 | +163% | 0 | 0 | — |
case-08 | fail→pass | 10,095 | 1,638 | -84% | 1 | 1 | 0% | 1,805 | 1,694 | -6% | 0 | 0 | — |
case-09 | pass→pass | 3,356 | 1,320 | -61% | 1 | 1 | 0% | 624 | 1,610 | +158% | 0 | 0 | — |
case-11 | fail→pass | 9,944 | 1,741 | -82% | 1 | 1 | 0% | 1,731 | 1,710 | -1% | 0 | 0 | — |
case-12 | pass→pass | 7,818 | 2,930 | -63% | 1 | 1 | 0% | 1,486 | 1,916 | +29% | 0 | 0 | — |
case-13 | pass→pass | 8,206 | 2,127 | -74% | 1 | 1 | 0% | 1,414 | 1,717 | +21% | 0 | 0 | — |
case-14 | fail→pass | 9,076 | 2,222 | -76% | 1 | 1 | 0% | 1,672 | 1,629 | -3% | 0 | 0 | — |
case-15 | fail→fail | 6,251 | 5,646 | -10% | 1 | 1 | 0% | 1,127 | 1,773 | +57% | 0 | 0 | — |
case-16 | pass→pass | 4,668 | 1,787 | -62% | 1 | 1 | 0% | 832 | 1,773 | +113% | 0 | 0 | — |
case-17 | fail→pass | 10,292 | 3,809 | -63% | 1 | 1 | 0% | 1,727 | 2,142 | +24% | 0 | 0 | — |
case-18 | fail→pass | 7,504 | 2,756 | -63% | 1 | 1 | 0% | 1,420 | 1,915 | +35% | 0 | 0 | — |
case-19 | fail→pass | 8,538 | 3,971 | -53% | 1 | 1 | 0% | 1,443 | 2,081 | +44% | 0 | 0 | — |
case-20 | pass→pass | 16,341 | 11,266 | -31% | 1 | 1 | 0% | 2,519 | 3,190 | +27% | 0 | 0 | — |
case-21 | pass→pass | 9,774 | 9,819 | +0% | 1 | 1 | 0% | 1,804 | 3,204 | +78% | 0 | 0 | — |
case-22 | pass→pass | 29,892 | 11,229 | -62% | 1 | 1 | 0% | 6,165 | 3,609 | -41% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.