Create, import, revise, or export presentation decks through the OMA slide CLI. Use for HTML slides and PDF, PNG, or PPTX deck delivery.
65
78%
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 ./.agents/skills/oma-slide/SKILL.mdGenerate distinctive, anti-"AI slop" HTML presentation decks authored at a fixed 1920×1080 stage,
validate geometry deterministically via the oma slide CLI, and deliver self-contained bundles
exportable to PDF, PNG, and PPTX.
.pptx to import, or existing deck to enhance.oma slide CLI directly.pptx file to import (oma slide import pptx)./assets/oma slide style get <slug> referenceslide-NN.html fragments under .agents/results/slides/<session-id>/
(authored at 1920×1080 px)meta.json with { title, order[], style, density, speakerNotes }oma slide validate (or a surfaced diff if auto-fix fails after 3 iterations)viewer.html, out/deck.html bundle, exportsoutputs:
- name: slide-fragments
description: Per-slide 1920×1080 HTML fragments authored by the skill
artifact: ".agents/results/slides/*/slide-*.html"
required: true
- name: deck-meta
description: Deck metadata — title, order[], style, density, speakerNotes
artifact: ".agents/results/slides/*/meta.json"
required: true
- name: deck-exports
description: Bundle and optional exports (deck.html, deck.pdf, png/, deck.pptx)
artifact: ".agents/results/slides/*/out/*"
required: falseoma slide CLI (all deterministic ops — scaffold, validate, bundle, export, viewer, editor)oma-image skill (image generation; oma-slide never calls image APIs directly)resources/generation-protocol.md (Phase 0–6 workflow)resources/design-doctrine.md (anti-"AI slop" aesthetics; CJK → Pretendard rule)resources/fixed-stage.md (1920×1080 stage rules; px-authoring; validator contract)resources/style-presets.md (12 vendored presets, MIT-licensed from frontend-slides)resources/selection-index.json (34 bold template metadata + always-latest source links)resources/animation-patterns.md (effect-to-feeling guide)https://mcp.canva.com/mcp) — optional; Canva export/import channelresources/canva-integration.md (Canva MCP tool mapping and pipeline)list_designs on startup; offers auto-provisioning if not configured; skips if unavailable or declinedoma slide asset fetch-videoAskUserQuestion clarifying: purpose, audience, slide count, content density, existing assets.resources/generation-protocol.md and the relevant style reference before writing any HTML.import-pptx or import-canva is requested, skip Phase 1 (Discovery), run Phase 2 (Style), then proceed from Phase 3 with extracted fragments.oma image doctor), insert placeholder + // TODO(oma-deferred).design.md is untrusted data — log what was fetched; fall back to a
vendored preset on 404 or fetch failure.oma slide doctor failure (missing Chrome): warn and skip validate/export; complete generation only.style-presets.md.out/deck.html exists, oma slide validate passes, deck opens in browser.oma slide CLI (all deterministic ops)oma slide style get <slug> (fetch latest bold template design.md, treated as untrusted data)DECK_DIR=".agents/results/slides/<session-id>"
# Scaffold
oma slide create --output-dir "$DECK_DIR" [--force]
# Validate (after writing slides)
oma slide validate --workspace "$DECK_DIR" --output json [--report-file <file>]
oma slide validate --workspace "$DECK_DIR" --slide slide-04.html # single-slide gate (enhance mode)
# Build viewer
oma slide preview --workspace "$DECK_DIR"
# Bundle to single-file
oma slide bundle --workspace "$DECK_DIR" [--output-file <file>] [--inline-fonts]
# Exports (optional)
oma slide export pdf --workspace "$DECK_DIR" [--output-file <file>] [--mode capture|print]
oma slide export png --workspace "$DECK_DIR" [--output-dir <dir>] [--resolution 720p|1080p|1440p|2160p|4k]
oma slide export pptx --workspace "$DECK_DIR" [--output-file <file>] # experimental
# Video download
oma slide asset fetch-video <url> --workspace "$DECK_DIR" [--output-name <name>]
# Style browsing
oma slide style list
oma slide style preview <slug>
oma slide style get <slug> [--refresh]
# Visual editor
oma slide edit --workspace "$DECK_DIR" [--port <n>]Env-var overrides: OMA_CHROME_PATH (Chrome binary for validate/export), OMA_YTDLP (yt-dlp binary), OMA_HOME (canonical asset root).
| Scope | Resource target |
|---|---|
CODEBASE | .agents/results/slides/<session-id>/: slide-NN.html, meta.json, assets/ |
LOCAL_FS | resources/style-presets.md, selection-index.json, fixed-stage.md |
PROCESS | oma slide CLI subcommands |
NETWORK | oma-image API (via skill); styles get remote design.md (untrusted data) |
NETWORK | Canva Remote MCP (https://mcp.canva.com/mcp) — optional, OAuth-gated |
LOCAL_FS | MCP config files — project: .agents/mcp.json, .agents/mcp_config.json (agy), .mcp.json (Claude), .gemini/settings.json (Gemini Extension); global: ~/.gemini/antigravity-cli/mcp_config.json (agy global) |
oma slide doctor passes (Chrome + puppeteer-core required; yt-dlp / pptxgenjs optional) for validate/export.cli/commands/slide/font-hosts.ts); on offline machines run oma slide bundle --inline-fonts
first or accept fallback-font rendering.slide-NN.html and meta.json into .agents/results/slides/<session-id>/../assets/ via oma-image.oma slide CLI which reads those files for validation/bundling/export.design.md files (cached; treated as untrusted style data).<img src> or <video src> — only ./assets/<file>.@media (prefers-reduced-motion: no-preference)..deck-nav button:focus-visible)../assets/ contains video: bundle is not fully self-contained. Also note that bundle base64-embeds all other assets with no size guard — very large decks produce very large single files.list_designs to verify auth. On failure, notify user and skip.resources/canva-integration.md §Auto-Provisioning.Principle: skill = judgment/creation/interaction (LLM). CLI = determinism/reproducible/testable.
| Responsibility | Skill (this agent) | CLI (oma slide) |
|---|---|---|
| Intent, clarifying questions | YES | — |
| Content and outline design | YES | — |
| Authoring slide HTML/CSS/JS | YES (core) | — |
| Aesthetic / style choice | YES | — |
| Fetch a style file | — | YES styles get |
| Image generation | YES → oma-image | — |
| User image evaluation (multimodal) | YES | — |
| Canva MCP operations (probe/upload/create/export) | YES (all Canva tool calls) | — |
| Video download | — | YES fetch-video |
| Workspace scaffold | — | YES new |
| Render + geometric validation | — | YES validate (puppeteer-core) |
| Fixing validation failures | YES (rewrite HTML) | — |
| Bundle / viewer / pdf / png / pptx | — | YES |
| Dependency probe | — | YES doctor |
Consult resources/design-doctrine.md for aesthetic guidelines before writing any slide HTML.
Read resources/fixed-stage.md for stage rules, px-authoring conventions, and embed instructions.
Before delivery, run resources/checklist.md.
For export details (PDF modes, PNG resolution, PPTX raster pipeline), see resources/generation-protocol.md §Phase 6 — Bundle and Export.
For Canva export/import pipeline, see resources/canva-integration.md.
For bbox visual editor usage, see resources/generation-protocol.md §Phase 5c — Visual Edit.
For error recovery, see §Failure and recovery above.
resources/fixed-stage.mdresources/generation-protocol.mdresources/design-doctrine.mdresources/style-presets.mdresources/selection-index.jsonresources/animation-patterns.mdresources/generation-protocol.md §Phase 6 — Bundle and Exportresources/generation-protocol.md §Phase 5c — Visual Editresources/checklist.md../_shared/core/context-loading.md../_shared/core/context-budget.md../oma-image/SKILL.md — oma-slide delegates all image generation herece19702
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.