Not in the top 1,000 by GitHub stars

iart-ai/javascript-animation-skills

Every frame drawn in JavaScript — the Opus 5.5-style animation technique as agent skills: hand-drawn canvas animation, zero image assets, code-synthesized soundtrack, A/V sync check.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/javascript-animation/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

f7d0882a3132 → f7d0882a3132

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → f7d0882a3132

No earlier version was observed for comparison.

Compare on GitHub

skills/soundtrack/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

f7d0882a3132 → f7d0882a3132

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → f7d0882a3132

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit f7d0882a313249cbd43f0e4e9e209b1622870253

git clone --filter=blob:none --no-checkout https://github.com/iart-ai/javascript-animation-skills.git .hotskills/iart-ai-javascript-animation-skills && git -C .hotskills/iart-ai-javascript-animation-skills checkout --detach f7d0882a313249cbd43f0e4e9e209b1622870253 # Copy each selected skill directory from .hotskills/iart-ai-javascript-animation-skills into .claude/skills/<skill-name>/
51GitHub stars
15stars in 7 days
2skills in this repository
0commits in 30 days

Heat

4.1
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 5, 202651

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

javascript-animation

When your agent uses it

This skill should be used when the user asks to "draw every frame in JavaScript", "make an animation with no image assets", "animate this in code / on a canvas", "make a hand-drawn style animated video", "turn this into a short animated film", "make an animated explainer drawn in code", "make an animated story / picture book of my photos", or "make a zero-asset animation like the Opus 5.5 ones". Produces a single self-contained HTML file whose frames are computed on an HTML canvas (seekable, deterministic), renders it to MP4, and self-checks the result. Pairs with the soundtrack skill for code-synthesized music. NOT for charts from data (use chart-animation) or 3D/WebGL (use threejs-animation / shader-glsl from webgl-animation-skills); pure text motion and depth drawn by projection on the 2D canvas are in scope.

What it loads into context

Frontmatter

209 tokens

Always available to the agent

SKILL.md

2,132 tokens

When the skill is activated

Reference documents

6,370 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Model
  2. Default flow: don't stop to ask
  3. Self-check (the agent does this; the user never sees it)
  4. Only if triggered
  5. Rules that prevent the common failures
  6. Files

Scripts executed separately

  • scripts/asset-audit.mjs
  • scripts/layout-check.mjs
  • scripts/render.mjs
  • ../soundtrack/scripts/sync-check.mjs
  • ../soundtrack/scripts/sync-check.mjs

Files

  • ../../.claude-plugin/marketplace.jsonasset395 bytes
  • ../../.claude-plugin/plugin.jsonasset624 bytes
  • SKILL.mdcore9,088 bytes
  • SKILL.mdcore9,088 bytes
  • references/character.mddoc2,912 bytes
  • references/forms.mddoc1,919 bytes
  • references/qc.mddoc3,732 bytes
  • references/storyboard.mddoc4,666 bytes
  • references/techniques.mddoc10,243 bytes
  • scripts/asset-audit.mjsruns3,273 bytes
  • scripts/layout-check.mjsruns3,848 bytes
  • scripts/render.mjsruns9,083 bytes
  • templates/starter.htmlasset19,510 bytes
  • ../soundtrack/scripts/sync-check.mjsruns7,215 bytes
  • ../soundtrack/scripts/sync-check.mjsruns7,215 bytes
Read SKILL.md

# JavaScript Animation (every frame drawn in code)

Make short animated films where every pixel is computed: no images, no fonts to load, no libraries. One HTML file holds the whole piece; a headless browser seeks it frame by frame into an MP4.

## Model

Built and tested with Claude Opus 5.5; drawing quality depends heavily on the model. The self-check below needs image input: if the current model can't see images, say so to the user and treat visual verification as not done. Other models are untested; if the result looks crude, say that a stronger model is likely to help rather than claim it's the best possible.

## Default flow: don't stop to ask

Run straight through. Pick sensible defaults and mention alternatives at delivery. Ask *before* starting only if there is no subject at all (e.g. "make an animation", nothing else).

1. **Read the brief.** Infer the form (story, explainer, poem, loop, interactive page), length (default 15-20 s; longer only when the subject cannot be told in that time) and aspect (default 1920x1080) from what the user said. On-screen text is in the language the user wrote the brief in; make it bilingual only if they ask or the audience clearly is. `references/forms.md` has a short structure for each form.
2. **Plan the look and sound from the subject and the audience,** in your own words: what the film is, how it looks and sounds, and why that fits this subject and this audience. There is no list to fill in; `references/techniques.md` has ingredients, and the starter's values are placeholders, not a house style. Never reuse the look or sound of a previous piece by default: two different subjects should not come out looking or sounding alike. If the user points at someone else's piece ("like that viral one"), borrow its techniques, never its characters, story or compositions.
View the complete source on GitHub

Skills included

  • javascript-animation
  • soundtrack

Repository facts

License
MIT
Created
Sep 23, 2026
Last pushed
Sep 30, 2026
Forks
5
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 4 notes
  • skills/javascript-animation/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/soundtrack/scripts/sync-check.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/soundtrack/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/soundtrack/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 26 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "iart.ai",     "url": "https://iart.ai"
  • Network accessline 4
    "name": "iart.ai",     "url": "https://iart.ai"   },
  • Network accessline 5
    "url": "https://iart.ai"

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "iart.ai",     "url": "https://iart.ai"
  • Network accessline 6
    "name": "iart.ai",     "url": "https://iart.ai"   },
  • Network accessline 7
    "url": "https://iart.ai"
  • Network accessline 8
    },   "homepage": "https://iart.ai",   "repository": "https://github.com/iart-ai/javascript-animation-skills",
  • Network accessline 9
    "homepage": "https://iart.ai",
  • Network accessline 10
    "repository": "https://github.com/iart-ai/javascript-animation-skills",

skills/javascript-animation/scripts/asset-audit.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 46
    let browser; try { browser = await chromium.launch({ channel: 'chrome' }); } catch { browser = await chromium.launch(); }   const page = await browser.newPage(), self = 'file://' + resolve(file);   page.on('request', r => { if (!r.url().sta
  • Network accessline 47
    const page = await browser.newPage(), self = 'file://' + resolve(file);   page.on('request', r => { if (!r.url().startsWith(self)) requests.push(r.url()); });   await page.goto(self + '?render'); await page.waitForTimeout(1500);
  • Network accessline 48
    page.on('request', r => { if (!r.url().startsWith(self)) requests.push(r.url()); });

skills/javascript-animation/scripts/layout-check.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/javascript-animation/scripts/render.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/soundtrack/references/ai-music.md

  • Dangerous shell operationline 10
    [Credential-related source omitted]
  • Network accessline 10
    [Credential-related source omitted]
  • Possible obfuscationline 10
    [Credential-related source omitted]
  • Access to secretsline 10
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Possible obfuscationline 13
    | python3 -c "import sys,json,base64;b=''.join(json.loads(l[5:]).get('choices',[{}])[0].get('delta',{}).get('audio',{}).get('data','') for l in sys.stdin if l.startswith('data:') and 'DONE' not in l);open('bgm.mp3','wb').write(base64.b64dec

skills/soundtrack/scripts/sync-check.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node

skills/soundtrack/templates/groove.js

  • Executable scriptline 1
    Executable file

skills/soundtrack/templates/score.js

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 17 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/javascript-animation/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/javascript-animation/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/javascript-animation/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/javascript-animation/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/javascript-animation/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.