Image to Three.js Model
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
A skill your agent uses when animating a character or prop in Maya through Python: a walk or run cycle, a jump or landing, a heavy lift, throw or punch, an acting or dialogue shot, lip sync, eye…
$ npx skills add scenario-labs/skills --skill scenario-maya-animation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scenario-labs/skills scenario-maya-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/scenario-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-animation .claude/skills/scenario-maya-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 "scenario-maya-animation" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-animation into .claude/skills/scenario-maya-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-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/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-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 scenario-labs/skills --skill scenario-maya-animation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scenario-labs/skills scenario-maya-animation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-animation .agents/skills/scenario-maya-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 "scenario-maya-animation" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-animation into .agents/skills/scenario-maya-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-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 scenario-labs/skills --skill scenario-maya-animation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scenario-labs/skills scenario-maya-animation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-animation .cursor/skills/scenario-maya-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 "scenario-maya-animation" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-animation into .cursor/skills/scenario-maya-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-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/scenario-labs/skills.git --path skills/dcc/maya/scenario-maya-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 scenario-labs/skills --skill scenario-maya-animation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scenario-labs/skills scenario-maya-animation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-animation .gemini/skills/scenario-maya-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 "scenario-maya-animation" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-animation into .gemini/skills/scenario-maya-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-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 scenario-labs/skills scenario-maya-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 scenario-labs/skills --skill scenario-maya-animation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-animation .github/skills/scenario-maya-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 "scenario-maya-animation" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-animation into .github/skills/scenario-maya-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-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 scenario-labs/skills --skill scenario-maya-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 scenario-labs/skills scenario-maya-animation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-animation .opencode/skills/scenario-maya-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 "scenario-maya-animation" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-animation into .opencode/skills/scenario-maya-animation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-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.
scenario-maya-animationA skill your agent uses when animating a character or prop in Maya through Python: a walk or run cycle, a jump or landing, a heavy lift, throw or punch, an acting or dialogue shot, lip sync, eye…
Scenario Maya Animation is an agent skill from scenario-labs/skills. Use when animating a character or prop in Maya through Python: a walk or run cycle, a jump or landing, a heavy lift, throw or punch, an acting or dialogue shot, lip sync, eye darts and blinks, stepped blocking, splining, polish, Graph Editor tangents, animation layers, mocap cleanup or retargeting, game clips and root motion, or reviewing a playblast. Also when motion looks floaty, weightless, mushy, poppy, posey, sliding or chattery, or feet slap or skate.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `references/critique.md`, `references/expert-notes.md` and `references/gui-paths.md`).
It sits in Game Development. It works with Python. The repository describes itself as: Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through… The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f6f8ab7. 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.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From 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.
Scenario Maya Animation loads about 4.6k tokens when it runs, and up to ~32k if it reads all its reference files. Until then it costs about 121 tokens; SKILL.md has 2,101 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); the scripts in this folder are not scanned.
The full file from scenario-labs/skills at commit f6f8ab7, republished under its MIT licence (© scenario-labs). 2,101 words, ~4,552 tokens.
.claude/skills/scenario-maya-animation/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Expert animation means every frame is a choice: poses that read as drawings from the camera, holds and snaps placed on purpose, designed spacing, weight shown by resistance and a caught stop. Work big to small (story, body, face, detail); never add detail to a stage that does not read yet. An agent cannot scrub, so it measures (world and screen tracks, spacing, holds, contacts, a ballistic fit, overlap lags), then looks at a playblast or a headless sheet before calling anything done. If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.
REQUIRED BACKGROUND: scenario-maya-expert (execution channel, review loop, 2027 version traps).
Toolkit: scripts/mx_anim.py. Its analysis and image layer is pure Python and ran offline.
| Input | Why it changes the plan | Default when the brief is silent |
|---|---|---|
| Style and destination | squash, stops, closeness to reference: cartoony pushes; live action needs pose squash and no dead stops (Elver); VFX stays near reference (Neistadt) | realistic feature quality |
| Frame rate | timing numbers, currentUnit | 24 fps (film) |
| Weight and strength | frames of resistance and of overcome (Wade: decide both numbers first) | heavy: resistance beat of 2+ frames, no hang |
| Rig | control names, IK/FK, spaces, foot roll attribute (map once with listAttr(keyable=True)) | hands in IK, no IK/FK or space switches inside a shot (Newman) |
| Camera | a locked shot camera is the only judge; games also need every angle and the engine | build the shot camera, lock it |
| Reference, audio | landmarks (contacts, takeoff, apex, landing, blinks, darts) give rhythm, then push (Neistadt) | beat list from the brief |
| Game metrics | speeds and heights agreed in round numbers before animating (Newman); root motion or in place (Epic) | in place, metrics sheet requested |
A.store_plan(plan). Physical shots: A.air_frames(rise, drop) budgets the air. Dialogue: phrases with subtext and an action verb, ruled sounds (M, B, P, F, V, L, T, D), 2 to 4 tentpoles (Santos, Wade). GATE: frame counts add up.mx_validate.validate(profile="shot", rules={"fps": 24}) has no fail.A.proxy_boxes(), key translate and lean, air with A.ballistic_keys(), rotation 1 to 2 frames behind (Camporota). The first anticipation is usually too big: A.scale_curve(root, "translateY", 0.8, rest_y, time=crouch). GATE: A.evaluate_gates() on the proxy (ballistic, catch, resistance, push_fastest); proxy_curves.png looked at.A.set_key_defaults("blocking"); A.key_pose(pose, f, fill=ctrls) keys every control on every pose; passes: main, anticipations, overshoots, breakdowns (favor a neighbor, never 50/50), holds (A.key_hold()); A.share_keys(ctrls). Never act from the neutral rig pose (Neistadt). Crouch poses: foot roll keyed, spine dragging, arms hanging (Camporota). GATE: every key category present; stepped playblast (GUI) or tracks.png; write the story it reads, then check silhouettes.snap = A.snapshot(ctrls) (the buffer curve); A.to_spline() on COG, spine, legs only; face, eyes, fingers stay stepped (Camporota, Santos). Air gravity-true; broken tangent into a hard landing (Newman); planted feet flat. Mush: A.restore(snap), add poses. Every later key: A.insert_key(), then A.curve_diff() on sampled snapshots is ok outside its two segments (P4). GATE: A.run_gates(plan) ballistic, hang, catch, slide, penetration, foot_roll, spine_drag, heel_to_flat pass; no A.overshoots() through holds.A.offset_keys() by 1 to 2 frames down the chain. GATE: overlap lags not all zero; pose_to_pose_tell low; tracks clean in camera.A.mouth_keys(phonemes), big five, tongue, connection by A.copy_curve() (nostrils 1 frame behind the corners, dampened). Eyes linear, 2-frame darts; blinks close faster than they open. GATE: A.jaw_report(), A.lip_lag() against A.audio_envelope(), A.blink_report(), A.transitions(); close-ups on tentpoles.A.retime() tightens a section; moving holds; a motion-blurred render before final (all Elver). GATE: every gate passes (peel_off, impact_hold included), layers merged, no sub-frames, Euler filtered, critique.md on the final playblast.Variants. Cycle: poses every 3 frames, loop with A.cycle() before polish, offsets inside the cycle keep the period. Game clip: metrics, A.cycle_speed(), loop seam, root rules, then scenario-maya-pipeline-scripting. Mocap: procedures P12; retarget: P13; heavy interactions: P9.
| Value | Relative to | Source |
|---|---|---|
| Gravity 1.703 cm/frame^2 (981/576) | 24 fps, scene in cm | physics [added] |
| Walk keys every 3 frames: contact 1, down 4, pass 7, up 10, contact 13; loop 1 to 25 | 24-frame cycle | Camporota |
| Touch-down to flat foot about 1 frame, at most 2; walk arm offsets 0, 1, 2, head 1 | every step and landing | Camporota; body digest |
| Rotation 1 to 2 frames behind translation | proxy and body | Camporota |
| Keys on ones on fast actions; 2 to 4 frames apart on slow ones | blocking | Newman |
| Blink close 2 / open 4 (or 3 / 5; big eyes one more) | frames | Elver |
| Eye dart 2 frames, linear; brows lead lids by 1 to 2, never 5 | frames | Elver |
| Snappy move: 3 frames on an arc plus a small overshoot, never 1 | frames | Elver |
| Global lip shift 1 to 2 frames earlier; opens near full on frame 1 | when late at speed | Lazare |
| Big five = 90% of lip sync; jaw plus corners 50 to 60% | controls | Santos, Elver |
| Game speeds: walk 2, run 4 to 6, sprint 12 to 15 m/s | stylized player | Newman |
Playblast default scale 0.5: pass percent=100 | active view | Maya 2027 Help |
Measurable (A.run_gates(plan); pure logic A.evaluate_gates), for any jump, hop, landing or weight shift in the plan: fps; heavy air g_ratio 0.8 to 1.25, hang excess at most 1 frame, constant horizontal speed; catch (60%+ of the fall speed gone in 2 frames, decel shorter than recovery), then a 3+ frame hold at the bottom; push fastest; heavy resistance beat of 3+ still frames; every crouch: foot roll moves, spine lags the hips; touch-downs flat within 2 frames; lift-off toe within 30 degrees of the takeoff spot; planted feet at most 0.2 cm/frame, penetration under 0.5 cm; pre-landing stretch; no pops outside impacts; overlap lags; moving end hold; tell under 90% after splining; no sub-frames; no layers at polish. [added] thresholds are toolkit defaults.
Visual: A.review_images(plan, out) (headless: curves.png stacked lanes, tracks.png camera-space tracks with onion-skin poses); in the GUI A.playblast_pack() (shot camera plus a no-lights silhouette) and a stepped-preview playblast. Read frames in time order; write the first-view read before the numbers (critique.md).
| Mistake | What it looks like | Fix |
|---|---|---|
| Splining before the poses are in | mush, arms tweened through the body | A.restore(snap), add breakdowns stepped |
| Even spacing, whole body on the same frames | floaty, "hitting poses" | favor neighbors, holds, offset_keys down the chains |
| First-pass anticipation kept | the crouch upstages the action | A.scale_curve(..., time=crouch) about the rest value |
| Torso locked to the hips, arms swung back in the crouch | stiff, generic anticipation | spine drags behind the hips, only the arms drop |
| Feet flat in the crouch, pointing forward at takeoff, slow to flatten on landing | weak compression, no push, slapping feet | foot roll; toe aimed back at the takeoff spot; flat within 1 to 2 frames |
| Stylized hang on a heavy body | floaty apex | ballistic_keys, flat apex, broken contact tangent |
| No resistance before the effort | styrofoam weight | 2+ frames of strain before the push |
| Symmetric dip, or a bounce straight out of the squash | light landing | sudden catch, bigger hold, one overshoot, slow recovery |
S or bare setKeyframe on a splined curve | neighbors reshape, holds drift | A.insert_key, then A.curve_diff |
| Spline through a hold | drifting hold | key_hold pillars, flat or plateau sides |
| Arcs checked on a 3D trail | clean trail, broken arc on screen | camera_track pixel tracks |
| Lip sync keyed on the sound | late at speed | per-sound lead, then a global shift |
Receives from scenario-maya-rigging and scenario-maya-deformation: the rig referenced (never imported), validate(profile="rig") clean, the control list with IK/FK, space and foot roll attributes, a range-of-motion playblast. Rig problems (knee pop, flipping space) go back as a note with frames.
Delivers shots to scenario-maya-lighting-rendering: a new saved version, validate(profile="shot") clean, layers merged, helpers deleted (A.delete_helpers()), run_gates JSON with no fail, the final playblast the agent looked at, what was not verified. Game clips to scenario-maya-pipeline-scripting: skeleton baked per clip, clip names and ranges (bookmarks), root rule (in place or root motion), loop seam and speed reports.
keyTangent(q=True, g=True, itt=True). Lock/Free Tangent Weight is now Tangent Length; Butterworth is Smooth Filter (Butterworth).A.stepped_preview() is the scripted twin. Dope Sheet Time Snap is off since 2025.1 and scaleKey leaves sub-frames: A.snap_subframes().review_images or Arnold stills.references/expert-notes.md: principles and numbers by expert, timestamps, deciding conditions. Load to choose an approach or write notes.references/procedures.md: the mx_anim API and full procedures with test paths. Load before writing code.references/critique.md: review rubric (first-view read, four buckets), director lingo, note format. Load at every gate.references/gui-paths.md: menus, hotkeys, editor settings. Load for a computer-use agent or a human.references/sources.md: every source, credential, URL and best timestamp.© scenario-labs, 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 6 other files (scripts, references) in skills/dcc/maya/scenario-maya-animation of scenario-labs/skills.
Open the folder on GitHubat commit f6f8ab7
Scenario Maya 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 |
|---|---|---|---|---|---|---|
| Scenario Maya Animation this skillscenario-labs/skills | 946 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Image to Three.js Modelimg2threejs/img2threejs | 18k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| 2D Map and Scene Generator0x0funky/agent-sprite-forge | 4.4k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Bambu Studio AIheyixuan2/bambu-studio-ai | 223 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Spine AnimationGenielabsOpenSource/spine-animation-ai | 521 | — | ~17k | Automated safety check: Pass | CC-BY-NC-4.0 | |
| Unreal BridgeTornLux/UnrealBridge | 306 | — | ~8.4k | Automated safety check: Notes | MIT |
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
0x0funky/agent-sprite-forge
Plans and builds 2D game maps and scenes, from tilemaps and parallax backgrounds to HD-2D plates, with collision checks, a playable HTML preview and Tiled, Godot or LDtk export.
heyixuan2/bambu-studio-ai
End-to-end 3D printing for Bambu Lab printers. An agent skill from heyixuan2/bambu-studio-ai.
GenielabsOpenSource/spine-animation-ai
Create Spine 2D skeletal animations from pre-existing character assets (separated body-part PNGs, atlas spritesheet, or a full character image).
TornLux/UnrealBridge
Execute Python scripts inside a running Unreal Engine 5.3+ editor via TCP bridge.
0x0funky/agent-sprite-forge
Produces game-ready 2D characters, creatures, props, icons and effects as master stills, sheets or clips, and exports frames for common game engines.
scenario-labs/skills
A skill your agent uses when drawing or animating with Grease Pencil in Blender 5.x from Python: 2D or 2.5D illustration, frame-by-frame animation, a cutout or part-based 2D character, strokes with…
scenario-labs/skills
A skill your agent uses when grooming hair or fur in Blender with hair curves, such as a character hairstyle, animal fur, procedural fur in geometry nodes, or hair cards and mesh hair for games.
scenario-labs/skills
A skill your agent uses when lighting, rendering or compositing in Blender: light a character, product or hero shot, interior at dusk or night, three-point or motivated lighting, sun and sky, HDRI…
scenario-labs/skills
A skill your agent uses when creating a ChatGPT pet or Codex pet with Scenario: hatching an animated companion from a text idea, a character, mascot or brand cue, or reference photos and art; making…
scenario-labs/skills
A skill your agent uses when animating characters or scenes in Godot 4.7: AnimationPlayer clips and RESET, AnimationTree state machines and blend spaces built in code, Mixamo or glTF import, loop…
scenario-labs/skills
A skill your agent uses when adding or fixing sound in Godot 4.7: audio buses and effects, volume sliders, 'too many sounds', combat audio with hundreds of enemies, sounds clipping or distorting, 3D…
Works with
Categories
A skill your agent uses when animating a character or prop in Maya through Python: a walk or run cycle, a jump or landing, a heavy lift, throw or punch, an acting or dialogue shot, lip sync, eye…. Scenario Maya Animation is an agent skill from scenario-labs/skills. Use when animating a character or prop in Maya through Python: a walk or run cycle, a jump or landing, a heavy lift, throw or punch, an acting or dialogue shot, lip sync, eye darts and blinks, stepped blocking, splining, polish, Graph Editor tangents, animation layers, mocap cleanup or retargeting, game clips and root motion, or reviewing a playblast.
Scenario Maya Animation fits situations like: animating a character; prop in Maya through Python: a walk; eye darts and blinks; stepped blocking.
Run `npx skills add scenario-labs/skills --skill scenario-maya-animation -a claude-code`. Or copy the skill folder (skills/dcc/maya/scenario-maya-animation in scenario-labs/skills) into .claude/skills/scenario-maya-animation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scenario-labs/skills --skill scenario-maya-animation -a codex`. Or copy the skill folder (skills/dcc/maya/scenario-maya-animation in scenario-labs/skills) into .agents/skills/scenario-maya-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 scenario-labs/skills --skill scenario-maya-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/scenario-maya-animation, .gemini/skills/scenario-maya-animation, .github/skills/scenario-maya-animation and .opencode/skills/scenario-maya-animation in your project.
Going by SKILL.md and its folder, Scenario Maya Animation needs Python for the scripts in its folder and the command-line tools its instructions call (npx). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Scenario Maya Animation is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 27k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Scenario Maya Animation: Image to Three.js Model (img2threejs/img2threejs, 18k stars), 2D Map and Scene Generator (0x0funky/agent-sprite-forge, 4.4k stars), Bambu Studio AI (heyixuan2/bambu-studio-ai, 223 stars) and Spine Animation (GenielabsOpenSource/spine-animation-ai, 521 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
scenario-labs (a GitHub organization) maintains it in scenario-labs/skills, which has 946 GitHub stars. The repository holds 146 skills in this directory. The repository was last updated on October 10, 2026.
Source: scenario-labs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.