Most slide decks explain with bullet points. Lantern explains with pictures: cut-away machines and buildings full of small figures at work, one warm light in the dark, glowing lines that show where energy and information flow. Ask for "a slide that explains how a data centre stays cool" and you get an original illustration, a title that asks the question, one line that answers it, and labels that point to the parts that matter.
It comes in twelve colours, each with a dark and a light version, seven type sets, many languages and a full shade ramp. The same colours drive a small web interface kit, so a deck, a report and a dashboard can look like one family.
Contents
- What you get
- Try it in your browser
- Gallery
- The scene library
- Quick start
- Choosing a look
- The colours
- Type sets
- Languages
- Illustration modes and components
- Animation
- Interface kit and design tokens
- Your brand in one step
- Social posts
- Slide templates
- Make your own colour
- Words on the slide
- Accessibility
- Using the scripts directly
- Troubleshooting
- Building from source
- Contributing, security and licence
What you get
- Twelve colour themes, each in a dark and a light variant, with an 11-step shade ramp (50 to 950) and two alternative shades you can switch to.
- Two illustration modes: cut-away scenes with many small figures, and close-up portraits with large characters and a single beam of light.
- About forty drawing components: factory roofs, storm clouds, batteries, conveyors, server racks, domes, a watchtower, a saucer with a tractor beam, profile busts, robots, light cones and the lantern itself.
- Seven type sets and many languages (accented Latin, Vietnamese, Cyrillic, Greek, and right-to-left Persian and Arabic), every font bundled or one command away, so nothing falls back to Arial on someone else's machine.
- Seamless looping animation as GIF and MP4, with an automatic seam check.
- An interface kit: CSS variables, a Tailwind theme and eight components, in any colour.
- A theme generator that turns one brand colour into a complete theme and checks every text colour for contrast.
- A voice guide, so the words on a slide are as considered as the picture.
- A library of 24 ready scenes for the ideas people explain most often, from supply chains to the cloud, each with its question, answer and labels.
- Your brand in one step: point it at a logo, a website or a hex value and get a full theme with previews.
- Social posts in square, 4:5 and 9:16, as stills or seamless MP4 loops.
- Slide templates for PowerPoint, Keynote and Google Slides in every colour, every word and the chart editable.
- A playground on the web, where the whole page changes colour as you choose.
Try it in your browser
The Lantern playground shows the whole system without installing anything. Pick a colour and the entire page, its scenes, its shade ramp and its buttons take it on.
| On the page | What you can do |
|---|---|
| Pick a colour | Switch between the twelve colours, dark or light, and the seven type sets. |
| Six scenes | See the supply chain, the cloud, a data centre, a power grid, a knowledge base and a sales funnel in the chosen colour. |
| The shade ramp | Copy any of the eleven shades, 50 to 950, with one click. |
| The interface kit | See buttons, cards, a form and a stat in that colour. |
| Take it with you | Copy the install commands, or download the skill, the slide templates in dark and light, and tokens.css. |
| Your colour | Pick any brand colour to see its ramp, the nearest Lantern colour and the command that builds a theme from it. |
| The scene library | Browse all 24 scenes with their questions and names. |
The page remembers your last choice in your own browser and sends nothing anywhere.
Gallery
| Blue, dark: an annotated factory cut-away | Red, light: the same scene on paper |
| Blue, dark. An annotated cut-away: a question, an answer and four labelled parts. | Red, light. The same scene in the light variant, ready for print. |
| Gold, dark: a break slide with a saucer | Purple, dark: a portrait scene |
| Gold, dark. A break slide: the ship is processing, so should you. | Purple, dark. Portrait mode: two characters and one beam of light. |
| The component library on a dark ground | The component library on paper |
| The component library, Blue dark. | The same library, White light. |
The scene library
24 cut-aways, ready to drop into a deck. Each comes in every colour and both variants, carries its own words (a question, an answer line and three labels), and moves as a seamless loop. Shown here across the twelve colours.
python scripts/scenes.py # list them
python scripts/scenes.py power_grid teal light modern # one scene, any colour, variant and type set
python scripts/scenes.py power_grid clean # the picture without words
Change the words without touching the drawing: build("bank", words={"title": ["Where does the money go?"], "answer": "Mostly back out as loans."}).
Quick start
1. Install the skills
Every skill is a plain folder in skills/: skills/lantern is the master skill with every colour, and skills/lantern-<colour> holds one colour each. Install the master skill, or just the colours you use.
| Agent | Quickest install | What you get |
|---|---|---|
| Claude Code (terminal, desktop, IDE) | /plugin marketplace add Amircode2050/lantern-design-system | any skill, one at a time |
| Claude.ai and the Claude app | upload a zip from the latest release | one skill per zip |
| OpenAI Codex | codex plugin marketplace add Amircode2050/lantern-design-system | all 13 skills |
| GitHub Copilot CLI | copilot plugin marketplace add Amircode2050/lantern-design-system | any skill, one at a time |
| Gemini CLI | gemini extensions install https://github.com/Amircode2050/lantern-design-system | all 13 skills |
| Cursor | npx skills add Amircode2050/lantern-design-system -a cursor | the skills you pick |
| OpenCode | npx skills add Amircode2050/lantern-design-system -a opencode | the skills you pick |
| Grok Build | npx skills add Amircode2050/lantern-design-system -a grok | the skills you pick |
| Any other agent | copy a folder from skills/ | the skills you copy |
Claude Code
Inside a session (the terminal, the desktop app or an IDE extension):
/plugin marketplace add Amircode2050/lantern-design-system
/plugin install lantern@lantern-design-system
Or from your terminal, without opening a session:
claude plugin marketplace add Amircode2050/lantern-design-system
claude plugin install lantern@lantern-design-system
claude plugin install lantern-teal@lantern-design-system
Update later with claude plugin marketplace update lantern-design-system, and remove a skill with claude plugin uninstall lantern-teal@lantern-design-system.
If adding the marketplace fails (an SSH Permission denied (publickey), a checkout error, or a message that the repo has no release to download), add it by its full HTTPS address instead:
claude plugin marketplace add https://github.com/Amircode2050/lantern-design-system.git
or install from the release download, which needs no git at all: download lantern-design-system.zip from the latest release, unzip it, and from the folder that holds it run
claude plugin marketplace add ./lantern-design-system
claude plugin install lantern@lantern-design-system
On Windows, a checkout error usually means a path over 260 characters; git config --global core.longpaths true fixes it.
Claude.ai and the Claude app
Download the skill's zip (for example lantern.zip or lantern-teal.zip) from the latest release, then upload it under Settings, Capabilities, Skills. Skills you upload there also work in the Claude desktop and mobile apps.
OpenAI Codex
codex plugin marketplace add Amircode2050/lantern-design-system
codex plugin add lantern-design-system@lantern-design-system
The plugin carries all thirteen skills; Codex picks the colour you name. In the ChatGPT desktop app, the same marketplace appears in the Plugins directory once added. To install a single skill instead, use npx skills add Amircode2050/lantern-design-system --skill lantern -a codex.
GitHub Copilot CLI
copilot plugin marketplace add Amircode2050/lantern-design-system
copilot plugin install lantern@lantern-design-system
copilot plugin install lantern-teal@lantern-design-system
For Copilot in VS Code, use npx skills add Amircode2050/lantern-design-system -a github-copilot.
Gemini CLI
gemini extensions install https://github.com/Amircode2050/lantern-design-system
The extension carries all thirteen skills. Update it with gemini extensions update lantern-design-system.
Cursor
npx skills add Amircode2050/lantern-design-system --skill lantern -a cursor -g
A Cursor team can also add the skills as plugins: import this repository under Dashboard, Settings, Plugins, Import (it reads .cursor-plugin/marketplace.json).
OpenCode
npx skills add Amircode2050/lantern-design-system --skill lantern -a opencode -g
OpenCode also reads skills from .opencode/skills/, ~/.config/opencode/skills/, .agents/skills/ and .claude/skills/, so a copied folder works too.
Grok Build
npx skills add Amircode2050/lantern-design-system --skill lantern -a grok -g
Grok Build also reads Claude Code plugins and skills, so if Lantern is installed in Claude Code, Grok Build finds it without another step. Skills live in .grok/skills/ (this project) or ~/.grok/skills/ (every project).
Any other agent
The skills follow the open Agent Skills format (a folder with a SKILL.md), so any agent that reads that format can use them unchanged. The skills installer knows where each agent looks (npx skills add Amircode2050/lantern-design-system asks which skills and agents), or copy a folder by hand:
| Agent | This project only | Every project |
|---|---|---|
| Claude Code | .claude/skills/ | ~/.claude/skills/ |
| OpenAI Codex | .agents/skills/ | ~/.agents/skills/ |
| Gemini CLI | .agents/skills/ | ~/.gemini/skills/ |
| GitHub Copilot | .agents/skills/ | ~/.copilot/skills/ |
| Cursor | .agents/skills/ | ~/.cursor/skills/ |
| OpenCode | .opencode/skills/ | ~/.config/opencode/skills/ |
| Grok Build | .grok/skills/ | ~/.grok/skills/ |
git clone https://github.com/Amircode2050/lantern-design-system
cp -r lantern-design-system/skills/lantern ~/.agents/skills/
Paths change as agents evolve, so check your agent's documentation if a skill does not appear. Whatever the agent, the skill draws with Python on your machine, so step 2 below applies to every agent. In agents that cannot show multiple-choice questions, the colour picker asks the same questions in plain text.
| Skill | What it does |
|---|---|
lantern | Shows the picker, asks for colour, variant, type set and shade, can add new colours, exports tokens. |
lantern-black | Black only: a jet near-black ground (#1C1C1E) in neutral greys, with one metallic-gold light. |
lantern-white | White only: ivory paper (#FAF8F2) in strict monochrome: ink on paper, the light is plain white. |
lantern-blue | Blue only: a deep navy ground built from shades of the core colour #3366FF, with one amber light and a teal support family. |
lantern-purple | Purple only: a deep violet ground, with one warm peach light and a blue support family. |
lantern-green | Green only: a deep forest-green ground (#1B4D3E), with one amber light. |
lantern-red | Red only: a deep maroon ground (#7A1F2B), with one champagne-gold light. |
lantern-gray | Gray only: a charcoal ground (#36454F), with one amber light. |
lantern-teal | Teal only: a deep teal ground (#0F766E), with one amber light. |
lantern-gold | Gold only: a warm near-black ground with metallic gold (#D4AF37) as the light. |
lantern-orange | Orange only: a warm near-black ground with burnt orange (#CC5500) as the brand colour and tangerine as the light. |
lantern-cyan | Cyan only: a vivid deep-cyan ground built from bright cyan (#1CABE2), with one amber light. |
lantern-rose | Rose only: a deep rose ground (#C2185B), with one champagne-gold light. |
2. Install what it renders with
The skills draw SVG and photograph it with a headless browser, so the machine that runs them needs:
pip install pillow numpy playwright
python -m playwright install chromium
plus ffmpeg if you want GIF or MP4 output, pip install python-pptx for slide templates, and Python 3.11 or newer. To check a setup, run python scripts/kit.py inside any skill folder: it prints what is missing and the command that fixes it.
3. Ask for something
- "A title slide for a talk on supply chains, Lantern gold."
- "An annotated cut-away that explains how a heat pump works. Teal, light variant, editorial type."
- "A break slide in my Lantern style." (the master skill will show you the picker)
- "A 25-second loop of the saucer for the start of my keynote."
- "Export the rose theme as CSS variables and a Tailwind theme."
- "Here is our logo. Make a Lantern colour from it."
- "Our website is example.com. Make our slides match it."
- "Turn the supply chain scene into an Instagram story, Lantern orange."
- "Give me a PowerPoint template in Lantern teal, light."
Choosing a look
The master skill asks at most two short questions, each with a picture, and remembers your answers for the rest of the conversation.
Step one, the colour. Every installed theme with its mood, its light and its shade ramp:
Step two, the details. That colour in dark and light, the seven type sets, and the family's shade options. Pick a different shade (Burgundy instead of Maroon, say) and the skill builds it on the spot with the same recipe.
Name what you want in the request ("lantern teal, light, modern") and it skips the questions.
The colours
| Colour | Core | The light | Type set | Starts in | Best for |
|---|---|---|---|---|---|
| Black | Jet #1C1C1E | metallic-gold light | Classic | dark | keynotes, launches and premium reports |
| White | Ivory #FAF8F2 | white light, ink only | Editorial | light | print, documents and bright rooms |
| Blue | Blue #3366FF | amber light | Classic | dark | technology, science and finance |
| Purple | Purple #6A57B8 | warm peach light | Classic | dark | ideas, research and storytelling |
| Green | Forest #1B4D3E | amber light | Classic | dark | sustainability, health and growth |
| Red | Maroon #7A1F2B | champagne light | Editorial | dark | strategy, culture and history |
| Gray | Charcoal #36454F | amber light | Modern | dark | engineering, operations and data |
| Teal | Deep teal #0F766E | amber light | Modern | dark | healthcare, water and calm explainers |
| Gold | Metallic gold #D4AF37 | gold light on near-black | Classic | dark | awards, finance and luxury brands |
| Orange | Burnt orange #CC5500 | orange light on near-black | Modern | dark | energy, product launches and bold talks |
| Cyan | Bright cyan #1CABE2 | amber light | Modern | dark | digital products, cloud and fresh decks |
| Rose | Rose #C2185B | champagne light | Editorial | dark | culture, wellbeing and consumer brands |
Every theme follows the same rules: a deep ground, a structure ramp built from the core colour, exactly one accent (the light) and a support colour reserved for natural things such as water. Text colours are fitted to WCAG contrast in both variants.
Black
A jet near-black ground (#1C1C1E) in neutral greys, with one metallic-gold light. Best for keynotes, launches and premium reports.
- Skill:
lantern-black, orlanternand pick Black. It also answers to: jet, onyx, ebony, noir, black and gold. - Defaults: dark variant, Classic type set.
- Other shades: Onyx
#111111, Rich black#0B0B0C.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #1f1f21 #0c0c0d #040404 | #ffffff #f4f4f4 #e3e3e4 |
| Text primary / secondary | #f2f2f2 / #c1c1c2 | #1f1f20 / #424243 |
| The light (accent text) | #f9d461 | #7b6201 |
| Information flows | #d6d6d6 | #5b5b5d |
| Support (water) | #90e1e5 | #007f84 |
| Button fill / text | #1c1c1e / #ffffff | #1c1c1e / #ffffff |
| Shade ramp 50 to 950 | #f5f5f5 #e8e8e8 #d4d4d5 #bababc #98989a #77777a #5a5a5d #454546 #303031 #1c1c1e #0f0f10 | same |
White
Ivory paper (#FAF8F2) in strict monochrome: ink on paper, the light is plain white. Best for print, documents and bright rooms.
- Skill:
lantern-white, orlanternand pick White. It also answers to: ivory, porcelain, paper, cream, black and white. - Defaults: light variant, Editorial type set.
- Other shades: Porcelain
#F7F7F5, Pure white#FFFFFF.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #302f2c #161513 #090807 | #fdfaf1 #f4f4f3 #e3e3e2 |
| Text primary / secondary | #f2f2f1 / #c2c1bf | #201f1d / #43423f |
| The light (accent text) | #d7d7d6 | #656564 |
| Information flows | #d6d6d4 | #5d5b56 |
| Support (water) | #d1d1d0 | #6f6f6e |
| Button fill / text | #faf8f2 / #191817 | #faf8f2 / #191817 |
| Shade ramp 50 to 950 | #faf8f2 #e8e8e7 #d5d4d2 #bbbab7 #9a9894 #797772 #5c5b56 #464541 #31302e #201f1d #100f0e | same |
Blue
A deep navy ground built from shades of the core colour #3366FF, with one amber light and a teal support family. Best for technology, science and finance.
- Skill:
lantern-blue, orlanternand pick Blue. It also answers to: cobalt, royal blue, azure. - Defaults: dark variant, Classic type set.
- Other shades: none.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #2145b0 #091e67 #030f3b | #ffffff #eff4ff #d8e3ff |
| Text primary / secondary | #edf2fe / #a7c1fa | #071850 / #1f3a8a |
| The light (accent text) | #ffd070 | #975402 |
| Information flows | #c3d6fe | #1e48d1 |
| Support (water) | #90e1e6 | #007f85 |
| Button fill / text | #3366ff / #ffffff | #3366ff / #ffffff |
| Shade ramp 50 to 950 | #f1f5fe #dde8fe #c1d4fe #9ab9fe #6592ff #3366ff #1e47d1 #1535a3 #0d2576 #071850 #020b2f | same |
Purple
A deep violet ground, with one warm peach light and a blue support family. Best for ideas, research and storytelling.
- Skill:
lantern-purple, orlanternand pick Purple. It also answers to: violet, indigo, lavender. - Defaults: dark variant, Classic type set.
- Other shades: none.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #4c3da2 #29185d #1b0832 | #ffffff #f3f3fc #e2e0f9 |
| Text primary / secondary | #f4efff / #c4b9ef | #201545 / #423479 |
| The light (accent text) | #fcd5ad | #a04e24 |
| Information flows | #d7ceff | #5d40b5 |
| Support (water) | #adbcf9 | #3f51b5 |
| Button fill / text | #6a57b8 / #ffffff | #6a57b8 / #ffffff |
| Shade ramp 50 to 950 | #f5f4fd #e7e5fa #d3cff4 #b9b2ec #978bdd #6a57b8 #5b49a1 #45377d #302659 #1f183c #0f0b22 | same |
Green
A deep forest-green ground (#1B4D3E), with one amber light. Best for sustainability, health and growth.
- Skill:
lantern-green, orlanternand pick Green. It also answers to: forest, emerald, jade, sage, olive. - Defaults: dark variant, Classic type set.
- Other shades: Emerald
#046C4E, Jade#00A86B.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #375a4e #172e26 #0a1813 | #ffffff #f1f5f3 #dde6e2 |
| Text primary / secondary | #f2f6f4 / #b9cbc4 | #12241d / #2f483f |
| The light (accent text) | #ffd070 | #975402 |
| Information flows | #cdd9d4 | #396557 |
| Support (water) | #aed5ff | #4373a3 |
| Button fill / text | #1b4d3e / #ffffff | #1b4d3e / #ffffff |
| Shade ramp 50 to 950 | #f2f6f4 #e1eae7 #c8d9d2 #a7c2b7 #7ba294 #528372 #396556 #1b4d3e #1c362e #11231d #07120e | same |
Red
A deep maroon ground (#7A1F2B), with one champagne-gold light. Best for strategy, culture and history.
- Skill:
lantern-red, orlanternand pick Red. It also answers to: maroon, burgundy, crimson, wine, oxblood. - Defaults: dark variant, Editorial type set.
- Other shades: Burgundy
#800020, Crimson#A4161A.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #7d393e #45181b #260b0d | #ffffff #faf2f2 #f1dede |
| Text primary / secondary | #f8f0f0 / #deb6b6 | #351315 / #633133 |
| The light (accent text) | #f6d196 | #7e5f2a |
| Information flows | #eacece | #903c42 |
| Support (water) | #90e1e5 | #007f84 |
| Button fill / text | #7a1f2b / #ffffff | #7a1f2b / #ffffff |
| Shade ramp 50 to 950 | #fcf3f2 #f7e2e2 #efcaca #e3a9aa #cf7e81 #b5555b #903b42 #7a1f2b #501e22 #351215 #1e0709 | same |
Gray
A charcoal ground (#36454F), with one amber light. Best for engineering, operations and data.
- Skill:
lantern-gray, orlanternand pick Gray. It also answers to: grey, silver, charcoal, slate, graphite. - Defaults: dark variant, Modern type set.
- Other shades: Slate
#475569, Silver#A8A9AD.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #48535b #222a2f #111619 | #ffffff #f3f4f5 #e1e4e6 |
| Text primary / secondary | #f1f2f3 / #bfc6ca | #1a2024 / #3b4449 |
| The light (accent text) | #ffd070 | #975402 |
| Information flows | #d2d6da | #4f5d67 |
| Support (water) | #aed5ff | #4373a3 |
| Button fill / text | #36454f / #ffffff | #36454f / #ffffff |
| Shade ramp 50 to 950 | #f4f5f6 #e5e8eb #cfd5d9 #b3bcc3 #8d9ba4 #6a7a85 #4f5d67 #36454f #293237 #1a2024 #0c1013 | same |
Teal
A deep teal ground (#0F766E), with one amber light. Best for healthcare, water and calm explainers.
- Skill:
lantern-teal, orlanternand pick Teal. It also answers to: deep teal, petrol, teal green. - Defaults: dark variant, Modern type set.
- Other shades: Petrol
#005F73, Teal#008080.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #1d5d57 #01302c #011917 | #ffffff #f0f5f4 #d9e7e5 |
| Text primary / secondary | #f2f7f7 / #b0cdc9 | #042522 / #1d4b46 |
| The light (accent text) | #ffd070 | #975402 |
| Information flows | #c7dbd8 | #0d6962 |
| Support (water) | #aed5ff | #4373a3 |
| Button fill / text | #0f766e / #ffffff | #0f766e / #ffffff |
| Shade ramp 50 to 950 | #f0f7f6 #dcece9 #c0dbd7 #99c5bf #63a79f #2b887f #0f766e #05504b #053934 #032522 #011311 | same |
Gold
A warm near-black ground with metallic gold (#D4AF37) as the light. Best for awards, finance and luxury brands.
- Skill:
lantern-gold, orlanternand pick Gold. It also answers to: yellow, mustard, golden, ochre. - Defaults: dark variant, Classic type set.
- Other shades: Antique gold
#C9A227, Mustard#E1AD01.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #282418 #120f07 #060502 | #ffffff #f4f4f2 #e4e3df |
| Text primary / secondary | #f2f2f0 / #c4c1ba | #221f18 / #464238 |
| The light (accent text) | #f9d461 | #7b6201 |
| Information flows | #d8d6d0 | #615b49 |
| Support (water) | #90e1e5 | #007f84 |
| Button fill / text | #d4af37 / #1b1812 | #d4af37 / #1b1812 |
| Shade ramp 50 to 950 | #f8f5ed #eee8d5 #e0d4b2 #d4af37 #b2953c #917407 #6f5801 #554302 #3c2f00 #281e00 #150f00 | same |
Orange
A warm near-black ground with burnt orange (#CC5500) as the brand colour and tangerine as the light. Best for energy, product launches and bold talks.
- Skill:
lantern-orange, orlanternand pick Orange. It also answers to: burnt orange, tangerine, persimmon, copper. - Defaults: dark variant, Modern type set.
- Other shades: Persimmon
#E4572E, Tangerine#F28C28.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #302019 #160c07 #090403 | #ffffff #f5f3f2 #e7e2e0 |
| Text primary / secondary | #f4f1f0 / #cabfba | #261d19 / #4d3f39 |
| The light (accent text) | #ffcca5 | #995304 |
| Information flows | #dbd4d1 | #6c554b |
| Support (water) | #90e1e5 | #007f84 |
| Button fill / text | #943c00 / #ffffff | #943c00 / #ffffff |
| Shade ramp 50 to 950 | #fdf3ee #fbe2d7 #f6c9b5 #eda888 #dc7a4b #cc5500 #943c00 #722d01 #521e01 #381200 #1f0700 | same |
Cyan
A vivid deep-cyan ground built from bright cyan (#1CABE2), with one amber light. Best for digital products, cloud and fresh decks.
- Skill:
lantern-cyan, orlanternand pick Cyan. It also answers to: aqua, turquoise, sky blue. - Defaults: dark variant, Modern type set.
- Other shades: Cyan
#0891B2, Aqua#00B4D8.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #066081 #013144 #011a26 | #ffffff #ebf6fc #cce8f8 |
| Text primary / secondary | #ffffff / #99d8f9 | #012332 / #034963 |
| The light (accent text) | #ffd070 | #975402 |
| Information flows | #b2ddf4 | #066486 |
| Support (water) | #aed5ff | #4373a3 |
| Button fill / text | #1cabe2 / #001b28 | #1cabe2 / #001b28 |
| Shade ramp 50 to 950 | #eef7fb #d8ebf6 #b7daee #89c4e2 #1cabe2 #0882ae #016386 #014c67 #02354a #012331 #00121b | same |
Rose
A deep rose ground (#C2185B), with one champagne-gold light. Best for culture, wellbeing and consumer brands.
- Skill:
lantern-rose, orlanternand pick Rose. It also answers to: pink, raspberry, magenta, fuchsia. - Defaults: dark variant, Editorial type set.
- Other shades: Deep rose
#9E1450, Blush rose#D4708F.
Key tokens
| Token | Dark | Light |
|---|---|---|
| Ground (centre to edge) | #901d45 #510020 #2e0110 | #ffffff #fdf0f2 #f9dae0 |
| Text primary / secondary | #fbeef0 / #ecaeba | #3f0319 / #721e39 |
| The light (accent text) | #f6d196 | #7e5f2a |
| Information flows | #f5c9d1 | #a7084c |
| Support (water) | #90e1e5 | #007f84 |
| Button fill / text | #c2185b / #ffffff | #c2185b / #ffffff |
| Shade ramp 50 to 950 | #fef1f4 #ffdee4 #fdc2ce #f79cb0 #e86789 #c2185b #a7074b #820239 #5d0327 #3f0319 #24010b | same |
Type sets
| Set | Display | Text | Numbers and code | Mood |
|---|---|---|---|---|
| Classic | PT Serif | Inter | JetBrains Mono | bookish, scholarly, calm |
| Modern | Space Grotesk | Inter | JetBrains Mono | technical, crisp, product-like |
| Editorial | Fraunces | Source Sans 3 | JetBrains Mono | magazine, expressive, warm |
| Technical | IBM Plex Serif | IBM Plex Sans | IBM Plex Mono | corporate, precise, engineered |
| Geometric | DM Serif Display | DM Sans | JetBrains Mono | clean, round, contemporary |
| Garamond | EB Garamond | Inter | JetBrains Mono | old-style, literary, humane |
| Swiss | Inter Tight | Inter | JetBrains Mono | neutral, dense, poster-like |
Any type set works with any colour. The scale is fixed so pieces stay consistent: a 132-point word for break slides, 44 for titles, 30 for labels, 16.5 for body text, and nothing smaller than 13.
Languages
Write the words in your language and Lantern picks the right letters. Persian, Arabic and Urdu are set right to left: titles move to the top right and every text block aligns to its right edge, while the picture and its labels keep their places.
All 24 library scenes also come translated into Persian and Spanish, and the slide template comes in Persian, right to left throughout (mirrored layouts, Persian digits, the chart reading from the right):
python scripts/scenes.py bank fa # a scene in Persian; es for Spanish
python scripts/social.py bank story rose fa # a social post in Persian
python scripts/deck.py purple --lang fa # a Persian slide template (font: Vazirmatn)
Persian slide templates for every colour are attached to each release.
| Font pack | Covers | Size |
|---|---|---|
core | English and other plain-Latin languages, for Classic, Modern and Editorial | 0.35 MB |
sets | the Technical, Geometric, Garamond and Swiss type sets | 0.40 MB |
europe | Polish, Czech, Slovak, Hungarian, Romanian, Turkish, the Baltic languages, Vietnamese and more | 0.97 MB |
cyrillic-greek | Russian, Ukrainian, Bulgarian, Serbian, Kazakh, Greek and more | 0.82 MB |
arabic | Persian, Arabic, Urdu (Vazirmatn) | 0.06 MB |
The master lantern skill includes every pack. A colour skill includes core; add the others when you need them:
python scripts/fonts.py list # what is installed
python scripts/fonts.py add sets europe # or: add all
python scripts/fonts.py verify # check every file against its recorded hash
fonts.py downloads only the files pinned in assets/fonts/manifest.json, from jsDelivr's mirror of the Fontsource packages, and keeps a file only if its SHA-256 hash matches. Chinese, Japanese and Korean are not bundled yet; they render in your system's font if it has one.
Illustration modes and components
Cut-away scenes open a building, machine or vessel like a doll's house: five to eight linked rooms, small silhouette figures who are always doing something, one dominant light, and flow lines between the parts. Flows carry meaning by shape as well as colour: round dots for energy, small squares for information, rings for water.
Portrait scenes use two or three large characters (a person in strict profile, a robot, a lit object between them), soft gradients and a single beam of light, with no text in the picture.
The building blocks:
| Group | Components |
|---|---|
| Structure | shell, room, slab, wall, truss, plinth, sawtooth_roof, gable, arched_window, arcade |
| Light | lantern, pendant_lamp, string_lights, orb, glow, light_cone, headlamp |
| Weather and nature | cloud (with rain and a lightning bolt), tree |
| Town and utilities | house, road, truck, pylon, turbine, solar_panel, tank, shelf, bed, dish |
| Machines and props | battery, conveyor, crate, car, machine, server_rack, clock, desk, cabinet, screen, ladder, gear, pipe, cable |
| Large architecture | dome, gallery_ring, lantern_tower, saucer, tractor_beam |
| Science | orrery, thinking_core |
| People and machines | standing, seated, bust_human, bust_robot, camera_eye, pane |
| Data | bars, flow, sight |
| Text | title_block, callout, break_slide, credit |
Each skill's references/components.md lists every function with its arguments.
Animation
Any scene becomes a seamless loop: every moving part (gears, flows, rain, blinking lights, the lantern's flame) completes whole cycles per loop, and check_loop() measures the seam. GIFs come out at an exact length (the frame rate must divide 100, because GIF timing is in hundredths of a second) and shrink their palette automatically to stay under 15 MB. MP4s are 1080p H.264. Every animation ships with a still frame for anyone who prefers no motion.
def frame(t):
return build(t) # your scene as a function of time
if __name__ == "__main__":
set_theme("dark", color="gold")
set_canvas("16:9", loop=25)
render_frames(frame, 10, "frames10", fresh=True)
print(check_loop("frames10")) # seam vs a normal frame step: should be close
make_gif("frames10", "loop.gif")
Interface kit and design tokens
python scripts/export.py teal out/teal --type modern --default dark
| File | Contents |
|---|---|
tokens.css | Every colour as a CSS variable for both variants (switch with data-theme="dark" or "light" on <html>), the shade ramp as --core-50 to --core-950, semantic names (--bg, --surface, --text, --primary, --accent-fg, --link), fonts, type scale, spacing and radii. The names are the same in every colour, so changing colour means swapping one file. |
fonts.css | The type set's fonts, embedded. |
tailwind.theme.js | A Tailwind theme.extend block pointing at those variables. |
ui.css | Type classes, layout helpers and eight components: button, card, field, table, tag, callout, stat and a 16:9 slide frame. |
demo.html | Every component on one page, with a variant switch. |
The accent keeps its meaning in an interface: it marks the one thing to look at. Actions use the core colour, and a core too pale to carry white text falls back to ink.
Your brand in one step
python scripts/brand.py acme https://example.com # the colours a website declares
python scripts/brand.py acme logo.png # a logo or a few screenshots
python scripts/brand.py acme "#E4002B" # a colour you already know
Lantern finds the brand's most characteristic colour (chromatic, used often, not too pale), borrows the recipe of the nearest of the twelve colours (a yellow gets Gold's near-black ground, a grey gets the monochrome recipe), and writes a complete theme. It then renders a cover slide, a scene and the component sheet in dark and light, plus the CSS and Tailwind tokens, into brand-acme/. If it picked the wrong colour, it prints the runners-up and the command to use one of them.
The website mode is the only part of Lantern that uses the network: it downloads that one page and up to five of its stylesheets, nothing else.
Social posts
python scripts/social.py cloud_computing square blue # 1080x1080 for LinkedIn, X and Instagram
python scripts/social.py supply_chain portrait teal # 1080x1350 feed post
python scripts/social.py knowledge_base story gold --loop 8 # 1080x1920 still plus a seamless 8 s MP4
python scripts/social.py all square rose --handle "@you" # every scene, with your handle at the foot
Slide templates
Every colour has a ten-slide template in dark and light, attached to each release: title, agenda, section break, three illustrated explainers, a text slide, two columns, a native chart and a closing slide. The pictures are images; every title, label and number is editable, and the file's own theme colours and fonts are set, so a new shape or chart matches without effort. It opens in PowerPoint, Keynote and Google Slides (File, Import slides).
python scripts/deck.py teal light modern --out teal.pptx
The fonts are free from Google Fonts. Google Slides already has them; for PowerPoint and Keynote install the two families of your type set (for Classic, PT Serif and Inter).
Make your own colour
python scripts/new_theme.py lilac "#8E7CC3" --preview out
python scripts/picker.py --all
One colour in, a complete theme out: both variants, the shade ramp, a button-safe fill, and every text colour nudged until it passes contrast. The preview renders the component sheet in dark and light so you can judge it before using it.
| Option | What it does |
|---|---|
--harmony warm | An amber light whatever the brand colour (the default, and the safest). |
--harmony complementary / analogous | The light sits opposite, or next to, the brand colour on the colour wheel. |
--harmony monochrome | The light is a pale tint of the brand colour: for black, white and gray systems. |
--accent "#hex" or core | Set the light exactly; core makes the brand colour itself the light. |
--ground-chroma 0.2 | A near-black ground, for gold, orange and yellow, whose own dark shades turn brown. |
--deep 0.55 | Darker grounds in the dark variant. |
--from red | Reuse another theme's recipe for a new shade. |
Starting from a picture instead? python scripts/intake.py logo.png reports the dominant colours, the nearest installed theme, and the command to build a new one.
Words on the slide
Lantern has a voice as well as a look. A title is a real question; the answer line replies in one sentence; labels name the thing ("The workshop") and say what it does in a few short lines. Sentence case, British spelling, no exclamation marks, and a credit line that says what is stylised. The full guide, with limits for every slot and a list of words to avoid, is in each skill's references/voice.md.
Accessibility
- Text and flow colours are checked against every ground they may sit on: 7:1 for primary text, 4.5:1 for secondary text, the answer line and tags.
- Differences never rest on colour alone: flows differ by shape, chart bars carry their values, status tags carry a word.
- Every image gets one sentence of alt text, embedded in the SVG and returned with the file.
- Animations ship with a still, and nothing flashes more than three times a second.
- The interface kit has visible focus rings, 40-pixel controls and errors written under the field.
Using the scripts directly
The skills are plain Python, so you can script them:
import sys
sys.path.insert(0, "skills/lantern/scripts")
from kit import *
from components import *
set_theme("dark", color="green", type_set="classic")
set_canvas("16:9")
body = [
background(),
lantern(960, 160, 2.0),
finish(),
title_block(["Who keeps the lights on?"], "Fiat lux", "Everybody, a little."),
]
render(svg_doc(std_defs(), "".join(body), alt="A lantern in the dark."), "slide.png", scale=2)
python scripts/examples.py renders the reference scenes in every colour and variant, and doubles as a self-test.
Troubleshooting
| Problem | Fix |
|---|---|
fonts failed to load | The assets/fonts folder is incomplete; reinstall the skill. |
Executable doesn't exist from Playwright | Run python -m playwright install chromium. |
| GIF or MP4 fails | Install ffmpeg and make sure it is on your PATH. |
| The skill does not start | Name it ("in the Lantern style", "lantern blue"), or check it is listed under your installed skills. |
| A loop jumps at the seam | A motion is not on whole cycles; check_loop() shows how large the jump is. Usually a gear's hole count or a non-integer cycles. |
| Text overlaps a leader line | Widths are estimated per font; shorten the label or move it after changing type set. |
Building from source
Every skill in skills/ is generated from one source, so a fix lands everywhere at once.
src/ the engine (scripts, interface kit, fonts, system.json) and the twelve themes
build/ build.py, themes.py (colour recipes), check.py, release.py, teasers.py, templates/
skills/ the generated skills, one folder each; .claude-plugin/marketplace.json lists each as a plugin
docs/images/ everything on this page
docs/index.html the playground, served by GitHub Pages
pip install -r requirements.txt ruff
python -m playwright install chromium
python build/build.py # renders reference images and writes every skill (about ten minutes)
python build/build.py --skip-render # code and docs only
python build/check.py # contrast, names, interface contrast, fonts, translations, engine copies
python -m unittest discover -s tests # unit tests, no browser needed
python build/readme_images.py # the images on this page
python build/site.py # the playground in docs/ (GitHub Pages, deploy from /docs)
python src/scripts/deck.py all --out dist # slide templates for a release
Contributing, security and licence
Contributions are welcome, especially new colours and components: see CONTRIBUTING.md. To report a vulnerability, see SECURITY.md. Changes are listed in CHANGELOG.md.
Lantern is licensed under the Apache License 2.0. The bundled fonts (PT Serif, Inter, JetBrains Mono, Space Grotesk, Fraunces and Source Sans 3) keep their own SIL Open Font Licence; see NOTICE.