@leejungkiin/awkit 1.6.3 → 1.6.5
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.
- package/bin/awk.js +70 -5
- package/bin/claude-generators.js +2 -2
- package/bin/cursor-generators.js +256 -0
- package/core/CURSOR.md +47 -0
- package/core/CURSOR_DETAILED.md +102 -0
- package/package.json +3 -2
- package/scripts/automation-gate.js +402 -0
- package/scripts/bootstrap.js +122 -0
- package/scripts/harvest.js +253 -0
- package/scripts/obsidian-sync.js +494 -0
- package/scripts/rename-to-awk.js +143 -0
- package/skills/app-store-screenshots/SKILL.md +86 -0
- package/skills/app-store-screenshots/resources/mockup.png +0 -0
- package/skills/aseprite-artist/SKILL.md +346 -0
- package/skills/aseprite-artist/resources/examples.md +188 -0
- package/skills/aseprite-artist/resources/palettes.md +133 -0
- package/skills/pixel-art-creator/SKILL.md +89 -0
- package/skills/semantic-qa-agent/SKILL.md +68 -0
- package/skills/symphony-enforcer/examples/three-phase.md +19 -11
- package/templates/project-identity/android.json +2 -0
- package/templates/project-identity/backend-nestjs.json +2 -0
- package/templates/project-identity/expo.json +2 -0
- package/templates/project-identity/ios.json +2 -0
- package/templates/project-identity/web-nextjs.json +2 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: app-store-screenshots
|
|
3
|
+
description: Specializes in generating high-conversion App Store and Google Play screenshots using Next.js and html-to-image. Handles design, copywriting, and bulk export at correct resolutions.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
trigger: conditional
|
|
6
|
+
activation_keywords:
|
|
7
|
+
- "app store screenshots"
|
|
8
|
+
- "play store screenshots"
|
|
9
|
+
- "marketing screenshots"
|
|
10
|
+
- "marketing assets"
|
|
11
|
+
- "screenshot generator"
|
|
12
|
+
- "android screenshots"
|
|
13
|
+
- "ios screenshots"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# 📱 App Store & Google Play Screenshots Generator
|
|
17
|
+
|
|
18
|
+
This skill empowers you to build professional screenshot generators that render as **advertisements**, not just UI showcases. It leverages Next.js and `html-to-image` to ensure high-fidelity exports at all required Apple and Google resolutions.
|
|
19
|
+
|
|
20
|
+
## 🚀 Activation Triggers
|
|
21
|
+
Trigger this skill when asked to:
|
|
22
|
+
- "Build/Create App Store screenshots"
|
|
23
|
+
- "Generate marketing assets for the Play Store"
|
|
24
|
+
- "Design exportable screenshots for iOS/Android"
|
|
25
|
+
|
|
26
|
+
## 🛠️ Resources
|
|
27
|
+
- **Mockup**: iPhone mockup at `./resources/mockup.png`.
|
|
28
|
+
- **Note**: All other device frames (Android, iPad, Tablet) are rendered via CSS-only components defined in this skill.
|
|
29
|
+
|
|
30
|
+
## 📋 Interaction Flow
|
|
31
|
+
|
|
32
|
+
### Phase 1: Brand & Asset Discovery
|
|
33
|
+
Before any code is written, you MUST collect:
|
|
34
|
+
1. **Source Screenshots**: PNG captures of the actual app UI.
|
|
35
|
+
2. **App Icon**: PNG icon for branding slides.
|
|
36
|
+
3. **Brand Palette**: Accent, background, and text colors.
|
|
37
|
+
4. **Style Direction**: e.g., Dark/Moody, Clean/Minimal, Bold/Vibrant.
|
|
38
|
+
5. **Feature Priority**: Top 3-5 outcomes/benefits the app provides.
|
|
39
|
+
|
|
40
|
+
### Phase 2: Narrative & Copywriting
|
|
41
|
+
- **Rule**: One idea per slide.
|
|
42
|
+
- **Copy**: 3-5 words per headline. Readable at thumbnail size.
|
|
43
|
+
- **Tone**: Focus on outcomes, not feature lists.
|
|
44
|
+
|
|
45
|
+
### Phase 3: Scaffolding (Next.js)
|
|
46
|
+
The generator is always a single-file Next.js page (`page.tsx`) for simplicity.
|
|
47
|
+
- **Library**: `html-to-image` (Native SVG serialization).
|
|
48
|
+
- **Setup**: `bun create-next-app` (preferred) or `npx`.
|
|
49
|
+
|
|
50
|
+
### Phase 4: Resolution-Independent Design
|
|
51
|
+
Use the following coordinates and sizing logic provided in the reference instructions below.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 📖 Reference Instructions (The Core Engine)
|
|
56
|
+
|
|
57
|
+
Build a Next.js page that renders App Store **and** Google Play screenshots as **advertisements** (not UI showcases) and exports them via `html-to-image` at Apple's and Google's required resolutions.
|
|
58
|
+
|
|
59
|
+
### Supported Devices
|
|
60
|
+
- **iPhone** (1320x2868)
|
|
61
|
+
- **iPad** (2064x2752)
|
|
62
|
+
- **Android Phone** (1080x1920)
|
|
63
|
+
- **Android Tablet 7" & 10"** (Portrait & Landscape)
|
|
64
|
+
- **Feature Graphic** (1024x500)
|
|
65
|
+
|
|
66
|
+
### ⚠️ Critical Implementation Rules
|
|
67
|
+
- **Double-Capture Trick**: `html-to-image` requires two sequential calls to warm up fonts/images.
|
|
68
|
+
- **Data URI Preloading**: ALL images (mockups, screenshots) MUST be converted to base64 data URIs at load time to prevent blank exports.
|
|
69
|
+
- **Canvas Scaling**: Use `ResizeObserver` and `transform: scale()` for the preview grid, but render at true resolution for export.
|
|
70
|
+
|
|
71
|
+
### [Core Device Geometries]
|
|
72
|
+
(Included in full in the implementation)
|
|
73
|
+
- iPhone Mockup Ratios (based on `./resources/mockup.png`)
|
|
74
|
+
- CSS-only frame components for iPad and Android.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
> [!TIP]
|
|
79
|
+
> **Narrative Arc**: Start with a Hero (Main Benefit), follow with Differentiators, and end with a "Trust/More Features" slide.
|
|
80
|
+
|
|
81
|
+
> [!IMPORTANT]
|
|
82
|
+
> **Localization**: Supports RTL-native layouts for Arabic/Hebrew by mirroring asymmetric compositions intentionally.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
*This skill was shipped by Antigravity from ParthJadhav/app-store-screenshots.*
|
|
Binary file
|
|
@@ -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
|
+
```
|