agentsclimarketplace

Lumen slides

Skill MonsieurBarti/lumen/skills/lumen-slides

Generate magazine-quality scroll-snap presentation deck as single HTML file. 10 slide patterns with reveal animations, horizontal (default) or vertical navigation, presenter mode with speaker notes + timer, content-budget quality gates, prefers-reduced-motion support. 13 fgraph aesthetics including modern glassmorphism / cyberpunk-neon / hand-drawn / aurora. Invoke when user asks for deck, slides, pitch, presentation, slides from issue #N.From its SKILL.md

Install
npx -y skills add MonsieurBarti/lumen --skill lumen-slides

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

15.0 KB, as published. Nobody here has run it

lumen-slides

Single-file scroll-snap deck. Inlined CSS + JS. Offline-playable. Magazine-quality typography, compositional variety, narrative arc.

πŸ“„ Rendered example: docs/examples/slides.html

Tier: capability (atomic) β€” does not invoke other lumen skills. Composites and playbooks may invoke it.

When to invoke

Slides are always opt-in. Only generate when this skill is explicitly invoked or the user asks for a slide deck.

Triggers: create deck, make a deck, slides, slide deck, presentation deck, pitch deck, slides from #N, keynote-style.

Pipeline (Frame β†’ Template β†’ Structure β†’ Style β†’ Deliver)

Full recipe in references/generate-slides-recipe.md. Summary:

  1. Frame β€” infer reader-action / takeaway / tone. Slides have a temporal dimension β€” compose a story arc, not a list of sections.
  2. Template β€” load the pattern registry and assign a pattern_key to each planned slide. Reference skills/lumen-slides/_templates/index.json for the 10 available patterns and their metadata (composition variants, required/optional slots, CSS class contracts). Use loadTemplateRegistry() or getPatternByKey() from src/utils/template-registry.ts for programmatic access.
  3. Structure before writing HTML:
    • Start with impact (title)
    • Build context (overview)
    • Deep dive (content, diagrams, data)
    • Resolve (summary, next steps)
    • Assign a composition (centered / left-heavy / right-heavy / split / edge-aligned / full-bleed) to each slide
  4. Style β€” pick ONE aesthetic: typographic family (Midnight Editorial, Warm Signal, Terminal Mono, Swiss Clean), modern family (glassmorphism, cyberpunk-neon, hand-drawn, aurora β€” see references/slide-modern-presets.md), illustrated family, or any _shared/aesthetics/*.css. Commit to one direction; carry it through every slide. Vary from previous decks in the same session.
  5. Deliver β€” start from templates/slide-deck.html. All CSS/JS inlined. Offline file:// safe.

10 slide patterns

Exact .slide--{type} selectors recognized by the SlideEngine in templates/slide-deck.html. Full per-pattern HTML structure + decorative SVG + composition variants in references/slide-patterns.md.

SelectorUse
.slide--titleHero (heading + subtitle + optional bg image)
.slide--sectionSection header (thin heading + color bar)
.slide--contentHeading + paragraphs + bullet list
.slide--quoteFull-bleed quote + attribution
.slide--imageFull-bleed image + optional caption
.slide--codeCode block with syntax highlighting
.slide--comparisonSide-by-side columns
.slide--tableHTML table with sticky header
.slide--diagramInline fgraph or Mermaid; reuse lumen-diagram / lumen-mermaid
.slide--closingFinal slide (CTA, contact)

All patterns support .reveal child elements for stagger-in animations.

Template registry

skills/lumen-slides/_templates/index.json is the canonical registry for the 10 slide patterns. Each entry maps a pattern_key to metadata:

FieldDescription
pattern_keyStable identifier (e.g. title, content, diagram)
nameHuman-readable label
descriptionWhen to use the pattern and its visual behavior
composition_variantsAllowed spatial approaches for this pattern
required_slotsCSS class selectors that must be present in the slide markup
optional_slotsAdditional selectors that may appear
css_class_contractFull set of selectors recognized by the SlideEngine for this pattern
supports_revealWhether .reveal child elements animate on scroll

For programmatic access, src/utils/template-registry.ts exports:

  • loadTemplateRegistry() β€” loads and validates index.json, returns a TemplateRegistry object. Cached after first call.
  • getPatternByKey(key) β€” looks up a single SlidePattern by pattern_key. Returns undefined if the key is not found.

Validation enforces exactly 10 patterns, unique keys, and the full field schema. This registry is the single source of truth for both human authors (writing HTML by hand) and code generators (producing slides programmatically).

SlideEngine (built into templates/slide-deck.html)

  • Scroll-snap container, one slide per viewport
  • Navigation axis via data-nav on .deck:
    • horizontal (default, keynote / board-room) β€” left/right swipe + arrows
    • vertical β€” scroll-doc style, up/down swipe + arrows
    • Toggle live with O (orientation)
  • Keyboard nav: ← / β†’ / ↑ / ↓ / PgUp / PgDn / Home / End / Space
  • S β€” presenter mode (dual-window via BroadcastChannel; falls back to in-page overlay if the popup is blocked). Shows current title, next title, speaker notes, elapsed timer
  • F β€” toggle fullscreen
  • Touch swipe follows the active axis
  • prefers-reduced-motion honored (no transitions, no .reveal stagger; instant scrollIntoView)
  • Progress indicator (slide N / total) + dots (bottom for horizontal, right for vertical)
  • URL fragment sync (#slide-3) for deep-link
  • Print stylesheet (one slide per page; speaker notes printed below each slide)

Speaker notes

Put talking points in an audience-hidden aside inside each <section class="slide">:

<aside class="speaker-notes">
  Open with the outage story. Pause after the 40ms figure.
</aside>

Notes are stripped from content-budget body-text counts and only surface in presenter mode / print.

Compositional variety (hard rule)

Consecutive slides MUST vary their spatial approach. Three centered slides in a row β†’ push one off-axis. Alternate centered / left-heavy / right-heavy / split / edge-aligned / full-bleed.

Visual richness

  • Proactively reach for visuals. If surf CLI is available (which surf), generate images for title slides + full-bleed via surf gemini --generate-image. Embed as base64 data URI.
  • Add SVG decorative accents, inline sparklines, mini-charts, and small Mermaid diagrams where they make the story compelling. Visual-first, text-second.
  • Library guidance (Mermaid theming, Chart.js, font pairings) in references/libraries.md.

Aesthetic presets

Two families of preset are available β€” pick one direction per deck and carry it through every slide.

Theme discovery

Themes resolve via src/utils/theme-resolver.ts in hierarchical order (highest priority wins):

  1. Project override β€” <cwd>/_theme.css in the working directory
  2. User-global override β€” ~/.agent/lumen/_theme.css
  3. Built-in preset fallback β€” skills/_shared/aesthetics/{preset}.css

The resolveTheme({ cwd, preset }) function returns the CSS string plus metadata about which source was used (project, global, or preset). If no custom theme is found, it falls back to the named preset (default editorial). This lets teams share a project-level _theme.css, individual users keep a personal default, and one-off decks still pick from the built-in library.

Typographic family (4 β€” minimalist)

Detail in references/slide-patterns.md. Best for technical / executive audiences where text is the payload.

  • Midnight Editorial (midnight-editorial) β€” dark serif, warm gold accents, magazine feel
  • Warm Signal (warm-signal) β€” cream + amber, narrative tone
  • Terminal Mono (terminal-mono) β€” monospace, high-contrast, technical
  • Swiss Clean (swiss-clean) β€” minimalist, tight grid, sharp typography

Modern family (4 β€” 2025+ stage-ready)

Detail in references/slide-modern-presets.md. Prefer these for external / high-stakes decks when you want a contemporary look without illustration.

  • Glassmorphism (glassmorphism) β€” frosted panels, soft indigo field, gradient display type. SaaS / product launches.
  • Cyberpunk Neon (cyberpunk-neon) β€” void black, cyan+magenta neon, Orbitron display. Tech demos, AI launches.
  • Hand-drawn (hand-drawn) β€” warm paper, Caveat ink headings, imperfect geometry. Workshops, teaching, kickoffs.
  • Aurora (aurora) β€” multi-stop luminous gradients, Outfit type, bloom fields. Vision / brand / investor days.

Illustrated family (6 β€” visual-rich, AI-generation-friendly)

Summary below; detailed per-preset specs (palette tokens, typography, layout rules, decorative SVG fragments, image-prompt templates, do/don't) in references/slide-illustrated-presets.md.

  • comic-strip β€” warm round-headed characters with minimalist bodies, sparse backgrounds, occasional speech bubbles, zigzag ground/grass lines. Beige + sky-blue + grass-green palette. Best for warm, story-led explainers.
  • ligne-claire β€” uniform line weight, flat color fills, 2–4 panel layouts, info-clarity over emotional warmth. Best for technical sequences where comic framing aids comprehension.
  • neo-pop-magazine β€” aggressive typographic contrast (titles ~50% of slide), color-block sections, youth / social-feed aesthetic. Best for launch announcements and consumer-facing decks.
  • bauhaus-geometric β€” circle / triangle / square / star carry semantic meaning per step; primary red-blue-yellow on paper white; form follows function. Best for process / framework decks where shapes reinforce structure.
  • engineering-blueprint β€” white line-drawings on deep blueprint blue (~75% bg coverage), grid paper, dimension lines, red annotations as ~5% accent. Best for systems / architecture decks.
  • neo-brutalism β€” 4–6px thick black borders on every element, high-saturation color blocks, ultra-large sans-serif (3–6vw), 6–10px solid drop shadows. Best for far-distance readability on long decks (auditorium, projection).

Design heuristic β€” illustration beats minimalism for AI imagery

When generating images for a deck via surf gemini --generate-image or similar, prefer illustrated presets over typographic-minimalist ones. Illustrated styles have an explicit visual vocabulary (lines, characters, color blocks) that image models can exploit; minimalist styles (dark bg + glowing text + whitespace) lack visual elements to anchor generation and produce flat, empty results. Image prompts should be short β€” 3 sentences describing mood and content beat 30-line specifications.

Or riff on any of _shared/aesthetics/*.css adapted for slides (5 options there).

templates/slide-deck-base.css (lifted from roxabi-forge) provides an alternative styling foundation if you want roxabi's slide tokens instead of visual-explainer's defaults.

Content budgets (hard quality gates)

Evidence-based limits (PLOS CompBio ten rules, UCSD multimedia learning, 5-5-5 / 6Γ—6). Enforce while authoring; validate with validateContentBudgets(html) from src/utils/content-budget.ts before delivery.

RuleSoft (warn)Hard (error)
Bullets per slide≀4 (UCSD rule of four)≀6
Words per bullet≀12≀20
Major visual elements per slide≀6 (Phillips)β€”
Consecutive text-heavy slides≀2β€”
Slide titleAssertive takeaway, not generic (Results, Overview, Agenda, …)β€”
One idea per slideHeading states the single claim; no multi-topic slidesβ€”

Authoring checklist (every slide):

  1. Can the distracted viewer read the takeaway from the title alone?
  2. ≀4 bullets, each a short phrase β€” not a sentence paragraph
  3. Prefer a diagram / KPI / image over a fifth bullet
  4. Add <aside class="speaker-notes"> for anything you would otherwise dump on the slide
  5. No three text-only slides in a row β€” break with visual / quote / diagram

Quality checks

  • Each slide fits in viewport (100vh / 100vw) without internal page scroll
  • Content-budget report has zero errors (contentBudgetHasErrors(report) === false)
  • Code slides: syntax highlighting works offline (no CDN dep that breaks file://)
  • Tables: sticky header on scroll within slide
  • prefers-reduced-motion disables all .reveal
  • Aesthetic chosen is recorded in HTML comment for traceability
  • Compositional rule satisfied (no three consecutive same-composition slides)
  • Story arc has an impact-build-resolve shape (no "list of sections")
  • Mermaid diagrams (if any) use the zoom-pan pattern from lumen-mermaid
  • Deck root is <div class="deck" data-nav="horizontal"> unless the user asked for a vertical scroll-doc
  • Presenter mode works: at least the title + closing slides carry speaker-notes
  • Keyboard hints mention S / F / O

Output

Single HTML file written to ~/.agent/lumen/<slug>.html. Open in browser.

PI extension route (v0.1.x)

Not wired through lumen-generate_visual PI tool. A deterministic schema (array of typed slides with pattern keys, titles, bullets, and optional diagram references) is feasible but not yet implemented. The LLM-authored CC path remains the right fit for decks that need multi-step compositional planning and image generation.

Sources

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.