一键导入
slideshow
Present images in linear narrative form
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Present images in linear narrative form
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Portable tokens of capability, identity, and access
The grammar rules that make MOOLLM's file system object-oriented. Plural directory names declare element type; UPPERCASE marker files declare interface exports (COM-style, minus the UUIDs); directories are implementation classes exporting every interface whose marker file sits at their root.
Mother skill for platform-descriptor sister skills. Defines what a BIOME is — a bounded region of an ecosystem (coexisting, exchanging, never isolated) for one platform you operate — and what files, subdirectories, and cross-biome bridges every daughter biome inherits.
A skill is documentation that learned to do things.
GNU Emacs as a stateful Lisp machine for agents — daemon, moo-* protocol, emacs.py router, emacs:// URLs, spoken grammar, play-learn-lift.
Schemapedia — schema plugins, families, gateways, formats.yml, mechanism_relations; self-object kernel; delegates to sibling skills.
| name | slideshow |
| description | Present images in linear narrative form |
| license | MIT |
| tier | 1 |
| allowed-tools | ["read_file","write_file"] |
| related | ["visualizer","image-mining","storytelling-tools","yaml-jazz","room","character"] |
| tags | ["moollm","images","presentation","narrative","gallery"] |
"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 pattern
What 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.