Skip to main content
skill CX Codex

layer-pixel-art — Claude Code skill: pixel art and sprite sheets

A skill for making pixel art with Layer: sprites, tiles, walk cycles, and packing frames into a sheet. Useful when output comes back blurry or off-grid.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add layerai/skills --skill layer-pixel-art -a claude-code
Open on GitHub

What layer-pixel-art does

Pixel art is the generation task that most often returns subtly wrong: a picture of pixel art, soft-edged and anti-aliased at some arbitrary grid. This skill fights that with explicit numbers. Name the grid and the palette every time — "32x32 sprite", "limited 16-colour palette, muted earth tones". Give the model no grid and you get something pixel-ish at no particular resolution, and no cleanup will fix it afterwards.

The defects are predictable, so list them as exclusions: no anti-aliasing, no blur, no gradients, hard-edged pixels only. Where the model takes negative_prompt, put them there instead. State the background too — transparent, or a flat single colour — because a generated backdrop has to be cut out, and pixel art does not survive a sloppy cut.

Never ask one generation for a whole sheet. The model returns a grid of loosely related drawings and the character shifts between cells, which is the one thing a sheet must not do. Generate and approve a single frame first, then each remaining frame on its own with the approved one attached as reference_image, describing only the pose change. Every frame references frame one, not the frame before it; chain them and the character drifts by frame four. pack_sprite_sheet assembles the frames into uniform cells, and split_sprite_sheet cuts an existing sheet into its cells.

What it helps with

  • generate a character sprite on a 32x32 grid with no blur
  • pack separate animation frames into a sheet with even cells
  • split someone else's sheet into frames to edit just one
  • build a walk cycle where the character stays the same across frames
  • get a tile that repeats without a visible seam

Example prompts for the agent

  • Make a 32x32 pixel art sprite of a knight, side view, 16-colour palette, hard-edged pixels, no anti-aliasing, transparent background
  • Pack these four frames into a sheet with pack_sprite_sheet
  • Split knight_sheet.png into individual frames, I only want to fix one

How to install layer-pixel-art

1Skills CLI (Vercel)

npx skills add layerai/skills --skill layer-pixel-art -a claude-code

2Manually: put the files in place

~/.claude/skills/layer-pixel-art/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/layer-pixel-art/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about layer-pixel-art

How do I install layer-pixel-art in Claude Code?

Run npx skills add layerai/skills --skill layer-pixel-art -a claude-code. The skill lands at ~/.claude/skills/layer-pixel-art/SKILL.md.

What does layer-pixel-art do?

It lays out how to ask Layer for pixel art: state the grid and palette as numbers, list exclusions such as anti-aliasing and blur, and generate animation frames one at a time from an approved reference. It also covers packing frames into a sheet and cutting a sheet apart.

Why does my pixel art come back blurry?

The model's defaults add anti-aliasing, blur and gradients. The skill has you name those as exclusions in the prompt or in negative_prompt, and state the grid size outright.

Source text

SKILL.md · MIT
---
name: layer-pixel-art
description: "Use when making pixel art with Layer: sprites, retro game characters, pixel icons, pixel tiles, or a sprite sheet and walk cycle. Also when generated pixel art comes back blurry, anti-aliased, or at the wrong grid size, and when packing separate frames into a sheet or cutting an existing sheet into frames. Keywords: pixel art, sprite, sprite sheet, spritesheet, 16-bit, 32x32, walk cycle, animation frames, palette, dithering, pack, split."
license: MIT
---

# Layer Pixel Art

## Overview

Pixel art is the generation task most likely to come back subtly wrong: a picture _of_ pixel art,
soft-edged and anti-aliased at an arbitrary grid, rather than pixel art. Getting it right is mostly
about excluding the defaults.

Layer ships two deterministic sprite-sheet utilities alongside generation. `pack_sprite_sheet`
assembles separate frame images into one uniform-cell sheet on a transparent background, and
`split_sprite_sheet` cuts a sheet into its cells in reading order. These are named directly rather
than discovered because they are first-party tools rather than models, with no competing
alternative in the catalogue.

Generation mechanics are in the `layer` skill. If a sibling skill named here is missing from your
available skills, ask the user to install it (`npx skills add layerai/skills --skill <name>`);
unattended, proceed from tool schemas and flag the gap.

## Name the grid and the palette

Both, every time, as numbers.

- **Grid**: "32x32 sprite", "16x16 tile". A model given no grid produces something pixel-ish at no
  particular resolution, which cannot be cleaned up afterwards.
- **Palette**: a count and a family. "Limited 16-colour palette, muted earth tones" constrains the
  output in a way "retro colours" does not.
- **Era**, when the user has one in mind: 8-bit NES-era flat colour, 16-bit SNES-era with shading
  ramps, or modern high-resolution pixel art. These look nothing alike.

## Exclude the defaults, in the prompt

The defects are predictable, so name them as exclusions: no anti-aliasing, no blur, no gradients, no
soft shadows, hard-edged pixels only, one pixel per cell. Where the model declares `negative_prompt`,
put them there instead. Also state the background: "isolated on transparent background" or "flat
single-colour background", since a generated backdrop has to be cut out and pixel art does not
survive a sloppy cut.

## Sprite sheets and walk cycles

Do not ask one generation for a sheet of frames. Models produce a grid of loosely related drawings,
and the character changes between cells, which is exactly what a sheet must not do.

The working sequence:

1. Generate and approve **one** frame: the idle or contact pose, isolated on transparent.
2. Generate each remaining frame separately, with the approved frame attached as `reference_image`,
   and describe only what changed: "same character, same palette, same 32x32 grid, left leg forward
   mid-stride, right arm back."
3. Review the frames as a set and reroll the ones that drifted.
4. `pack_sprite_sheet` to assemble them into a uniform-cell sheet. Its input schema is the
   authority on the argument shape, so read it rather than assuming the parameter name.

Every frame after the first references **frame one**, not the frame before it. Chaining each frame
off the last one compounds drift, so by frame four the knight is a different knight.

When a trained pixel style is in play, attach it as `reference_sets` and omit `base_model_id`
entirely, so the server picks a model that can apply it. Use the same set, the same weight, and the
same reference frame on every frame of the cycle.

A four-frame cycle (contact, down, passing, up) reads as motion and is far more reliable than eight.
Start there and add frames only if the motion needs them.

Going the other way, `split_sprite_sheet` cuts a user's existing sheet into individual frames, which
is the way to edit one frame of a sheet without touching the others.

## Tiles

A pixel tile that repeats seamlessly is a tiling problem before it is a pixel problem, so filter for
the `tileability` capability and read `layer-textures` for how to specify scale and avoid visible
repetition. Everything on this page about grid, palette, and hard edges still applies.

## Worked example

"A 32x32 walk cycle for our knight sprite."

1. Generate the contact pose. `list_base_models` with `filter.use_case: "text_to_image"`, take the
   first result, then prompt: "32x32 pixel art sprite of an armoured knight, side view, contact pose
   with left foot forward, limited 16-colour palette, 16-bit era shading, hard-edged pixels, no
   anti-aliasing, no blur, no gradients, isolated on transparent background."
2. Approve one. This frame is now the reference for everything else.
3. Three more runs, one per remaining frame, each attaching the approved frame as `reference_image`
   and naming only the pose change.
4. Check the four together for drift in palette, height, and armour detail. Reroll any that moved.
5. `pack_sprite_sheet` with the four `file_id` values, which returns the sheet on a transparent
   background.

## Common mistakes

- Omitting the grid size, then trying to downsample a soft image into pixels.
- Asking one generation for a whole sprite sheet.
- Forgetting the anti-aliasing and blur exclusions, which are the defaults being excluded.
- Generating frames independently with no reference frame, so the character drifts.
- Generating an eight-frame cycle before a four-frame one works.
- Accepting a generated background instead of asking for transparent.
- Packing a sheet by hand when `pack_sprite_sheet` produces uniform cells deterministically.

© layerai · MIT · layerai/skills

Similar skills

All skills for Game dev and 3D: Unity, Unreal, Godot, Blender →

From the same set14

layer-art-direction Establishes visual style, color palettes, and storyboards before volume asset generation. It prevents wasted Creative Units on blind prompt rerolls. CX Codex +1 3,400installs layer-quality Scores generated Layer files against a workspace's scoring rules and helps pick what to deliver. Useful before handing off a batch. CX Codex +1 3,300installs layer-workflows A skill for running saved Layer Blueprint workflows: it finds a pipeline in the workspace, reads its input schema, estimates the price and tracks the steps. CX Codex +1 3,400installs layer-reference-sets Guides LoRA training, reference set curation, and weight tuning in Layer. Helps decide whether training a custom style makes sense or attaching a single reference image is enough. CX Codex +1 3,300installs layer-3d Walks your agent through the Layer 3D chain: generate a mesh, remesh it, retexture, rig and animate. Each stage is a separate run. CX Codex +1 3,300installs layer-video A skill for generating video with Layer: text-to-video, animating a still, extending a clip, camera motion, audio and lip sync. Useful when a prompt returns the wrong motion. CX Codex +1 3,400installs layer-audio Configures agent prompts for generating sound effects, music, and spoken voice-overs with Layer. Keeps assets dry, sized, and fit for game engines. CX Codex +1 3,300installs layer-video-timeline Turns clips, images and audio you already have into a finished video: sequencing, transitions, text overlays, logo, music. Built for editing approved shots, not generating them. CX Codex +1 3,300installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor