Help us improve
Share bugs, ideas, or general feedback.
From summer
Generates pixel-art sprites, tiles, icons, and portraits at fixed resolutions (16×16 to 128×128) with grid alignment, limited palette, and retro styling. Useful when building 2D games that need crisp pixel assets.
npx claudepluginhub summerengine/summer-engine-agent --plugin summerHow this skill is triggered — by the user, by Claude, or both
Slash command
/summer:pixel-artassets/**art/pixel/**sprites/**This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill generates pixel-art assets — sprites, items, tiles, icons, portraits — at a target resolution (32×32, 64×64, 128×128, etc.). Pixel art has hard constraints (grid alignment, limited palette, no anti-aliased edges) that diffusion models violate by default. This skill encodes the prompt patterns and post-processing discipline that makes the output actually look like pixel art and not "b...
Generates true pixel art sprites, tilesets, and animations via the Retro Diffusion API. Useful for quick 2D game prototyping and replacing placeholder art with cohesive pixel art.
Generates pixel art sprites, animations, sprite sheets, and converts images to pixel art using 30+ palettes, dithering algorithms, and automated quality scoring for retro/indie game art.
Creates pixel art sprites from scratch with Aseprite tools for canvas setup, layer management, and drawing primitives including pixels, lines, rectangles, circles, fills, and palettes.
Share bugs, ideas, or general feedback.
This skill generates pixel-art assets — sprites, items, tiles, icons, portraits — at a target resolution (32×32, 64×64, 128×128, etc.). Pixel art has hard constraints (grid alignment, limited palette, no anti-aliased edges) that diffusion models violate by default. This skill encodes the prompt patterns and post-processing discipline that makes the output actually look like pixel art and not "blurry small image."
Backing tool: summer_generate_image with style: "pixel" and an explicit pixel-art prompt. Pass options.image_size: "square_hd" and have the agent enforce pixel-perfect by setting the project's default texture filter to Nearest (and downscaling to the target resolution post-gen). Output is upscaled by the model — you generally request a small generation (or downscale post-gen) to get crisp pixels.
summer:2d-assets/character-portrait.summer:2d-assets/sprite-sheet (pixel art is harder for sprite sheets — read that skill's caveats).summer:2d-assets/tileable-texture.Ask the user (or read .summer/GameSoul.md):
Write to .summer/pixel-anchor.md so the rest of the cast/tileset stays consistent:
## Pixel anchor
base resolution: 32x32 per sprite
palette: PICO-8 16-color
outline: hard 1px dark outline (NOT pure black — use the palette's darkest color)
shading: 3-tone (light, mid, shadow), no gradients, no AA
summer_search_assets(query="<subject> pixel", filter={ kind: "image" })
Pattern:
pixel art <subject>, <resolution>, <palette>, <outline rule>, <shading rule>, no anti-aliasing, no blur, sharp pixel edges, transparent background
The model can't actually generate at 32×32 — it generates at 1024×1024 with pixel-art style. You then downscale to the target resolution post-import for crisp pixels.
summer_generate_image(
prompt="pixel art slime monster, 32x32 sprite, PICO-8 palette, hard 1px outline in palette's darkest color, 3-tone shading, no anti-aliasing, no blur, sharp pixel edges, transparent background, front-facing",
model="nano-banana-2",
style="pixel",
options={
image_size: "square_hd",
negative_prompt: "blurry, smooth gradients, anti-aliasing, photorealistic, 3D render, soft edges"
}
)
negative_prompt is critical for pixel art — without it the model smuggles in soft edges and gradients.
The generated image is 1024×1024 pixel-style. To get true crisp pixels at 32×32:
Filter: Nearest (no smoothing).Project Settings → Rendering → Textures → Default Texture Filter: Nearest if the entire game is pixel-art. This kills bilinear smoothing project-wide.summer_import_from_url(url="<fileUrl>", path="res://sprites/slime.png")
For a Sprite2D:
summer_set_resource_property(
nodePath="/root/Game/Slime/Sprite2D",
resourceProperty="texture",
value="res://sprites/slime.png"
)
Confirm Filter: Nearest is set in the import dock OR project-wide.
| Goal | Prompt that works | Why |
|---|---|---|
| Item icon (32×32) | pixel art iron sword icon, 32x32, NES palette, hard outline, 3-tone shading, no AA, sharp edges, transparent background, three-quarter view | Three-quarter view reads better than pure side at 32px |
| Character sprite (64×64) | pixel art knight character sprite, 64x64, PICO-8 palette, hard 1px outline, 3-tone shading, front-facing idle pose, no AA, sharp edges, transparent background | Specifying "idle pose" prevents action poses that don't tile into a sheet |
| Pixel portrait (128×128) | pixel art portrait of a young witch, 128x128, custom muted fantasy palette, hard outline, 4-tone shading, bust framing, looking forward, no AA, no blur, transparent background | Higher resolution allows 4-tone shading; 32px is too small for that |
| Tileset (16×16/tile) | pixel art top-down tileset, grass-to-dirt transition, 16x16 per tile, 3x3 grid layout, NES palette, hard outline between tiles, 3-tone shading, no AA, sharp edges | Tilesets render best in a labeled grid layout |
| Background object (64×64) | pixel art mossy boulder, 64x64, fantasy palette, hard outline, 3-tone shading, no AA, transparent background, three-quarter view | Background props benefit from three-quarter for depth |
| GB-style asset (Game Boy) | pixel art skeleton enemy, 32x32, Game Boy 4-color green palette (#0f380f, #306230, #8bac0f, #9bbc0f), hard 1px outline, 2-tone shading, no AA | Naming the 4 hex codes locks the palette |
| Bad | Failure mode |
|---|---|
8-bit sword | "8-bit" is interpreted loosely. Returns a smooth render of a sword with vague pixel feel. Specify resolution + palette + "no AA" explicitly. |
pixel art knight, photorealistic | Conflicting directives. Model averages and gives you neither. |
pixel art at 32x32 (no negative_prompt) | Model adds soft edges and gradient shading. Always add negative prompt for AA / blur / gradients. |
pixel sprite walk cycle | Walk cycles need consistent frames — single-prompt sprite sheets fail. Route to summer:2d-assets/sprite-sheet. |
cute pixel art | "Cute" without subject is undefined. Specify what. |
Filter: Nearest so the up-rendering doesn't smooth.Filter: Nearest. Default Godot texture filtering is bilinear. Pixel art bilinearly filtered looks like garbage. Set it on import or project-wide.blurry, anti-aliasing, gradients, soft edges in the negative, ~50% of generations are off-style.summer:2d-assets/sprite-sheet.referenceImageUrl. For more than 2-3 frames, route to summer:2d-assets/sprite-sheet (and read its caveats).Project Settings → Rendering → Textures → Default Texture Filter: Nearest once. Saves you from re-setting it on every import.summer:2d-assets/character-portrait with a "pixel art aesthetic" prompt — not this skill.Print the call:
summer_generate_image(
prompt="<pixel art prompt with full anchor>",
model="nano-banana-2",
style="pixel",
options={ image_size: "square_hd", negative_prompt: "blurry, smooth gradients, anti-aliasing" }
)
Tell the user to run via the Summer dashboard, downscale in Aseprite/GIMP to true target resolution with nearest-neighbor, then summer_import_from_url (or drop into res://sprites/) and set Filter: Nearest.
If MCP is offline entirely: open Aseprite or Piskel and hand-author the asset. For pixel art at small resolutions, hand-authoring is often faster than fixing a generation.
After the asset is wired:
summer:2d-assets/sprite-sheet with the base sprite as anchor.summer:scene-composition for TileMap / TileMapLayer wiring.summer:2d-assets/sprite-sheet — animated pixel frames.summer:2d-assets/character-portrait — high-res counterpart.summer:asset-pipeline/asset-strategy — meta-router.references/mcp-tools-reference.md — summer_generate_image schema.