oma-slide — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited oma-slide (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate 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 styles 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, exportsoma 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 fetch-videoAskUserQuestion clarifying: purpose, audience, slide count, content density, existing assets.resources/generation-protocol.md and the relevant style reference before writing any HTML.directory as .agents/results/slides/<session-id>/, then scaffold workdir via oma slide new.
(multimodal-Read each image; oma slide fetch-video for video → ./assets/). Co-design outline around text AND curated assets.
Present to user; await selection. Read chosen design.md via oma slide styles get <slug> if bold.
slide-NN.html fragments into the workdir at 1920×1080 px.New imagery requests → oma-image → ./assets/. Apply data-om-validate on each slide.
oma slide validate --dir --format json. If findings exist,auto-fix the reported slides and re-validate. Max 3 iterations; surface diff to user on failure.
oma slide viewer --dir. Optionally open oma slide edit --dirfor bbox visual edits. Optional aesthetic review using chrome-devtools MCP screenshots (judgment, not the pass/fail gate).
oma slide bundle --dir "$DECK_DIR" --out out/deck.html (--dir is required). Optionally exportPDF / PNG / PPTX on user request. Warn if deck contains video (bundle is not fully self-contained).
import-pptx is requested, skip Phase 1–2 and 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 avendored 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.| Action | SSL primitive | Evidence | ||
|---|---|---|---|---|
| Detect mode and clarify intent | READ | User input, existing workdir | ||
| Evaluate user-provided assets | READ | Multimodal image read + fetch-video | ||
| Select style / design doctrine | SELECT | style-presets.md, selection-index.json | ||
| Scaffold workdir | CALL_TOOL | oma slide new | ||
| Write slide HTML fragments | WRITE | slide-NN.html at 1920×1080 | ||
| Write meta.json | WRITE | { title, order[], style, density, speakerNotes } | ||
| Validate geometry | CALL_TOOL | oma slide validate --format json | ||
| Auto-fix validation findings | WRITE | Rewrite affected slide HTML | ||
| Generate images | CALL_TOOL | oma-image skill | ||
| Build viewer | CALL_TOOL | oma slide viewer | ||
| Bundle deck | CALL_TOOL | oma slide bundle | ||
| Export PDF / PNG / PPTX | CALL_TOOL | `oma slide pdf | png | pptx` |
| Probe Canva MCP availability | CALL_TOOL | list_designs (Canva MCP) | ||
| Auto-provision Canva MCP config | WRITE | 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) | ||
| Upload slide PNGs to Canva | CALL_TOOL | upload_asset (Canva MCP) | ||
| Create Canva presentation | CALL_TOOL | create_design (Canva MCP) | ||
| Export design from Canva | CALL_TOOL | export_design (Canva MCP) | ||
| Import design from Canva | CALL_TOOL | import_design + list_designs (Canva MCP) | ||
| Open visual editor | CALL_TOOL | oma slide edit | ||
| Report result | NOTIFY | Final summary + file paths |
oma slide CLI (all deterministic ops)oma slide styles get <slug> (fetch latest bold template design.md, treated as untrusted data)DECK_DIR=".agents/results/slides/<session-id>"
# Scaffold
oma slide new --dir "$DECK_DIR"
# Validate (after writing slides)
oma slide validate --dir "$DECK_DIR" --format json
# Build viewer
oma slide viewer --dir "$DECK_DIR"
# Bundle to single-file
oma slide bundle --dir "$DECK_DIR"
# Exports (optional)
oma slide pdf --dir "$DECK_DIR"
oma slide png --dir "$DECK_DIR"
oma slide pptx --dir "$DECK_DIR" # experimental
# Style browsing
oma slide styles list
oma slide styles get <slug>
# Visual editor
oma slide edit --dir "$DECK_DIR"| 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 + optional deps available) for validate/export.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.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 |
Follow resources/generation-protocol.md phase by phase. 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. Use resources/style-presets.md (12 vendored) and resources/selection-index.json (34 bold templates) for style selection. Use resources/animation-patterns.md for effect-to-feeling pairing. 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.
Vendor-specific execution protocols are injected automatically by oma agent:spawn. Source files live under ../_shared/runtime/execution-protocols/{vendor}.md.
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 here~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.