@leejungkiin/awkit 1.6.4 β†’ 1.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,346 @@
1
+ ---
2
+ name: aseprite-artist
3
+ description: "Pixel art creation, animation, and export via Aseprite + pixel-mcp MCP Server. Supports natural language drawing, retro palettes (NES, Game Boy, PICO-8, C64), dithering, shading, antialiasing, animation frames, and game-engine spritesheet export. Keywords: pixel art, sprite, aseprite, dithering, palette, animation, mascot, retro, 8-bit, 16-bit, pixel, spritesheet, game asset, icon."
4
+ version: 1.0.0
5
+ trigger: conditional
6
+ activation_keywords:
7
+ - "pixel art"
8
+ - "sprite"
9
+ - "aseprite"
10
+ - "pixel"
11
+ - "dithering"
12
+ - "retro palette"
13
+ - "spritesheet"
14
+ - "game asset"
15
+ - "mascot"
16
+ - "8-bit"
17
+ - "16-bit"
18
+ - "pixel icon"
19
+ - "walk cycle"
20
+ - "idle animation"
21
+ - "NES palette"
22
+ - "Game Boy"
23
+ - "PICO-8"
24
+ ---
25
+
26
+ # 🎨 Aseprite Artist β€” Pixel Art Creation Skill
27
+
28
+ > Adapted from [pixel-plugin](https://github.com/willibrandon/pixel-plugin) by Brandon Williams (MIT).
29
+ > Powered by [pixel-mcp](https://github.com/willibrandon/pixel-mcp) β€” 40+ MCP tools for Aseprite.
30
+
31
+ ## Purpose
32
+
33
+ Enable AI to create, edit, animate, and export pixel art sprites through natural language using the **pixel-mcp** MCP server as the bridge to Aseprite. This skill consolidates what was originally 4 separate Claude Code skills (creator, animator, professional, exporter) into a single, unified Antigravity skill.
34
+
35
+ ## Prerequisites
36
+
37
+ 1. **Aseprite v1.3.0+** installed on the system.
38
+ 2. **pixel-mcp** MCP server configured and running.
39
+ 3. Config file at `~/.config/pixel-mcp/config.json` with valid `aseprite_path`.
40
+
41
+ ### First-Time Setup
42
+
43
+ If user has never set up pixel-mcp, run the `/pixel-setup` workflow or do it manually:
44
+
45
+ ```bash
46
+ # 1. Install pixel-mcp (Go binary β€” download from releases or build)
47
+ # GitHub: https://github.com/willibrandon/pixel-mcp/releases
48
+
49
+ # 2. Create config
50
+ mkdir -p ~/.config/pixel-mcp
51
+ cat > ~/.config/pixel-mcp/config.json << 'EOF'
52
+ {
53
+ "aseprite_path": "/Applications/Aseprite.app/Contents/MacOS/aseprite",
54
+ "temp_dir": "/tmp/pixel-mcp",
55
+ "timeout": 30,
56
+ "log_level": "info"
57
+ }
58
+ EOF
59
+
60
+ # 3. Add to MCP config (mcp_config.json) β€” the "aseprite" server entry
61
+ ```
62
+
63
+ ### MCP Config Entry
64
+
65
+ Add to `mcp_config.json`:
66
+
67
+ ```json
68
+ {
69
+ "mcpServers": {
70
+ "aseprite": {
71
+ "command": "/path/to/pixel-mcp",
72
+ "args": []
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ Or if using npx (if published):
79
+ ```json
80
+ {
81
+ "mcpServers": {
82
+ "aseprite": {
83
+ "command": "npx",
84
+ "args": ["-y", "pixel-mcp"]
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Tool Reference (40+ MCP Tools)
93
+
94
+ All tools are prefixed with `mcp__aseprite__` in the MCP protocol.
95
+
96
+ ### Canvas & Layer Management
97
+ | Tool | Purpose |
98
+ |------|---------|
99
+ | `create_canvas` | Create new sprite (width, height, color_mode: RGB/Grayscale/Indexed) |
100
+ | `add_layer` | Add named layer to sprite |
101
+ | `delete_layer` | Remove layer (cannot delete last layer) |
102
+ | `flatten_layers` | Merge all layers into one |
103
+ | `get_sprite_info` | Get sprite dimensions, color mode, layer count, frame count |
104
+
105
+ ### Drawing Primitives
106
+ | Tool | Purpose |
107
+ |------|---------|
108
+ | `draw_pixels` | Batch draw individual pixels (coordinates + colors) |
109
+ | `draw_line` | Draw line between two points |
110
+ | `draw_rectangle` | Draw filled or outline rectangle |
111
+ | `draw_circle` | Draw filled or outline circle/ellipse |
112
+ | `draw_contour` | Draw polyline/polygon connecting multiple points |
113
+ | `fill_area` | Flood fill connected area (paint bucket) |
114
+
115
+ ### Selection & Clipboard
116
+ | Tool | Purpose |
117
+ |------|---------|
118
+ | `select_rectangle` | Rectangle selection |
119
+ | `select_ellipse` | Ellipse selection |
120
+ | `select_all` | Select entire canvas |
121
+ | `deselect` | Clear selection |
122
+ | `move_selection` | Move selection area |
123
+ | `cut_selection` | Cut selected area to clipboard |
124
+ | `copy_selection` | Copy selected area to clipboard |
125
+ | `paste_clipboard` | Paste clipboard content |
126
+
127
+ ### Professional Pixel Art
128
+ | Tool | Purpose |
129
+ |------|---------|
130
+ | `analyze_reference` | Extract palettes, brightness maps, edge detection from images |
131
+ | `draw_with_dither` | Apply dithering patterns (Bayer 2x2/4x4/8x8, Floyd-Steinberg, checkerboard, textures) |
132
+ | `downsample_image` | Convert image to pixel art by reducing resolution |
133
+ | `quantize_palette` | Reduce colors intelligently (median_cut, k-means, octree) |
134
+ | `apply_auto_shading` | Automatic geometry-based shading (cell/smooth/soft, 8 directions) |
135
+ | `suggest_antialiasing` | Detect jagged edges and suggest smoothing colors |
136
+ | `analyze_palette_harmonies` | Analyze color harmony (complementary/triadic/analogous) |
137
+
138
+ ### Palette Management
139
+ | Tool | Purpose |
140
+ |------|---------|
141
+ | `get_palette` | Read current palette |
142
+ | `set_palette` | Set entire palette (array of hex colors) |
143
+ | `set_palette_color` | Change single palette entry |
144
+ | `add_palette_color` | Add color to palette |
145
+ | `sort_palette` | Sort by hue/luminance |
146
+
147
+ ### Transform & Filter
148
+ | Tool | Purpose |
149
+ |------|---------|
150
+ | `flip_sprite` | Flip horizontal/vertical |
151
+ | `rotate_sprite` | Rotate sprite |
152
+ | `scale_sprite` | Scale up/down |
153
+ | `crop_sprite` | Crop to content |
154
+ | `resize_canvas` | Resize canvas without scaling content |
155
+ | `apply_outline` | Add outline around opaque pixels |
156
+
157
+ ### Animation
158
+ | Tool | Purpose |
159
+ |------|---------|
160
+ | `add_frame` | Add new animation frame |
161
+ | `delete_frame` | Remove frame |
162
+ | `duplicate_frame` | Copy frame |
163
+ | `set_frame_duration` | Set frame timing (ms) |
164
+ | `create_tag` | Create animation tag (idle, walk, etc.) |
165
+ | `delete_tag` | Remove animation tag |
166
+ | `link_cel` | Link cel between frames (shared content) |
167
+
168
+ ### Export
169
+ | Tool | Purpose |
170
+ |------|---------|
171
+ | `export_sprite` | Export as PNG/GIF/JPG/BMP with scale |
172
+ | `export_spritesheet` | Export spritesheet (horizontal/vertical/grid/packed layout) |
173
+ | `import_image` | Import external image into sprite |
174
+ | `save_as` | Save sprite in Aseprite format |
175
+ | `get_pixels` | Read pixel data for verification |
176
+
177
+ ---
178
+
179
+ ## Workflow: Creating Pixel Art
180
+
181
+ ### Phase 1: Understand Requirements
182
+ - What size? (16x16 icon, 32x32 character, 64x64 detailed, 128x128 scene)
183
+ - What style? (modern RGB vs retro indexed)
184
+ - What palette? (custom, NES, Game Boy, PICO-8, etc.)
185
+ - Animation needed? (idle, walk, attack, etc.)
186
+
187
+ ### Phase 2: Canvas Setup
188
+ 1. `create_canvas` with appropriate width, height, color_mode
189
+ 2. `set_palette` if using retro/indexed mode
190
+ 3. `add_layer` for organization (Background, Character, Effects)
191
+
192
+ ### Phase 3: Drawing
193
+ 1. Start with silhouette using `draw_rectangle`, `draw_circle`, `draw_contour`
194
+ 2. Refine with `draw_pixels` for details
195
+ 3. Use `fill_area` for large regions
196
+ 4. Apply `draw_with_dither` for textures
197
+
198
+ ### Phase 4: Polish
199
+ 1. `apply_auto_shading` for quick lighting (or manual shading with layers)
200
+ 2. `suggest_antialiasing` for smooth edges on larger sprites
201
+ 3. `quantize_palette` if reducing colors
202
+ 4. `sort_palette` for organized color table
203
+
204
+ ### Phase 5: Animate (if needed)
205
+ 1. `add_frame` for each animation frame
206
+ 2. `set_frame_duration` for timing (typical: 80-150ms per frame)
207
+ 3. `create_tag` to label animation sequences
208
+ 4. Use `duplicate_frame` as starting point, then modify
209
+
210
+ ### Phase 6: Export
211
+ 1. `export_sprite` for single image (PNG with scale)
212
+ 2. `export_spritesheet` for game engines (grid layout + JSON)
213
+ 3. `export_sprite` with GIF format for animated preview
214
+
215
+ ---
216
+
217
+ ## Retro Palette Reference
218
+
219
+ ### Console Palettes
220
+ | Name | Colors | Hex Values |
221
+ |------|--------|------------|
222
+ | **Game Boy** | 4 | `#0F380F`, `#306230`, `#8BAC0F`, `#9BBC0F` |
223
+ | **Game Boy Gray** | 4 | `#000000`, `#555555`, `#AAAAAA`, `#FFFFFF` |
224
+ | **NES** | 54 | Full NES palette (use `set_palette` with NES hex array) |
225
+ | **C64** | 16 | Commodore 64 palette |
226
+ | **CGA** | 4 | IBM CGA palette |
227
+ | **SNES** | 256 | Super Nintendo full palette |
228
+
229
+ ### Modern Pixel Art Palettes
230
+ | Name | Colors | Description |
231
+ |------|--------|-------------|
232
+ | **PICO-8** | 16 | Fantasy console, very popular |
233
+ | **Sweetie 16** | 16 | Popular warm palette by GrafxKid |
234
+ | **DB16** | 16 | DawnBringer's 16 colors |
235
+ | **DB32** | 32 | DawnBringer's 32 colors |
236
+
237
+ ### Generic
238
+ | Name | Colors |
239
+ |------|--------|
240
+ | **retro16** | 16 generic retro colors |
241
+ | **retro8** | 8 generic retro colors |
242
+ | **grayscale4/8/16** | Grayscale variants |
243
+
244
+ > πŸ“‹ Full palette hex values: see `resources/palettes.md`
245
+
246
+ ---
247
+
248
+ ## Dithering Patterns (16 Available)
249
+
250
+ | Category | Patterns |
251
+ |----------|----------|
252
+ | **Bayer (Ordered)** | bayer_2x2, bayer_4x4, bayer_8x8 |
253
+ | **Error Diffusion** | floyd_steinberg |
254
+ | **Simple** | checkerboard |
255
+ | **Textures** | grass, water, stone, cloud, brick, dots, diagonal, cross, noise, lines |
256
+
257
+ **When to use which:**
258
+ - **Bayer**: Retro aesthetic, regular patterns, backgrounds
259
+ - **Floyd-Steinberg**: Smooth gradients, natural images
260
+ - **Textures**: Specific material simulation
261
+ - **Checkerboard**: Quick 50% color mix
262
+
263
+ ---
264
+
265
+ ## Shading Quick Reference
266
+
267
+ | Style | Use When | Settings |
268
+ |-------|----------|----------|
269
+ | **Cell (Hard)** | Cartoon, bold sprites | `style: "hard"` |
270
+ | **Smooth** | Realistic, gradual lighting | `style: "smooth"` |
271
+ | **Soft (Pillow)** | Rounded objects, UI elements | `style: "soft"` |
272
+
273
+ **Light Directions:** top_left, top, top_right, left, right, bottom_left, bottom, bottom_right
274
+
275
+ **Best Practice:** Default to `top_left` light source, `intensity: 0.4`, `style: "smooth"`, `hue_shift: true`.
276
+
277
+ ---
278
+
279
+ ## Size Recommendations
280
+
281
+ | Use Case | Dimensions | Notes |
282
+ |----------|------------|-------|
283
+ | Icon | 16x16, 24x24, 32x32 | High contrast, simple shapes |
284
+ | Character Sprite | 32x32, 48x48, 64x64 | Room for detail + animation |
285
+ | Tile | 16x16, 32x32 | Must tile seamlessly |
286
+ | Mascot | 64x64, 128x128 | Detailed, personality |
287
+ | Scene / Background | 256x144, 320x180 | Retro resolution |
288
+ | Profile Avatar | 64x64, 128x128 | Circular crop friendly |
289
+
290
+ ---
291
+
292
+ ## Export Formats
293
+
294
+ | Format | Best For | Options |
295
+ |--------|----------|---------|
296
+ | **PNG** | Single frame, transparency | `scale`: 1x, 2x, 4x, 8x |
297
+ | **GIF** | Animated preview | `fps`, `loop` |
298
+ | **Spritesheet** | Game engines | Layout: horizontal, vertical, grid, packed |
299
+ | **JSON** | Game metadata | Compatible with: Aseprite, Unity, Godot, TexturePacker |
300
+
301
+ ---
302
+
303
+ ## Integration with Antigravity Ecosystem
304
+
305
+ ### With visual-design-gate (Gate 2.5)
306
+ When designing UI that needs pixel art assets:
307
+ 1. Use this skill to generate icons, sprites, or mascots
308
+ 2. Export as PNG with appropriate scale
309
+ 3. Reference exported files in design specifications
310
+
311
+ ### With mascot-creator skill
312
+ Chain this skill for pixel-art style mascots:
313
+ 1. mascot-creator defines character concept
314
+ 2. aseprite-artist creates the pixel art version
315
+ 3. Add animation states (idle, wave, blink)
316
+ 4. Export transparent PNGs + animated GIF
317
+
318
+ ### With project assets
319
+ When a project needs game-ready assets:
320
+ 1. Create sprite with this skill
321
+ 2. Export spritesheet + JSON metadata
322
+ 3. Copy to project's assets directory
323
+ 4. Reference in code (Compose, SwiftUI, React, etc.)
324
+
325
+ ---
326
+
327
+ ## Error Handling
328
+
329
+ | Error | Cause | Fix |
330
+ |-------|-------|-----|
331
+ | "Aseprite not found" | Wrong path in config | Update `~/.config/pixel-mcp/config.json` |
332
+ | "MCP server not responding" | Server not running | Restart pixel-mcp, check `bin/pixel-mcp --health` |
333
+ | "Export failed" | No sprite created | Create sprite first before exporting |
334
+ | "Cannot delete last layer" | Only one layer | Add another layer before deleting |
335
+ | "Palette index out of range" | Index > palette size | Check palette size with `get_palette` first |
336
+
337
+ ---
338
+
339
+ ## Anti-Patterns (AVOID)
340
+
341
+ - ❌ Drawing pixel-by-pixel for large areas β†’ Use `fill_area` or `draw_rectangle`
342
+ - ❌ Using `set_palette` to convert colors β†’ Use `quantize_palette` (it remaps pixels too)
343
+ - ❌ Antialiasing on 16x16 sprites β†’ Too small, looks blurry
344
+ - ❌ Floyd-Steinberg on 4-color palette β†’ Use Bayer for very limited palettes
345
+ - ❌ Pillow shading (light from all edges) β†’ Pick one light direction
346
+ - ❌ Pure black shadows / pure white highlights β†’ Use hue-shifted dark/light colors
@@ -0,0 +1,188 @@
1
+ # Aseprite Artist β€” Example Workflows
2
+
3
+ ## Example 1: Game Boy Character Sprite
4
+
5
+ **Request:** "TαΊ‘o mα»™t character sprite Game Boy 48x48"
6
+
7
+ **Steps:**
8
+ 1. Create 48x48 Indexed canvas
9
+ 2. Set Game Boy palette: `["#0F380F", "#306230", "#8BAC0F", "#9BBC0F"]`
10
+ 3. Add layers: "Background", "Character", "Details"
11
+ 4. Draw character silhouette on Character layer
12
+ 5. Add details (eyes, mouth, accessories)
13
+ 6. Export as PNG at 4x scale
14
+
15
+ **MCP Calls:**
16
+ ```
17
+ create_canvas(width: 48, height: 48, color_mode: "Indexed")
18
+ set_palette(colors: ["#0F380F", "#306230", "#8BAC0F", "#9BBC0F"])
19
+ add_layer(name: "Background")
20
+ add_layer(name: "Character")
21
+ add_layer(name: "Details")
22
+ # ... drawing operations ...
23
+ export_sprite(format: "png", scale: 4, output_path: "character.png")
24
+ ```
25
+
26
+ ---
27
+
28
+ ## Example 2: Animated Idle Mascot
29
+
30
+ **Request:** "TαΊ‘o mascot 64x64 vα»›i animation idle 4 frames"
31
+
32
+ **Steps:**
33
+ 1. Create 64x64 RGB canvas
34
+ 2. Draw mascot character on frame 1
35
+ 3. Duplicate frame β†’ make subtle breathing motion (frame 2)
36
+ 4. Duplicate frame 1 β†’ neutral pose (frame 3)
37
+ 5. Duplicate frame β†’ opposite breathing (frame 4)
38
+ 6. Set frame durations to 150ms each
39
+ 7. Create "idle" animation tag
40
+ 8. Export as GIF
41
+
42
+ **MCP Calls:**
43
+ ```
44
+ create_canvas(width: 64, height: 64, color_mode: "RGB")
45
+ # Draw mascot on frame 1...
46
+ duplicate_frame(frame: 1)
47
+ # Modify frame 2 (slightly expand body 1px)
48
+ duplicate_frame(frame: 1)
49
+ # Frame 3 stays neutral
50
+ duplicate_frame(frame: 2)
51
+ # Frame 4 mirror of frame 2
52
+ set_frame_duration(frame: 1, duration: 150)
53
+ set_frame_duration(frame: 2, duration: 150)
54
+ set_frame_duration(frame: 3, duration: 150)
55
+ set_frame_duration(frame: 4, duration: 150)
56
+ create_tag(name: "idle", from_frame: 1, to_frame: 4)
57
+ export_sprite(format: "gif", output_path: "mascot-idle.gif")
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Example 3: NES-Style Game Tile
63
+
64
+ **Request:** "TαΊ‘o tile brick wall 16x16 NES style"
65
+
66
+ **Steps:**
67
+ 1. Create 16x16 Indexed canvas
68
+ 2. Set NES brick colors (subset of NES palette)
69
+ 3. Draw brick pattern (3 rows of offset rectangles)
70
+ 4. Apply Bayer 2x2 dithering for mortar texture
71
+ 5. Export at 4x scale
72
+
73
+ **MCP Calls:**
74
+ ```
75
+ create_canvas(width: 16, height: 16, color_mode: "Indexed")
76
+ set_palette(colors: ["#000000", "#882400", "#A81000", "#F87858", "#FCA044"])
77
+ draw_rectangle(x: 0, y: 0, w: 16, h: 16, color: "#A81000", filled: true)
78
+ # Draw brick lines and mortar...
79
+ draw_with_dither(pattern: "bayer_2x2", color1: "#A81000", color2: "#882400", region: {...})
80
+ export_sprite(format: "png", scale: 4, output_path: "brick-tile.png")
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Example 4: Modern Sword with Shading
86
+
87
+ **Request:** "VαΊ½ thanh kiαΊΏm pixel art 64x64 vα»›i shading"
88
+
89
+ **Steps:**
90
+ 1. Create 64x64 RGB canvas
91
+ 2. Draw blade silhouette (silver/white triangular shape)
92
+ 3. Draw hilt (gold rectangle + guard)
93
+ 4. Apply auto-shading from top-left
94
+ 5. Add antialiasing to blade edges
95
+ 6. Export at 2x scale
96
+
97
+ **MCP Calls:**
98
+ ```
99
+ create_canvas(width: 64, height: 64, color_mode: "RGB")
100
+ add_layer(name: "Blade")
101
+ add_layer(name: "Hilt")
102
+ # Draw blade shape...
103
+ # Draw hilt shape...
104
+ apply_auto_shading(light_direction: "top_left", intensity: 0.5, style: "smooth", hue_shift: true)
105
+ suggest_antialiasing(auto_apply: true)
106
+ export_sprite(format: "png", scale: 2, output_path: "sword.png")
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Example 5: Spritesheet for Unity
112
+
113
+ **Request:** "TαΊ‘o character 32x32 PICO-8 vα»›i 8-frame run cycle, export cho Unity"
114
+
115
+ **Steps:**
116
+ 1. Create 32x32 Indexed canvas
117
+ 2. Set PICO-8 palette
118
+ 3. Draw character pose frame 1
119
+ 4. Create 7 more frames for run cycle
120
+ 5. Set frame durations to 80ms
121
+ 6. Tag as "run"
122
+ 7. Export spritesheet (grid layout) + JSON metadata
123
+
124
+ **MCP Calls:**
125
+ ```
126
+ create_canvas(width: 32, height: 32, color_mode: "Indexed")
127
+ set_palette(colors: ["#000000", "#1D2B53", "#7E2553", ...PICO-8 full palette...])
128
+ # Draw frame 1 (neutral standing)
129
+ # Add frames 2-8 with progressive leg/arm positions
130
+ create_tag(name: "run", from_frame: 1, to_frame: 8)
131
+ set_frame_duration(frame: 1, duration: 80) # repeat for all frames
132
+ export_spritesheet(
133
+ layout: "grid",
134
+ output_path: "character-run.png",
135
+ json_path: "character-run.json",
136
+ json_format: "unity"
137
+ )
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Example 6: App Icon from Reference Image
143
+
144
+ **Request:** "Chuyển logo nΓ y thΓ nh pixel art icon 32x32"
145
+
146
+ **Steps:**
147
+ 1. Import reference image
148
+ 2. Analyze reference (extract palette, brightness map)
149
+ 3. Downsample to 32x32
150
+ 4. Quantize to 16 colors
151
+ 5. Clean up edges manually
152
+ 6. Export at multiple scales (1x, 2x, 4x)
153
+
154
+ **MCP Calls:**
155
+ ```
156
+ import_image(path: "logo.png")
157
+ analyze_reference(path: "logo.png", analyses: ["palette", "brightness"])
158
+ downsample_image(target_width: 32, target_height: 32)
159
+ quantize_palette(target_colors: 16, algorithm: "k_means", dither: false)
160
+ # Manual cleanup with draw_pixels...
161
+ export_sprite(format: "png", scale: 1, output_path: "icon-1x.png")
162
+ export_sprite(format: "png", scale: 2, output_path: "icon-2x.png")
163
+ export_sprite(format: "png", scale: 4, output_path: "icon-4x.png")
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Example 7: Texture Dithering
169
+
170
+ **Request:** "TαΊ‘o texture stone wall 32x32 vα»›i dithering"
171
+
172
+ **Steps:**
173
+ 1. Create 32x32 RGB canvas
174
+ 2. Set stone color palette (browns, grays)
175
+ 3. Draw base stone shapes
176
+ 4. Apply stone dithering texture
177
+ 5. Add depth with Bayer 4x4 dithering
178
+ 6. Export as tileable PNG
179
+
180
+ **MCP Calls:**
181
+ ```
182
+ create_canvas(width: 32, height: 32, color_mode: "RGB")
183
+ set_palette(colors: ["#333333", "#555555", "#777777", "#999999", "#666644"])
184
+ # Draw stone block shapes...
185
+ draw_with_dither(pattern: "stone", color1: "#555555", color2: "#777777", region: {...})
186
+ draw_with_dither(pattern: "bayer_4x4", color1: "#333333", color2: "#555555", region: {...})
187
+ export_sprite(format: "png", scale: 2, output_path: "stone-wall.png")
188
+ ```
@@ -0,0 +1,133 @@
1
+ # Retro & Modern Pixel Art Palettes β€” Full Hex Reference
2
+
3
+ ## Console Palettes
4
+
5
+ ### Game Boy (4 colors)
6
+ ```
7
+ #0F380F #306230 #8BAC0F #9BBC0F
8
+ ```
9
+
10
+ ### Game Boy Gray (4 colors)
11
+ ```
12
+ #000000 #555555 #AAAAAA #FFFFFF
13
+ ```
14
+
15
+ ### NES (54 colors)
16
+ ```
17
+ #7C7C7C #0000FC #0000BC #4428BC #940084 #A80020 #A81000 #881400
18
+ #503000 #007800 #006800 #005800 #004058 #000000 #000000 #000000
19
+ #BCBCBC #0078F8 #0058F8 #6844FC #D800CC #E40058 #F83800 #E45C10
20
+ #AC7C00 #00B800 #00A800 #00A844 #008888 #000000 #000000 #000000
21
+ #F8F8F8 #3CBCFC #6888FC #9878F8 #F878F8 #F85898 #F87858 #FCA044
22
+ #F8B800 #B8F818 #58D854 #58F898 #00E8D8 #787878 #000000 #000000
23
+ #FCFCFC #A4E4FC #B8B8F8 #D8B8F8 #F8B8F8 #F8A4C0 #F0D0B0 #FCE0A8
24
+ #F8D878 #D8F878 #B8F8B8 #B8F8D8 #00FCFC #F8D8F8 #000000 #000000
25
+ ```
26
+
27
+ ### Commodore 64 (16 colors)
28
+ ```
29
+ #000000 #FFFFFF #880000 #AAFFEE #CC44CC #00CC55 #0000AA #EEEE77
30
+ #DD8855 #664400 #FF7777 #333333 #777777 #AAFF66 #0088FF #BBBBBB
31
+ ```
32
+
33
+ ### CGA Mode 4 Palette 1 (4 colors)
34
+ ```
35
+ #000000 #55FFFF #FF55FF #FFFFFF
36
+ ```
37
+
38
+ ### SNES (First 16 of typical palette)
39
+ ```
40
+ #000000 #7F0000 #007F00 #7F7F00 #00007F #7F007F #007F7F #7F7F7F
41
+ #3F3F3F #FF0000 #00FF00 #FFFF00 #0000FF #FF00FF #00FFFF #FFFFFF
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Modern Pixel Art Palettes
47
+
48
+ ### PICO-8 (16 colors)
49
+ ```
50
+ #000000 #1D2B53 #7E2553 #008751 #AB5236 #5F574F #C2C3C7 #FFF1E8
51
+ #FF004D #FFA300 #FFEC27 #00E436 #29ADFF #83769C #FF77A8 #FFCCAA
52
+ ```
53
+
54
+ ### Sweetie 16 by GrafxKid
55
+ ```
56
+ #1A1C2C #5D275D #B13E53 #EF7D57 #FFCD75 #A7F070 #38B764 #257179
57
+ #29366F #3B5DC9 #41A6F6 #73EFF7 #F4F4F4 #94B0C2 #566C86 #333C57
58
+ ```
59
+
60
+ ### DawnBringer DB16
61
+ ```
62
+ #140C1C #442434 #30346D #4E4A4F #854C30 #346524 #D04648 #757161
63
+ #597DCE #D27D2C #8595A1 #6DAA2C #D2AA99 #6DC2CA #DAD45E #DEEED6
64
+ ```
65
+
66
+ ### DawnBringer DB32
67
+ ```
68
+ #000000 #222034 #45283C #663931 #8F563B #DF7126 #D9A066 #EEC39A
69
+ #FBF236 #99E550 #6ABE30 #37946E #4B692F #524B24 #323C39 #3F3F74
70
+ #306082 #5B6EE1 #639BFF #5FCDE4 #CBDBFC #FFFFFF #9BADB7 #847E87
71
+ #696A6A #595652 #76428A #AC3232 #D95763 #D77BBA #8F974A #8A6F30
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Generic Palettes
77
+
78
+ ### Retro 16
79
+ ```
80
+ #000000 #9D9D9D #FFFFFF #BE2633 #E06F8B #493C2B #A46422 #EB8931
81
+ #F7E26B #2F484E #44891A #A3CE27 #1B2632 #005784 #31A2F2 #B2DCEF
82
+ ```
83
+
84
+ ### Retro 8
85
+ ```
86
+ #000000 #FFFFFF #FF0000 #00FF00 #0000FF #FFFF00 #FF00FF #00FFFF
87
+ ```
88
+
89
+ ### Grayscale 4
90
+ ```
91
+ #000000 #555555 #AAAAAA #FFFFFF
92
+ ```
93
+
94
+ ### Grayscale 8
95
+ ```
96
+ #000000 #242424 #494949 #6D6D6D #929292 #B6B6B6 #DBDBDB #FFFFFF
97
+ ```
98
+
99
+ ### Grayscale 16
100
+ ```
101
+ #000000 #111111 #222222 #333333 #444444 #555555 #666666 #777777
102
+ #888888 #999999 #AAAAAA #BBBBBB #CCCCCC #DDDDDD #EEEEEE #FFFFFF
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Usage in MCP Calls
108
+
109
+ ### Set palette for Game Boy sprite
110
+ ```
111
+ set_palette(sprite_path, colors: ["#0F380F", "#306230", "#8BAC0F", "#9BBC0F"])
112
+ ```
113
+
114
+ ### Set palette for PICO-8 sprite
115
+ ```
116
+ set_palette(sprite_path, colors: [
117
+ "#000000", "#1D2B53", "#7E2553", "#008751",
118
+ "#AB5236", "#5F574F", "#C2C3C7", "#FFF1E8",
119
+ "#FF004D", "#FFA300", "#FFEC27", "#00E436",
120
+ "#29ADFF", "#83769C", "#FF77A8", "#FFCCAA"
121
+ ])
122
+ ```
123
+
124
+ ### Quantize to retro palette
125
+ ```
126
+ quantize_palette(
127
+ sprite_path,
128
+ target_colors: 16,
129
+ algorithm: "median_cut",
130
+ convert_to_indexed: true,
131
+ dither: true
132
+ )
133
+ ```