Skip to content
Agentmart
Submit a tool

animated-explainer

Build an animated, data-driven explainer film for a real system — a canvas film that renders live from the product's own data and cannot drift, not an…

Skill by Ability.ai

IndexedApache-2.0
Write a review

Install

Works with Claude Code. Read the repository before you give any tool access to your data.

npx agentmarket install skill/abilityai-animated-explainer

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Build an animated, data-driven explainer film for a real system — a canvas film that renders live from the product's own data and cannot drift, not an exported video. Can additionally stamp the finished film into a voiced MP4 (deterministic frame render + timed ElevenLabs narration) for channels that only take a video file. Use when someone wants to explain how a system works visually, wants an explainer/hero video, references a motion-graphics explainer to imitate, or asks to show a mechanism rather than describe it. NOT for static diagrams or single illustrations.

Use cases: design, data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/animated-explainer

Tools it pre-approves 9

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read,
  • Write,
  • Edit,
  • Bash,
  • Glob,
  • Grep,
  • Skill,
  • AskUserQuestion,
  • WebFetch

What's inside

Skill name
animated-explainer
Description
Build an animated, data-driven explainer film for a real system — a canvas film that renders live from the product's own data and cannot drift, not an exported video. Can additionally stamp the finished film into a voiced MP4 (deterministic frame render + timed ElevenLabs narration) for channels that only take a video file. Use when someone wants to explain how a system works visually, wants an explainer/hero video, references a motion-graphics explainer to imitate, or asks to show a mechanism rather than describe it. NOT for static diagrams or single illustrations.
License
Apache-2.0
Allowed tools
Read,, Write,, Edit,, Bash,, Glob,, Grep,, Skill,, AskUserQuestion,, WebFetch
Metadata
author: Ability.ai · created: 2026-07-15 · version: 1.26
Instructions
344 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts
  • Pre-approves some shell commands

Files (6)

  • SKILL.md
  • reference.md
  • check-page.js · scripts/
  • export-film.js · scripts/
  • shoot-beats.js · scripts/
  • voice-film.py · scripts/

SKILL.md (first lines)

# Animated Explainer

> ℹ️ **First, set expectations:** before anything else, print one short line with this skill's version and its most recent change — the top entry of `metadata.changelog` above — e.g. `animated-explainer vX.Y — recent: <summary>`. Then proceed.

ultrathink

## Purpose

Build an **animated explainer of how a real system works** — rendered live to a `<canvas>`
from the system's **own data**, so it regenerates on every publish and can never drift from
what the product reports.

**The thesis: a data-driven film, not a video.** An exported MP4 is stale the day the data
moves, and it quietly becomes a lie. A film that reads `data/*.json` at render time changes
when the system changes. (This is testable: on the forecasting build, a data refresh landed
mid-deploy and the calibration curve visibly redrew.)

**Use this when** someone wants to *show a mechanism* — how a system works, why it's
trustworthy, what happens to one item as it moves through.

**Don't use this for** static diagrams or illustrations — a diagram skill (if your
workspace has one) is the right tool there. This skill is specifically **time-based motion
driven by live data**.

## State Dependencies

| Source | Location | Read | Write |
|---|---|---|---|
| The system's real data | product repo `data/*.json` (or equivalent) | ✅ | ❌ never |
| The system's source of truth | `ARCHITECTURE.md`, papers, specs — **not** published artifacts | ✅ | ❌ |
| Brand tokens | the product's `globals.css` / theme file | ✅ | ❌ |
| Working film | `<scratch>/film.html` (standalone, no build) | ✅ | ✅ |
| Shipped component | product repo `components/**/explainer.tsx` | ✅ | ✅ |
| Verification rigs | `scripts/shoot-beats.js`, `scripts/check-page.js` (this skill) | ✅ | ❌ |
| Export rigs | `scripts/export-film.js`, `scripts/voice-film.py` (this skill) | ✅ | ❌ |
| Narration script | `<film dir>/narration.json` (timed lines, next to the film) | ✅ | ✅ |
| Voiced export | `<film dir>/export/` — MP4 stamp + `vo_clips/` TTS cache | ✅ | ✅ |

## Composes

| Skill | When |
|---|---|
| a site-publishing skill | Final step, only if the film ships to a live site and the user has asked for a deploy. Optional — this skill never requires it. |

## Credentials & cold start

Building, verifying, and shipping a film needs **no credentials at all**. Only the optional
voiced export (Step 11) reads any:

| Key | Needed for | Missing → |
|---|---|---|
| `ELEVENLABS_API_KEY` | Step 11 TTS narration | Fail fast with `ELEVENLABS_API_KEY not set — add it to this agent's credentials`; every earlier step still runs, and the silent MP4 export is unaffected. |
| `ELEVENLABS_VOICE_ID` | default voice for Step 11 | Optional — `voice_id` in `narration.json` or `--voice` overrides it. Absent with no override → the tool stops and names the three ways to supply it. |
| `PLAYWRIGHT_DIR` | pointing the render scripts at an existing playwright install | Optional — the scripts resolve playwright from the caller's cwd first, then this variable, then the skill directory. |

Script paths below are relative to **this skill's directory**; run them from there, or
prefix with the directory the skill was injected into.

---

## Core principles

These are load-bearing. Each one was paid for.

### 1. The data is the story's boss — interrogate it before you design the arc

Decide what's **true** before you decide what's **compelling**. Concepts must die here; that
is the step working, not failing.

Two died on the forecasting build, both after the storyboard felt great:
- *"watch it get better over time"* — the metric was **flat** (0.217 → 0.188 → 0.210). Noise,
  not learning. Animating it would have faked the one number the brand rests on.
- *"performance improving"* curve — the sample was **back-loaded** (Q1 spanned 3 months, Q4
  spanned 1 day), so the apparent decline was a **sampling artifact**, not improvement.

Run the numbers yourself. Check the **shape and the sampling**, not just the headline.
Finding this at storyboard costs an hour; finding it after a render costs a week; not finding
it costs your credibility.

### 2. Read the source of truth, not the published artifacts

Published data dirs are a *curated snapshot* of a system, not the system. On that build the whole
first film was built from the website's `data/` and got the architecture **wrong** — the real
mechanism was in `ARCHITECTURE.md` and an unpublished paper. Find the design docs.

### 3. One concrete worked example beats any amount of abstraction

Follow **one real item end to end**. The film only worked once it became a single real
forecast — *said 88%, world said no* — traced from question to consequence.

**Prefer a failure.** A miss shows the machine doing its job, is impossible to read as
cherry-picking, and gives every downstream loop something real to react to.

### 4. Explainer, not advertisement

Assume the viewer knows nothing. It must read **with** a voiceover on top and **without** one.
Open on the **problem**, not the architecture — state what's broken, then reveal the machine
as the answer. A hook is not a flourish; it's the reason to keep watching.

### 5. Separate the mechanism from the numbers

Statistics clutter an explanation. Carry the mechanism with **symbolic marks**, then put real
figures at the very end — or nowhere. If a mark is not 1:1 with a thing, **say so on screen**
(`1 dot ≈ 30 beliefs`). If something is too rare to be field scale (17 of 44,510 = 0.6 of a
dot), draw it 1:1 as an annotated callout and label it — never silently mix scales.

### 6. Nothing teleports

If a thing appears somewhere new, **animate it getting there**. A chart that materialises is a
cut; a chart that dots visibly *fall onto* is an explanation. This was the single biggest
"it doesn't explain it better" complaint on that build, and fixing it changed the film.

### 7. Lock the layout

One circuit. Nothing crosses anything. Spaghetti beziers read as *complexity*, not as a
system. A horizontal spine + a return rail + entities sitting **on** the rail reads instantly.

### 8. Show the part that doesn't work

From Abilityai/trinity-skills, Apache-2.0.

More from Abilityai/trinity-skills

Signals

Stars
0
Forks
1
Open issues
1
Last commit (this folder)
Aug 17, 2026 (2 months ago)
Last release
Oct 21, 2026 (6 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.26
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Ability.ai

Cite this page

animated-explainer skill. Agent Mart. https://agentmart.dev/skills/abilityai-animated-explainer (last updated 2026-10-24)