Present images in linear narrative form
"The camera is the pickaxe. The slideshow is the museum."
"Every image tells a story. The slideshow tells THE story."
The Slideshow skill presents generated images as linear visual narratives. While the Visualizer creates images, the Slideshow presents them ā synthesizing metadata from prompts and mining sidecars into scrollable stories.
Images live in directories. Directories accumulate chaos.
A SLIDESHOW.md transforms that chaos into narrative:
Think of it as the museum for your visual mining operation.
"The left eye sees truth. The right eye sees story. Together: depth perception."
A stereo slideshow maintains two complementary files:
| File | Role | Purpose |
|---|---|---|
SLIDESHOW.yml |
Left Eye | Machine-readable source of truth |
SLIDESHOW.md |
Right Eye | Human-readable narrative for GitHub |
SLIDESHOW.yml (Source of Truth):
SLIDESHOW.md (Narrative View):
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā STEREO SLIDESHOW SYNC ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā
ā SLIDESHOW.yml (left eye) SLIDESHOW.md (right eye) ā
ā āāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā id: slideshow/pub ā ā # šø Pub Photo Gallery ā ā
ā ā name: Pub Gallery ā āāāā¶ ā > *"Opening quote..."* ā ā
ā ā location: room/pub ā SYNC ā ā ā
ā ā contents: ā ā ## Shot 1: The Bar ā ā
ā ā - dir: bar-shot ā ā  ā ā
ā ā subject: ... ā ā **Location:** The Bar ā ā
ā āāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā
ā EDIT the YML ā SYNC generates MD ā
ā The YML is the single source of truth ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
# SLIDESHOW.yml ā Machine-readable slideshow definition
id: slideshow/pub/photos
name: "Pub Photo Gallery"
type: slideshow
location: room/pub # Links to compiled room
tagline: "Memories from the Gezelligheid Grotto"
# Photo metadata
contents:
- dir: bar-shot-2026-01-19
subject: "Marieke at the bar"
mood: warm
role: ESTABLISHING
image: bar-marieke.png
- dir: palm-cats-2026-01-19
subject: "Palm with the cats"
mood: cozy
role: DETAIL
image: palm-cats.png
# Optional: narrative hints for MD generation
narrative:
opening_quote: "The best nights are the ones you almost remember..."
style_notes: "First-person phone camera, golden hour lighting"
# Compiler uses this to link slideshow to room
compiled:
room_ref: room/pub
photo_count: 2
Each photo can also be stereo:
photo-directory/
PHOTO.yml # Left eye: metadata, generation settings
PHOTO.md # Right eye: narrative description
main-image.png # The actual image
MINING-*.yml # Mining layer files
PHOTO.yml (metadata):
subject:
primary: "Marieke serving drinks"
secondary: ["Palm", "cats"]
mood: warm
camera:
type: "iPhone 15 Pro"
settings: { aperture: 1.8, iso: 800 }
generation:
provider: dalle3
prompt: "..."
PHOTO.md (narrative):
# Marieke at the Bar
The warm glow of Edison bulbs catches the brass
fixtures as Marieke pours a perfect pint...
SYNC SLIDESHOW [directory]
Regenerates SLIDESHOW.md from SLIDESHOW.yml.
CREATE STEREO SLIDESHOW FOR [directory]
Creates both YML (from scanning directory) and MD (from YML).
UPDATE SLIDESHOW YML [directory]
Scans for new photos and updates the YML source of truth.
Generate a SLIDESHOW.md for a directory of images:
CREATE SLIDESHOW for pub/dons-photos-2026-01-19/
What happens:
.png, .jpg, .webp).yml prompt, -mined.yml resources)Create a README.md landing page for GitHub display:
LANDING for pub/dons-pub-photos-2026-01-19/
Why README.md?
GitHub renders README.md automatically when you browse a directory, but not SLIDESHOW.md. The landing page is the front door ā motivating visitors to read the story.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā README.md (Landing Page) SLIDESHOW.md (Story) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā Shown on GitHub automatically ā Must click to view ā
ā ā Metadata table Pure narrative flow ā
ā ā Character links No links ā just story ā
ā ā Location links No context jumps ā
ā ā Story summary (fresh!) Full detailed story ā
ā ā "View the slideshow" The actual experience ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
What goes in README.md:
| Section | Content |
|---|---|
| Title + Tagline | Hook the reader |
| Gallery Info | Slide count, date, style, location |
| Featuring | Characters with links to their directories |
| Locations | Rooms with links to their directories |
| Story Summary | Fresh synthesis ā "why should I look at these?" |
| Preview | Optional image grid |
| Technical | Mining layers, generator |
Key insight: The story summary is freshly synthesized, not copy-pasted from SLIDESHOW.md. It answers: "What will I experience if I click through?"
Workflow:
1. CREATE SLIDESHOW # Generate the story
2. ORGANIZE INTO dirname # Encapsulate files
3. LANDING # Create GitHub front door
Encapsulate a SLIDESHOW.md and its images into a named subdirectory:
ORGANIZE pub/SLIDESHOW.md INTO dons-pub-photos-2026-01-19
Before:
pub/
SLIDESHOW.md
dons-photos-2026-01-19-16-30-00-bar-marieke-palm-cats.png
dons-photos-2026-01-19-16-30-00-bar-marieke-palm-cats.yml
dons-photos-2026-01-19-16-30-00-bar-marieke-palm-cats-mined.yml
...20 more files...
After:
pub/
dons-pub-photos-2026-01-19/
SLIDESHOW.md # Inherits from slideshow skill
bar-marieke-palm-cats.png
bar-marieke-palm-cats.yml
bar-marieke-palm-cats-mined.yml
...all files moved and renamed...
Naming convention: lowercase-dashes, descriptive, date-suffixed if temporal.
Every SLIDESHOW.md should declare inheritance:
---
inherits: slideshow
title: "Don's Pub Photos ā January 19, 2026"
created: 2026-01-19
images: 8
style: first-person-phone-camera
---
# šø Title
> *"Opening quote capturing the vibe"*
Brief description of what this gallery contains.
---
## š Shot 1: Location (Time)
### *"Caption quote"*

**Location:** Where this was taken
**Who's Here:**
- š©š· Character 1 doing something
- šš“ Character 2 doing something else
š **Files:** [Prompt](image-file.yml) | [Resources](image-file-mined.yml)
---
## š Shot 2: Next Location (Time)
...
---
## š Stats Table
| Time | Location | Highlights |
|------|----------|------------|
| 4:30 PM | Bar | Marieke, Palm, cats |
| ... | ... | ... |
---
## šØ Style Notes
Notes on artistic direction, visual consistency, mood.
---
*"Closing quote"*
The SUMMARIZE method transforms raw sidecar data into narrative:
From prompt.yml:
From prompt-mined.yml:
Output: Human-readable narrative that tells the story.
The Visualizer creates. The Slideshow presents.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā VISUAL PIPELINE ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā
ā Context YAML ā Visualizer ā Image + Sidecars ā
ā (rooms, chars) (generate) (.png, .yml) ā
ā ā
ā Image + Sidecars ā Image Miner ā Resources ā
ā (extract) (-mined.yml) ā
ā ā
ā All Files ā Slideshow ā SLIDESHOW.md ā
ā (present) (narrative) ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Visualizer advertises to Slideshow:
# In visualizer/CARD.yml
advertisements:
SLIDESHOW:
delegates_to: slideshow
score: 85
condition: "After generating images, create/update gallery"
Slideshows can be discovered and linked:
# Find all slideshows in adventure-4
find examples/adventure-4 -name "SLIDESHOW.md"
Cross-slideshow navigation:
**Related Galleries:**
- [Palm's Study](../stage/palm-nook/study/palm-study-images/SLIDESHOW.md)
- [Attic Adventures](../attic/dusty-attic-images/SLIDESHOW.md)
Without encapsulation:
pub/
ROOM.yml
SLIDESHOW.md
guestbook.yml
fireplace.yml
20 image files...
20 prompt files...
20 mining files...
# Chaos. What belongs together?
With encapsulation:
pub/
ROOM.yml
guestbook.yml
fireplace.yml
dons-pub-photos-2026-01-19/
SLIDESHOW.md
all-related-files...
rooftop-telescope-images/
SLIDESHOW.md
all-related-files...
Benefits:
# 1. Generate images with visualizer
visualize.py character.yml room.yml -p openai
# 2. Mine resources from images
mine.py *.png --depth full
# 3. Create slideshow gallery
CREATE SLIDESHOW for current directory
# 4. Organize into encapsulated directory
ORGANIZE SLIDESHOW.md INTO palm-portrait-session-2026-01-19
# 5. Result: clean, self-contained gallery
SLIDESHOW.md targets GitHub rendering:
Every good slideshow tells a story through connections:
How do these images connect?
- Shot 1 introduces the setting
- Shot 3 shows the characters in that setting
- Shot 5 captures the climax
- Shot 8 is the aftermath, full circle
The metadata enables this synthesis ā prompts describe intent, mining reveals what emerged.
| Method | Purpose |
|---|---|
| CREATE | Generate SLIDESHOW.md for directory |
| UPDATE | Add new images to existing gallery |
| SUMMARIZE | Synthesize metadata into narrative |
| ORGANIZE | Encapsulate into subdirectory |
| COMPARE | Cross-image comparison section |
Future feature ā not yet implemented
UPGRADE is super flexible. Start with ANYTHING:
Input option A ā Single prompt list file:
my-ideas.yml (or my-ideas.md)
ā Breaks into individual prompts, removes original, creates full structure
Input option B ā Dir of images:
messy-folder/
āāā 2026-01-19-dusk-scene-v3.png
āāā morning-light-final.png
āāā random-sketch.jpg
ā Mines images for prompts (mine prompt mode), structures everything
Input option C ā Mixed chaos (images + prompts + whatever):
messy-folder/
āāā 2026-01-19-dusk-scene-v3.png # Image ā mine for prompt
āāā morning-light-final.png # Image ā mine for prompt
āāā cool-idea.txt # Prompt ā generate image later
āāā more-prompts.yml # Prompt list ā break apart
āāā frame-03-arrival.png # Image
āāā random-sketch.jpg # Image
āāā notes.md # Prompts inline ā extract
ā UPGRADE figures it out: images get mined, prompts get structured, everything organized
Output (full structure from any input):
slideshow/
āāā README.md # Front cover / title page
āāā SLIDESHOW.yml # Machine-readable skeleton
āāā SLIDESHOW.md # Formatted narrative view
āāā 001-dusk-scene/
ā āāā PHOTO.yml
ā āāā PHOTO.md
ā āāā image.png # Main ā NO timestamp, NO index
ā āāā original.png # Secondary (preserved original name)
ā āāā PROMPT.yml # Generation prompt (or mined from image)
āāā 002-morning-light/
ā āāā image.png # Main
ā āāā PROMPT.yml # Mined via image mining if no prompt existed
ā āāā ...
āāā 003-future-idea/
ā āāā PHOTO.yml # Metadata ready
ā āāā PROMPT.yml # Prompt waiting
ā āāā (no image.png yet) # Generate later!
Naming rules:
image.png ā clean, no timestamp, no index prefiximage.png patternWhat UPGRADE does:
Handles any mix ā figures out what each file is:
.png/.jpg ā image ā mine for prompt.txt/.md with prose ā prompt ā generate image later .yml with list ā prompt list ā break apartThen structures everything:
001-descriptive-name/ directoriesimage.png (main), originals as secondaryPHOTO.yml, PHOTO.md skeletonsREADME.md, SLIDESHOW.yml, SLIDESHOW.mdInvoke: UPGRADE path/to/anything (when implemented)
See CARD.yml for full specification.