Pixel Art Professional
Overview
This Skill provides advanced pixel art techniques for refining and polishing sprites. It handles dithering patterns, palette optimization, color theory, shading techniques, and antialiasing for professional-quality pixel art.
When to Use
Use this Skill when the user:
- Wants to apply "dithering" or mentions dither patterns
- Asks about "palette optimization" or "color reduction"
- Mentions "shading", "highlights", "shadows", or "lighting"
- Requests "antialiasing", "smoothing", or "edge refinement"
- Talks about "color ramps", "gradients", or "color theory"
- Wants to "polish" or "refine" existing pixel art
- Mentions specific techniques like "Bayer dithering" or "Floyd-Steinberg"
Trigger Keywords: dithering, palette, shading, antialiasing, smooth, gradient, color ramp, polish, refine, color theory, quantize
Instructions
1. Understanding Dithering
Dithering creates the illusion of additional colors by mixing pixels of available colors in patterns.
When to Use Dithering:
- Reducing color count (e.g., 256 colors → 16 colors)
- Creating smooth gradients with limited palettes
- Simulating textures (fabric, metal, stone)
- Retro aesthetic (classic games used dithering extensively)
Dithering Algorithms:
Ordered Dithering (Bayer Matrix):
- Uses fixed pattern matrix (2x2, 4x4, 8x8)
- Predictable, regular pattern
- Best for: textures, backgrounds, retro look
- Fast and consistent
Error Diffusion (Floyd-Steinberg):
- Distributes color error to neighboring pixels
- More organic, less regular pattern
- Best for: gradients, natural images, smooth transitions
- Slower but higher quality
Common Dithering Patterns:
- Checkerboard: Simple 2-color alternating pattern
- Bayer 2x2: Basic ordered dithering
- Bayer 4x4: More subtle ordered dithering
- Bayer 8x8: Very subtle, near-gradient appearance
- Floyd-Steinberg: Error diffusion for smooth gradients
2. Palette Management
Color Quantization:
Use mcp__aseprite__quantize_palette to reduce sprite colors intelligently:
- Analyzes sprite colors
- Finds optimal limited palette
- Remaps pixels to new palette
- Preserves visual quality
Palette Optimization Workflow:
- Get current sprite info and palette
- Decide target color count (4, 8, 16, 32, 64, 256)
- Apply quantization with optional dithering
- Review and adjust palette if needed
Common Palette Sizes:
- 4 colors: Game Boy, ZX Spectrum per-sprite
- 8 colors: CGA, early arcade
- 16 colors: NES, Master System, early VGA
- 32 colors: SNES per-background, Amiga OCS
- 64 colors: Genesis, PC Engine
- 256 colors: VGA, SNES full palette, Amiga AGA
Palette Theory:
- Color Ramps: Gradual transitions from dark to light for shading
- Hue Shifting: Changing hue slightly in shadows/highlights for vibrant look
- Saturation: Higher saturation in midtones, lower in shadows/highlights
- Contrast: Ensure sufficient contrast between key elements
3. Shading Techniques
Types of Shading:
Flat Shading (No Shading):
- Single color per surface
- Simple, iconic look
- Best for: UI icons, simple sprites, minimalist style
Cell Shading (Hard Shading):
- Distinct color bands with hard edges
- 2-3 colors per surface (base, shadow, highlight)
- Best for: cartoon style, bold graphics, readable sprites
Soft Shading (Dithered Shading):
- Gradual transitions using dithering
- Smooth appearance with limited colors
- Best for: realistic look, smooth surfaces, gradients
Pixel Clusters:
- Manual dithering with strategic pixel placement
- Organic, hand-crafted appearance
- Best for: metal, fabric textures, custom look
Shading Workflow:
- Identify light source direction
- Determine base color
- Create darker shade for shadows (hue shift toward blue/purple)
- Create lighter shade for highlights (hue shift toward yellow/white)
- Apply shadows on surfaces away from light
- Apply highlights on surfaces toward light
- Add reflected light in deep shadows (subtle)
Common Shading Mistakes:
- Pure black shadows (use dark hue-shifted colors instead)
- Pure white highlights (use light tinted colors instead)
- No hue shifting (shadows/highlights same hue as base)
- Pillow shading (shading around edges instead of from light source)
4. Antialiasing
Purpose: Smooth jagged edges and diagonal lines by adding intermediate colors.
When to Use Antialiasing:
- Diagonal lines look jagged
- Curves appear stepped
- Edges need smoothing
- Higher resolution sprites (64x64+)
When NOT to Use Antialiasing:
- Very small sprites (16x16 or smaller)
- Intentional pixelated aesthetic
- High-contrast situations (AA reduces contrast)
- Limited palette (need intermediate colors)
Manual Antialiasing Technique:
- Identify jagged edge
- Find intermediate color between edge and background
- Place intermediate pixels at edge "steps"
- Use 1-pixel wide AA (avoid thick fuzzy edges)
- AA selectively (not every edge needs it)
Automated Antialiasing:
- Some tools offer automatic edge smoothing
- Use with caution (can blur intended sharpness)
- Manual AA gives better control
5. Color Theory for Pixel Art
HSV/HSB Model:
- Hue: Color type (red, blue, green, etc.)
- Saturation: Color intensity (vivid vs. gray)
- Value/Brightness: Lightness (dark vs. light)
Creating Color Ramps:
- Start with base color (midtone)
- Create shadow: lower value, optionally shift hue toward cool (blue/purple)
- Create highlight: raise value, optionally shift hue toward warm (yellow/white)
- Create midtone between base and shadow
- Create midtone between base and highlight
- Result: 5-color ramp (deep shadow, shadow, base, highlight, bright highlight)
Hue Shifting:
- Shadows: shift toward blue, purple, or complementary color
- Highlights: shift toward yellow, orange, or light source color
- Creates vibrant, lively colors instead of flat gradients
Contrast:
- Ensure important elements have high value contrast
- Background should contrast with foreground
- Silhouette should be readable in solid black
Color Harmony:
- Monochromatic: Variations of single hue
- Analogous: Adjacent hues on color wheel
- Complementary: Opposite hues on color wheel
- Triadic: Three evenly spaced hues
6. Professional Workflows
Workflow 1: Palette Reduction with Dithering
User Request: "Reduce this sprite to 16 colors with dithering"
Approach:
- Get current sprite info
- Check current palette size
- Use
mcp__aseprite__quantize_palette with:
- target_colors: 16
- algorithm: "median_cut" or "kmeans"
- dither: true (enables Floyd-Steinberg dithering)
- Review result and adjust if needed
Workflow 2: Adding Shading to Flat Sprite
User Request: "Add shading to this sprite with light from top-left"
Option A - Automatic Shading (Quick):
- Use
mcp__aseprite__apply_auto_shading with:
- light_direction: "top_left"
- intensity: 0.3-0.7 (adjust to preference)
- style: "smooth", "hard", or "pillow"
- hue_shift: true (for vibrant results)
- Tool automatically detects regions and adds shading
- Review and manually refine if needed
Option B - Manual Shading (Precise):
- Analyze sprite structure
- Identify base colors
- Create shadow colors (darker, hue-shifted)
- Create highlight colors (lighter, hue-shifted)
- Update palette with new colors
- Draw shadows on bottom-right surfaces
- Draw highlights on top-left surfaces
- Add subtle reflected light in deep shadows
Workflow 3: Smoothing Jagged Edges
User Request: "Smooth out the edges on this character"
Approach:
- Identify jagged diagonal lines and curves
- Find edge color and background color
- Create intermediate colors (1-2 shades between)
- Place AA pixels at edge steps
- Review and refine (avoid over-smoothing)
Workflow 4: Converting to Retro Palette (Full Palette Conversion)
User Request: "Convert this to NES palette"
Approach:
- Use
mcp__aseprite__quantize_palette with retro palette colors
- Specify target palette (e.g., 54 NES colors, 4 Game Boy colors, 16 C64 colors)
- Algorithm maps each pixel to nearest palette color
- Pixels are remapped to new palette indices
- Optionally apply dithering for smoother transitions
- Verify all colors match target palette
IMPORTANT: Use quantize_palette, NOT set_palette. The set_palette tool only replaces the color table without remapping pixel data, which will produce incorrect colors in indexed mode.
Example:
quantize_palette(
sprite_path: "sprite.aseprite",
target_colors: 54, # NES full palette
algorithm: "median_cut",
convert_to_indexed: true,
dither: false # or true for Bayer dithering
)
7. Dithering Patterns Reference
2-Color Patterns:
Checkerboard (50% mix):
A B A B
B A B A
A B A B
B A B A
25% Pattern:
A A B A
A A A A
B A A A
A A A A
75% Pattern:
B B A B
B B B B
A B B B
B B B B
Bayer 2x2:
Threshold matrix:
0 2
3 1
If pixel value > threshold, use lighter color
Bayer 4x4:
0 8 2 10
12 4 14 6
3 11 1 9
15 7 13 5
Note: See dithering-patterns.md for comprehensive pattern library.
8. Technical Details
Quantization Parameters:
- Target colors: 2-256
- Dithering: optional, specify algorithm
- Alpha handling: preserve transparency or flatten
Palette Constraints:
- RGB mode: No palette constraints
- Indexed mode: Max 256 colors
- Grayscale: 256 shades of gray
Performance:
- Quantization: ~100-500ms depending on sprite size
- Dithering: ~200-800ms depending on algorithm and size
- Manual pixel operations: <50ms per operation
9. Common Patterns
Pattern: Quick Polish
For "make this look better" requests:
- Check palette (reduce if too many colors)
- Add basic shading (light source from top-left)
- Add selective antialiasing on curves
- Adjust contrast if needed
Pattern: Retro Conversion
For "make this look retro" requests:
- Reduce to appropriate palette (4, 8, or 16 colors)
- Apply ordered dithering (Bayer)
- Remove antialiasing (make edges sharp)
- Ensure pixel-perfect alignment
Pattern: Smooth Gradient
For "smooth out the colors" requests:
- Analyze color distribution
- Apply Floyd-Steinberg dithering
- Optional: slight quantization to clean up palette
- Verify smooth transitions
Integration with Other Skills
- Start with pixel-art-creator for base sprite before polishing
- Use pixel-art-animator for animation, then polish with this Skill
- Hand off to pixel-art-exporter when refinement is complete
Error Handling
Quantization fails:
- Target color count must be 2-256
- Sprite must have content (not blank)
Dithering issues:
- Requires sufficient color depth
- May not work well with very limited palettes
- Some algorithms better for certain content
Palette conflicts:
- Indexed mode has strict limits
- Converting to indexed may require quantization first
Success Indicators
You've successfully used this Skill when:
- Dithering applied produces smooth gradients or textures
- Palette reduced while preserving visual quality
- Shading adds depth and dimension
- Antialiasing smooths edges without blurring
- Colors follow good color theory principles
- Sprite has professional, polished appearance
1---2name: pixel-art-professional3description: Apply advanced pixel art techniques including dithering, palette optimization, shading, antialiasing, and color theory. Use when the user mentions "dithering", "dither", "Bayer", "Floyd-Steinberg", "palette", "colors", "reduce colors", "optimize palette", "color limit", "shading", "shadows", "highlights", "lighting", "light source", "antialiasing", "smooth", "smoothing", "anti-alias", "AA", "color ramp", "gradient", "hue shifting", "saturation", "value", "contrast", or wants to "refine", "polish", "improve", "enhance", "make better", "add depth", "add dimension" to existing pixel art. Trigger on retro palette names (NES, Game Boy, C64, PICO-8), texture terms ("metal", "fabric", "stone", "wood"), and visual quality terms ("professional", "clean", "smooth", "vibrant").4---5
6# Pixel Art Professional
7
8## Overview
9
10This Skill provides advanced pixel art techniques for refining and polishing sprites. It handles dithering patterns, palette optimization, color theory, shading techniques, and antialiasing for professional-quality pixel art.
11
12## When to Use
13
14Use this Skill when the user:
15- Wants to apply "dithering" or mentions dither patterns
16- Asks about "palette optimization" or "color reduction"
17- Mentions "shading", "highlights", "shadows", or "lighting"
18- Requests "antialiasing", "smoothing", or "edge refinement"
19- Talks about "color ramps", "gradients", or "color theory"
20- Wants to "polish" or "refine" existing pixel art
21- Mentions specific techniques like "Bayer dithering" or "Floyd-Steinberg"
22
23**Trigger Keywords:** dithering, palette, shading, antialiasing, smooth, gradient, color ramp, polish, refine, color theory, quantize
24
25## Instructions
26
27### 1. Understanding Dithering
28
29**Dithering** creates the illusion of additional colors by mixing pixels of available colors in patterns.
30
31**When to Use Dithering:**
32- Reducing color count (e.g., 256 colors → 16 colors)
33- Creating smooth gradients with limited palettes
34- Simulating textures (fabric, metal, stone)
35- Retro aesthetic (classic games used dithering extensively)
36
37**Dithering Algorithms:**
38
39**Ordered Dithering (Bayer Matrix):**
40- Uses fixed pattern matrix (2x2, 4x4, 8x8)
41- Predictable, regular pattern
42- Best for: textures, backgrounds, retro look
43- Fast and consistent
44
45**Error Diffusion (Floyd-Steinberg):**
46- Distributes color error to neighboring pixels
47- More organic, less regular pattern
48- Best for: gradients, natural images, smooth transitions
49- Slower but higher quality
50
51**Common Dithering Patterns:**
52- **Checkerboard**: Simple 2-color alternating pattern
53- **Bayer 2x2**: Basic ordered dithering
54- **Bayer 4x4**: More subtle ordered dithering
55- **Bayer 8x8**: Very subtle, near-gradient appearance
56- **Floyd-Steinberg**: Error diffusion for smooth gradients
57
58### 2. Palette Management
59
60**Color Quantization:**
61Use `mcp__aseprite__quantize_palette` to reduce sprite colors intelligently:
62- Analyzes sprite colors
63- Finds optimal limited palette
64- Remaps pixels to new palette
65- Preserves visual quality
66
67**Palette Optimization Workflow:**
681. Get current sprite info and palette
692. Decide target color count (4, 8, 16, 32, 64, 256)
703. Apply quantization with optional dithering
714. Review and adjust palette if needed
72
73**Common Palette Sizes:**
74- **4 colors**: Game Boy, ZX Spectrum per-sprite
75- **8 colors**: CGA, early arcade
76- **16 colors**: NES, Master System, early VGA
77- **32 colors**: SNES per-background, Amiga OCS
78- **64 colors**: Genesis, PC Engine
79- **256 colors**: VGA, SNES full palette, Amiga AGA
80
81**Palette Theory:**
82- **Color Ramps**: Gradual transitions from dark to light for shading
83- **Hue Shifting**: Changing hue slightly in shadows/highlights for vibrant look
84- **Saturation**: Higher saturation in midtones, lower in shadows/highlights
85- **Contrast**: Ensure sufficient contrast between key elements
86
87### 3. Shading Techniques
88
89**Types of Shading:**
90
91**Flat Shading (No Shading):**
92- Single color per surface
93- Simple, iconic look
94- Best for: UI icons, simple sprites, minimalist style
95
96**Cell Shading (Hard Shading):**
97- Distinct color bands with hard edges
98- 2-3 colors per surface (base, shadow, highlight)
99- Best for: cartoon style, bold graphics, readable sprites
100
101**Soft Shading (Dithered Shading):**
102- Gradual transitions using dithering
103- Smooth appearance with limited colors
104- Best for: realistic look, smooth surfaces, gradients
105
106**Pixel Clusters:**
107- Manual dithering with strategic pixel placement
108- Organic, hand-crafted appearance
109- Best for: metal, fabric textures, custom look
110
111**Shading Workflow:**
1121. Identify light source direction
1132. Determine base color
1143. Create darker shade for shadows (hue shift toward blue/purple)
1154. Create lighter shade for highlights (hue shift toward yellow/white)
1165. Apply shadows on surfaces away from light
1176. Apply highlights on surfaces toward light
1187. Add reflected light in deep shadows (subtle)
119
120**Common Shading Mistakes:**
121- Pure black shadows (use dark hue-shifted colors instead)
122- Pure white highlights (use light tinted colors instead)
123- No hue shifting (shadows/highlights same hue as base)
124- Pillow shading (shading around edges instead of from light source)
125
126### 4. Antialiasing
127
128**Purpose**: Smooth jagged edges and diagonal lines by adding intermediate colors.
129
130**When to Use Antialiasing:**
131- Diagonal lines look jagged
132- Curves appear stepped
133- Edges need smoothing
134- Higher resolution sprites (64x64+)
135
136**When NOT to Use Antialiasing:**
137- Very small sprites (16x16 or smaller)
138- Intentional pixelated aesthetic
139- High-contrast situations (AA reduces contrast)
140- Limited palette (need intermediate colors)
141
142**Manual Antialiasing Technique:**
1431. Identify jagged edge
1442. Find intermediate color between edge and background
1453. Place intermediate pixels at edge "steps"
1464. Use 1-pixel wide AA (avoid thick fuzzy edges)
1475. AA selectively (not every edge needs it)
148
149**Automated Antialiasing:**
150- Some tools offer automatic edge smoothing
151- Use with caution (can blur intended sharpness)
152- Manual AA gives better control
153
154### 5. Color Theory for Pixel Art
155
156**HSV/HSB Model:**
157- **Hue**: Color type (red, blue, green, etc.)
158- **Saturation**: Color intensity (vivid vs. gray)
159- **Value/Brightness**: Lightness (dark vs. light)
160
161**Creating Color Ramps:**
1621. Start with base color (midtone)
1632. Create shadow: lower value, optionally shift hue toward cool (blue/purple)
1643. Create highlight: raise value, optionally shift hue toward warm (yellow/white)
1654. Create midtone between base and shadow
1665. Create midtone between base and highlight
1676. Result: 5-color ramp (deep shadow, shadow, base, highlight, bright highlight)
168
169**Hue Shifting:**
170- Shadows: shift toward blue, purple, or complementary color
171- Highlights: shift toward yellow, orange, or light source color
172- Creates vibrant, lively colors instead of flat gradients
173
174**Contrast:**
175- Ensure important elements have high value contrast
176- Background should contrast with foreground
177- Silhouette should be readable in solid black
178
179**Color Harmony:**
180- **Monochromatic**: Variations of single hue
181- **Analogous**: Adjacent hues on color wheel
182- **Complementary**: Opposite hues on color wheel
183- **Triadic**: Three evenly spaced hues
184
185### 6. Professional Workflows
186
187**Workflow 1: Palette Reduction with Dithering**
188
189User Request: "Reduce this sprite to 16 colors with dithering"
190
191Approach:
1921. Get current sprite info
1932. Check current palette size
1943. Use `mcp__aseprite__quantize_palette` with:
195 - target_colors: 16
196 - algorithm: "median_cut" or "kmeans"
197 - dither: true (enables Floyd-Steinberg dithering)
1984. Review result and adjust if needed
199
200**Workflow 2: Adding Shading to Flat Sprite**
201
202User Request: "Add shading to this sprite with light from top-left"
203
204**Option A - Automatic Shading (Quick):**
2051. Use `mcp__aseprite__apply_auto_shading` with:
206 - light_direction: "top_left"
207 - intensity: 0.3-0.7 (adjust to preference)
208 - style: "smooth", "hard", or "pillow"
209 - hue_shift: true (for vibrant results)
2102. Tool automatically detects regions and adds shading
2113. Review and manually refine if needed
212
213**Option B - Manual Shading (Precise):**
2141. Analyze sprite structure
2152. Identify base colors
2163. Create shadow colors (darker, hue-shifted)
2174. Create highlight colors (lighter, hue-shifted)
2185. Update palette with new colors
2196. Draw shadows on bottom-right surfaces
2207. Draw highlights on top-left surfaces
2218. Add subtle reflected light in deep shadows
222
223**Workflow 3: Smoothing Jagged Edges**
224
225User Request: "Smooth out the edges on this character"
226
227Approach:
2281. Identify jagged diagonal lines and curves
2292. Find edge color and background color
2303. Create intermediate colors (1-2 shades between)
2314. Place AA pixels at edge steps
2325. Review and refine (avoid over-smoothing)
233
234**Workflow 4: Converting to Retro Palette (Full Palette Conversion)**
235
236User Request: "Convert this to NES palette"
237
238Approach:
2391. Use `mcp__aseprite__quantize_palette` with retro palette colors
2402. Specify target palette (e.g., 54 NES colors, 4 Game Boy colors, 16 C64 colors)
2413. Algorithm maps each pixel to nearest palette color
2424. Pixels are remapped to new palette indices
2435. Optionally apply dithering for smoother transitions
2446. Verify all colors match target palette
245
246**IMPORTANT**: Use `quantize_palette`, NOT `set_palette`. The `set_palette` tool only replaces the color table without remapping pixel data, which will produce incorrect colors in indexed mode.
247
248Example:
249```
250quantize_palette(
251 sprite_path: "sprite.aseprite",
252 target_colors: 54, # NES full palette
253 algorithm: "median_cut",
254 convert_to_indexed: true,
255 dither: false # or true for Bayer dithering
256)
257```
258
259### 7. Dithering Patterns Reference
260
261**2-Color Patterns:**
262
263**Checkerboard (50% mix):**
264```
265A B A B
266B A B A
267A B A B
268B A B A
269```
270
271**25% Pattern:**
272```
273A A B A
274A A A A
275B A A A
276A A A A
277```
278
279**75% Pattern:**
280```
281B B A B
282B B B B
283A B B B
284B B B B
285```
286
287**Bayer 2x2:**
288```
289Threshold matrix:
2900 2
2913 1
292
293If pixel value > threshold, use lighter color
294```
295
296**Bayer 4x4:**
297```
298 0 8 2 10
29912 4 14 6
300 3 11 1 9
30115 7 13 5
302```
303
304**Note**: See `dithering-patterns.md` for comprehensive pattern library.
305
306### 8. Technical Details
307
308**Quantization Parameters:**
309- Target colors: 2-256
310- Dithering: optional, specify algorithm
311- Alpha handling: preserve transparency or flatten
312
313**Palette Constraints:**
314- RGB mode: No palette constraints
315- Indexed mode: Max 256 colors
316- Grayscale: 256 shades of gray
317
318**Performance:**
319- Quantization: ~100-500ms depending on sprite size
320- Dithering: ~200-800ms depending on algorithm and size
321- Manual pixel operations: <50ms per operation
322
323### 9. Common Patterns
324
325**Pattern: Quick Polish**
326For "make this look better" requests:
3271. Check palette (reduce if too many colors)
3282. Add basic shading (light source from top-left)
3293. Add selective antialiasing on curves
3304. Adjust contrast if needed
331
332**Pattern: Retro Conversion**
333For "make this look retro" requests:
3341. Reduce to appropriate palette (4, 8, or 16 colors)
3352. Apply ordered dithering (Bayer)
3363. Remove antialiasing (make edges sharp)
3374. Ensure pixel-perfect alignment
338
339**Pattern: Smooth Gradient**
340For "smooth out the colors" requests:
3411. Analyze color distribution
3422. Apply Floyd-Steinberg dithering
3433. Optional: slight quantization to clean up palette
3444. Verify smooth transitions
345
346## Integration with Other Skills
347
348- **Start with pixel-art-creator** for base sprite before polishing
349- **Use pixel-art-animator** for animation, then polish with this Skill
350- **Hand off to pixel-art-exporter** when refinement is complete
351
352## Error Handling
353
354**Quantization fails:**
355- Target color count must be 2-256
356- Sprite must have content (not blank)
357
358**Dithering issues:**
359- Requires sufficient color depth
360- May not work well with very limited palettes
361- Some algorithms better for certain content
362
363**Palette conflicts:**
364- Indexed mode has strict limits
365- Converting to indexed may require quantization first
366
367## Success Indicators
368
369You've successfully used this Skill when:
370- Dithering applied produces smooth gradients or textures
371- Palette reduced while preserving visual quality
372- Shading adds depth and dimension
373- Antialiasing smooths edges without blurring
374- Colors follow good color theory principles
375- Sprite has professional, polished appearance