Skip to content
Content
Skill

/pixel-art-animator

Create and manage sprite animations with multiple frames, animation tags, frame durations, and linked cels. Use when the user wants to animate a sprite, add animation, create movement, make it move, mentions "animation", "animated", "frames", "keyframes", "frame rate", "FPS",

From plugin
pixel-plugin
2894 skills5 commands1 MCP
Install
$ npx -y skills add willibrandon/pixel-plugin --skill pixel-art-animator --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/pixel-art-animator

Context preview

The summary Claude sees to decide when to auto-load this skill.

Create and manage sprite animations with multiple frames, animation tags, frame durations, and linked cels. Use when the user wants to animate a sprite, add animation, create movement, make it move, mentions "animation", "animated", "frames", "keyframes", "frame rate", "FPS",

SKILL.md

pixel-art-animator.SKILL.md
name: Pixel Art Animator
description: Create and manage sprite animations with multiple frames, animation tags, frame durations, and linked cels. Use when the user wants to animate a sprite, add animation, create movement, make it move, mentions "animation", "animated", "frames", "keyframes", "frame rate", "FPS", "timing", "duration", "walk cycle", "run cycle", "idle animation", "attack animation", "jump", "movement", "motion", or describes actions like "walking", "running", "jumping", "attacking", "breathing", "bobbing", "bouncing". Trigger on animation tags, loops, playback, sequences, "add frames", "duplicate frame", "frame timing", "ping-pong", "loop", "sequence". Also for linked cels, static backgrounds, and frame optimization.
allowed-tools: Read, Bash, mcp__aseprite__add_frame, mcp__aseprite__delete_frame, mcp__aseprite__duplicate_frame, mcp__aseprite__set_frame_duration, mcp__aseprite__create_tag, mcp__aseprite__delete_tag, mcp__aseprite__link_cel, mcp__aseprite__get_sprite_info, mcp__aseprite__draw_pixels, mcp__aseprite__draw_line, mcp__aseprite__draw_rectangle, mcp__aseprite__draw_circle

Pixel Art Animator

Overview

This Skill handles all animation-related tasks for sprites, including frame management, timing, animation tags (sequences), and linked cels for efficient animation.

When to Use

Use this Skill when the user:

  • Wants to "animate" a sprite or "add animation"
  • Mentions "frames", "keyframes", or "frame rate"
  • Describes motion: "walk cycle", "run cycle", "idle animation", "attack animation"
  • Asks about "animation tags", "loops", or "playback"
  • Wants to create "sprite sheets" for animation (coordinate with exporter Skill)

**Trigger Keywords:** animate, animation, frames, walk cycle, run, idle, attack, loop, movement, motion

Instructions

1. Understanding Animation Basics

**Frame**: A single image in an animation sequence. Sprites start with 1 frame.

**Frame Duration**: How long each frame displays (in milliseconds). Default: 100ms (10 FPS).

**Animation Tag**: Named sequence of frames (e.g., "walk" frames 1-4, "idle" frames 5-8).

**Linked Cel**: A cel that shares image data with another cel. Editing one updates all linked cels.

**Playback Direction**:

  • **Forward**: Frames play 1 → 2 → 3 → 4, then loop
  • **Reverse**: Frames play 4 → 3 → 2 → 1, then loop
  • **Ping-pong**: Frames play 1 → 2 → 3 → 4 → 3 → 2 → 1, then loop

2. Creating Animation Frames

**Adding Frames:** Use `mcp__aseprite__add_frame` to create new frames:

  • Frames are numbered starting from 1
  • New frames start as copies of the current frame (or blank)

**Common Frame Counts:**

  • **Idle Animation**: 2-4 frames (subtle movement)
  • **Walk Cycle**: 4-8 frames (legs alternate)
  • **Run Cycle**: 6-8 frames (faster, exaggerated)
  • **Attack Animation**: 3-6 frames (windup, strike, recovery)
  • **Jump**: 4-6 frames (crouch, ascend, peak, descend, land)

**Duplicating Frames:** Use `mcp__aseprite__duplicate_frame` to copy existing frames:

  • Useful for creating variations
  • Starting point for similar frames

**Deleting Frames:** Use `mcp__aseprite__delete_frame` to remove frames:

  • Cannot delete the last remaining frame
  • Frames are renumbered after deletion

3. Setting Frame Timing

**Frame Duration:** Use `mcp__aseprite__set_frame_duration`:

  • Duration in milliseconds (ms)
  • 100ms = 10 FPS
  • 50ms = 20 FPS
  • 33ms ≈ 30 FPS
  • 16ms ≈ 60 FPS

**Common Timing Patterns:**

**Even Timing:** All frames same duration. Simple and predictable.

  • Walk cycle: all frames 100ms (smooth 10 FPS)

**Variable Timing:** Different durations for emphasis.

  • Idle: slow frames (150ms) for breathing effect
  • Attack: fast strike (30ms), slower recovery (100ms)

**Hold Frames:** Longer duration for dramatic effect.

  • Jump peak: 200ms (hang time)
  • Impact: 50ms (quick flash)

4. Creating Animation Tags

**Purpose:** Organize frames into named sequences.

Use `mcp__aseprite__create_tag`:

  • Name: "walk", "idle", "attack", etc.
  • From Frame: starting frame (1-indexed)
  • To Frame: ending frame (inclusive)
  • Direction: "forward", "reverse", or "ping-pong"

**Example Tags:**

  • Tag "idle": frames 1-2, ping-pong direction
  • Tag "walk": frames 3-6, forward direction
  • Tag "attack": frames 7-10, forward direction

**Benefits:**

  • Export specific animations separately
  • Organize complex sprite sheets
  • Game engines can reference tags

5. Using Linked Cels

**Purpose:** Share image data across frames to save memory and maintain consistency.

Use `mcp__aseprite__link_cel`:

  • Useful when frame content doesn't change
  • Example: background layer stays same across animation
  • Editing one linked cel updates all

**When to Use:**

  • Static background elements
  • Character face in walk cycle (if body animates separately)
  • Repeated frames in animation

**Workflow:** 1. Create frames with content 2. Link cels that should share data 3. Edit once, updates everywhere

6. Animation Workflows

**Workflow 1: Walk Cycle (4 frames)**

1. Create base sprite (or use existing) 2. Add 3 more frames (total 4) 3. Edit each frame for walk positions:

  • Frame 1: Left foot forward
  • Frame 2: Contact (both feet touching)
  • Frame 3: Right foot forward
  • Frame 4: Contact (both feet touching)

4. Set all frames to 100ms duration 5. Create tag "walk": frames 1-4, forward direction

**Workflow 2: Idle Animation (2 frames)**

1. Create base sprite 2. Add 1 more frame (total 2) 3. Slight variations:

  • Frame 1: Normal stance
  • Frame 2: Subtle movement (breathing, blinking)

4. Set frames to 500ms duration (slow, subtle) 5. Create tag "idle": frames 1-2, ping-pong direction

**Workflow 3: Complex Multi-Animation Sprite**

1. Create base sprite 2. Add enough frames for all animations:

  • Idle: 2 frames
  • Walk: 4 frames
  • Jump: 4 frames
  • Total: 10 frames

3. Arrange frames sequentially 4. Create separate tags:

  • Tag "idle": frames 1-2
  • Tag "walk": frames 3-6
  • Tag "jump": frames 7-10

5. Set appropriate fram

Read more
Ships withpixel-plugin

Create, animate, and export pixel art using Aseprite through natural language and commands in Claude Code. Powered by pixel-mcp - a Model Context Protocol server for Aseprite.

Get the whole plugin