er-slides
er-slides
Build a single-file HTML presentation in the Swiss Modern editorial style established in the AI Beyond Chatbot Workshop deck.
Quick Start
- Copy
assets/base-template.htmlto the target directory and rename it. - Read
references/design-system.mdandreferences/slide-patterns.md. - Build slides using the patterns. Each slide =
.slide > .slide-stage > .slide-content. - Generate illustrations if needed — see
references/illustration-guide.md. - Run the curly-quote fix after any JS edits (see below).
Workflow
Step 1 — Brief
Collect from the user (or infer from context):
- Slide list or outline
- Presenter name, role, institution, date
- Which slides need illustrations
- Output file path
If the brief is incomplete, ask only for what is blocking you — do not ask for everything upfront.
Step 2 — Build slides
Always start from assets/base-template.html. Never start from scratch.
Available patterns (read references/slide-patterns.md for full HTML + CSS):
| Pattern | Use case |
|---|---|
| Title | First slide, presenter info |
| Statement / Quote | One-idea punchy slide |
| Two-col text + illustration | Workhorse layout — process steps with image |
| Three-panel grid | "Three projects / points" |
| Live demo | Pause for live tool demo |
| Full-bleed image + hotspots | Interactive image with tooltips |
| Evidence / comparison grid | Before/after, side-by-side stats |
| Mocked chat UI | Show chatbot before/after demo |
Rules:
- Every slide fits in one viewport — no scrolling within a slide, ever.
- Add
.revealto elements that should animate in on scroll. - Kicker to h2 to body copy is the standard hierarchy.
- Use
clamp()for all sizes — never fixedpxfor typography or spacing. - Illustration containers:
aspect-ratio: 4/3,overflow: hidden.
Step 3 — Illustrations
Read references/illustration-guide.md before generating any image.
Generate via script:
python3 ~/.claude/skills/er-slides/scripts/gen_illustration.py \
"Subject description" output.png
Embed as base64 data URI — no external file refs in the final HTML:
import base64
b64 = base64.b64encode(open("output.png","rb").read()).decode()
# use f"data:image/png;base64,{b64}" as img src
Step 4 — Post-edit fix (mandatory after any JS edit)
Run the curly-quote sed fix to prevent JS parse errors from smart quotes:
sed -i '' 's/\xe2\x80\x98/'"'"'/g; s/\xe2\x80\x99/'"'"'/g; s/\xe2\x80\x9c/"/g; s/\xe2\x80\x9d/"/g' "path/to/file.html"
Step 5 — Laptop tuning
If slides feel cramped on a 13-15 inch laptop, add per-slide CSS overrides inside the laptop media query block at the bottom of <style>. Adjust in this order:
- Root variable overrides (already in the block)
- Per-slide typography and spacing
- Grid column ratios
- Only then touch base desktop styles
Design Rules (non-negotiable)
- Colors: use only the token set. No new colors.
--accentsparingly. - Fonts: Archivo for display, IBM Plex Sans for body, IBM Plex Mono for labels/kickers.
- Images: always base64-embedded,
object-fit: cover,aspect-ratio: 4/3. - No JS libraries — vanilla JS only, zero dependencies.
- No inline
pxfor typography or layout —clamp()or CSS variables only.
References
references/design-system.md— full token set, CSS architecture, component CSSreferences/slide-patterns.md— all layout patterns with HTML + CSS examplesreferences/illustration-guide.md— Imagen 4 API, Swiss editorial style, proven promptsassets/base-template.html— the starting point for every deckscripts/gen_illustration.py— illustration generation script
More from erafat/skills
md-to-xhs-cards
Convert a Markdown file into Xiaohongshu (Little Red Book) image cards with deterministic layout, preserving markdown structure order and embedded local images. Use when users ask for direct MD-to-XHS card conversion, markdown poster cards, 图文卡片拆分, or preserving original markdown text/format in social image outputs.
16gmail-invoice-processor
Process invoice PDFs from Gmail inbox and create Excel summaries. Use this skill when the user wants to: (1) Download PDF invoices from Gmail, (2) Extract vendor names and amounts from invoice PDFs, (3) Create or update Excel spreadsheets summarizing invoice data, (4) Search for invoices in Gmail by subject line (containing 'invoice' or 'invoices'), (5) Automate invoice tracking or expense reporting from email. Trigger when user mentions Gmail invoices, PDF invoices in email, expense tracking from Gmail, or creating invoice summaries in Excel.
7cite-them-all
Academic reference agent that identifies claims needing citations, searches PubMed/bioRxiv/medRxiv via MCP tools, and adds properly formatted references to Markdown manuscripts
6academic-lectures
>
3baoyu-post-to-x
Posts content and articles to X (Twitter). Supports regular posts with images/videos and X Articles (long-form Markdown). Uses real Chrome with CDP to bypass anti-automation. Use when user asks to "post to X", "tweet", "publish to Twitter", or "share on X".
2baoyu-image-gen
AI image generation with OpenAI and Google APIs. Supports text-to-image, reference images, aspect ratios, and parallel generation (recommended 4 concurrent subagents). Use when user asks to generate, create, or draw images.
2