From lumen
Generate image or audio comparison gallery as HTML with pivot grouping, dynamic filters, search, lightbox, starring. 5 templates (pivot matrix, simple batches, comparison cards, audio players, multi-mode). Invoke when user asks to compare visually, showcase, gallery, side by side, show iterations, multi-mode gallery, audio comparison.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lumen:lumen-galleryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Multi-mode gallery. Auto-discovered filters. Lightbox + starring + lazy load + search.
NOTICE.mdfixtures/README.mdfixtures/audio.jsonfixtures/comparison.jsonfixtures/pivot.jsonfixtures/simple.jsontemplates/README.mdtemplates/audio-gallery.htmltemplates/comparison-gallery.htmltemplates/gallery-base.csstemplates/gallery-base.jstemplates/multi-mode-gallery.htmltemplates/pivot-gallery.htmltemplates/simple-gallery.htmlMulti-mode gallery. Auto-discovered filters. Lightbox + starring + lazy load + search.
📄 Rendered example: docs/examples/gallery.html
Tier: capability (atomic) — does not invoke other lumen skills. Composites and playbooks may invoke it.
Triggers: gallery, showcase, compare visually, sprite gallery, side by side, create a gallery, show iterations, multi-mode gallery, audio comparison, voice cloning A/B.
templates/)| Template | Best for |
|---|---|
pivot-gallery.html | Matrix view (col × row grouping, dynamic pivot segs, score filter) |
simple-gallery.html | Batch tabs + starring + lightbox + lazy load |
comparison-gallery.html | Cards with spec tables + verdict badges |
audio-gallery.html | Audio players + engine grouping (TTS A/B, voice cloning) |
multi-mode-gallery.html | Mode tabs + per-mode DIMS + downloads dropdown |
Copy the closest template, replace {{PLACEHOLDERS}}, customize the DIMS object. Full template-by-template walkthrough in templates/README.md.
Each gallery item exposes data-* attributes (e.g., data-engine="elevenlabs", data-voice="alice", data-score="0.92"). The DIMS JS object declares which dims are filterable; the runtime auto-discovers their unique values, builds filter buttons, and applies multi-select intersection filtering.
templates/gallery-base.js)buildDimFilters(DIMS, container) — auto-discover unique values per dim, create filter buttonsapplyDimFilters(items, DIMS, activeFilters) — filter visible items (intersection across dims)buildPivotSegsFromDims(DIMS, colId, rowId) — auto-build col / row segmentation buttonsIntersectionObserver + loading="lazy" fallback)data-* attrs)Plus templates/gallery-base.css for the shared layout primitives (lightbox modal, filter chips, card grid, masonry/pivot variants).
Galleries link gallery-base.{css,js} rather than inline (galleries can be many MB; split keeps the shell light). When deploying, drop the gallery HTML next to the assets folder, with gallery-base.css + gallery-base.js in a sibling location.
["voice1.mp3", "voice2.mp3"]) — fall back to inferMeta(name) from gallery-base.js to extract dims from filename patterns[{src, dims, score?, label?}]) — preferred when caller has structured datapivot-gallerysimple-gallerycomparison-galleryaudio-gallerymulti-mode-gallery_shared/aesthetics/*.css; default editorial.css for galleries).Reference input shapes ship in fixtures/:
pivot.json — matrix-shaped data with scoresimple.json — batch-grouped iteration setcomparison.json — spec-comparison cardsaudio.json — audio engine A/BUse them as a template for the JSON your caller passes in.
data-* attrs match the keys declared in DIMSprefers-reduced-motion disables zoom transitionsgallery-base.{css,js} next to it.Either mode opens via file://.
Not wired through lumen-generate_visual PI tool. A deterministic schema (template selector + item array with dims/scores + optional captions) is feasible but not yet implemented. Galleries still depend on user-provided assets (images / audio files), so the LLM-authored CC path remains the right fit when assets are present.
Roxabi/roxabi-forge/plugins/forge/references/gallery-templates/ (MIT) — 5 templates + gallery-base.css + gallery-base.js + per-template walkthrough READMERoxabi/roxabi-forge/plugins/forge/skills/forge-gallery/fixtures/ (MIT) — 4 input-shape fixturesskills/_shared/aesthetics/ (this package) — 5 aesthetics shared with diagrams + guidesnpx claudepluginhub monsieurbarti/lumen --plugin lumenCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.