painted-animation
painted-animation is a skill in tuzhechen2005/opus-video-skills, last changed 26 Sept 2026. It can run shell commands, reach the network, name web addresses and bundle scripts — read the findings before installing.
Make hand-painted watercolour-and-ink cartoon videos (MP4) with code — p5.js + p5.brush rendered frame by frame in headless Chrome, encoded with ffmpeg — starring Clawd or any character. Use when the user asks to make an animation, animated short, cartoon, music video, lyric video, animated GIF/loop or "a video of Clawd…", or mentions the PDoomVideo / ClaudeAnimationBase approach. Covers storyboarding, the engine API, the render-and-look review loop, music/lyric sync and splitting long videos across subagents.
At a glance
What it can touch
How much a skill can do, not whether it is risky.
Pattern check
Nothing flagged
That isn't proof the skill is harmless.
Commit 59744a6 · 3 Nov 2026
How the check worksPattern check: nothing flagged
That isn't proof the skill is harmless.
Install
Each tab says whether it installs commit 59744a6, the one we checked, or the latest version.
OpenCode also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Goose also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Windsurf (Devin Desktop) also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Zed also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Roo Code also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Factory Droid also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Junie also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Amp also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
No install command here reaches Kiro. Copy the skill's folder into .kiro/skills/ in your project, or ~/.kiro/skills/ for all your projects. tuzhechen2005/opus-video-skills/skills/painted-animation (opens in a new tab)
Antigravity also looks in .agents/skills/, so the Any agent steps reach it with This project. For All projects, see where Antigravity looks.
Cline also looks in .claude/skills/, so the Claude Code steps reach it with This project. For All projects, see where Cline looks.
Claude Code
Pinned to commit 59744a6, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&mkdir -p .claude/skills &&mkdir .claude/skills/painted-animation &&cp -R "$tmp"/skills/painted-animation/. .claude/skills/painted-animation/ &&rm -rf "$tmp"If Claude Code was already running and this created the skills folder, run /reload-skills.
Or install the painted-animation plugin it ships in. Installs the latest version, not the one we checked. Installs everything in the plugin, including any hooks, MCP servers and scripts our check doesn't cover.
claude plugin marketplace add tuzhechen2005/opus-video-skills --scope project &&claude plugin install painted-animation@opus-video-skills --scope projectClaude apps
Pinned to commit 59744a6, the one we checked.
Skills in the Claude apps belong to your account rather than to a project.
Make painted-animation.zip, with the skill folder at the top level:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&out="$(mktemp -d)" &&cp -R "$tmp"/skills/painted-animation "$out"/painted-animation &&(cd "$out" && zip -qr - painted-animation) > painted-animation.zip &&rm -rf "$tmp" "$out"In Claude, open Customize > Skills, select +, then + Create skill > Upload a skill, and choose painted-animation.zip.
On Free, Pro and Max plans, turn on Code execution and file creation (Create and edit files in newer settings) under Settings > Capabilities.
Codex
Pinned to commit 59744a6, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&mkdir -p .agents/skills &&mkdir .agents/skills/painted-animation &&cp -R "$tmp"/skills/painted-animation/. .agents/skills/painted-animation/ &&rm -rf "$tmp"Codex picks up new skills on its own; restart it if this one does not appear.
Cursor
Pinned to commit 59744a6, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&mkdir -p .cursor/skills &&mkdir .cursor/skills/painted-animation &&cp -R "$tmp"/skills/painted-animation/. .cursor/skills/painted-animation/ &&rm -rf "$tmp"Copilot & VS Code
Pinned to commit 59744a6, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&mkdir -p .github/skills &&mkdir .github/skills/painted-animation &&cp -R "$tmp"/skills/painted-animation/. .github/skills/painted-animation/ &&rm -rf "$tmp"In a running Copilot CLI session, run /skills reload.
Or install it with gh skill, which also installs the commit we checked. Needs GitHub CLI 2.90 or later.
gh skill install tuzhechen2005/opus-video-skills skills/painted-animation/SKILL.md@59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 --agent github-copilot --scope projectGemini CLI
Pinned to commit 59744a6, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&mkdir -p .gemini/skills &&mkdir .gemini/skills/painted-animation &&cp -R "$tmp"/skills/painted-animation/. .gemini/skills/painted-animation/ &&rm -rf "$tmp"In a running session, run /skills reload.
Or use Gemini CLI’s own installer. Installs the latest version, not the one we checked.
gemini skills install https://github.com/tuzhechen2005/opus-video-skills.git --path skills/painted-animation --scope workspaceAny agent
Pinned to commit 59744a6, the one we checked.
OpenCode, Goose, Windsurf (Devin Desktop), Zed, Roo Code, Factory Droid, Junie, Amp and Antigravity read .agents/skills in a project.
From your project's root folder:
tmp="$(mktemp -d)" &&git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/tuzhechen2005/opus-video-skills.git "$tmp" &&git -C "$tmp" fetch -q --depth 1 origin 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&git -C "$tmp" sparse-checkout set -- skills/painted-animation &&git -C "$tmp" checkout -q 59744a69c7b916cfbe4c4ec84006b0c2f5e2fde1 &&mkdir -p .agents/skills &&mkdir .agents/skills/painted-animation &&cp -R "$tmp"/skills/painted-animation/. .agents/skills/painted-animation/ &&rm -rf "$tmp"Or use the skills CLI from skills.sh. Installs the latest version, not the one we checked. The skills CLI reports installs to skills.sh unless you set DISABLE_TELEMETRY=1.
npx skills@1.7.4 add tuzhechen2005/opus-video-skills --skill painted-animationWhat it can touch
From the files and frontmatter at commit 59744a6. This is how much a skill can do, not whether it is risky.
Pattern check
Pattern check: nothing flagged · commit 59744a6 · 3 Nov 2026
We checked every text file in this skill, at commit 59744a6 on 3 Nov 2026, against 45 published patterns such as download-and-run commands, hidden text and credential access. We don't run the skill, we don't read the web pages it points to, and we can't judge everything its instructions might lead an agent to do. In published tests, pattern checks like this one missed most malicious skills. Read the skill before you install it — especially anything it asks you to download or run.
How the check worksReport an incorrect finding
Files we didn't read
- docs/koi-gag.gif · image, audio or video
- docs/xiaozhen-sheet.jpg · image, audio or video
- template/docs/emotions.jpg · image, audio or video
- template/docs/views.jpg · image, audio or video
Outside links we did not follow
- https://github.com/JohnHeibel/PDoomVideo
- https://github.com/JohnHeibel/ClaudeAnimationBase
- https://img.shields.io/badge/English-2B2233?style=for-the-badge
- https://img.shields.io/badge/简体中文-D97757?style=for-the-badge
- https://github.com/acamposuribe/p5.brush
- https://github.com/JohnHeibel/ClaudeAnimationBase)。前者是一部主要由
- https://github.com/JohnHeibel/ClaudeAnimationBase)(MIT
- https://github.com/JohnHeibel/PDoomVideo)。本项目使用了
- https://github.com/JohnHeibel/PDoomVideo/blob/main/STORYBOARD.md
- https://p5js.org
Show 40 more
- https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz
- https://registry.npmjs.org/@davepagurek/bezier-path/-/bezier-path-0.0.7.tgz
- https://registry.npmjs.org/@japont/unicode-range/-/unicode-range-1.0.0.tgz
- https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.2.2.tgz
- https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz
- https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz
- https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz
- https://github.com/chalk/ansi-regex?sponsor=1
- https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz
- https://github.com/chalk/ansi-styles?sponsor=1
- https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-17.0.2.tgz
- https://registry.npmjs.org/zod/-/zod-3.25.76.tgz
- https://github.com/sponsors/colinhacks
- https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz
- https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz
- https://github.com/sponsors/sindresorhus
- https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.6.1.tgz
- https://opencollective.com/color
- https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1680125.tgz
- https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz
- https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz
- https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz
- https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz
- https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz
- https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz
- https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz
- https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz
- https://registry.npmjs.org/gifenc/-/gifenc-1.0.3.tgz
- https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz
- https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-4.3.1.tgz
- https://registry.npmjs.org/libtess/-/libtess-1.2.2.tgz
- https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz
- https://registry.npmjs.org/modern-tar/-/modern-tar-0.8.5.tgz
- https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz
- https://registry.npmjs.org/p5/-/p5-2.3.3.tgz
- https://registry.npmjs.org/p5.brush/-/p5.brush-2.2.3.tgz
- https://registry.npmjs.org/pako/-/pako-2.2.0.tgz
- https://github.com/sponsors/puzrin
- https://github.com/sponsors/nodeca
- https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.11.0.tgz
Format check
Each agent reads SKILL.md a little differently. We check the file against each one's published rules; we don't run the skill in any agent.
Agent Skills specPasses
The open format from agentskills.io, held to the strictest version of each rule among the agents we check.
- Note
There is no license field, so readers can't tell whether they may reuse the skill. O2
Fix: Add license: with an SPDX name such as MIT or Apache-2.0, or the name of a bundled licence file.
- Note
Reference files over 100 lines with no table of contents at the top: template/ANIMATION_GUIDE.md (462 lines). B5
Fix: Add a short list of the sections at the top of each.
- Note
Claude CodePasses
Claude Code reads its own extra fields, ignores unknown ones, and still loads a skill whose frontmatter is broken, without its fields.
- Note
Reference files over 100 lines with no table of contents at the top: template/ANIMATION_GUIDE.md (462 lines). B5
Fix: Add a short list of the sections at the top of each.
- Note
Claude apps & API uploadPasses
Uploading to claude.ai or the Claude API, or packaging with Anthropic's script, accepts only the six spec fields and stops on anything else.
- Note
The description is 515 characters. The claude.ai Help Center says 200 at most, though Anthropic's API docs and validator allow 1,024. D4
Fix: If the claude.ai upload refuses it, trim the description to 200 characters.
- Note
Reference files over 100 lines with no table of contents at the top: template/ANIMATION_GUIDE.md (462 lines). B5
Fix: Add a short list of the sections at the top of each.
- Note
- OpenAI (Codex & API)Passes
- VS Code & CopilotPasses
SKILL.md
We only show SKILL.md text here when its licence clearly allows it.
Read SKILL.md on GitHub (opens in a new tab)Files
29 files
Show 9 more
More from tuzhechen2005/opus-video-skills
| Skill | What it can touch | Pattern check | Licence | Updated |
|---|---|---|---|---|
kinetic-reelMake kinetic-typography motion reels (MP4) in code: showreels, portfolio or work reels, product promos, intro films, "motion design"-style videos with bold condensed type, HUD micro-type, black/cream/lime palette, three.js generative layers (particle terrain, liquid marble, chrome knot, particle clouds), shape-continuity transitions and a synthesized, beat-locked score. Canvas 2D + WebGL rendered frame by frame in headless Chrome, encoded with ffmpeg. Use when the user asks for a reel, showreel, motion-graphics / kinetic-type video, a "Work Reel" in this style, or to extend/re-cut the Work Reel ’26.
Pattern check: Nothing flaggedNo licenceUpdated 26 Sept 2026 |
| Pattern check: Nothing flagged | No licence | 26 Sept 2026 |
Other Frontend & design skills
Same category, most repo stars first.