Anidoodle
alexgreensh/anidoodle
Code-drawn stills, drawing timelapses, films, explainers and interactive web animations in 32 styles, with composed scores.
Provider-independent production guidance for deterministic Canvas 2D and p5.js animation.
$ npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install calesthio/generative-media-skills procedural-canvas-animation --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/calesthio/generative-media-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/production/runtime-assembly/procedural-canvas-animation .claude/skills/procedural-canvas-animation && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "procedural-canvas-animation" agent skill from https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animation into .claude/skills/procedural-canvas-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procedural-canvas-animation", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install calesthio/generative-media-skills procedural-canvas-animation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/calesthio/generative-media-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/production/runtime-assembly/procedural-canvas-animation .agents/skills/procedural-canvas-animation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "procedural-canvas-animation" agent skill from https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animation into .agents/skills/procedural-canvas-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procedural-canvas-animation", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install calesthio/generative-media-skills procedural-canvas-animation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/calesthio/generative-media-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/production/runtime-assembly/procedural-canvas-animation .cursor/skills/procedural-canvas-animation && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "procedural-canvas-animation" agent skill from https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animation into .cursor/skills/procedural-canvas-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procedural-canvas-animation", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/calesthio/generative-media-skills.git --path skills/production/runtime-assembly/procedural-canvas-animation--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install calesthio/generative-media-skills procedural-canvas-animation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/calesthio/generative-media-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/production/runtime-assembly/procedural-canvas-animation .gemini/skills/procedural-canvas-animation && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "procedural-canvas-animation" agent skill from https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animation into .gemini/skills/procedural-canvas-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procedural-canvas-animation", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install calesthio/generative-media-skills procedural-canvas-animationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/calesthio/generative-media-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/production/runtime-assembly/procedural-canvas-animation .github/skills/procedural-canvas-animation && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "procedural-canvas-animation" agent skill from https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animation into .github/skills/procedural-canvas-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procedural-canvas-animation", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install calesthio/generative-media-skills procedural-canvas-animation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/calesthio/generative-media-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/production/runtime-assembly/procedural-canvas-animation .opencode/skills/procedural-canvas-animation && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "procedural-canvas-animation" agent skill from https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/procedural-canvas-animation into .opencode/skills/procedural-canvas-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procedural-canvas-animation", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
procedural-canvas-animationProvider-independent production guidance for deterministic Canvas 2D and p5.js animation.
Procedural Canvas Animation is an agent skill from calesthio/generative-media-skills. Provider-independent production guidance for deterministic Canvas 2D and p5.js animation. Use for particles, fields, trails, weather, procedural textures, generative geometry, and lightweight 2D simulations that need fixed media dimensions, seeded repeatability, transparent compositing, aspect variants, performance QA, or frame-addressable rendering.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `EVAL.md`).
It sits in Media & Creative, covering Generative and creative coding. The repository describes itself as: Research-backed agent skills and tools for premium image, video, audio, voice, and generative media production across AI coding assistants. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8c85352. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developer.mozilla.orghtml.spec.whatwg.orgw3.orgtc39.esp5js.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Procedural Canvas Animation loads about 3.1k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 1,424 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from calesthio/generative-media-skills at commit 8c85352, republished under its MIT licence (© calesthio). 1,424 words, ~3,112 tokens.
.claude/skills/procedural-canvas-animation/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill when a 2D bitmap canvas is the appropriate drawing surface for procedural motion. It covers authored particles, vector/noise fields, trails, weather, textures, generative geometry, and lightweight simulations for rendered media.
It does not cover Three.js scene graphs, WebGL/WebGPU shaders, D3 data semantics, game-engine architecture, or a generic frontend Canvas tutorial.
Facts were verified 2026-07-12. Canvas, browser, p5.js, OffscreenCanvas, and encoding behavior can change; pin versions and record the render environment.
Define:
Documented facts: Canvas has an intrinsic resolution separate from CSS sizing. Its default bitmap is 300 by 150. Setting its width or height clears the bitmap and resets context state. Canvas 2D begins with source-over and globalAlpha = 1 and uses premultiplied alpha. A context requested with {alpha:false} is opaque and unsuitable for transparent delivery.
Set backing dimensions explicitly. Do not stretch a low-resolution backing bitmap with CSS and call it high resolution. For fixed video output, choose exact pixel dimensions and an explicit density; p5.js pixelDensity(1) is often appropriate for predictable output.
Changing size is a reconstruction event: rebuild transforms, state, buffers, and layout rather than assuming pixels or context settings survive.
Design around:
renderFrame(frameIndex, variant, accessibilityMode)with composition time:
$$ t = \frac{frameIndex}{fps} $$
Keep requestAnimationFrame() outside production state. Documented fact: rAF is one-shot, follows browser display scheduling, may pause in hidden contexts, and does not guarantee 60 fps. p5.js frameRate() requests a target but does not define offline media time.
Do not use Date.now(), performance.now(), millis(), deltaTime, or mutable frameCount as final-render truth.
Calculate every object directly from (seed, objectId, frameIndex, channel). Best for periodic fields, analytic particles, procedural lines, and arbitrary-frame access.
Reset to deterministic initial state and advance exactly $\Delta t = 1/fps$ in a documented order until the requested frame. Suitable for stateful snow, flocking, or cellular systems when duration is manageable.
Persist deterministic state at fixed frames and replay from the nearest earlier checkpoint. Useful for long stateful simulations. Version checkpoint schema and reject it when parameters/runtime change.
History-dependent persistent-buffer trails are not random-access. Replay history, store checkpoints, or draw the previous $K$ analytic positions into each frame.
Documented fact: ECMAScript Math.random() has an implementation-defined algorithm and no seed control. p5.js randomSeed() and noiseSeed() can repeat their respective sequences, but that does not guarantee pixel identity across p5/browser versions.
Record seed and generator implementation. Prefer keyed random values where arbitrary access matters, so rendering frame 200 does not depend on how many random values earlier frames consumed.
Never reseed every frame unless the intended algorithm is explicitly frame-keyed; that often freezes or correlates motion.
For each system define:
Keep simulation state independent of pixels. Aspect variants should share the event while changing framing, count, density, line width, or field bias intentionally.
For weather, distinguish visual plausibility from physical simulation. Do not claim meteorological accuracy unless the model and inputs support it.
Set globalCompositeOperation deliberately and restore context state. Test source-over, additive/lighten effects, masks, and erasure over black, white, and checkerboard backgrounds.
Transparent delivery requirements:
JPEG cannot preserve alpha. WebCodecs encoder alpha behavior is configuration- and codec-dependent; verify capability and output instead of assuming support.
Documented fact: drawing cross-origin media without valid CORS can make a canvas non-origin-clean, causing pixel reads and serialization to throw SecurityError.
Freeze production assets locally where possible. Record URLs, licenses, hashes, CORS policy, and failure behavior. Do not discover a tainted canvas after a long render.
For deterministic offline work:
function setup() {
pixelDensity(1);
createCanvas(outputWidth, outputHeight, P2D);
noLoop();
initialize(seed);
}
function renderFrame(frame) {
resetOrRestore(frame);
advanceTo(frame, 1 / fps);
drawCurrentState();
}This is an architectural example. advanceTo() must not advance once too many; define whether frame zero represents initial state before any step.
Avoid allowing window size, input events, or live device density to alter final state. resizeCanvas() clears output and typically triggers redraw, so rebuild the declared variant explicitly.
Profile before moving work to a worker. First reduce:
Documented fact: OffscreenCanvas is transferable and can run in workers, but worker use does not guarantee lower total render time. It can improve main-thread responsiveness and pipeline separation. Verify APIs available in the worker and account for transfer/serialization cost.
Measure warm and cold frame time, p50/p95, peak memory, output readback, and teardown. Promise repeatability only for a pinned environment; fonts, antialiasing, filtering, floating point, and color conversion can differ.
Meaningful non-text content needs an equivalent alternative. Color cannot be the sole carrier of meaning, and meaningful graphics/control indicators need appropriate contrast.
WCAG 2.2 limits flashing above three times in one second unless below thresholds. Test rendered loops while looping. Qualifying automatic motion on interactive surfaces needs pause/stop/hide behavior.
Reduced motion should alter motion language: static representative frame, slower drift, smaller displacement, fewer particles, or user-controlled playback. Lowering FPS alone may increase jerk without reducing motion extent.
For decorative canvas, hide implementation details from assistive technology and expose meaning in the host. Canvas text or a description is not a substitute for keyboard-operable semantic controls.
Record seed, generator, algorithm/library versions, parameters, dimensions, fps, frame range, color space, density, source assets/licenses/hashes, runtime/browser, and output hashes.
QA:
This is a complete example, not a mandatory formula.
Intent: eight-second, 30 fps, 1920x1080 transparent overlay of 600 luminous wind traces.
Approach: use seed 42719, normalized coordinates, and 36-frame analytic trails. Immutable particle parameters come from a keyed generator. Each position is a pure periodic function of absolute time. Frame $f$ clears transparent and draws segments from $f-36$ through $f$ with bounded age-controlled alpha/width. Use source-over for base ribbons and a separately tested additive highlight.
QA: direct versus sequential hashes for frames 0, 1, 137, and 239; alpha histogram/corners; black/white/checkerboard composites; p50/p95; flash test.
Likely failures: mutable PRNG consumption, {alpha:false}, background fill, clipped additive values, or wrapped-trail jumps.
Variation: 9:16 lowers count and biases vertical flow; reduced-motion output is an approved static frame.
This is a complete example, not a mandatory formula.
Intent: 12-second snowfall at 30 fps in 9:16 and 16:9, plus static reduced-motion output.
Approach: pixelDensity(1), noLoop(), seed random/noise with 8301, use normalized state and fixed $1/30$ steps. renderFrame(n) resets, steps 0..n-1, then draws. Dimensions affect projection and composition margins, not simulation state. Respawns consume values only in deterministic replay order.
QA: replay frame 240 twice; compare normalized state before projection; reject NaN/out-of-bounds growth; test crops, performance, pause behavior, alternatives, and flashing.
Likely failures: deltaTime, millis(), frameCount, or window dimensions leak into state; resizing without reconstruction; assuming seed output is version-stable.
Verified 2026-07-12:
Math.random: https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-math.random© calesthio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/production/runtime-assembly/procedural-canvas-animation of calesthio/generative-media-skills.
Open the folder on GitHubat commit 8c85352
Procedural Canvas Animation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Procedural Canvas Animation this skillcalesthio/generative-media-skills | 197 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Anidoodlealexgreensh/anidoodle | 878 | — | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| PosterlyChenruishuo/posterly | 418 | — | ~4.6k | Automated safety check: Notes | AGPL-3.0 | |
| Artist Self Evolvetettethu/VibeGame | 269 | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| P5jsTommy-yw/RunbookHermes | 546 | 1 repos | ~6.8k | Automated safety check: Pass | MIT | |
| Prismer P5jsPrismer-AI/PrismerCloud | 1.6k | 3 repos | ~6.9k | Automated safety check: Pass | MIT |
alexgreensh/anidoodle
Code-drawn stills, drawing timelapses, films, explainers and interactive web animations in 32 styles, with composed scores.
Chenruishuo/posterly
Create or revise academic conference posters in HTML/CSS and export print-ready PDFs.
tettethu/VibeGame
Distill stable art-generation patterns from a completed project, so future projects produce comparable assets without re-discovering the prompts.
Tommy-yw/RunbookHermes
Production pipeline for interactive and generative visual art using p5.js.
Prismer-AI/PrismerCloud
p5.js sketches: gen art, shaders, interactive, 3D. An agent skill from Prismer-AI/PrismerCloud.
anthropics/skills
Creates original generative art in two steps: a written algorithmic philosophy, then a p5.js sketch with seeded randomness and an interactive viewer for exploring parameters.
calesthio/generative-media-skills
A skill your agent uses to turn generated, captured, scanned, or modeled 3D output into production-ready standalone assets for DCC, real-time engine, web, or interchange delivery.
calesthio/generative-media-skills
Provider-independent audio mixing and mastering direction for AI agents finishing generated videos, ads, trailers, explainers, podcasts, recuts, avatar clips, music videos, documentaries, and social…
calesthio/generative-media-skills
Provider-independent captions and media accessibility direction for AI agents producing or finishing generated videos, ads, social clips, explainers, avatar videos, documentaries, podcasts/video…
calesthio/generative-media-skills
Provider-independent production workflow for agents assembling, auditing, executing, and handing off ComfyUI node-graph workflows for image, video, upscale, inpaint, conditioning, and batch media…
calesthio/generative-media-skills
Provider-independent FFmpeg finishing workflow for AI agents preparing generated or edited media deliverables.
calesthio/generative-media-skills
Provider-independent quality assurance for AI-generated and AI-assisted media.
Provider-independent production guidance for deterministic Canvas 2D and p5.js animation. Procedural Canvas Animation is an agent skill from calesthio/generative-media-skills.js animation.
Procedural Canvas Animation fits situations like: procedural textures; generative geometry; lightweight 2D simulations that need fixed media dimensions; seeded repeatability.
Run `npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a claude-code`. Or copy the skill folder (skills/production/runtime-assembly/procedural-canvas-animation in calesthio/generative-media-skills) into .claude/skills/procedural-canvas-animation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a codex`. Or copy the skill folder (skills/production/runtime-assembly/procedural-canvas-animation in calesthio/generative-media-skills) into .agents/skills/procedural-canvas-animation in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add calesthio/generative-media-skills --skill procedural-canvas-animation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/procedural-canvas-animation, .gemini/skills/procedural-canvas-animation, .github/skills/procedural-canvas-animation and .opencode/skills/procedural-canvas-animation in your project.
SKILL.md names no scripts, command-line tools or credentials: Procedural Canvas Animation is instructions for the agent only.
SKILL.md names 5 domains. As links in the text: developer.mozilla.org, html.spec.whatwg.org, w3.org, tc39.es and p5js.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Procedural Canvas Animation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Procedural Canvas Animation: Anidoodle (alexgreensh/anidoodle, 878 stars), Posterly (Chenruishuo/posterly, 418 stars), Artist Self Evolve (tettethu/VibeGame, 269 stars) and P5js (Tommy-yw/RunbookHermes, 546 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
calesthio (a GitHub user) maintains it in calesthio/generative-media-skills, which has 197 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on July 14, 2026.
Source: calesthio/generative-media-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.