Help us improve
Share bugs, ideas, or general feedback.
From summer
Generates animation clips (idle, walk, run, attack) from curated mocap library for Meshy-rigged humanoid characters. Wires clips to AnimationPlayer in Godot.
npx claudepluginhub summerengine/summer-engine-agent --plugin summerHow this skill is triggered — by the user, by Claude, or both
Slash command
/summer:generate-motion**/*.tscn**/*.tres**/*.gdThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Picks a clip from a **curated mocap library** by name (`idle`, `walk`, `run`, `attack_sword`, ~70 standard names) and wires it onto a Meshy-rigged humanoid. Fast (~30s) and cheap (~$0.10) and looks great because it's real mocap.
Retargets animation clips from one rigged character to another, reusing the same animation library across multiple models without regenerating clips. Use when you have multiple rigged humanoids that should share animations.
Generates custom 3D models from text or images using Meshy AI, auto-rigs and animates them for Three.js games. Use when needing custom GLB assets beyond free libraries.
Guides Three.js animations using keyframe tracks, AnimationClip, AnimationMixer, morph targets, skeletal rigs, and blending. Use for object animation, GLTF playback, procedural motion.
Share bugs, ideas, or general feedback.
Picks a clip from a curated mocap library by name (idle, walk, run, attack_sword, ~70 standard names) and wires it onto a Meshy-rigged humanoid. Fast (30s) and cheap ($0.10) and looks great because it's real mocap.
The target must be a Meshy-rigged humanoid — a rigAssetId from a prior summer_generate_3d({ kind: "image-to-3d", imageUrl: "...", options: { rig: true } }) call. The result job includes rigAssetId. If the user points at a non-rigged mesh, stop and route to summer:asset-pipeline/asset-strategy (or directly call summer_generate_3d with options.rig: true) before generating motion.
Custom prompt-driven motion (e.g. "drops to one knee, draws bow") is on the roadmap but not shipped yet. For one-off signature moves not on the curated list, fall back to hand-authoring in the Godot editor or importing from Mixamo. See the Edge cases section.
In PublicSummerEngine chat, the equivalent direct tools are:
rigModel({ modelAssetId })
generateAnimation({ rigAssetId, animationName })
meshyJobStatus({ jobId })
If the character came from createCharacter, it may already be rigged and have metadata.meshyRigTaskId; generate animations directly against that rig asset. Verified animation names from the recovered production flow are idle, walk, run, jump, and attack. fall returned invalid_animation, so do not present it as a default.
Before generating clips in PublicSummerEngine chat, confirm the rig asset listing/status exposes hasMeshyRigTask or animationsReady:true. If generateAnimation returns animations_preparing, wait, poll/list the rig again, and retry; this is the post-rig setup catching up, not a reason to send the user to Studio.
After animation jobs complete, import the rig plus child animation assets together and wire them through import-character. Do not hand off to Studio unless the user asked for Studio/manual control or the direct chat tools fail.
summer:animation/retarget instead. Don't regenerate.summer:animation/animation-tree.summer:animation/facial-and-lipsync.summer_generate_motion on a static .glb.summer:animation/procedural-animation.summer_search_assets(query="<character name>", assetType="3d_model", source="my_assets")
The result must include rigAssetId: <id> on a Meshy rig. If it shows rigAssetId: null, the model isn't rigged — stop, propose summer_generate_3d({ kind: "image-to-3d", imageUrl: "...", options: { rig: true } }) first (the result includes rigAssetId), or route to summer:asset-pipeline/asset-strategy.
I'm about to generate a "run" animation on
goblin_riggedvia meshy-library — about 30s, ~$0.10. OK?
summer_generate_motion(
rigAssetId: "<id>",
backend: "meshy-library", // only option today
motionName: "run" // exact name from the curated list — see Reference card
)
Returns animationAssetId, durationSeconds, and previewUrl. Resolve the
asset before handoff so you have the stable file/download metadata:
summer_get_asset(assetId="<animationAssetId>")
summer_inspect_node("./World/Goblin") // confirm it has an AnimationPlayer child
summer_add_node(parent="./World/Goblin", type="AnimationPlayer", name="AnimationPlayer") // only if missing
summer_set_resource_property(
nodePath="./World/Goblin/AnimationPlayer",
resourceProperty="libraries/default",
subProperty="<motion_name>",
value="<animationAssetId>"
)
summer_save_scene
If the character will use multiple clips, leave the AnimationPlayer in place — every subsequent generation appends to the same library. State-machine wiring belongs to summer:animation/animation-tree, not here.
previewUrl and ask "land or regenerate?" before wiring it into the scene.idle, idle_alert, idle_combat, walk, walk_strafe_left, walk_strafe_right, walk_back, run, run_strafe_left, run_strafe_right, sprint, jump, jump_loop, jump_land, crouch_idle, crouch_walk, attack_sword, attack_punch, attack_kick, attack_bow, attack_cast, block, dodge_left, dodge_right, hit_react, death, death_back, wave, dance, sit_idle.
The full list is ~70 names. If the user asks for something not on the top-30, try the closest curated name first; if nothing fits, route to the manual-authoring fallback.
motionName typos silently match nothing. "run_fast" is not on the list — the call returns an error. Always check the curated list first. Use exact strings from the list above.run translates the root forward by ~5m. If you're driving root motion in code, set root_motion_track correctly or strip the translation in an AnimationPlayer Edit. See the Godot 4.5 root motion docs.summer:asset-pipeline/asset-strategy) before re-generating.summer_generate_motion on a .glb that wasn't rigged — wastes a generation; the API errors but only after 30s.animationAssetId from the first call. Search the asset library first: summer_search_assets(query: "goblin run", assetType: "animation", source: "my_assets").motionName that isn't on the list. Quote from the list verbatim, or fall back to manual authoring.AnimationLibrary; (c) compose two curated clips in an AnimationTree's OneShot blend.playback_speed on the AnimationPlayer track.The user can upload to Meshy directly at meshy.ai, generate via the dashboard, download .glb, and import as an AnimationLibrary in the Godot editor. Slower, but identical output.
summer:animation/animation-tree to wire idle → walk → run.summer:ai-and-npcs/design-npc to fire it from the behavior state machine.summer:character-controllers/fps-controller for the wiring.summer:animation/retarget.references/mcp-tools-reference.md — summer_generate_motion parameter schema, error codes.summer:asset-pipeline/asset-strategy — how to get a Meshy-rigged character in the first place.summer:animation/animation-tree — wire the generated clips into a state machine.summer:animation/retarget — re-use one library across many characters without regenerating.