Decklume logo

Decklume

Community
GgauravJ05
decklume

Create beautiful, animated HTML presentations — lectures, pitch decks, conference talks, thesis defenses, class projects — from a topic, notes, a document or a PowerPoint (.pptx). Outlines the story first, shows the user's own slides in three visual styles side by side, builds a single-file deck with Magic-Move transitions, step-by-step builds, charts and a presenter view, then verifies it with an automated design QA pass. Use whenever someone wants to make, convert, restyle or improve slides or a presentation.

Overview

PublisherGgauravJ05
Repositorydecklume
Skill namedecklume
Stars
3
Forks
2
Bundled files
46
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 46 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by GgauravJ05 on GitHub. Read the source before you install it.

Installation

Install the Decklume AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/GgauravJ05/decklume/tree/main/skills/decklume
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/GgauravJ05/decklume.git /tmp/decklume
mkdir -p .claude/skills
cp -r /tmp/decklume/skills/decklume .claude/skills/decklume
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Decklume in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Decklume on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Decklume is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Decklume

Decklume turns content into a presentation that looks designed, not generated. It does that with constraints, not adjectives: a fixed 1920×1080 canvas, a type scale, a 12-column grid, 30 tested layouts, curated themes and a QA gate that fails a deck on real defects. Your job is the story and the content. The engine handles layout, typography and motion.

SKILL_DIR below means the directory containing this file. Every script uses Node ≥ 18 built-ins only. QA, preview images and PDF export use Playwright, which installs itself once into ~/.cache/decklume (never into the user's project).

Non-negotiables

  1. Write slide content, not layout CSS. Use the layout classes in references/layouts.md. Never hand-position text with pixel values to make something fit. If it doesn't fit, split the slide.
  2. One idea per slide, and the headline says it. Content slides get an assertion headline (a short claim), not a topic label: "Half the night is stage N2", not "Sleep stages".
  3. Show, don't ask about taste. People choose a style by seeing their own slides rendered three ways, never from a list of adjectives.
  4. Nothing ships until qa.mjs passes and you have looked at the contact sheet yourself.
  5. No internal text on slides. Never put theme names, "Option A", file names, prompts or requirement notes ("bold option", "audience: VCs") on a slide.
  6. Never invent facts. Statistics, dates, quotes and citations come from the user's material or from well-established knowledge you are sure of. If a slide needs a number you don't have, ask, or write the slide without it. Never fabricate a source line.

Phase 0 — Detect the job

The user has…ModeStart at
A topic, notes, an essay, a docNew deckPhase 1
A .pptxConvertRun node SKILL_DIR/scripts/extract-pptx.mjs deck.pptx .decklume/import, read extracted-slides.json, then Phase 1 with that content. Native charts arrive as ready-made decklume_attrs.
A PDF or Markdown deckConvertRead it, treat it as notes, Phase 1
An existing Decklume deck (*.deck.html)EditEdit the source, rebuild, Phase 5
Any other HTML deck to improveRestyleExtract its content into a new source, then Phase 1

Working files go in .decklume/ next to the deck. Delete it at the end unless the user wants to keep it.

Phase 1 — Brief (one round of questions)

Ask everything you still need in one message (use the structured question tool if available). Skip anything the user already told you.

  1. Purpose and audience. Lecture or class, pitch, conference talk, thesis or research defense, internal review, workshop.
  2. Mode. Speaker-led (few words, big type, the speaker carries it) or reading (self-contained slides people read without a speaker).
  3. Length. Minutes or rough slide count. Default to about one slide per minute for talks.
  4. Assets. Logo, brand colours, images, data, a template to match.

If the user gives images, look at every one. Decide which are usable, what each shows, and design the outline around them (3 product screenshots means 3 feature slides). Never use an image you haven't looked at.

Phase 2 — Storyline (get it approved before any design)

Read references/storyline.md. Write .decklume/outline.md as a numbered table:

#LayoutHeadline (assertion)Content
  • Choose an arc that fits the purpose (lecture, pitch, research talk, update; see the reference).
  • Each row names one layout from the layout reference. Vary them: avoid three identical layouts in a row, and use section, statement, KPI or quote slides as breathing room.
  • Respect the content limits of each layout. Split rather than cram.
  • Mark build steps (step) where a speaker reveals points one at a time, and plan one or two Magic Move pairs (morph) where the same element should travel between consecutive slides (a number, a title, an image).

Show the outline to the user as a compact table and ask: "Does this story work? Change anything before I design it." Revise until they're happy.

Phase 3 — Style discovery (three directions, their own content)

  1. Run node SKILL_DIR/scripts/build.mjs --list-themes --json and choose three genuinely different directions for this audience and mood, using each theme's mood, formality, density, scheme, best_for and avoid_for:
    • A safe fit: the theme that best matches the brief.
    • A contrast: a different scheme or temperament (dark vs light, serif vs grotesk).
    • A wildcard: another built-in theme, or a custom theme designed for this deck when the brief has a sharper opportunity (a brand, a subject with its own visual culture). See references/custom-themes.md.
    • If the user named a theme or a look, honour it as one of the three.
  2. Write .decklume/sample.deck.html with the title slide plus the two most representative content slides from the approved outline, using real headlines and content.
  3. Render the comparison:
    bash
    node SKILL_DIR/scripts/preview.mjs .decklume/sample.deck.html --themes a,b,c --png
    Look at .decklume/preview/index.png yourself. If a direction looks weak with this content, swap it before showing the user.
  4. Open .decklume/preview/index.html for the user (open on macOS, xdg-open on Linux, start on Windows) and ask which direction they want: A, B, C, or a mix ("A's type with C's colours"). For a mix, create a custom theme from the closest one.

Phase 4 — Build the deck

Write <name>.deck.html (front matter + slides) next to where the user wants the deck, following references/layouts.md exactly.

html
---
title: How Sleep Shapes Memory
description: One sentence for link previews and search.
author: Name
theme: folio
---
<section class="slide l-title">…</section>
<section class="slide l-list" data-dim>…</section>
  • Speaker notes: <aside class="notes">…</aside> inside any slide. Write them for speaker-led decks. They appear in the presenter view.
  • Builds: add class="step" to elements revealed one press at a time; data-dim on the slide dims earlier steps.
  • Magic Move: give the same data-morph="name" to an element on two consecutive slides, or set data-transition="morph" to pair matching titles, numbers and images automatically.
  • Motion: set a deck transition: in front matter (fade, push, rise, cover, zoom, wipe, iris, blur, flip, morph, none) and override it per slide with data-transition. Use data-anim for element entrances (rise, wipe, type, count, draw…), data-anim on .step for build effects (including highlight), and <pre class="code" data-lines="1-3|5"> for code walkthroughs. Read references/motion.md; one deck default plus a few deliberate overrides.
  • Charts: <figure class="chart" data-type="bar|hbar|line|donut" data-labels="…" data-series="Name:1,2,3" data-highlight="2">. Highlight the one data point the headline is about.
  • Images: relative paths only (assets/photo.jpg). Every <img> gets meaningful alt text (alt="" for pure decoration).
  • Deck-specific CSS is allowed in a <style> block for small touches that use theme tokens (var(--c-accent)). If you're writing a lot of it, use a different layout or a custom theme instead.

Then build:

bash
node SKILL_DIR/scripts/build.mjs <name>.deck.html          # → <name>.html

Fix every build warning (unknown layout, missing asset, absolute path).

Phase 5 — QA gate (mandatory)

bash
node SKILL_DIR/scripts/qa.mjs <name>.html [--density reading]
  • Errors must reach zero. They cover overflow, clipped text, safe-area collisions, overlapping text, type below the minimum size, WCAG contrast failures, web fonts that didn't load, leaked placeholder text, broken images, JS errors and non-16:9 scaling. Fix the cause: split the slide, shorten copy, change layout. Don't shrink type and don't hide the problem with overflow: hidden.
  • Read the contact sheet (<name>.qa/contact-sheet.png) and look at it like a designer. Check rhythm and variety across slides, alignment, empty or overloaded slides, awkward line breaks in headlines, and widows. Open individual slides from <name>.qa/slides/ where something looks off.
  • Treat warnings as design feedback: crowding, missing alt text, long headlines and slop patterns.
  • Rebuild and re-run until it passes. Delete the .qa folder afterwards.

Phase 6 — Deliver

Open the deck for the user and tell them briefly:

  • the file, its theme and slide count;
  • controls: → / Space next, ← back, O overview, P presenter window (notes, timer, next slide), F fullscreen, B blackout, E edit text in the browser (⌘/Ctrl+S saves), ? all shortcuts;
  • that the deck is one self-contained HTML file. It works offline once fonts are cached and runs on any device. Use --inline-assets at build time to bake images into the file for easy sharing.

Then offer the next steps:

  • PDF (vector, selectable text): node SKILL_DIR/scripts/export.mjs <name>.html
  • PNG per slide: node SKILL_DIR/scripts/export.mjs <name>.html --png
  • Live link: node SKILL_DIR/scripts/deploy.mjs <name>.html (Vercel), or any static host (GitHub Pages, Netlify Drop).

Editing later

Users come back with "make slide 6 punchier" or "add a slide about X". Edit the .deck.html source (never the built .html), rebuild, re-run QA. If the user edited text in the browser with E and saved, their saved .html is now the newest version. Copy those text changes back into the source before rebuilding.

Reference files

FileRead when
references/storyline.mdPhase 2: arcs, assertion headlines, pacing
references/layouts.mdPhases 2–4: every layout's markup and content limits
references/design-rules.mdPhase 4: typography, colour, motion, charts, anti-slop
references/motion.mdPhase 4: transitions, entrances, builds, code walkthroughs, recipes
references/custom-themes.mdDesigning a wildcard, brand or mixed theme

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Decklume AI skill do?

Create beautiful, animated HTML presentations — lectures, pitch decks, conference talks, thesis defenses, class projects — from a topic, notes, a document or a PowerPoint (.pptx). Outlines the story first, shows the user's own slides in three visual styles side by side, builds a single-file deck with Magic-Move transitions, step-by-step builds, charts and a presenter view, then verifies it with an automated design QA pass. Use whenever someone wants to make, convert, restyle or improve slides or a presentation.

Why use Decklume on TypingMind?

Because you install it once and use it with any model. Decklume is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Decklume in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/GgauravJ05/decklume/tree/main/skills/decklume. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Decklume?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Decklume?

As many as you like. As long as a model supports skills, you can use Decklume with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Decklume AI skill free?

Yes. It is published on GitHub by GgauravJ05 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇