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
Source: willibrandon/pixel-plugin — distributed by TomeVault.
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"). Use when this capability is needed.4---56# Pixel Art Professional78## Overview910This 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.1112## When to Use1314Use this Skill when the user:15- Wants to apply "dithering" or mentions dither patterns16- 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 art21- Mentions specific techniques like "Bayer dithering" or "Floyd-Steinberg"2223**Trigger Keywords:** dithering, palette, shading, antialiasing, smooth, gradient, color ramp, polish, refine, color theory, quantize2425## Instructions2627### 1. Understanding Dithering2829**Dithering** creates the illusion of additional colors by mixing pixels of available colors in patterns.3031**When to Use Dithering:**32- Reducing color count (e.g., 256 colors → 16 colors)33- Creating smooth gradients with limited palettes34- Simulating textures (fabric, metal, stone)35- Retro aesthetic (classic games used dithering extensively)3637**Dithering Algorithms:**3839**Ordered Dithering (Bayer Matrix):**40- Uses fixed pattern matrix (2x2, 4x4, 8x8)41- Predictable, regular pattern42- Best for: textures, backgrounds, retro look43- Fast and consistent4445**Error Diffusion (Floyd-Steinberg):**46- Distributes color error to neighboring pixels47- More organic, less regular pattern48- Best for: gradients, natural images, smooth transitions49- Slower but higher quality5051**Common Dithering Patterns:**52- **Checkerboard**: Simple 2-color alternating pattern53- **Bayer 2x2**: Basic ordered dithering54- **Bayer 4x4**: More subtle ordered dithering55- **Bayer 8x8**: Very subtle, near-gradient appearance56- **Floyd-Steinberg**: Error diffusion for smooth gradients5758### 2. Palette Management5960**Color Quantization:**61Use `mcp__aseprite__quantize_palette` to reduce sprite colors intelligently:62- Analyzes sprite colors63- Finds optimal limited palette64- Remaps pixels to new palette65- Preserves visual quality6667**Palette Optimization Workflow:**681. Get current sprite info and palette692. Decide target color count (4, 8, 16, 32, 64, 256)703. Apply quantization with optional dithering714. Review and adjust palette if needed7273**Common Palette Sizes:**74- **4 colors**: Game Boy, ZX Spectrum per-sprite75- **8 colors**: CGA, early arcade76- **16 colors**: NES, Master System, early VGA77- **32 colors**: SNES per-background, Amiga OCS78- **64 colors**: Genesis, PC Engine79- **256 colors**: VGA, SNES full palette, Amiga AGA8081**Palette Theory:**82- **Color Ramps**: Gradual transitions from dark to light for shading83- **Hue Shifting**: Changing hue slightly in shadows/highlights for vibrant look84- **Saturation**: Higher saturation in midtones, lower in shadows/highlights85- **Contrast**: Ensure sufficient contrast between key elements8687### 3. Shading Techniques8889**Types of Shading:**9091**Flat Shading (No Shading):**92- Single color per surface93- Simple, iconic look94- Best for: UI icons, simple sprites, minimalist style9596**Cell Shading (Hard Shading):**97- Distinct color bands with hard edges98- 2-3 colors per surface (base, shadow, highlight)99- Best for: cartoon style, bold graphics, readable sprites100101**Soft Shading (Dithered Shading):**102- Gradual transitions using dithering103- Smooth appearance with limited colors104- Best for: realistic look, smooth surfaces, gradients105106**Pixel Clusters:**107- Manual dithering with strategic pixel placement108- Organic, hand-crafted appearance109- Best for: metal, fabric textures, custom look110111**Shading Workflow:**1121. Identify light source direction1132. Determine base color1143. 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 light1176. Apply highlights on surfaces toward light1187. Add reflected light in deep shadows (subtle)119120**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)125126### 4. Antialiasing127128**Purpose**: Smooth jagged edges and diagonal lines by adding intermediate colors.129130**When to Use Antialiasing:**131- Diagonal lines look jagged132- Curves appear stepped133- Edges need smoothing134- Higher resolution sprites (64x64+)135136**When NOT to Use Antialiasing:**137- Very small sprites (16x16 or smaller)138- Intentional pixelated aesthetic139- High-contrast situations (AA reduces contrast)140- Limited palette (need intermediate colors)141142**Manual Antialiasing Technique:**1431. Identify jagged edge1442. Find intermediate color between edge and background1453. Place intermediate pixels at edge "steps"1464. Use 1-pixel wide AA (avoid thick fuzzy edges)1475. AA selectively (not every edge needs it)148149**Automated Antialiasing:**150- Some tools offer automatic edge smoothing151- Use with caution (can blur intended sharpness)152- Manual AA gives better control153154### 5. Color Theory for Pixel Art155156**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)160161**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 shadow1665. Create midtone between base and highlight1676. Result: 5-color ramp (deep shadow, shadow, base, highlight, bright highlight)168169**Hue Shifting:**170- Shadows: shift toward blue, purple, or complementary color171- Highlights: shift toward yellow, orange, or light source color172- Creates vibrant, lively colors instead of flat gradients173174**Contrast:**175- Ensure important elements have high value contrast176- Background should contrast with foreground177- Silhouette should be readable in solid black178179**Color Harmony:**180- **Monochromatic**: Variations of single hue181- **Analogous**: Adjacent hues on color wheel182- **Complementary**: Opposite hues on color wheel183- **Triadic**: Three evenly spaced hues184185### 6. Professional Workflows186187**Workflow 1: Palette Reduction with Dithering**188189User Request: "Reduce this sprite to 16 colors with dithering"190191Approach:1921. Get current sprite info1932. Check current palette size1943. Use `mcp__aseprite__quantize_palette` with:195 - target_colors: 16196 - algorithm: "median_cut" or "kmeans"197 - dither: true (enables Floyd-Steinberg dithering)1984. Review result and adjust if needed199200**Workflow 2: Adding Shading to Flat Sprite**201202User Request: "Add shading to this sprite with light from top-left"203204**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 shading2113. Review and manually refine if needed212213**Option B - Manual Shading (Precise):**2141. Analyze sprite structure2152. Identify base colors2163. Create shadow colors (darker, hue-shifted)2174. Create highlight colors (lighter, hue-shifted)2185. Update palette with new colors2196. Draw shadows on bottom-right surfaces2207. Draw highlights on top-left surfaces2218. Add subtle reflected light in deep shadows222223**Workflow 3: Smoothing Jagged Edges**224225User Request: "Smooth out the edges on this character"226227Approach:2281. Identify jagged diagonal lines and curves2292. Find edge color and background color2303. Create intermediate colors (1-2 shades between)2314. Place AA pixels at edge steps2325. Review and refine (avoid over-smoothing)233234**Workflow 4: Converting to Retro Palette (Full Palette Conversion)**235236User Request: "Convert this to NES palette"237238Approach:2391. Use `mcp__aseprite__quantize_palette` with retro palette colors2402. Specify target palette (e.g., 54 NES colors, 4 Game Boy colors, 16 C64 colors)2413. Algorithm maps each pixel to nearest palette color2424. Pixels are remapped to new palette indices2435. Optionally apply dithering for smoother transitions2446. Verify all colors match target palette245246**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.247248Example:249```250quantize_palette(251 sprite_path: "sprite.aseprite",252 target_colors: 54, # NES full palette253 algorithm: "median_cut",254 convert_to_indexed: true,255 dither: false # or true for Bayer dithering256)257```258259### 7. Dithering Patterns Reference260261**2-Color Patterns:**262263**Checkerboard (50% mix):**264```265A B A B266B A B A267A B A B268B A B A269```270271**25% Pattern:**272```273A A B A274A A A A275B A A A276A A A A277```278279**75% Pattern:**280```281B B A B282B B B B283A B B B284B B B B285```286287**Bayer 2x2:**288```289Threshold matrix:2900 22913 1292293If pixel value > threshold, use lighter color294```295296**Bayer 4x4:**297```298 0 8 2 1029912 4 14 6300 3 11 1 930115 7 13 5302```303304**Note**: See `dithering-patterns.md` for comprehensive pattern library.305306### 8. Technical Details307308**Quantization Parameters:**309- Target colors: 2-256310- Dithering: optional, specify algorithm311- Alpha handling: preserve transparency or flatten312313**Palette Constraints:**314- RGB mode: No palette constraints315- Indexed mode: Max 256 colors316- Grayscale: 256 shades of gray317318**Performance:**319- Quantization: ~100-500ms depending on sprite size320- Dithering: ~200-800ms depending on algorithm and size321- Manual pixel operations: <50ms per operation322323### 9. Common Patterns324325**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 curves3304. Adjust contrast if needed331332**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 alignment338339**Pattern: Smooth Gradient**340For "smooth out the colors" requests:3411. Analyze color distribution3422. Apply Floyd-Steinberg dithering3433. Optional: slight quantization to clean up palette3444. Verify smooth transitions345346## Integration with Other Skills347348- **Start with pixel-art-creator** for base sprite before polishing349- **Use pixel-art-animator** for animation, then polish with this Skill350- **Hand off to pixel-art-exporter** when refinement is complete351352## Error Handling353354**Quantization fails:**355- Target color count must be 2-256356- Sprite must have content (not blank)357358**Dithering issues:**359- Requires sufficient color depth360- May not work well with very limited palettes361- Some algorithms better for certain content362363**Palette conflicts:**364- Indexed mode has strict limits365- Converting to indexed may require quantization first366367## Success Indicators368369You've successfully used this Skill when:370- Dithering applied produces smooth gradients or textures371- Palette reduced while preserving visual quality372- Shading adds depth and dimension373- Antialiasing smooths edges without blurring374- Colors follow good color theory principles375- Sprite has professional, polished appearance376377---378> Source: [willibrandon/pixel-plugin](https://github.com/willibrandon/pixel-plugin) — distributed by [TomeVault](https://tomevault.io).379<!-- tomevault:4.0:skill_md:2026-06-24 -->