> and signal tracks), AnimationTree with state machines and blend spaces for character animation, and Tween for short procedural/UI tweens via create_tween(). Use when working with AnimationPlayer/AnimationTree nodes in a .tscn, blending character states, sprite-sheet animation, or code-driven Tweens.
npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation
Choose and drive the right animation tool: AnimationPlayer (clips), AnimationTree
(blending/state machines), or Tween (short procedural moves). Targets Godot 4.3+.
sprite sheet, or tweening UI/objects in code.
When *not* to use: the movement *logic* that decides which state to play →
godot-2d-movement; UI layout (vs. UI tweening) → godot-ui-control; shader-driven
effects → godot-shaders.
AnimationPlayer — author keyframed clips (transforms, properties, method calls,audio, even other animations). The source of truth for clip data.
AnimationTree — blend and transition between those clips at runtime with a statemachine and/or blend spaces. Needs an AnimationPlayer to pull clips from.
Tween — fire-and-forget procedural interpolation in code (create_tween()); idealfor UI pops, fades, and one-off moves.
AnimatedSprite2D + SpriteFrames, or keyframe theframe property in an AnimationPlayer.
AnimationPlayer, then add an AnimationTree(active = true), set its anim_player, and design an AnimationNodeStateMachine or
AnimationNodeBlendSpace2D as the tree root.
travel) or by setting blendparameters.
animation_finished signal and call/method tracks.@onready var anim: AnimationPlayer = $AnimationPlayer
func attack() -> void:
anim.play("attack")
await anim.animation_finished # resume after the clip ends
anim.play("idle")
@onready var tree: AnimationTree = $AnimationTree
func _ready() -> void:
tree.active = true # the tree drives animation; AnimationPlayer is the source
func set_state(state: StringName) -> void:
# The playback object controls an AnimationNodeStateMachine root.
var sm: AnimationNodeStateMachinePlayback = tree.get("parameters/playback")
sm.travel(state) # transitions using the graph's connections
func _physics_process(_d: float) -> void:
set_state(&"run" if velocity.length() > 5.0 else &"idle")
# Root is an AnimationNodeBlendSpace2D named "Move" with idle/run points placed in it.
func update_locomotion(input_dir: Vector2) -> void:
# Parameter path = "parameters/<node name>/blend_position".
tree.set("parameters/Move/blend_position", input_dir)
func pop_in(node: Control) -> void:
node.scale = Vector2.ZERO
node.modulate.a = 0.0
var tw := create_tween() # bound to this node's tree
tw.set_parallel(true) # run the two tweens together
tw.tween_property(node, "scale", Vector2.ONE, 0.2) \
.set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
tw.tween_property(node, "modulate:a", 1.0, 0.2) # sub-property via ":"
AnimationTree.active left false → nothing animates and travel() appears to donothing. Set active = true and assign the anim_player path.
"parameters/<NodeName>/..." andmust match the node names in the tree exactly (e.g. "parameters/playback",
"parameters/Move/blend_position"). A typo silently no-ops.
AnimationTree is active, don'talso call AnimationPlayer.play() for the same tracks — let the tree own playback.
Tween node to add in 4.x; create tweens incode with create_tween() (which returns a Tween). They auto-start and free themselves.
create_tween() again for a newanimation. Use set_loops() for repetition.
yield/yield(anim, "...") is gone. Use await anim.animation_finished."modulate:a", "position:x". Tweening the wholeproperty instead overwrites siblings.
call tracks, SpriteFrames/AnimatedSprite2D, and Tween easing/chaining/callbacks,
read references/animation-tree-and-tween.md.
godot-2d-movement — supplies the velocity/state that selects animations.godot-ui-control — UI that Tweens animate.godot-3d-essentials — 3D character scenes driven by AnimationTree.game-ai — state machines that mirror animation states.Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
Take gamedev-skills/godot-animation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.