html-animation is a reusable skill and Codex plugin for building polished local HTML/CSS/JavaScript animations. It treats HTML as the editable source of truth and uses video only when a rendered clip is actually needed.
It is useful for product explainers, motion studies, animated storyboards, UI demos, and composited 16:9 scenes. The skill guides an agent through implementation, browser review, visual quality checks, and (when requested) recording and review assets.
- A Codex plugin manifest in
.codex-plugin/plugin.json. - The
html-animationskill, with automatic trigger guidance and an optional explicit invocation. - Eleven self-contained HTML templates for camera movement, timing, reveals, transforms, flows, interaction, and multi-layer composition.
- Reference guides for authoring models, production workflow, visual quality, recording, and common failure modes.
make_review_assets.py, which produces a contact sheet, sampled frames, and metadata for a rendered clip.
The package is deliberately product- and brand-neutral. Its templates are starting points rather than a visual identity.
| Area | Included patterns |
|---|---|
| Stage composition | Fixed 16:9 stages; synchronized foreground and background layers |
| Spatial motion | World zoom/reveal; focus and depth shifts |
| Time and reveal | Timed phases, loop/final freeze, progressive type panels |
| Object transforms | Cluster burst/distribution, grid recomposition, radial orbit selector |
| Flow and interaction | SVG path drawing, tokens and pulses, cursor-guided actions |
| Production review | Screenshot loop, tail/replay checks, contact sheets, recording guidance |
.
├── .codex-plugin/plugin.json # Codex plugin metadata
└── skills/html-animation/
├── SKILL.md # Main workflow and trigger description
├── agents/openai.yaml # Codex-facing skill metadata
├── assets/templates/primitives/ # Reusable single-file HTML templates
├── references/ # Load-on-demand implementation guidance
└── scripts/make_review_assets.py # Rendered-video review helper
Keep the skills/html-animation directory intact when installing it. SKILL.md refers to the sibling assets/, references/, and scripts/ directories by relative path.
Once installed, ask for work in ordinary language. The skill should automatically activate for relevant requests. In Codex, it can also be named explicitly:
Use $html-animation to create a 12-second 16:9 animation: reveal three cards,
zoom into the middle card, and leave the final composition frozen.
Typical requests include:
- “Build an HTML animation for this scene and give me a local preview.”
- “Turn this static dashboard mockup into a cursor-guided demo.”
- “Use the radial selector template, then export a 60 fps MP4.”
- “Review this animation’s final second for loop restart, missing content, or recorded controls.”
Codex can use this package in two ways. Choose the direct-skill option for an individual workflow; choose the plugin option when you want it discoverable and manageable through the Codex Plugins UI/CLI.
This is the shortest route when only the skill is needed.
git clone https://github.com/NeuroAIHub/html_animation_skill.git /tmp/html_animation_skill
mkdir -p ~/.codex/skills
cp -R /tmp/html_animation_skill/skills/html-animation ~/.codex/skills/html-animationStart a new Codex task after copying the skill. A new task ensures Codex loads the new SKILL.md and its metadata.
To update a direct installation:
git -C /tmp/html_animation_skill pull --ff-only
rm -rf ~/.codex/skills/html-animation
cp -R /tmp/html_animation_skill/skills/html-animation ~/.codex/skills/html-animationThis option exposes the package as the html-animation plugin. It uses a personal marketplace that points at a local clone; it does not require publishing the plugin to a public marketplace.
-
Clone the repository at the location used by the personal marketplace:
mkdir -p ~/.agents/plugins/plugins git clone https://github.com/NeuroAIHub/html_animation_skill.git \ ~/.agents/plugins/plugins/html-animation
-
Create
~/.agents/plugins/marketplace.jsonwith the following content. If the file already exists, add the object inpluginsinstead of replacing its existing entries.{ "name": "html-animation-local", "interface": { "displayName": "Local plugins" }, "plugins": [ { "name": "html-animation", "source": { "source": "local", "path": "./plugins/html-animation" }, "policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, "category": "Productivity" } ] } -
Install it from the marketplace:
codex plugin add html-animation@html-animation-local
-
Start a new Codex task and use
$html-animation, or let Codex select it automatically from the request.
In the ChatGPT desktop app, restart the app after creating or changing the local marketplace. Then select Plugins, choose Local plugins, and install HTML Animation.
Pull the repository, refresh/reinstall the plugin, then begin a new task:
git -C ~/.agents/plugins/plugins/html-animation pull --ff-only
codex plugin add html-animation@html-animation-localFor a development release that changes the plugin source, update the cache-buster in .codex-plugin/plugin.json before reinstalling. This lets Codex recognize the new bundle version:
python3 /path/to/plugin-creator/scripts/update_plugin_cachebuster.py \
~/.agents/plugins/plugins/html-animationThe plugin-creator script ships with Codex installations that include the Plugin Creator skill. If it is unavailable, update the existing version suffix after +codex. to a new unique value, validate the plugin, and reinstall.
List installed plugins to find the configured marketplace and use the normal Codex plugin removal command for that installation. Removing the plugin does not delete the repository clone or its generated animation files.
codex plugin list
codex plugin remove html-animationClaude Code consumes the skill itself; it does not use the Codex plugin manifest. Copy the complete skills/html-animation directory to a Claude Code skills location.
git clone https://github.com/NeuroAIHub/html_animation_skill.git /tmp/html_animation_skill
mkdir -p ~/.claude/skills
cp -R /tmp/html_animation_skill/skills/html-animation ~/.claude/skills/html-animationClaude Code watches its skills directories, so the new skill is available in the current session. Ask naturally for an HTML animation, or invoke it explicitly:
/html-animation Create a 1920×1080 HTML animation with a path-draw handoff and a 2-second final hold.
From the root of the target project:
mkdir -p .claude/skills
git clone https://github.com/NeuroAIHub/html_animation_skill.git /tmp/html_animation_skill
cp -R /tmp/html_animation_skill/skills/html-animation .claude/skills/html-animationCommit .claude/skills/html-animation/ if the project team should share the same animation workflow. Do not copy only SKILL.md; the templates and references are part of the skill.
To update either Claude Code installation, pull the clone and replace the installed html-animation directory. Claude Code detects the directory change; start a new session only when you also want a clean task context.
The skill is designed around the following sequence:
- Decide whether the desired deliverable is HTML, video, or both.
- Build or adapt a single HTML animation; prefer a matching primitive template rather than one-off motion code.
- Serve and preview the page locally. Inspect the first, key, and final states.
- Fix layout, overflow, incorrect assets/background, stale caches, and visible controls before fine visual review.
- Collect user feedback and iterate on the HTML source.
- Only when a clip is requested, record with the project’s browser/CDP screencast workflow, then check sampled frames and the tail.
For most browser animation work, animate transform and opacity instead of layout or expensive filter properties. Keep a fixed stage, make controls hideable, and include an intentional final hold to prevent replay artifacts in recorded output.
The main skill routes an agent to a focused reference before it adapts a template:
| Need | Read / start with |
|---|---|
| Camera, zoom, depth | references/primitives/spatial.md |
| Phase timing and final freeze | references/primitives/temporal.md |
| Staggers, type, masking | references/primitives/reveal.md |
| Clusters, grids, radial layouts | references/primitives/transform.md |
| SVG traces, pulses, handoffs | references/primitives/flow.md |
| Cursor, click, drag | references/primitives/interaction.md |
| Layered 16:9 stage | references/primitives/composition.md |
| Multi-primitive shots | references/primitive-composition.md |
| Recording and final QA | references/recording-and-review.md |
Template paths are listed in skills/html-animation/SKILL.md. Each is a generic single-file page designed to be copied or adapted into the target project.
Run these checks before publishing modifications to the skill or plugin:
python3 /path/to/skill-creator/scripts/quick_validate.py \
skills/html-animation
python3 /path/to/plugin-creator/scripts/validate_plugin.py .In a standard Codex installation, the helper scripts are available under the Plugin Creator and Skill Creator skill directories. The validation commands verify the skill’s frontmatter/naming and the plugin manifest/layout respectively.
Keep additions reusable and generic. Put detailed, conditional guidance in references/; keep SKILL.md concise and procedural. Add a new template only when it represents a recurring animation pattern, and preserve the template’s fixed stage, hideable controls, duration metadata, and phase comments.
Before opening a pull request:
- Validate the skill and plugin.
- Preview a representative template in a browser.
- Confirm that no debug, replay, transport, or review UI leaks into the intended stage.
- If recording is involved, inspect the last seconds for loop restart and missing final content.
No license has been declared yet. Add one before distributing the repository as an open-source package.