CommunityCoding & Developmentgithub.com

adnvli/vfxskill

Use for any Roblox visual effect or animation work through a Roblox Studio MCP - particles, beams, trails, slashes, hits, explosions, spells, auras, abilities, combat effects, camera shake, VFX textures and flipbooks, and R15/R6/creature animations (attacks, idles, walks, runs). Load before building or tuning any effect or animation, even a small one.

What is vfxskill?

vfxskill is a Claude Code agent skill that use for any Roblox visual effect or animation work through a Roblox Studio MCP - particles, beams, trails, slashes, hits, explosions, spells, auras, abilities, combat effects, camera shake, VFX textures and flipbooks, and R15/R6/creature animations (attacks, idles, walks, runs). Load before building or tuning any effect or animation, even a small one.

Works with~Claude Code~Codex CLI~Cursor
npx skills add adnvli/vfxskill

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Roblox animation and VFX

Works with a stock Roblox Studio MCP plus a shell. Its references record what experienced Roblox VFX artists actually do, measured from about 5,000 particle emitters in their published effects. Follow them: the difference between slop and a good effect is almost entirely in those numbers (palette, dark layers, brightness against bloom, layer timing, custom textures) and in looking at the effect frame by frame.

Read references/tools.md first, every time. The references were written for the original toolkit (build_instances, capture_moments, the animation and blender tools, upload_assets). tools.md says what to use instead with your Studio MCP and this skill's scripts. Wherever a reference names an original tool, do what tools.md maps it to.

This folder (where this file is) is SKILL_DIR in tools.md.

What's here

PathWhat it is
references/tools.mdHow to do every step with the Studio MCP, the shell and Blender.
references/vfx-design.mdWhat the effect is for, palette, value, brightness, layers, timing.
references/vfx-craft.mdWhere effects live, the emit module, layer skeletons, budgets, how to check an effect.
references/vfx-textures.mdDrawing the effect's own textures and flipbooks (Blender + numpy).
references/vfx-motion.mdProjectiles, volleys, trails, beams, slashes, dashes, orbs, auras.
references/vfx-mesh-shapes.mdCrescent and ring meshes, swirls, domes, ground waves, made in Blender.
references/vfx-camera-world.mdCamera shake, FOV, impact frames, lights, craters, cast poses.
references/vfx-rendered-flipbooks.mdFlipbooks rendered from a 3D scene.
references/vfx-reference.mdMatching a reference clip (partly: see tools.md).
references/character-animation.mdThe pose format and tested R15/R6 recipes.
references/creature-animation.mdRigs, waves, gait, and creature recipes.
references/full.mdAnimation playback: tracks, priorities, blending, markers.
templates/vfx/emit.luaThe player module (VFX.play, VFX.emit, handles with slow-mo and hitstop).
templates/vfx/build.luaBuilds instances from the references' JSON steps.
templates/vfx/capture.luaHolds a playing effect at chosen moments for screenshots.
scripts/animate.mjsPose compiler + motion checks + contact sheet + Luau output (Node 18+).
scripts/read_rig.luaReads a creature's rig for animate.mjs --rig-json.
scripts/blender_job.py, scripts/vfx_blender.pyRuns a Blender job with the fx.* texture and mesh helpers.
scripts/texture-tool.mjsChecks flipbook sheets; previews textures in Studio without uploading.
scripts/upload.mjsOpen Cloud uploads (textures, meshes, animations).

Quick reference

  • Any visual effect (a hit, slash, explosion, spell, aura or pickup): load references/tools.md, references/vfx-design.md and references/vfx-craft.md, plus the topics it needs:
    • vfx-textures.md to draw the effect's own textures (most effects should; built-in rbxasset://textures/particles/* are stand-ins only);
    • vfx-motion.md for anything that travels, sweeps or is held;
    • vfx-mesh-shapes.md for crescent, ring, swirl and dome meshes;
    • vfx-camera-world.md for camera, screen and ground reactions, and a cast pose from code;
    • vfx-rendered-flipbooks.md for a sheet rendered from a 3D scene;
    • vfx-reference.md when the user gives a reference clip.
  • The loop that makes effects good: design (name the move, pick ~5 colours, plan dark layers and the intensity curve) > build in ReplicatedStorage.VFX with the emit attributes > capture it frozen at 4-6 moments from close up and from the player's camera > fix what the frames show > repeat. Never call an effect done from one screenshot or from the code alone.
  • A character animation: load references/character-animation.md and references/tools.md; write the pose JSON from the closest recipe; run scripts/animate.mjs with --sheet and look at the sheet; fix until every check passes; send the Luau it writes with execute_luau; preview on a dummy. Check which rig (R15 or R6) the place's players use first.
  • A creature or any non-stock model: also load references/creature-animation.md, read its rig with scripts/read_rig.lua and pass --rig-json.
  • Load tracks through an Animator on a Humanoid or AnimationController; set AnimationTrack.Priority deliberately.
  • Use GetMarkerReachedSignal() for gameplay cues (a hit landing), from a keyframe's markers; a keyframe's name is not a marker. Play an attack's effect from its marker, not a timer.
  • A burst ParticleEmitter usually has Rate = 0 and fires from EmitCount/EmitDelay through the emit module.
  • Effects are presentation: the server fires an UnreliableRemoteEvent with the effect's name and a CFrame, each client calls VFX.play. Never let damage wait on an effect.
  • Upload only settled textures, meshes and animations: every upload is permanent and moderated. Say how many you will upload first.

Effects are judged by eye. When done, tell the user what you checked and ask them to look at it at full speed in a playtest.

Related Skills