Skip to main content
AIDiveForge AIDiveForge
🖼️

Thumbnail A/B Generator

Image & Video · by AIDiveForge · Apr 20, 2026 · Beginner

Specify controlled thumbnail variants for a defined video and test goal.

Get variant briefs, asset requirements and an evaluation sheet.

Free · 2 KB · SKILL.md, instructions and example files. Requires the video topic, brand constraints and an image tool for actual generation.

A worked example

A small example to try before using your own data.

Input

{
  "video": "Recovering an interrupted coding task",
  "brand": "dark background, cyan accent",
  "test_variable": "visual metaphor"
}

Expected result

A: checkpoint-file icon beside a resumed terminal, text "Resume the task". B: a paused-to-running progress path, same text and colors. Both are design briefs; image files and experiment results have not been produced.

What to check: Hold wording and palette constant; change the metaphor only. No fabricated click-through improvement.

Limits: This skill does not bundle an image generator, fonts or licensed stock assets.

Worked example included. Model-specific performance and vendor compatibility have not been benchmarked.

Installation options and other formats

Install this skill

An agent skill starts with SKILL.md. The ZIP also includes its examples and any helper scripts. Drop the file into your tool of choice — or pick a different format if you use Cursor, Windsurf, Copilot, or something else.

Download SKILL.md
python3 - <<'ADF_SKILL_INSTALL'
import hashlib, io, os, stat, tempfile, urllib.request, zipfile
from pathlib import Path, PurePosixPath
folder = "thumbnail-a-b-generator"
root = Path(os.environ.get('ADF_SKILL_ROOT', str(Path.home() / '.claude' / 'skills'))).expanduser()
destination = root / folder
if destination.exists() or destination.is_symlink():
    raise SystemExit('An installation already exists. Back it up and merge the ZIP deliberately.')
root.mkdir(parents=True, exist_ok=True)
request = urllib.request.Request("https://aidiveforge.com/skill/thumbnail-a-b-generator.zip", headers={'User-Agent': 'AIDiveForge-Resource-Installer/1.0 (+https://aidiveforge.com/skills/)'})
with urllib.request.urlopen(request, timeout=30) as response:
    data = response.read(8 * 1024 * 1024 + 1)
if len(data) > 8 * 1024 * 1024 or hashlib.sha256(data).hexdigest() != "e4491e3633321a821cfe06aba7b446252307299988f3f735b895a577ab5a0d0e":
    raise SystemExit('The download did not match this reviewed bundle. No files were installed.')
with zipfile.ZipFile(io.BytesIO(data)) as archive, tempfile.TemporaryDirectory(prefix='.adf-skill-', dir=root) as temporary:
    members = archive.infolist()
    if len(members) > 100 or sum(m.file_size for m in members) > 16 * 1024 * 1024:
        raise SystemExit('Unexpected archive size')
    for member in members:
        name = PurePosixPath(member.filename)
        if name.is_absolute() or '..' in name.parts or not name.parts or name.parts[0] != folder or '\\' in member.filename or stat.S_ISLNK(member.external_attr >> 16):
            raise SystemExit('Unsafe archive entry; nothing was installed')
        target = Path(temporary).joinpath(*name.parts)
        if member.is_dir():
            target.mkdir(parents=True, exist_ok=True)
        else:
            target.parent.mkdir(parents=True, exist_ok=True)
            with target.open('xb') as stream:
                stream.write(archive.read(member))
    staged = Path(temporary) / folder
    if not (staged / 'SKILL.md').is_file() or destination.exists() or destination.is_symlink():
        raise SystemExit('The skill could not be installed without replacing existing data')
    os.rename(staged, destination)
print('Installed the complete skill folder:', destination)
ADF_SKILL_INSTALL

Claude Code: ~/.claude/skills/thumbnail-a-b-generator/SKILL.md. Codex: ~/.codex/skills/thumbnail-a-b-generator/SKILL.md. Keep the complete ZIP folder when helper scripts are included.

🧠 Why it works

Hold wording and palette constant; change the metaphor only. No fabricated click-through improvement.

⚙️ How it works

  1. Define the video’s truthful promise, audience and the platform’s image dimensions.
  1. Keep a shared brand layout and change one major visual hypothesis per variant.
  1. Write briefs that name subject, composition, text and asset requirements without implying unsupported outcomes.
  1. Generate only when an image tool is available; record actual files and label ungenerated briefs honestly.
  1. Check legibility at thumbnail size and evaluate with the platform’s supported experiment rather than claiming a winning design in advance.

Description

Get variant briefs, asset requirements and an evaluation sheet.

Requires the video topic, brand constraints and an image tool for actual generation.

Limits: This skill does not bundle an image generator, fonts or licensed stock assets.

Recommended Use

Tools and workflow packs this skill pairs well with. Forge picks are auto-generated from category + capability signals; Community picks are added by people who've used the pairing.