Slides animejs
Skill tagius/slides-animejs
Skill for Claude code, Codex, Opencode, and other agents to create animated slideshow as html slide presentation.
npx -y skills add tagius/slides-animejsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Build a PowerPoint-style, 16:9 full-screen, browser-served slide presentation animated with anime.js v4. Orchestrates content brainstorming (scientific-brainstorming), academic structuring (scientific-slides), UI/UX design (ui-ux-pro-max), static authoring (slides-grab), animation patterns (anime.js-best-practices + Context7), PPTX intake (pptx), and sparse comic relief (meme-factory). Outputs a self-contained bundle the user runs with `python3 run.py`. Trigger when the user asks to make an animated web slideshow, browser-served presentation, or convert a pptx to an interactive HTML deck with animations.
SKILL.md
9.8 KB, as published. Nobody here has run it
slides-animejs
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.
What this skill does
It orchestrates other skills across an interactive, eleven-phase workflow:
- Bootstrap — fetch the latest anime.js v4 reference (Context7 +
anime.js-best-practices), initializeCLAUDE.mdandAGENTS.mdin the user's project. - Intake — detect input (text,
.pptx, outline, folder of materials) and capture audience / length / tone / academic flag / palette preference / meme allowance. - Content brainstorm — use
scientific-brainstorming(and, for academic decks,scientific-slidesfor structural guidance only) to draft slide-by-slide content intopresentation_plan.md. - Content Q&A — loop with the user on each slide until content is locked.
- Design brainstorm — call
ui-ux-pro-maxto pick palette, typography, and style; commit tokens to the plan and memory. - Visual assets — audit
./visuals/, generate/fetch SVGs, optionally produce sparse memes viameme-factory, and pause to let the user drop in their own assets. - Static draft via slides-grab — synchronize with
slides-grab-plan(style approval), then runslides-grab-designto authorslide-XX.htmlfiles at the 720×405 px final-viewport canvas (slidegrab is the review/authoring stage; the viewport is the source of truth). - Draft feedback — collect feedback, iterate on plan + slide HTML.
- Animation build — run
scripts/build.pyto produce the./presentation/bundle (vendoredanime.esm.min.js, design-token CSS, slide manifest, overlay, server). - QA preview — print the run command; optional
playwright-cliscreenshot pass for layout regressions. - Handoff — auto-run
slides-grab-exportto 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.
Locked decisions (binding)
These are user-confirmed and must not be relitigated:
- Skill name:
slides-animejs. - Output bundle path:
./presentation/in the user's project, sibling ofpresentation_plan.mdand./visuals/. - Memory files: write both
CLAUDE.mdandAGENTS.mdin the user's project (mirrored content) for cross-agent compatibility. - anime.js: always vendor locally as
assets/anime.esm.min.js. No CDN mode. Bundle is fully offline. - PDF backup:
slides-grab-exportruns automatically at phase 10 (handoff) and writes./presentation/backup.pdf. - PPTX back-conversion is not supported — HTML + anime.js is the only output format.
File layout produced in the user's project
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.
How to operate this skill
When invoked, the orchestrator:
- Reads any pre-existing
CLAUDE.mdin the working directory. If a## Current phaseblock exists, summarize state in two lines and ask: "Continue from phase X, or jump to phase Y?". - Otherwise, enters phase 0 (Bootstrap) and follows
references/workflow.mdstep-by-step.
Each phase has explicit enter / do / ask / write / exit rules — see references/workflow.md for the verbatim operational playbook.
Hard rules
- 16:9 full viewport; the browser window IS the slide. No "card on a page" layout. Letterbox/pillarbox when the window aspect deviates.
- Animate only
transformandopacity. Respectprefers-reduced-motion. - Vendor anime.js locally; the bundle must run offline.
- Memes appear sparingly (max ~1 per 6 slides) and never on academic decks unless the user explicitly opts in.
- Pause at phase 5 to instruct the user to drop assets into
./visuals/. Do not auto-fill silently. - Never run phase 9 (final animation build) without explicit user go-ahead.
- Keep
CLAUDE.mdandAGENTS.mdin sync (rewrite atomically on every phase transition). - Run the phase-0 dependency preflight (
references/workflow.md) first: block if a hard-required sub-skill or Context7 MCP is missing; warn-and-degrade for missing optional skills.
Sub-skills orchestrated
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.
References (load on demand)
| 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. |
Quick-reference invariants
- Slide canvas: 720 px × 405 px — the final 16:9 viewport, and the source of truth.
overlay.jsscales.slide-frameto the window viamin(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. - Animations: WAAPI-first;
prefers-reduced-motionshort-circuits both the auto-animator and per-slide custom timelines. - Per-slide custom timelines:
window.__slideTL[n] = (root) => ({ cancel })(namespaced;cancelruns on slide exit to stop intervals/timelines and reset DOM). - Server: stdlib
http.serveron port 8000 (override withSLIDES_PORT). - Bundle is idempotent — re-running
scripts/build.pyoverwrites the bundle without touching plan or drafts.
Runtime model (full detail in references/workflow.md + references/slide-design-rules.md)
- iframe isolation — each slide loads in its own
<iframe srcdoc>with<base href="/">, so slide HTML may usehtml/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. - Step protocol — a slide may set
window.__slideSteps = K+window.__slideStep = (n, dir) => voidfor PowerPoint-style click-advance (parent steps 0..K within the slide before navigating). - Footer safe-zone — a 26 px footer band sits at the bottom; every slide reserves ≥ 38 px bottom padding (or pads inner columns).
- Idle animations — every slide gets a subtle baseline idle; make 2–3 slides per deck "signature" with a topic-anchored idle that becomes a memory anchor.
- SVG gotcha — never apply CSS
transform: scale()to a<g transform="translate()">(it replaces the attribute and collapses the group); animate inner shape coords (cx/cy/x/y) or usetransform-box: fill-box.
End-of-skill checklist before declaring success
-
presentation_plan.mdexists with the canonical schema. -
CLAUDE.mdandAGENTS.mdare 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.pdfexists. - Reduced-motion fallback verified by toggling the OS setting (or
prefers-reduced-motion: reducein DevTools). - User has been handed the run command and the bundle path.