Dot
Generating pixel art as code (SVG/Canvas/Phaser 3/Pillow/CSS). Also supports SVG generation delegation to Antigravity CLI. Use when generating pixel-art assets as code, building retro/8-bit visuals, or composing sprite sheets and tile maps for games.
MCP get_skill({ skillId: "dot-acc7b363" })Use this skill with your agent
Create a free account and connect via MCP
<!--
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 Antigravity CLI in text mode
- ai_spritesheet: Generate AI-assisted spritesheets via GPT Image 2 (`gpt-image-2`) Edit API (canvas prep, prompt, normalization) [Source: developers.openai.com/api/docs/models/gpt-image-2, 2026-04]
- 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 Antigravity CLI
- CSS pixel art (box-shadow, CSS Grid sprites)
- AI-assisted spritesheet generation using GPT Image 2 (`gpt-image-2`) 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 `-agy` 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.8 defaults. Apply _common/OPUS_48_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
Single source of truth for Recipe definitions. The Notes column captures the unique technical behavior per Recipe; the Signal Keywords sub-table below maps natural-language input to Recipes when no explicit subcommand is given.
| Recipe | Subcommand | Default? | When to Use | Primary output | Notes | Read First |
|--------|-----------|---------|-------------|----------------|-------|------------|
| SVG Output | `svg` | ✓ | SVG pixel art generation; icons, simple sprites, web assets | `.svg` | SVG `<rect>` grid; supports up to ~500 pixel elements; `image-rendering: pixelated` required | `reference/code-patterns.md`, `reference/pixel-craft.md` |
| Canvas Output | `canvas` | | Canvas drawing; previews, interactive, 32x32+ sprites, multi-frame scenes | `.html` preview/export | HTML Canvas; use off-screen canvas to maintain 60fps | `reference/code-patterns.md` |
| Phaser 3 | `phaser` | | Phaser 3 sprites; game sprites, Realm handoff | `.js` | `generateTexture()` with `pixelArt: true`; intended for Realm | `reference/code-patterns.md`, `reference/engine-integration.md` |
| Pillow (Python) | `pillow` | | Batch PNG/GIF export, spritesheets, AI-assisted pipelines | `.py` → PNG/GIF | Python + Pillow with spritesheet metadata JSON | `reference/code-patterns.md`, `reference/sprite-animation.md` |
| CSS Pixel Art | `css` | | CSS pixel art; decorative, very small assets | `.css` | CSS `box-shadow` or CSS Grid | `reference/code-patterns.md` |
| Animation Cycle | `animation` | | Sprite animation cycles (idle / walk / run / attack / hit / death) with frame timing | frames + JSON timing | 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. | `reference/animation-cycles.md` |
| Limited Palette | `palette` | | Limited-palette pixel art (NES / Game Boy / PICO-8 / CGA / Pico-Pix) with color-cycling | base format + palette JSON | NES (54 colors, 4 per sprite), Game Boy (4 greys), PICO-8 (16), CGA (4 modes), Famicompo (16 from 64). Validate via Lospec. | `reference/limited-palettes.md` |
| Tilesheet Design | `tilesheet` | | Tile-based sheet design for Tiled / LDtk / Phaser tilemap (autotiles, terrain, atlas pack) | target-specific asset code | Base tile (typically 16×16 / 32×32), autotile masks (47 / Wang / Blob), terrain transitions; emits `.tsx` / `.ldtk` / Phaser config | `reference/tilesheet-design.md` |
| Antigravity Delegation | `agy` | | Single-SVG generation delegated to Antigravity CLI | sanitized `.svg` | Sanitize output to raw SVG with `-agy` suffix. Safe sizes: 8x8 / 16x16; 32x32 best-effort; 64x64+ switch to Dot direct. | `reference/antigravity-delegation.md` |
| AI Spritesheet | `ai-sheet` | | AI-assisted spritesheet via GPT Image 2 (`gpt-image-2`) Edit API / Stable Diffusion (SDXL + Pixel-Art-XL LoRA, Retro Diffusion) / PixelLab (skeleton animation, directional views, inpainting, scene animation, environment) | `.py` → PNG | Python pipeline with canvas prep, prompt engineering, normalization, post-process | `reference/gpt-image-edit.md`, `reference/sprite-animation.md` |
| Accessible Palette | `a11y` | | Colorblind-friendly palette variants (deuteranopia/protanopia/tritanopia) and shape-based differentiation | base format + palette JSON | Base route + colorblind variants; supplement color with shape/pattern | `reference/pixel-craft.md` |
| HD-2D | `hd2d` | | Pixel sprite designed for 3D environment compositing | `.svg` / `.html` | SVG or Canvas with alpha channel, no background | `reference/code-patterns.md`, `reference/engine-integration.md` |
### Signal Keywords → Recipe
For natural-language input without an explicit subcommand. Subcommand match wins if both apply.
| Keywords | Recipe |
|----------|--------|
| `icon`, `simple`, web asset | `svg` |
| `preview`, `interactive` | `canvas` |
| game sprite, `Phaser`, `Realm` | `phaser` |
| `batch`, `spritesheet`, `gif` | `pillow` |
| `decoration`, `css`, very small asset | `css` |
| `tileset`, `autotile`, terrain transition | `tilesheet` |
| `agy`, `delegate`, external SVG generation | `agy` |
| `ai spritesheet`, `GPT Image 2`, `GPT Image edit`, `gpt-image-2`, `stable diffusion`, `SDXL LoRA`, `retro diffusion`, `pixellab`, skeleton animation, AI directional views, inpainting, scene animation, environment creation, animation-to-animation | `ai-sheet` |
| `accessible`, `colorblind`, a11y palette | `a11y` |
| `HD-2D`, pixel sprite for 3D compositing | `hd2d` |
| unclear request | `svg` (lowest dependency) |
## Subcommand Dispatch
Parse the first token of user input:
- If it matches a Recipe Subcommand in the Recipes table → activate that Recipe; load only the "Read First" column files at the initial step.
- Otherwise → check the Signal Keywords sub-table for natural-language match.
- Fallback → default Recipe (`svg` = SVG Output). Apply the normal PLAN → PALETTE → PIXEL → PACK → PREVIEW workflow.
Cross-cutting routing rules (apply on top of Recipe selection):
- If the request includes animation, multi-frame layout, or spritesheet metadata, read `reference/sprite-animation.md`.
- If the request includes an engine or browser target, read `reference/engine-integration.md`.
- If the request includes autotiling, terrain blending, or tilemap metadata, read `reference/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 `reference/engine-integration.md` for scale guidance.
### Antigravity CLI Delegation Boundaries
> **agy is OPTIONAL** — when AVAILABLE at PREFLIGHT, Dot may delegate single-SVG generation to agy. When UNAVAILABLE or RUNTIME-BROKEN, all routes fall back to "Dot direct" without aborting. Per `_common/MULTI_ENGINE_RECIPE.md §Base Engine Policy`.
| Situation | Route (when agy AVAILABLE) | Fallback (when agy UNAVAILABLE) |
|-----------|---------------------------|--------------------------------|
| explicit `agy` or delegation request | Antigravity CLI | Dot direct + warn user |
| quick prototype or variation for a single sprite | Antigravity CLI | Dot direct |
| strict pixel placement, spritesheet, or animation | Dot direct | Dot direct |
| tile system, autotiling, or batch export | Dot direct | Dot direct |
Limits (apply only when delegating to agy):
- `8x8` and `16x16` are the safest sizes for delegation.
- `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 Antigravity CLI delegation.
## 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 | `reference/code-patterns.md`, `reference/engine-integration.md` |
| `PALETTE` | choose color tier and hex values | palette first; minimum 4 functional roles | `reference/pixel-craft.md` |
| `PIXEL` | place outline, base, highlight, shadow, and optional dithering | integer grid only; no anti-aliasing | `reference/pixel-craft.md` |
| `PACK` | generate the selected code format | multi-frame assets require metadata JSON | `reference/code-patterns.md`, `reference/sprite-animation.md`, `reference/tileset-design.md` |
| `PREVIEW` | verify scaling, compatibility, and integration notes | keep rendering nearest-neighbor or pixelated everywhere | `reference/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 `-agy` 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 |
|-----------|----------------|
| `reference/code-patterns.md` | You need templates or implementation details for SVG, Canvas, Phaser 3, Pillow, or CSS output. |
| `reference/pixel-craft.md` | You need palette design, shading, cluster rules, outlines, readability checks, or anti-pattern guidance. |
| `reference/sprite-animation.md` | You need spritesheet layout, frame counts, FPS guidance, metadata JSON, or animation-state planning. |
| `reference/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. |
| `reference/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. |
| `reference/tileset-design.md` | You need tile sizes, autotiling rules, terrain transitions, seamless tiling, or tilemap metadata. |
| `reference/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). |
| `reference/engine-integration.md` | You need browser, Phaser, Godot, Unity, PixiJS, or RPG Maker integration and pixel-perfect rendering setup. |
| `reference/antigravity-delegation.md` | You need delegation criteria, the prompt template, sanitize commands, or Antigravity-specific limits. |
| `reference/gpt-image-edit.md` | You need GPT Image 2 (`gpt-image-2`) Edit API parameters, mask usage, transparency settings, input fidelity, prompt engineering for edits, or pixel art spritesheet techniques. |
| `_common/OPUS_48_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`).Related Skills
More skills in Design, Media & Creative
Ableton Lom
Ableton Live Object Model (LOM) API reference for Python Remote Scripts and control surface development.
Accessibility Compliance
Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.
Adobe Illustrator Scripting
Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate documents, layers, paths, text frames, colors, symbols, artboards, or any Illustrator DOM objects. Covers the complete JavaScript object model, coordinate system, measurement units, export workflows, and scripting best practices.
🎬 AI Cinema Director Skill
Direct high-fidelity cinematic video with AI — translates creative intent into technical cinematographic directives for Veo3, Kling, and Luma video models via muapi.ai
AI Clipping
Turn a long video into N viral-ready short clips with a single managed API call. Wraps muapi.ai's `/ai-clipping` endpoint, which handles transcription, highlight ranking through a virality framework (hook / emotional peak / opinion bomb / revelation / conflict / quotable / story peak / practical value), overlap dedupe, and vertical face-tracking auto-crop server-side. No local Whisper, no local LLM, no GPU.
AI Workflow Builder
Build, run, and visualize multi-step AI generation workflows. The AI architect translates natural language descriptions into connected node graphs — chain image generation, video creation, enhancement, and editing into automated pipelines.
Explore Other Categories
Skills from other categories with shared topics
Accord
Authoring unified specification packages across Business/Development/Design teams via staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria). No code. Use when authoring cross-team specs, building L0-L3 packages, or aligning Biz/Dev/Design on a single source of truth.
Anvil
Building terminal UIs, CLI tools, and dev-tool integrations (linter/test-runner/build-tool wiring). Use when CLI/TUI design or implementation is needed. Language-agnostic — supports Node.js, Python, Go, and Rust.
Architect
Designing new skill agents via gap analysis, overlap detection, SKILL.md + reference generation, and Nexus integration. Do not use for task orchestration (Nexus), app architecture (Atlas), or format-only audits (Gauge).