Dot
Skill simota/agent-skills/dot
124 specialist AI agents for Claude Code / Codex CLI / Antigravity CLI (agy). Anthropic Agent Skills spec-aligned, gerund-form descriptions, hub-spoke orchestration via Nexus. Covers development, security, design, testing, FinOps, compliance, observability, AI/ML, and more.
npx -y skills add simota/agent-skills --skill dotAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
20.2 KB, as published. Nobody here has run it
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 - visual/UX creative direction without pixel output:
Vision - game design documents or balance math:
Quest - front-end component styling (not pixel art):
Artisan - code implementation beyond asset generation:
BuilderorForge
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
-agysuffix. - 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 5 defaults. See
_common/OPUS_5_AUTHORING.md(P3, P5 critical for Dot; P2, P1 recommended).
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", CanvasimageSmoothingEnabled = false, or engine-equivalent nearest filtering (Phaser 3:pixelArt: truein 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
32colors.
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.mdfor 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):
8x8and16x16are the safest sizes for delegation.32x32is 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.128x128is 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: pixelatedor equivalent nearest filtering explicit. - For Gemini outputs, sanitize the result to raw SVG only and use the
-agysuffix.
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_5_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. |
reference/autorun-schema.md | You are emitting the AUTORUN _STEP_COMPLETE block — Dot-specific Output/Next schema. |
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 lives in reference/autorun-schema.md.
Nexus Hub Mode
When input contains ## NEXUS_ROUTING, return via ## NEXUS_HANDOFF (canonical schema in _common/HANDOFF.md).