Skill for Claude code, Codex, Opencode, and other agents to create animated slideshow as html slide presentation.
SaferSkills independently audited slides-animejs (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.
A meta-skill that turns raw input (free text, a topic + audience + length brief, an outline, or a .pptx) into a self-contained, browser-served, 16:9, full-screen slide deck animated with anime.js v4. The output is a ./presentation/ folder the user runs with python3 run.py and views in any browser. An overlay layer provides prev/next, fullscreen, a grid view, slide counter, progress bar, and speaker notes.
It orchestrates other skills across an interactive, eleven-phase workflow:
anime.js-best-practices), initialize CLAUDE.md and AGENTS.md in the user's project..pptx, outline, folder of materials) and capture audience / length / tone / academic flag / palette preference / meme allowance.scientific-brainstorming (and, for academic decks, scientific-slides for structural guidance only) to draft slide-by-slide content into presentation_plan.md.ui-ux-pro-max to pick palette, typography, and style; commit tokens to the plan and memory../visuals/, generate/fetch SVGs, optionally produce sparse memes via meme-factory, and pause to let the user drop in their own assets.slides-grab-plan (style approval), then run slides-grab-design to author slide-XX.html files at the 720×405 px final-viewport canvas (slidegrab is the review/authoring stage; the viewport is the source of truth).scripts/build.py to produce the ./presentation/ bundle (vendored anime.esm.min.js, design-token CSS, slide manifest, overlay, server).playwright-cli screenshot pass for layout regressions.slides-grab-export to produce a PDF backup, print final instructions.The workflow is interactive with explicit checkpoints. The skill never builds the final animated bundle without explicit user go-ahead. A skill re-invocation reads CLAUDE.md and offers to resume from the recorded phase.
These are user-confirmed and must not be relitigated:
presentation_plan.md and ./visuals/.assets/anime.esm.min.js. No CDN mode. Bundle is fully offline.slides-grab-export runs automatically at phase 10 (handoff) and writes ./presentation/backup.pdf.The bundle lives in ./presentation/ (sibling of presentation_plan.md, CLAUDE.md/AGENTS.md, and ./visuals/). The user runs cd presentation && python3 run.py and the browser opens at http://localhost:8000. Full tree, asset templates, and script inventory: see references/skill-internals.md.
When invoked, the orchestrator:
CLAUDE.md in the working directory. If a ## Current phase block exists, summarize state in two lines and ask: "Continue from phase X, or jump to phase Y?".references/workflow.md step-by-step.Each phase has explicit enter / do / ask / write / exit rules — see references/workflow.md for the verbatim operational playbook.
transform and opacity. Respect prefers-reduced-motion../visuals/. Do not auto-fill silently.CLAUDE.md and AGENTS.md in sync (rewrite atomically on every phase transition).references/workflow.md) first: block if a hard-required sub-skill or Context7 MCP is missing; warn-and-degrade for missing optional skills.Content: scientific-brainstorming, scientific-slides (academic only). Design: ui-ux-pro-max. Static authoring: slides-grab-plan, slides-grab-design, slides-grab-export. Animation: anime.js-best-practices (+ Context7). Intake: pptx. Extras: meme-factory (sparse), playwright-cli (optional QA).
Per-skill purpose + gotchas: references/skill-internals.md. Exact call contracts: references/subskill-integration.md. Verified spec deviations: references/compatibility-notes.md. Required-vs-optional preflight: references/workflow.md phase 0.
| File | When to read |
|---|---|
references/workflow.md | Always — the operational playbook for phases 0–10. |
references/animejs-condensed.md | Phase 0; refreshed via Context7. Cite during animation authoring. |
references/animejs-patterns.md | Phases 6–9 when picking entrance / exit / transition recipes. |
references/slide-design-rules.md | Phases 6–9 for 16:9 rules, type scale, contrast, reduced-motion handling. |
references/presentation-plan-schema.md | Any time presentation_plan.md is created or edited. |
references/subskill-integration.md | When orchestrating a specific sub-skill call. |
references/compatibility-notes.md | Whenever a sub-skill's actual behavior diverges from the spec. |
references/skill-internals.md | Bundle tree, asset templates, and scripts/ inventory — when building/validating the bundle. |
overlay.js scales .slide-frame to the window via min(innerW/720, innerH/405) (uniform scale + letterbox). slides-grab authors at this same canvas only to ease the review step; if the two ever diverge, the viewport wins.prefers-reduced-motion short-circuits both the auto-animator and per-slide custom timelines.window.__slideTL[n] = (root) => ({ cancel }) (namespaced; cancel runs on slide exit to stop intervals/timelines and reset DOM).http.server on port 8000 (override with SLIDES_PORT).scripts/build.py overwrites the bundle without touching plan or drafts.references/workflow.md + references/slide-design-rules.md)<iframe srcdoc> with <base href="/">, so slide HTML may use html/body/:root/bare-element selectors freely without polluting other slides. The parent animates the iframe element (transform + opacity) for transitions and calls __slideEntered(i) / __slideExited() on the iframe window.window.__slideSteps = K + window.__slideStep = (n, dir) => void for PowerPoint-style click-advance (parent steps 0..K within the slide before navigating).transform: scale() to a <g transform="translate()"> (it replaces the attribute and collapses the group); animate inner shape coords (cx/cy/x/y) or use transform-box: fill-box.presentation_plan.md exists with the canonical schema.CLAUDE.md and AGENTS.md are in sync and reflect the current phase../visuals/ exists; every slide that references an asset resolves to a file../presentation/ builds, validates, and opens in the browser with all overlay features functional../presentation/backup.pdf exists.prefers-reduced-motion: reduce in DevTools).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.