name: managing-thumbnails description: "Manages thumbnail and preview images for ComfyUI workflow templates. Adds, replaces, validates, and audits thumbnails. Use when asked to: add a thumbnail, replace a preview image, update template image, fix missing thumbnail, check thumbnails, audit thumbnails, which templates need thumbnails, missing previews, add preview image, change template picture, update template visual, swap thumbnail, set thumbnail, upload preview, template image missing, broken thumbnail, thumbnail not showing. Triggers on: thumbnail, preview image, template image, template picture, missing thumbnail, add image, replace image, visual asset."
Managing Thumbnails
This skill covers adding, replacing, validating, and auditing thumbnail images for ComfyUI workflow templates.
Naming Convention
Thumbnails live in templates/ alongside the workflow JSON files. They are named using the template's name field from templates/index.json:
- Primary:
{template_name}-1.webp - Secondary (optional):
{template_name}-2.webp(only for dual-thumbnail variants)
The {template_name} portion must exactly match the name field in templates/index.json.
Supported Formats
| Format | Notes |
|---|---|
.webp |
Preferred. Smallest file size. Use lossy compression (~65% quality). |
.png |
Acceptable fallback. |
.jpg / .jpeg |
Acceptable fallback. |
.webp (animated) |
Used for video-type templates (animated webp). |
Thumbnail Variants
The thumbnailVariant field in templates/index.json controls how the thumbnail behaves on the site:
| Variant | Thumbnails Needed | Effect |
|---|---|---|
| (none/default) | -1 only |
Static image, slight zoom on hover |
compareSlider |
-1 AND -2 |
Before/after slider comparison |
hoverDissolve |
-1 AND -2 |
Dissolves to second image on hover |
hoverZoom / zoomHover |
-1 only |
Same as default but zooms more |
If a template uses compareSlider or hoverDissolve, both -1 and -2 files are required.
Adding a Thumbnail
- Name the file
{template_name}-1.webp, where{template_name}matches the template'snamefield intemplates/index.json. - Place it in the
templates/directory. - Compress to a reasonable size (use lossy webp compression, ~65% quality).
- If using
compareSliderorhoverDissolve, also add{template_name}-2.webp.
Replacing a Thumbnail
Overwrite the existing file in templates/ with the new image, using the same filename.
Setting the Thumbnail Variant
Edit the template's entry in templates/index.json and set or change the thumbnailVariant field to one of: compareSlider, hoverDissolve, hoverZoom, or zoomHover. Remove the field (or leave it unset) for the default behavior.
Auditing Thumbnails
Run the validation script to check for issues:
python scripts/validate_thumbnails.py
This checks for:
- Templates missing their primary thumbnail
- Templates with a dual-variant set (
compareSliderorhoverDissolve) but missing the second thumbnail (-2) - Orphaned thumbnail files not referenced by any template
Site Preview Images
The site also generates workflow preview images via:
pnpm run generate:previews # run from site/
These are separate from template thumbnails — they are auto-generated visualizations of the workflow graph, not the output images you manage here.
Validation After Changes
After adding, replacing, or modifying thumbnails, always validate:
python scripts/validate_thumbnails.py
python scripts/validate_templates.py
Then sync to packages:
python scripts/sync_bundles.py
Rules
- The template name in the filename must exactly match the
namefield intemplates/index.json. - Always use
.webpformat when possible for smallest file size. - Thumbnails should ideally show the output produced by the workflow.
- If the template uses
compareSliderorhoverDissolve, both-1and-2files are required. - Never put thumbnails in
site/— they belong intemplates/. - After adding or changing thumbnails, run
python scripts/sync_bundles.pyto sync to packages.