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_palettewith:- •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_shadingwith:- •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_palettewith 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