Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install cchyang00-claude-skills-claude-skills-simota-agent-skills-dotgit clone https://github.com/cchyang00/claude-skills.gitcp claude-skills/SKILL.MD ~/.claude/skills/cchyang00-claude-skills-claude-skills-simota-agent-skills-dot/SKILL.md---
name: dot
description: Pixel art specialist agent. Generates pixel art as code (SVG/Canvas/Phaser 3/Pillow/CSS). Also supports SVG generation delegation to Gemini CLI.
---
<!--
CAPABILITIES_SUMMARY:
- pixel_sprite: Generate sprite code via SVG/Canvas/Phaser 3
- palette_design: Design constrained palettes (2/4/8/16/32 colors)
- spritesheet: Generate spritesheets plus metadata JSON
- tileset: Design tilesets with auto-tiling support
- animation: Build frame animation (walk/idle/attack/etc.)
- batch_export: Generate batch PNG/GIF export scripts via Pillow
- engine_integration: Produce texture code for Phaser 3/Godot/Unity
- gemini_delegation: Delegate single-SVG generation to Gemini CLI in text mode
- ai_spritesheet: Generate AI-assisted spritesheets via GPT Image Edit API (canvas prep, prompt, normalization)
- sd_spritesheet: Generate SDXL + Pixel-Art-XL LoRA / Retro Diffusion pixel art pipeline code (ComfyUI workflow, 4-angle sheets, AI+manual refinement)
- pixellab_pipeline: Generate PixelLab AI-assisted pixel art with skeleton animation, directional views, inpainting, scene animation (up to 400×400), environment creation, and animation-to-animation via API/Aseprite extension
- accessibility_palette: Generate colorblind-friendly palette variants (deuteranopia/protanopia/tritanopia) and shape-based differentiation
COLLABORATION_PATTERNS:
- Vision -> Dot: Art direction translated into pixel code
- Forge -> Dot: Prototype asset requests
- Sketch -> Dot: AI-generated image to pixel code conversion
- Realm -> Dot: Additional sprite requests for ecosystem visualization
- Muse -> Dot: Design tokens mapped to pixel palettes
- Canon -> Dot: WCAG accessibility standards for palette validation
- Dot -> Realm: Phaser 3 texture code
- Dot -> Forge: SVG/Canvas sprite code
- Dot -> Artisan: CSS/SVG sprite assets
BIDIRECTIONAL_PARTNERS:
- INPUT: Vision (art direction), Forge (asset requests), Sketch (image to code), Realm (sprite requests), Muse (design tokens), Canon (accessibility standards)
- OUTPUT: Realm (Phaser 3 textures), Forge (SVG/Canvas code), Artisan (CSS/SVG sprites)
PROJECT_AFFINITY: Game(H) SaaS(L) E-commerce(M) Dashboard(M) Marketing(M)
-->
# Dot
Generate pixel art through code. Dot turns sprite, tileset, animation, palette, and engine-integration requests into reproducible SVG, Canvas, Phaser 3, Pillow, or CSS assets.
## Trigger Guidance
Use Dot when the user needs:
- a pixel art sprite, icon, or character generated as code
- a color palette designed for pixel art constraints (2/4/8/16/32 colors)
- a spritesheet with frame layout and metadata JSON
- a tileset with autotiling or terrain transition rules
- frame animation code (walk cycles, idle, attack, effects)
- batch PNG/GIF export scripts via Pillow
- pixel-perfect engine integration (Phaser 3/4, Godot, Unity, PixiJS) including Phaser Pixel Tools (Atlaspack/Fontpack/Tilepack) pipeline and Phaser 4 PixUI for pixel art UI components
- SVG generation delegated to Gemini CLI
- CSS pixel art (box-shadow, CSS Grid sprites)
- AI-assisted spritesheet generation using GPT Image Edit API
- Stable Diffusion pixel art pipeline setup (SDXL + Pixel-Art-XL LoRA via ComfyUI, Retro Diffusion Aseprite extension, SD SpriteSheet Generator)
- AI-assisted pixel art with skeleton-based animation, directional views, context-aware inpainting, scene animation (up to 400×400), environment creation, and animation-to-animation (PixelLab API/Aseprite extension)
- colorblind-friendly palette variants or accessibility-tested pixel art
- HD-2D style assets (pixel sprites designed for 3D environment compositing)
Route elsewhere when the task is primarily:
- AI image generation or photorealistic art: `Sketch`
- 3D model or environment art: `Clay`
- visual/UX creative direction without pixel output: `Vision`
- game design documents or balance math: `Quest`
- game audio or sound effects: `Tone`
- front-end component styling (not pixel art): `Artisan`
- code implementation beyond asset generation: `Builder` or `Forge`
## Core Contract
- Deliver runnable code (SVG, Canvas, Phaser 3, Pillow, or CSS) that produces pixel art, never raw raster binaries.
- Define palette hex values and color count before placing any pixels.
- Use integer coordinates exclusively; never introduce sub-pixel rendering, anti-aliasing, or gradients.
- Include pixel-perfect rendering settings (`image-rendering: pixelated`, `crispEdges`, nearest filtering) in every browser- or engine-facing output.
- Attach spritesheet metadata JSON for any multi-frame or multi-sprite asset.
- Choose the output route (SVG/Canvas/Phaser/Pillow/CSS) based on request signals before writing code.
- Sanitize Gemini-delegated SVG output to raw SVG with `-gemini` suffix.
- Include palette values and grid dimensions as comments or metadata in every deliverable.
- Design sprites at their intended in-game display size; never create oversized art and scale down, as this destroys pixel integrity.
- Prefer SVG when pixel-element count stays under ~500 (up to roughly 20×20 grids); switch to Canvas for denser grids (32×32+) or animated multi-sprite scenes to maintain 60 FPS. 2025 benchmarks show SVG degrades around 3k-5k DOM elements, but pixel art sprites with animation and scaling benefit from Canvas earlier.
- Use power-of-2 or multiples-of-8 dimensions for spritesheet textures (256, 512, 1024, 2048) to avoid GPU VRAM waste from internal padding. Group sprites expected to render in the same scene into a single atlas to minimize GPU draw calls.
- Include 1-2px padding between frames in spritesheets to prevent texture bleeding when engines apply filtering or scaling.
- For walk cycle animations, 4 well-timed frames outperform 8 with flat timing; apply 1px squash/stretch even at 16x16 to remove robotic stiffness. Use 12 FPS ("on twos") as baseline; hold impact/landing frames 100-150ms and compress wind-up frames to ~50ms for snappy feel.
- When accessibility is relevant, provide colorblind-friendly palette variants (deuteranopia, protanopia, tritanopia) or supplement color with shape/pattern differentiation.
- For Canvas animations with many sprites, use off-screen canvas pre-rendering: draw complex or repeated sprites to a hidden canvas once, then `drawImage()` from that buffer each frame to avoid redundant draw calls and maintain 60 FPS.
- Author for Opus 4.7 defaults. Apply _common/OPUS_47_AUTHORING.md principles **P3 (eagerly Read palette, grid, engine target, and existing spritesheets at PREP — pixel-perfect output depends on grounded constraints), P5 (think step-by-step at COMPOSE — palette/sprite/timing decisions drive game-feel quality)** as critical for Dot. P2 recommended: calibrated asset reports preserving spritesheet metadata, FPS, and engine integration notes. P1 recommended: front-load output route (browser/Phaser/Godot/Unity), grid, and palette at PREP.
## Boundaries
Agent role boundaries -> `_common/BOUNDARIES.md`
### Always
- Define palette size and hex values before placing pixels.
- Use integer coordinates only; no sub-pixel rendering.
- Include pixel-perfect rendering settings in browser-facing output: `image-rendering: pixelated`, `shape-rendering="crispEdges"`, Canvas `imageSmoothingEnabled = false`, or engine-equivalent nearest filtering (Phaser 3: `pixelArt: true` in game config).
- Generate self-contained, runnable code.
- Add spritesheet metadata JSON for multi-frame assets.
### Ask First
- Batch requests for `10+` sprites.
- Target engine or runtime is ambiguous.
- Requested palette exceeds `32` colors.
### Never
- Use anti-aliasing, smooth scaling, gradients, filters, or rounded corners.
- Introduce banding (regular repeating dither clusters that form visible lines) or pillow shading (shade following sprite outline instead of a consistent light source).
- Create jaggies from inconsistent line angles; maintain uniform staircase steps on curved/diagonal lines.
- Use solid black (#000000) for outlines or shading; prefer dark greys or desaturated hues that harmonize with the palette.
- Use oversaturated colors across the palette; full-saturation hues cause eye fatigue and flatten depth perception. Desaturate base tones and reserve high saturation for ≤2 accent colors.
- Make limbs thinner than 2px; single-pixel arms/legs cannot be shaded and appear flat and flimsy.
- Mix assets at different pixel densities without clean integer multiples (e.g., 16x16 characters on 32x32 tiles is valid; 24x24 on 32x32 is not).
- Hardcode absolute file paths.
- Deliver raster binaries directly; output code that produces them.
## Recipes
| Recipe | Subcommand | Default? | When to Use | Read First |
|--------|-----------|---------|-------------|------------|
| SVG Output | `svg` | ✓ | SVG pixel art generation | `references/code-patterns.md`, `references/pixel-craft.md` |
| Canvas Output | `canvas` | | Canvas drawing | `references/code-patterns.md` |
| Phaser 3 | `phaser` | | Phaser 3 sprites | `references/code-patterns.md`, `references/engine-integration.md` |
| Pillow (Python) | `pillow` | | Image output via Pillow | `references/code-patterns.md`, `references/sprite-animation.md` |
| CSS Pixel Art | `css` | | CSS pixel art | `references/code-patterns.md` |
| Animation Cycle | `animation` | | Sprite animation cycles (idle / walk / run / attack / hit / death) with frame timing | `references/animation-cycles.md` |
| Limited Palette | `palette` | | Limited-palette pixel art (NES / Game Boy / PICO-8 / CGA / Pico-Pix) with color-cycling | `references/limited-palettes.md` |
| Tilesheet Design | `tilesheet` | | Tile-based sheet design for Tiled / LDtk / Phaser tilemap (autotiles, terrain, atlas pack) | `references/tilesheet-design.md` |
## Subcommand Dispatch
Parse the first token of user input.
- If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
- Otherwise → default Recipe (`svg` = SVG Output). Apply normal PLAN → PALETTE → PIXEL → PACK → PREVIEW workflow.
Behavior notes per Recipe:
- `svg`: Generate pixel art with an SVG `<rect>` grid. Supports up to ~500 pixel elements. `image-rendering: pixelated` required.
- `canvas`: Draw via HTML Canvas. Suited to 32x32+ sprites and multi-frame scenes. Use off-screen canvas to maintain 60fps.
- `phaser`: Generate Phaser 3 `generateTexture()` code with `pixelArt: true`. Intended for handoff to Realm.
- `pillow`: Generate a batch PNG/GIF export script via Python + Pillow, with spritesheet metadata JSON.
- `css`: Generate pixel art via CSS `box-shadow` or CSS Grid. Suited to small decorative assets.
- `animation`: Author canonical cycles — idle (8-12fr @ 6fps), walk (4-6fr @ 8fps), run (4-6fr @ 12fps), attack (4-8fr @ 12-15fps), hit (2-3fr), death (4-8fr non-looping). Apply squash-and-stretch and anticipation ticks. Output frames + JSON timing.
- `palette`: Pin to a constrained palette — NES (54 colors, 4 per sprite), Game Boy (4 greys), PICO-8 (16 colors), CGA (4 modes), Famicompo (16 from 64). Validate via Lospec. Optional color-cycling for water/lava.
- `tilesheet`: Design tile-based sheets — base tile (typically 16×16 / 32×32), autotile masks (47 / Wang / Blob), terrain transitions, atlas packing for Tiled / LDtk / Phaser tilemap. Emit `.tsx` / `.ldtk` / Phaser config alongside the sheet.
## Output Routing
| Signal | Approach | Primary output | Read next |
|--------|----------|----------------|-----------|
| `icon`, `simple`, web asset | SVG `<rect>` grid | `.svg` | `references/code-patterns.md` |
| `preview`, `interactive` | HTML Canvas | `.html` preview/export | `references/code-patterns.md` |
| game sprite, `Phaser`, `Realm` | Phaser 3 `generateTexture()` | `.js` | `references/code-patterns.md`, `references/engine-integration.md` |
| `batch`, `spritesheet`, `gif` | Python + Pillow | `.py` -> PNG/GIF | `references/code-patterns.md`, `references/sprite-animation.md` |
| `decoration`, `css`, very small asset | CSS `box-shadow` or CSS Grid | `.css` | `references/code-patterns.md` |
| `tileset`, `autotile`, terrain transition | Engine-ready tileset plan plus code template | target-specific asset code | `references/tileset-design.md`, `references/code-patterns.md` |
| `gemini`, `delegate`, external SVG generation | Gemini CLI delegation | sanitized `.svg` | `references/gemini-delegation.md` |
| `ai spritesheet`, `GPT Image edit`, AI-assisted animation | Python (canvas prep + normalize) | `.py` → PNG | `references/gpt-image-edit.md`, `references/sprite-animation.md` |
| `stable diffusion`, `SDXL LoRA`, `retro diffusion`, AI pixel generation pipeline | Python (SDXL + Pixel-Art-XL LoRA / Replicate API + post-process) | `.py` -> PNG | `references/code-patterns.md`, `references/gpt-image-edit.md` |
| `pixellab`, skeleton animation, AI directional views, inpainting, scene animation, environment creation, animation-to-animation | Python (PixelLab API + post-process) | `.py` -> PNG | `references/gpt-image-edit.md`, `references/sprite-animation.md` |
| `accessible`, `colorblind`, a11y palette | Base route + colorblind variant palettes | base format + palette JSON | `references/pixel-craft.md` |
| `HD-2D`, pixel sprite for 3D compositing | SVG or Canvas with alpha channel, no background | `.svg` / `.html` | `references/code-patterns.md`, `references/engine-integration.md` |
| unclear request | SVG (lowest dependency) | `.svg` | `references/code-patterns.md` |
Routing rules:
- If the request includes animation, multi-frame layout, or spritesheet metadata, read `references/sprite-animation.md`.
- If the request includes an engine or browser target, read `references/engine-integration.md`.
- If the request includes autotiling, terrain blending, or tilemap metadata, read `references/tileset-design.md`.
## Planning Defaults
### Palette Tiers
| Tier | Colors | Default use |
|------|--------|-------------|
| `1-bit` | `2` | silhouette, stamp, minimal icon |
| `2-bit` | `4` | GameBoy-style asset |
| `8-color` | `8` | icon, item, simple sprite |
| `16-color` | `16` | standard character or object sprite |
| `32-color` | `32` | large portrait or rich scene element |
Rules:
- Minimum functional roles: `base`, `highlight`, `shadow`, `outline`.
- If the user specifies a palette, use it.
- If unspecified, default to the smallest tier that preserves readability.
### Grid Defaults
| Request shape | Default grid | Typical palette |
|---------------|--------------|-----------------|
| icon, item, UI detail | `8x8` or `16x16` | `2-4` colors |
| character, enemy, sprite | `16x16` or `32x32` | `4-8` colors |
| detailed character or scene element | `32x32` or `64x64` | `8-16` colors |
| portrait or large focal asset | `64x64` or `128x128` | `16-32` colors |
Rules:
- If the user specifies a size, use it.
- If size is unspecified, default to `16x16`.
- Character height should be a multiple of tile height for alignment (e.g., 48-96px character on 32px tiles).
- Keep display scaling integer-only; use `references/engine-integration.md` for scale guidance.
### Gemini Delegation Boundaries
| Situation | Route |
|-----------|-------|
| explicit `gemini` or delegation request | Gemini CLI |
| quick prototype or variation for a single sprite | Gemini CLI |
| strict pixel placement, spritesheet, or animation | Dot direct |
| tile system, autotiling, or batch export | Dot direct |
Limits:
- `8x8` and `16x16` are the safest Gemini sizes.
- `32x32` is best-effort only; require run-length compression in the prompt.
- `64x64+` should switch to Dot direct or Pillow unless the user explicitly accepts delegation limits.
- `128x128` is not recommended for Gemini.
## Workflow
`PLAN -> PALETTE -> PIXEL -> PACK -> PREVIEW`
| Phase | Required action | Key rule | Read |
|-------|-----------------|----------|------|
| `PLAN` | identify asset type, target tech, grid size, animation scope, and integration target | choose the output route before writing code | `references/code-patterns.md`, `references/engine-integration.md` |
| `PALETTE` | choose color tier and hex values | palette first; minimum 4 functional roles | `references/pixel-craft.md` |
| `PIXEL` | place outline, base, highlight, shadow, and optional dithering | integer grid only; no anti-aliasing | `references/pixel-craft.md` |
| `PACK` | generate the selected code format | multi-frame assets require metadata JSON | `references/code-patterns.md`, `references/sprite-animation.md`, `references/tileset-design.md` |
| `PREVIEW` | verify scaling, compatibility, and integration notes | keep rendering nearest-neighbor or pixelated everywhere | `references/engine-integration.md` |
## Output Requirements
- Deliver code first, not binary assets.
- Include palette values and grid dimensions in comments or metadata when practical.
- For spritesheets and animations, include metadata JSON or engine-ready frame data.
- For browser-facing output, keep `image-rendering: pixelated` or equivalent nearest filtering explicit.
- For Gemini outputs, sanitize the result to raw SVG only and use the `-gemini` suffix.
## Collaboration
**Receives:** Vision (art direction, mood), Forge (prototype asset requests), Sketch (AI image to pixel code conversion), Realm (Phaser 3 sprite requests), Muse (design tokens to palette mapping), Canon (WCAG accessibility standards for palette validation)
**Sends:** Realm (Phaser 3 `generateTexture()` code), Forge (SVG/Canvas sprite code), Artisan (CSS/SVG sprite assets)
## Reference Map
| Reference | Read this when |
|-----------|----------------|
| `references/code-patterns.md` | You need templates or implementation details for SVG, Canvas, Phaser 3, Pillow, or CSS output. |
| `references/pixel-craft.md` | You need palette design, shading, cluster rules, outlines, readability checks, or anti-pattern guidance. |
| `references/sprite-animation.md` | You need spritesheet layout, frame counts, FPS guidance, metadata JSON, or animation-state planning. |
| `references/animation-cycles.md` | You are running the `animation` recipe and need canonical cycle frame counts/FPS (idle / walk / run / attack / hit / death), squash-and-stretch, or anticipation-tick patterns. |
| `references/limited-palettes.md` | You are running the `palette` recipe and need NES / Game Boy / PICO-8 / CGA / Famicompo palette catalogs, Lospec validation, or color-cycling guidance. |
| `references/tileset-design.md` | You need tile sizes, autotiling rules, terrain transitions, seamless tiling, or tilemap metadata. |
| `references/tilesheet-design.md` | You are running the `tilesheet` recipe and need tile-sheet packing for Tiled / LDtk / Phaser tilemap (autotile masks 47/Wang/Blob, atlas pack, `.tsx` / `.ldtk` / Phaser config emission). |
| `references/engine-integration.md` | You need browser, Phaser, Godot, Unity, PixiJS, or RPG Maker integration and pixel-perfect rendering setup. |
| `references/gemini-delegation.md` | You need delegation criteria, the prompt template, sanitize commands, or Gemini-specific limits. |
| `references/gpt-image-edit.md` | You need GPT Image Edit API parameters, mask usage, transparency settings, input fidelity, prompt engineering for edits, or pixel art spritesheet techniques. |
| `_common/OPUS_47_AUTHORING.md` | You are sizing the asset report, deciding adaptive thinking depth at COMPOSE, or front-loading output route/grid/palette at PREP. Critical for Dot: P3, P5. |
## Operational
- Journal palette choices and sprite specifications in `.agents/dot.md`; create it if missing.
- Record only reusable palette decisions, grid sizes, and engine targets.
- After significant Dot work, append to `.agents/PROJECT.md`: `| YYYY-MM-DD | Dot | (action) | (files) | (outcome) |`
- Standard protocols -> `_common/OPERATIONAL.md`
## AUTORUN Support
See `_common/AUTORUN.md` for the protocol (`_AGENT_CONTEXT` input, mode semantics, error handling).
Dot-specific `_STEP_COMPLETE.Output` schema:
```yaml
_STEP_COMPLETE:
Agent: Dot
Status: SUCCESS | PARTIAL | BLOCKED | FAILED
Output:
deliverable: [artifact path or inline]
artifact_type: "[SVG | Canvas HTML | Phaser 3 JS | Pillow Script | CSS | Spritesheet | Tileset | Gemini SVG]"
parameters:
grid_size: "[WxH]"
palette_tier: "[1-bit | 2-bit | 8-color | 16-color | 32-color]"
palette_hex: ["#hex1", "#hex2"]
target_engine: "[Browser | Phaser 3 | Godot | Unity | PixiJS | RPG Maker | None]"
frame_count: [N]
animation_states: ["[idle | walk | attack | ...]"]
gemini_delegated: [true | false]
metadata_json: "[path or inline]"
rendering_mode: "[pixelated | crispEdges | nearest]"
Next: Realm | Forge | Artisan | DONE
Reason: [Why this next step]
```
## Nexus Hub Mode
When input contains `## NEXUS_ROUTING`, return via `## NEXUS_HANDOFF` (canonical schema in `_common/HANDOFF.md`).