Meme Factory — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Meme Factory (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate memes using the free memegen.link API and textual Markdown meme formats. No API key required.
npx clawhub@latest install meme-factory_ or -.png, .jpg, etc.)? → ~q, / → ~s, % → ~p, # → ~h)https://api.memegen.link/images/{template}/{top_text}/{bottom_text}.{ext}Example:
https://api.memegen.link/images/buzz/bugs/bugs_everywhere.png| Character | Encoding |
|---|---|
| Space | _ or - |
| Newline | ~n |
| Question mark | ~q |
| Percent | ~p |
| Slash | ~s |
| Hash | ~h |
| Single quote | '' |
| Double quote | "" |
| Template | Use Case | When To Use |
|---|---|---|
drake | Comparing options | Rejecting one thing, approving another |
buzz | Ubiquitous things | "X, X everywhere" |
success | Celebrating wins | Positive outcomes |
fine | Problems ignored | Ironic "everything is fine" |
fry | Uncertainty | "Not sure if X or Y" |
changemind | Hot takes | Stating an opinion confidently |
distracted | Priorities | Being distracted by something new |
mordor | Bad ideas | "One does not simply..." |
interesting | Rare occurrences | "I don't always X, but when I do..." |
yodawg | Meta/recursive | "Yo dawg, I heard you like X" |
Full list: https://api.memegen.link/templates/
| Context | Template | Why |
|---|---|---|
| Comparing options | drake | Two-panel reject/approve format |
| Celebrating wins | success | Positive outcome emphasis |
| Problems ignored | fine | Ironic calm amid chaos |
| Uncertainty | fry | "Not sure if X or Y" format |
| Controversial opinion | changemind | Statement + challenge |
| Ubiquitous things | buzz | "X, X everywhere" |
| Bad ideas | mordor | "One does not simply..." |
| Extension | Use Case |
|---|---|
.png | Best quality (default) |
.jpg | Smaller file size |
.webp | Modern, good compression |
.gif | Animated templates |
| Platform | Dimensions | Usage |
|---|---|---|
| Social media / Open Graph | ?width=1200&height=630 | Twitter, LinkedIn, Facebook |
| Slack / Discord | ?width=800&height=600 | Chat platforms |
| GitHub | Default | PRs, issues, README |
?layout=top # Text at top only
?layout=bottom # Text at bottom only
?layout=default # Standard top/bottomBeyond image memes, create text-based memes directly in Markdown:
> prefixed lines for anon-culture narrativesFull guide with examples: references/markdown-memes-guide.md
After generating a meme:
curl -I)Always provide descriptive alt text for accessibility:
![Drake rejecting manual testing, approving automated testing]![funny meme]Use any image as a meme background with the custom template:
https://api.memegen.link/images/custom/top_text/bottom_text.png?style=https://example.com/image.jpgPair screenshots of apps, dashboards, or charts as backgrounds for contextual humor.
For blog posts and documentation, alternate between formats for pacing:
Good patterns: Greentext → Image → Corporate satire, Chat log → Image → Shitpost poetry
Avoid: 5 images in a row (visual fatigue), 3 long copypastas back-to-back (reader exhaustion)
| Endpoint | Purpose |
|---|---|
/templates/ | List all available templates |
/templates/{id} | Template details and example |
/fonts/ | Available fonts |
/images/{template}/{top}/{bottom}.{ext} | Generate meme image |
API characteristics: Free, open-source, no API key, no rate limiting, stateless, images generated on-demand.
from meme_generator import MemeGenerator
meme = MemeGenerator()
# Generate a basic meme URL
url = meme.generate("buzz", "features", "features everywhere")
# With custom dimensions for social media
url = meme.generate("drake", "old way", "new way", width=1200, height=630)
# Get markdown for embedding
md = meme.get_markdown_image(url, alt_text="Comparison Meme")
# Suggest template based on context
template = meme.suggest_template_for_context("deployment success")| File | Content |
|---|---|
| references/markdown-memes-guide.md | 15+ textual meme formats with examples and production tips |
| references/examples.md | Practical usage examples, integrations (Slack, GitHub, Discord) |
| Script | Purpose |
|---|---|
| scripts/meme_generator.py | Python helper for programmatic meme generation with 20+ templates |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.