For product and technical management work: turn PRDs, roadmaps, RFCs, architecture reviews, and retros into decision documents. Built around the core query "pm-feature-business-case-deck", with product strategy lead judgment, buyer-ready proof, and this outcome: approve the feature, architecture, roadmap, or incident follow-up.
58
68%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./design-templates/replit-deck/SKILL.mdProduce a single-file horizontal-swipe HTML deck in one of eight Replit-Slides themes. Every theme is a complete visual system — do not mix tokens across themes.
replit-deck/
├── SKILL.md ← you're reading this
├── assets/
│ └── template.html ← seed: 8 themes via [data-theme=*], proven iframe-nav script (READ FIRST)
├── references/
│ ├── themes.md ← 8 themes: when-to-pick / do / don't / primary layouts
│ ├── layouts.md ← 10 paste-ready slide layouts, cross-theme
│ ├── components.md ← shared primitives (eyebrow, kpi-row, image-grid, meta-bar)
│ └── checklist.md ← P0/P1/P2 self-review + theme lock-in gate
└── examples/ ← four reference decks across the most contrasting themes
├── example-helix.html (SaaS board update · light minimal)
├── example-holm.html (legal fintech memo · cream editorial serif)
├── example-atlas.html (quarterly history chapter · black + vermilion)
└── example-bluehouse.html (real estate ROI · navy + gradient cards)assets/template.html end-to-end. The [data-theme] blocks carry the tokens; the <script> at the bottom solves five iframe nav bugs — do not rewrite it.references/themes.md → pick one theme that matches the user's brief. If the user already picked a theme via od.inputs.theme, use that.references/layouts.md → you'll copy <section> blocks from here.references/checklist.md → P0 must pass before emit.Write out loud (in the TodoWrite or plan section) which theme and why. Once picked, every slide uses that theme's tokens only. No swapping mid-deck. The <body data-theme="helix"> attribute is the single source of truth.
| Theme | Pick when |
|---|---|
helix | SaaS board update, product metrics, neutral modern |
holm | Legal memo, investor pre-read, serious / institutional |
vance | Art portfolio, design catalog, photographer / sculptor |
bevel | Fashion campaign, lookbook, Y2K / editorial attitude |
world-dark | Policy report, finance analysis, premium dark |
world-mint | Lighter companion of world-dark — ESG, wellness finance, sustainability |
atlas | Long-form narrative, chapter deck, museum / archive aesthetic |
bluehouse | Consumer product, real estate, lifestyle, colorful cards |
Default 6 slides. Write the rhythm BEFORE any HTML, for example (helix, 6 slides):
01 cover hero + title + subtitle
02 kpi-row-6 6 metrics with ▲/▼ deltas
03 split-insight left stat + right paragraph
04 chapter-plate section divider
05 three-up three parallel columns
06 closing one bold number or CTAShow this to the user. Redirecting at this stage is cheap.
assets/template.html to project root as index.html.<body data-theme="<chosen>">.<title>.For each planned slide, copy the matching <section> from references/layouts.md. Replace every [REPLACE] with specific copy — never leave placeholders, never use lorem. If a slide feels empty, pick a different layout.
Tag each slide with data-screen-label="01 Cover", "02 Metrics", etc., in presentation order.
Run references/checklist.md silently before emit: the P0 theme-lock gate plus the five-dimension 1–5 critique (Philosophy / Hierarchy / Execution / Specificity / Restraint). Any dimension ≤ 3 → re-do before emit.
The P0 theme-lock grep is non-negotiable:
grep -E 'data-theme|style="--' index.html | headIf any style="--accent:..." or theme override appears on individual slides, revert. One theme per deck.
<artifact identifier="deck-<slug>" type="text/html" title="<Deck title>">
<!doctype html>
<html>...</html>
</artifact>One sentence before the artifact. Stop after </artifact>.
data-theme set on <body> — never override per-slide.— or a grey block as an honest placeholder.--font-display token of each theme in assets/template.html — if this list ever disagrees with the template, the template wins.)data-screen-label on every slide.replit-deck vs. peer skills| Skill | Pick when |
|---|---|
simple-deck | Plain, single-theme deck bound to the project's DESIGN.md tokens. When the deck should match the host brand, not assert its own. (designSystemRequired: true.) |
magazine-web-ppt | Editorial "magazine × e-ink" aesthetic (WebGL fluid background, serif titles, chapter plates). When the brief asks for a keynote / launch / sharing-style deck and calls out Monocle / WIRED / Kinfolk / Domus. |
replit-deck | The brief explicitly asks for Replit-Slides gallery aesthetic, or needs one of the 8 token-frozen visual identities (SaaS board, editorial memo, gallery catalog, Y2K campaign, policy report, museum chapter, consumer cards). No dependency on DESIGN.md. |
If the user just says "make me a deck" without further guidance, default to simple-deck — it respects their design system. Pick replit-deck only when the brief is explicit about the aesthetic or names a theme.
references/themes.md → Contributing a new theme for the exact sampling procedure.nexu-io/open-design titled replit-deck: re-sync to replit.com/slides (YYYY-MM-DD) and attach the updated screenshots. There is no designated owner monitoring the upstream.color-mix(), CSS custom properties, text-wrap: balance. All ≥ 93% Baseline.color-mix() (would need a fallback --accent-soft if you want to support older Safari; out of scope for this skill).design-templates/simple-deck — survives iframe embedding (the daemon preview surface), dual listener races, focus loss, and position persistence across reloads. Do not rewrite it.The design template auto-registers with the daemon on filesystem scan (no manual wiring). Confirmed against a running daemon on localhost:7456 after adding this template:
$ curl -s localhost:7456/api/design-templates \
| node -e "const d=JSON.parse(require('fs').readFileSync(0,'utf-8')); \
console.log(JSON.stringify(d.designTemplates.find(t=>t.id==='replit-deck'), null, 2));"
{
"id": "replit-deck",
"name": "replit-deck",
"description": "Single-file horizontal-swipe HTML deck in the style of Replit Slides's\nlanding-page template gallery. Eight distinct themes …",
"triggers": [
"replit deck",
"replit slides",
"replit 风格 ppt",
"replit style deck",
"helix deck",
"holm memo",
"atlas chapter",
"bluehouse",
"bevel campaign"
],
"mode": "deck",
"platform": null,
"scenario": "product",
"previewType": "html",
"designSystemRequired": false,
"defaultFor": [],
"upstream": null,
"featured": null,
"fidelity": null,
"speakerNotes": null,
"animations": null,
"examplePrompt": "Single-file horizontal-swipe HTML deck in the style of Replit Slides's landing-page template gallery.",
"hasBody": true
}All four example decks (examples/example-{helix,holm,atlas,bluehouse}.html) open directly in a browser. Keyboard nav (← / → / Space / Home / End) and horizontal scroll-snap work in Chrome 129 and Safari 18.
f580271
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.