From b7704b917e103d802f8f1abd00e28b153a039af0 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 17 May 2026 09:46:57 +0100 Subject: [PATCH] feat(skills): add meme maker skill --- CHANGELOG.md | 1 + skills/meme-maker/SKILL.md | 42 +++ skills/meme-maker/references/templates.json | 358 ++++++++++++++++++ skills/meme-maker/scripts/meme.mjs | 398 ++++++++++++++++++++ 4 files changed, 799 insertions(+) create mode 100644 skills/meme-maker/SKILL.md create mode 100644 skills/meme-maker/references/templates.json create mode 100755 skills/meme-maker/scripts/meme.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index c971df58bd82..81d6643feb8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Docs: https://docs.openclaw.ai ### Changes +- Skills: add a meme-maker skill for curated template search, local SVG/PNG rendering, Imgflip hosted rendering, and Know Your Meme provenance links. - Proxy: support HTTPS managed forward-proxy endpoints and scoped `proxy.tls.caFile` CA trust for proxy endpoint TLS. (#79171) Thanks @jesse-merhi. - QA-Lab: add first-hour 20-turn and optional 100-turn runtime parity scenarios, with tier metadata for standard and soak QA gates. (#80323) Thanks @100yenadmin. - QA-Lab: add a live-only Codex Pi-shaped Read vocabulary canary so runtime parity catches native workspace-read prompt compatibility drift. (#80323) Thanks @100yenadmin. diff --git a/skills/meme-maker/SKILL.md b/skills/meme-maker/SKILL.md new file mode 100644 index 000000000000..1a02dd0f663c --- /dev/null +++ b/skills/meme-maker/SKILL.md @@ -0,0 +1,42 @@ +--- +name: meme-maker +description: Search meme templates, suggest formats, and generate local or hosted image memes. +metadata: { "openclaw": { "emoji": "🖼️", "requires": { "bins": ["node"] } } } +--- + +# Meme Maker + +Create meme drafts from a curated template registry without bundling copyrighted template images. + +Quick start + +- Search: `{baseDir}/scripts/meme.mjs search "bad choice"` +- Suggest: `{baseDir}/scripts/meme.mjs suggest "slow python image scripts"` +- Local SVG: `{baseDir}/scripts/meme.mjs render drake --text "Python cold starts" --text "Node sharp cache" --out /tmp/meme.svg` +- Local PNG: `{baseDir}/scripts/meme.mjs render drake --text "Maybe API" --text "Local render" --out /tmp/meme.png` +- Imgflip hosted: `{baseDir}/scripts/meme.mjs render drake --service imgflip --text "before" --text "after"` + +Modes + +- `local` is default. It downloads template images from their source URL with a browser-like user agent, caches them under the user cache dir, embeds the image in an SVG, and writes SVG. If `--out` ends in `.png`, it uses `sharp` when available. +- `imgflip` calls Imgflip `caption_image` and prints the hosted URL. It requires `IMGFLIP_USER` and `IMGFLIP_PASS` unless supplied via `--username` and `--password`. + +Commands + +- `list [--json]`: list the built-in curated templates. +- `search [--json]`: search template names, aliases, tags, and use cases. +- `suggest [--limit N] [--json]`: rank templates for the topic. +- `render