Install
openclaw skills install @shilo/pixellab-pipUse for PixelLab/Pip setup, auth, MCP/API routing, asset generation, editing, Workbench, animation, talking portraits, lip sync, skeleton/template/preset animations, multi-shot/looping cinematics, Game Builder, docs/troubleshooting, bark completion sounds, and explicit PixelLab cost/budget/credit questions across MCP, REST v2/API, website/editor Pixelorama, Aseprite, and legacy v1. Trigger only when PixelLab (Pixel Lab) context is present, including PixelLab setup, MCP/API setup, PIXELLAB_SECRET, bearer-token auth, PixelLab sprites, sprite sheets, characters, portrait characters, vocal animations, talking GIFs, lip-sync plans, fonts, objects, tiles, tilesets, tilemaps, maps, Godot/Unity map export, UI, icons, backgrounds, palettes, image edits, animations, skeletons, template animations, preset animations, cinematics, looping or seamless-loop scenes, multi-shot scenes, endpoint choice, SDK integration, blueprints/recipes, recreating/replaying *.blueprint.json generations, troubleshooting, or PixelLab credits/cost/budget. Do not trigger for unrelated Python pip/package-manager requests or generic image/pixel-art requests with no PixelLab intent.
openclaw skills install @shilo/pixellab-pipClassify the request, choose the supported PixelLab surface, then act. Answer questions directly when the request is a question.
animate + cost_sensitive:
question | setup | update | uninstall | bark | auto | create asset | edit/transform | animate | pixelart_workbench | prompt_enhancement | cost_sensitive | integrate/code | check balance/status | troubleshoot docs/API | website/editor assistance | game_builder | aseprite_integration | blueprint/recipe.
A standalone setup, update, uninstall, bark, or auto word after an explicit skill invocation, such as /pixellab-pip setup or @pixellab-pip bark off, is that intent: for setup read references/setup.md, for update read references/update.md, for uninstall read references/uninstall.md, for bark read references/bark.md, for auto read references/auto.md.general_image | skill_icon | item_icon | background | character | portrait_character | font | object | effect_vfx | ui | whole_map | map_image | map_object | top_down_tileset | sidescroller_tileset | multi_shape_tileset | path_tiles | building_kit | isometric_tile | tile_variants | animation | existing_image.
Fitted visual additions to an existing character image, such as hair, facial features, wearables, accessories, or held gear, are existing_image paperdoll edits, not standalone object requests, unless the user explicitly wants a separate unattached prop.references/aseprite-cli.md; PixelLab MCP/REST generates, documented Aseprite CLI/Lua handles local workspace, import/export, packaging, and launch only.mcp__pixellab__create_character (match by suffix). If the user explicitly asked for MCP, do not silently fall back; report that MCP is unavailable and offer setup or an approved REST v2 fallback. Otherwise, when MCP is unavailable, use the matching documented REST v2 endpoint. If both are unavailable or fail, explain why before any non-PixelLab fallback.references/localization.md.frame_count; pick a matching template id such as walking-8-frames (catalog in references/preset-skeleton-template-animation.md) or fall back to v3 custom mode. Preserve PixelLab's returned frame order; no ping-pong, reversed, duplicated, or trimmed outputs unless the user asks for that playback style.references/cost-routing.md before choosing a paid route, and ask before each extra paid attempt unless a concrete budget or attempt count was approved.seed: omit by default; PixelLab randomizes it. Send it in two cases only — the user gave a seed (send verbatim), or two or more calls share near-identical wording and should attempt to hold the same composition (seed-lock, not a guarantee): generate one random positive integer (0 means random, so never 0) and send that same value on every call in the set. Never ask the user for a seed.references/bark.md), the manifest (references/usage-reporting.md), and the *.blueprint.json (references/blueprint.md). Then send one final report. Ask a short clarification only for known collisions. Before that report, send only a blocker or a question you need answered — never progress, status, findings, or intentions; those belong in the final report. For a pending job, keep polling its getter in-turn until its status is completed or failed — a still-running job is never a reason to end the turn (references/job-lifecycle.md). If the turn is being cut off before it finishes, continue with a bounded background wait instead of stopping. Hand the job back to the user only when you can do neither — no way to keep polling and no way to background a wait — then report the job or asset ID and the getter that resumes the check, and say credits were spent. Exception — chunk reveal: when an approved run produces several separately-completing image jobs (a multi-shot cinematic chain, an all-directions animation, an approved multi-asset batch), post each job's saved output — path and inline preview link — as that job completes, and fold the last job into the final report rather than revealing it twice. This covers distinct sequential jobs only, not the multiple images a single job returns at once (8-direction character, animation frames, rotations, tileset tiles, review candidates), which go straight to the final report.color_image, reference guides, and shape templates are allowed as inputs; report them as inputs. Do not draw, repaint, or synthesize requested content locally unless the user explicitly approves a labeled non-PixelLab fallback.references/reviewable-candidates.md before selecting, saving, or continuing from one.no_background: true but the output kept a background, read references/background-removal.md and attempt safe removal when verification shows the background is removable without changing the art.pixellab-pip-generations/ folder at the user's project/workspace root — not loose in its root, and never resolved against a background or detached process's working directory, which may default to the home folder — unless the user names another location. A returned base64 image may be raw RGBA rather than PNG; confirm a saved image decodes to a valid PNG, and when a response exposes more than one image field, save the PNG-encoded one. Produce only the requested output formats or the route's minimal standard artifacts. When a job returns multiple separate images, always compile one standard preview alongside the individual files: a spritesheet for a collection of distinct sprites, or a looping preview GIF when the images are frames of a single animation (read references/local-asset-assembly.md for spritesheet grids and GIF settings). No APNG or extra preview/viewer formats unless asked.<name>.blueprint.json beside the outputs per references/blueprint.md — canonical portable _pixellab connection metadata, the exact route bodies, structured TASK steps for material work performed outside PixelLab calls, and a _comment_prompt holding the user's original prompt as they intended it. Remove host-added wrappers such as connector Markdown, app URIs, hidden local paths, or tool-call serialization; keep the visible command text, such as /pixellab-pip. When the generation used one or more user-supplied input images (any role — source, reference, style, mask, init, frame, and the like), copy each into the folder by copying the file, not by reading and re-writing it.references/usage-reporting.md; keep its private audit/resume data out of the shareable blueprint.Deleting, clearing, or overwriting existing remote PixelLab assets — characters, objects, tiles, tilesets, fonts, UI, portraits, effects, maps and the objects placed on them, their states, animations, or tags — in a way that discards or replaces content already stored remotely is irreversible and requires explicit user permission before it happens: either an instruction that names the deletion or overwrite, or the user's approval of a destructive change you propose. Creating a new asset, state, or animation is additive, not destructive, and is not gated here. Never delete or overwrite unilaterally as an inferred fix, cleanup, reset, sync, migration, or troubleshooting step, and never because a local list, cache, or app view looks empty, stale, or out of sync — the remote is the source of truth, so investigate read-only first (list_*/get_*, REST GET) and report what you find instead of destroying it. Proposing a destructive change is fine; carrying it out before the user approves is not. Before a confirmed destructive op, list exactly what will be removed or replaced (names/IDs and count); bulk or clear-all requires the user to confirm that scope. This covers the delete_* MCP tools, MCP save_to_asset when its target already exists, remove_map_object, terrain-erasing edit_map and tile-erasing place_map_tiles ops (preview them with dry_run: true first), REST /vfx calls with effect_id (saved over in place), and REST delete/replace endpoints.
For character file synchronization, compare the returned updated_at value or URL ?t= stamp with the local copy and download only changed assets; do not use a stale cached image as evidence that the remote needs replacement.
| Surface | Use for | Avoid |
|---|---|---|
| Hosted MCP | Managed PixelLab assets with IDs, polling, downloads, list/get/delete helpers, Creator gallery browse/save-back (list_images, save_to_asset), animated VFX (vfx_workbench), talking-portrait/lip-sync tools, and map/project/sandbox/agent helpers, including get_upload_url for local-image uploads, create_ui_asset, create_font, or create_portrait_character when visible; also raw-image primitives create_image_pixflux/create_image_pixen/create_image_pro/get_image, edit_image, edit_image_pixen, inpaint_image, animate_image, animate_image_pixminimax, animate_with_skeleton_v3, create_normal_map, transfer_outfit, image_to_pixelart, image_to_pixelart_pro_flash, and the cleanup tools unzoom_image/correct_pixelart/reduce_colors when visible — these need no managed asset. PixelArt Workbench uses its own command workflow; read references/pixelart-workbench.md for supported inputs. Pro Flash image-to-pixel-art conversion is available alongside image, character, object, edit, and inpaint tools; read references/pro-flash.md. | REST-only controls such as multi-image style reference (generate-with-style-v2), freeform UI (generate-ui-v2), image-to-text, stateless lip sync, the older Pro image-to-pixel-art route, or packed spritesheet/ZIP export; resize and remove-background (no MCP tool); or any MCP call when PixelLab MCP tools are not visible. |
| REST v2 | Scripts, batch jobs, server integrations, exact endpoint control, and REST-only capabilities such as multi-image style reference, freeform UI, base-tier edit/inpaint controls, one-pose skeleton estimation, legacy three-frame skeleton animation, image-to-text, and route-specific enhancement fields that the visible MCP tool lacks (see the Intent Router for exact routes) — plus any of the MCP-covered work below when MCP tools are not visible. | Guessing SDK methods without checking the installed SDK or current docs. |
| Website / Map Workshop / Game Builder | Human product surfaces, the Creator queue, Game Builder (Tier 1+), full-map manual work, Godot/Unity map export, rich libraries, visible browser assistance. | Programmatic use of copied browser session tokens or undocumented internal endpoints used by first-party surfaces. |
| Aseprite plugin | In-editor workflows when the user is actively working inside Aseprite. | Treating private first-party extension endpoints as public REST/MCP contracts. |
| Aseprite CLI | Explicit Aseprite handling after PixelLab produced files: .aseprite workspaces, importing frames as layers/frames/tags, palette work, export/open via documented CLI/Lua. | Mouse/OCR UI automation or hidden control of the PixelLab Aseprite extension. |
| Pixelorama / website editor | The PixelLab website editor is Pixelorama-powered; assist it only as visible browser automation after explicit permission, and ask again before login/session actions, spending credits, generations, downloads, edits, or deletes. | Hidden automation, undocumented endpoint calls, or any destructive action without a second confirmation. |
| REST v1 | Existing legacy code and old SDK compatibility. | New work unless the user explicitly needs v1. |
Hosted MCP tool names are not REST endpoints; do not curl MCP tool names as /v2/... paths.
For any atlas or spritesheet request with known or requested cell dimensions, also read references/local-asset-assembly.md for the required grid inspection preview.
| User intent | Default route | REST v2 route for code/exact control |
|---|---|---|
| Explicit Pro Flash image, character, object, edit, inpaint, or image-to-pixel-art conversion; Pro Flash comparison | Read references/pro-flash.md for the separate tools, native-size and input rules, operation-specific costs, provisional cost checks, and verification. Do not silently replace a tested default with this unbenchmarked family. | create-image-pro-flash, create-character-pro-flash, create-object-pro-flash, edit-image-pro-flash, inpaint-image-pro-flash, image-to-pixelart-pro-flash; GET /pro-flash/capabilities and /pro-flash/cost. |
| PixelLab experimental Create VFX page | Use the visible website page https://www.pixellab.ai/create-vfx only when the user specifically requests that page. MCP vfx_workbench is a separate agent-authored workbench; REST POST /vfx is documented as the page's own effects artist. | POST /vfx; read references/vfx-workbench.md. |
| Character, player, NPC, enemy, creature | MCP create_character with mode="v3" by default, then create_character_state, animate_character, get_character, update_character_tags, list/delete helpers. Read references/preset-skeleton-template-animation.md when body plan or reference images matter. A character group's name is shared; when the user names a new state, pass state_name, otherwise PixelLab derives it from the edit description. For a follow-up animation on a multi-direction character, animate south first; ask before animating all directions. outline and outline wording in description are both ignored on v3 and Pro character generation; say so instead of spending credits tuning it. Neither the schema nor an echoed get_character value is evidence otherwise — only changed art is. Pixen/v3/new may underweight user instructions for shape, pose, or view. Offer Character Pro when it fits the request after disclosing its higher cost and different style; use it only if the user chooses it. get_character returns a download link, not a full ZIP bundle — use REST GET /characters/{id}/zip for the packaged archive, or GET /characters/{id}/spritesheet (object twin GET /objects/{id}/spritesheet) for one packed sheet plus a layout JSON. PixelLab sets the cell size, so a user-specified cell size still needs local assembly. | create-character-v3, create-character-with-4-directions, create-character-with-8-directions, create-character-pro, state/animation/tags/ZIP/list/get/delete endpoints. |
| Text-only quadruped character | Default to v3: ask for a south-facing reference and use mode="v3" with the matching template; v3 without a reference is humanoid-only. If the user requires text-only, explain that v3 does not support text-only quadrupeds and offer Pro only as an opt-in after disclosing its size-based cost. Read references/preset-skeleton-template-animation.md for templates. | Default to create-character-v3 with a matching quadruped template_id and reference. Offer create-character-pro only if the user explicitly chooses text-only Pro after the cost is clear. |
| Supplied character reference image to managed character | Use MCP create_character(mode="v3") with a finished south-facing sprite; supply direction_images for other views to preserve them. For loose concept art that should seed a Pro character's look without preserving pose or canvas, use concept_image_url or concept_image_base64 only after the user chooses Pro. Read references/image-input-roles.md and references/preset-skeleton-template-animation.md for role and direction rules. | REST create-character-v3 also supports matching quadruped template_id values; REST create-character-pro supports method="create_from_concept"; use the live schema for exact fields. |
| Portrait-to-character or character-to-portrait | MCP create_portrait_character + get_portrait_character when visible. | portrait-character-pro (Pro image conversion). Supplied-image roles: references/image-input-roles.md. |
| Talking portrait, mouth/viseme sprites, talking GIF, or lip-sync timing plan | Read references/vocal-animation.md. Use the MCP set_character_portrait, create_vocal_animation + get_vocal_animation, create_talking_gif, and get_lip_sync tools when visible. | POST /characters/{character_id}/portrait, POST + dedicated GET /vocal-animation/{job_id}, POST /talking-gif, and POST /lip-sync; REST is required for stateless lip sync. |
| Pixel/bitmap font, font atlas | MCP create_font + get_font when visible. | generate-font-pro (Pro). |
| Skill/ability/spell/action-bar/hotbar icon, inventory item/equipment/loot/pickup icon, emoji, or icon sheet | Read references/icon.md before choosing an endpoint or generating. | The reference covers route choice, background defaults, sheet sizing, prompt wording, and verification. |
| Standalone object, prop, pickup, weapon, furniture (not an icon) | MCP create_1_direction_object, create_8_direction_object, object state/animation/tags/review tools. Pass MCP name when the user names a new object; it defaults to the description. An object's name is shared across directions and states; for a named new state pass state_name, otherwise PixelLab derives it from the edit description. Object creation is Pro Tools; generation cost follows the announced 10/15/25 size bands (see references/cost-routing.md). | create-1-direction-object, create-8-direction-object, object state/animation/tags/list/get/delete endpoints. The REST create schemas have no name field; if the stored name matters and MCP is unavailable, tell the user before creation. |
| Tileset or terrain transition with no stated type or projection; square top-down, Wang, or autotile tileset | Read references/tileset.md, then MCP create_topdown_tileset; this is the default when no tileset type, projection, or route is specified. | create-tileset, tilesets. |
Explicit hex, isometric, or oblique connectable terrain transition; or explicit create_tiles_pro/create-tiles-pro tileset mode | Read references/tileset.md, then MCP create_tiles_pro with tile_feature="tileset". | create-tiles-pro with tile_feature: "tileset", then tiles-pro/{tile_id}. |
| Sidescroller/platformer tileset | Read references/tileset.md, then MCP create_sidescroller_tileset. | create-tileset-sidescroller. |
| Isometric tile/block/floor | MCP create_isometric_tile; map thickness wording to tile_shape (thin tile, thick tile, block — same values as REST, default block). | create-isometric-tile with isometric_tile_shape (thin tile, thick tile, block). |
| Multiple independent tile variants (hex, octagon, square, or isometric) | MCP create_tiles_pro with no tile_feature. | create-tiles-pro, tiles-pro/{tile_id}. |
| Connectable path/road tile set | MCP create_path_tiles; shares get_tiles_pro/list_tiles_pro/delete_tiles_pro with create_tiles_pro — no dedicated getter. | create-tiles-pro with tile_feature: "roads". |
| Building kit (floor, connectable walls, doorways, pillar, stairs) | Read references/tileset.md, then MCP create_building_kit; shares get_tiles_pro/list_tiles_pro/delete_tiles_pro with create_tiles_pro — no dedicated getter. | create-tiles-pro with tile_feature: "building" and building_* fields. |
| Hard-projection top-down/south-facing building sprite | Read references/style-reference.md; use MCP create_image_pro or REST generate-with-style-v2; apply the reference's verification. | Do not route a single sprite to create_building_kit. |
| General image, sprite, standalone asset that is not an icon or emoji | MCP create_image_pixflux/create_image_pixen/create_image_pro + get_image when MCP-first — same model choice as REST, minus multi-image style reference (REST-only). For explicit Create Image Pro, create_image_pro/generate-image-v2, exact grids/sheets, or below-32px cells, read references/create-image-pro.md first. For full-body Pixen characters, read references/pixen-character-prompt.md. Model character: PixFlux = lower detail, loose/painterly (frames whole subjects); Pixen = high detail, tight framing; Pixen and Pro crop larger subjects; Pro for style/variety or closer adherence to the user's description. Pixen/v3/new has isometric bias and may underweight user instructions such as view/direction; prefer Pro for static south-facing when higher cost and different character style is acceptable. MCP docs say Pixen transparency holds only up to about 65,536 px of canvas area; a larger canvas returns opaque. | create-image-pixen, generate-image-v2, create-image-pixflux, generate-with-style-v2. |
| Exact hex palette or color cap on a generated asset or animation | Read references/create-image-pro.md (Exact Palette Control) before choosing the route: many MCP (palette) and REST (target_palette) routes accept it, with surface and mode limits. | The selected route's target_palette; see the reference. |
| Generate a normal map for a sprite or animation | Read references/image-input-roles.md; use MCP create_normal_map + get_image when visible, otherwise REST POST /normal-map. The 0.4.130 announcement also lists Creator availability, but does not document its UI flow. | /normal-map accepts a PNG sprite or an equal-frame horizontal strip; choose convention="directx" for Unreal, otherwise the default is OpenGL. |
| Browse/search the Creator gallery, inspect or edit a gallery reference, or save generated/edited pixel art back into a character, object, animation direction, or gallery | MCP list_images for gallery metadata; pass its gallery:<id> reference to get_image to download or to pixelart_workbench for inspection/editing; use save_to_asset for save-back when visible; read references/mcp-platform-tools.md for target and destructive-save rules. | No public REST v2 equivalent is documented. |
| Pixel-level repair or recipe drawing; inspect, measure, lint, compare, or animate source parts | For explicit pixel operations, read references/pixelart-workbench.md and use MCP pixelart_workbench. Keep open-ended image creation on the normal image-generation routes. | MCP-only pixelart_workbench; no public REST equivalent. |
| PixelLab image description or visual Q&A | Use REST POST /image-to-text when the user wants PixelLab's read of an image: the default is a generic 1–3 sentence generation description; an optional prompt requests a custom visual answer. For improving existing text for a known generation route, use its matching enhancer instead; do not chain image-to-text before enhancement by default. Answer ordinary image questions directly when possible. | REST-only; returns text, not an image. |
| Background, scene, backdrop | MCP create_image_pixflux/create_image_pixen (no_background: false) when MCP-first, else REST v2. Route by whether a subject is present: subject-less backdrop (empty landscape/sky/room, no figure) → PixFlux; full scene with a subject in an environment → Pixen. Do not use Pro generate-image-v2/create_image_pro here — its 10–25-generation size tiers are unnecessary for backdrops or scenes. | create-image-pixflux-background (same schema as create-image-pixflux, so create_image_pixflux covers it too); verify current size/field support before exact code. |
| UI, HUD, button, panel, health bar, menu | MCP create_ui_asset + get_ui_asset when MCP-first — it has both pieces (rounded_rect/circle/polygon) and elements (button, icon_button, toolbar, tab, panel, window, health_bar, avatar, triangle/pentagon/hexagon/octagon); mind its aspect-gated size caps (square ≤512×512, 16:9 ≤688×384, 9:16 ≤384×688, 4:3 ≤600×448, 3:4 ≤448×600). Use REST v2 create-ui-asset (Pro) when MCP is unavailable. generate-ui-v2 (REST-only, no MCP tool) for loose/raw UI images, especially with a concept_image. | Do not route shape-piece/layout requests to generate-ui-v2. |
| Image edit, inpaint, mask, convert, resize, remove background | For supplied images read references/image-input-roles.md. MCP edit_image and inpaint_image are Pro routes with size-tiered costs (see references/cost-routing.md); prefer their URL inputs and use inline base64 only when needed. MCP edit_image_pixen is the cheap text-instruction edit (1 generation, source ≤256px per side, target area ≤256×256). For conversion, use MCP image_to_pixelart at a requested supported size; without an output-size request, the older REST-only Pro route detects native scale. Pro Flash is a separate six-generation MCP/REST option when requested (see references/pro-flash.md). The older Pro converter, base edit/inpaint weak-guidance controls, resize, and remove-background remain REST-only. | inpaint, inpaint-v3 (Pro), edit-image, edit-image-pixen, edit-images-v2, image-to-pixelart, the older image-to-pixelart-pro, image-to-pixelart-pro-flash, resize, and remove-background. |
| Fitted paperdoll addition on an existing character image | Treat as an existing_image edit anchored on the base frame; read references/paperdolling.md before choosing layer/composite outputs. | Do not use object generation for fitted layers unless the user explicitly wants an unattached prop. |
| Style-reference or consistent-style generation | Read references/style-reference.md. Single style image or labelled references → MCP create_image_pro (preferred image URLs, plus style_copy) when MCP-first, else REST generate-image-v2. Multi-image style reference (style_images array, with optional style_description) is REST-only — no MCP tool has that shape. | generate-with-style-v2 or generate-image-v2 style/reference fields after checking current docs. |
| Clean up pixel art, quantize/reduce colors, unzoom upscaled art | MCP correct_pixelart, reduce_colors, unzoom_image (0.1 generations each) + get_image, else REST v2. correct_pixelart and reduce_colors take a frame list — batch an animation's frames or a character's directions into one call so they stay consistent; unzoom_image is one image per call. | correct-pixelart, reduce-colors, unzoom. For file-level palette clamps on local copies, read references/aseprite-cli.md. |
| Editor-only utilities (Canny/Pose/Depth, reshape) | Read references/editor-only-utilities.md. | No public REST/MCP route exists for these; do not invent /v2/... routes. |
| Try on garment/accessory | Website Try on (single composited image); for animation-frame outfit transfer use MCP transfer_outfit when visible, otherwise REST transfer-outfit-v2. | Try on and outfit transfer return composited imagery, not isolated paperdoll layers. |
| Multi-image combine/edit | MCP edit_image (Pro; preferred image_urls, or inline base64, with optional reference URL/base64) when MCP-first, else REST v2 edit-images-v2; website/editor for visual experimental flows. | Aseprite's generate-multi-edit is an internal endpoint, not public REST. |
| Prompt enhancement | Matching enhance endpoint or inline enhance_prompt per Text Preparation. | enhance-pixen-prompt, enhance-character-v3-prompt, enhance-animation-v3-prompt (engine="v3", "pixminimax", or "skeleton-v3"), or the inline enhance_prompt on animate-pixminimax. |
| Preset/template/built-in animation or named motion | Read references/preset-skeleton-template-animation.md; it covers managed templates and points to the Skeleton v3 and legacy raw routes. | Do not call website root /generate-animation/background or Aseprite extension internals. |
| Skeleton v3, pose-keypoint animation, or auto-rig pipeline | Read references/preset-skeleton-template-animation.md. For a supplied image plus per-frame keypoints, use MCP animate_with_skeleton_v3 when visible, otherwise REST animate-with-skeleton-v3. For a managed character, use MCP animate_character(mode="skeleton-v3", template_animation_id=...) when the connected schema exposes that mode; otherwise use REST POST /animate-character with mode="skeleton-v3" and template_animation_id. REST estimate-skeleton can supply one starting pose, not the full sequence. Keep legacy /animate-with-skeleton only for its exact older contract. | Do not use legacy /animate-with-skeleton for v3 sequences; estimate-skeleton provides only one pose. |
| Raw or managed non-skeleton animation, interpolation, outfit transfer, rotate | For an explicit PixMiniMax request, use animate_character(mode="pixminimax") for an existing managed character; use MCP animate_image_pixminimax or REST animate-pixminimax for supplied raw frames. If MiniMax H3 is a strict provider requirement, use raw REST POST /animate-pixminimax; the managed provider is undisclosed. See references/animation.md for frame/canvas-based raw route choice, the catalog and surface-specific evidence, managed/raw differences, frame anchors, prompt adaptation, idle-loop risk, outfit-transfer inputs, and verification. For outfit transfer on animation frames, use MCP transfer_outfit when visible, otherwise REST transfer-outfit-v2. For 8-rotations-from-an-image, MCP only partially covers it by regenerating rather than rotating the exact input: create_character(mode="v3", reference_image_base64=…) for character/humanoid sprites, create_8_direction_object(reference_image_base64=…) for props. | Managed PixMiniMax: REST /animate-character or /characters/animations; raw animation: animate-with-text-v3, animate-pixminimax, edit-animation-v2, interpolation-v2, transfer-outfit-v2, rotate, generate-8-rotations-v2/v3 (use the rotation route when exact input pixels must be preserved, not regenerated). No public 4-rotation route. For a start→end tween prefer the selected raw animation route; use interpolation-v2 only on an explicit Pro/v2 request. |
| Multi-shot, multi-second, or seamless-loop cinematic (a scene longer than one clip) | Read references/cinematic.md; requires a user-specified budget, a documented plan, and per-shot validation. Use MCP animate_image_pixminimax for an explicit PixMiniMax request, otherwise animate_image, with preferred frame URLs or inline base64. | animate-pixminimax for an explicit PixMiniMax/H3 request, otherwise animate-with-text-v3 — one looped clip for cyclic motion, chained shots (each from the previous handoff frame) for evolving scenes, or first_frame+last_frame for a strict start→end tween. |
| Map image / visual level concept | MCP create_image_pixflux/create_image_pixen + get_image when MCP-first (same subject-vs-subject-less split as the Background row), else REST v2 image/background route; website or Aseprite for map extension workflows. | No public map extension/texture surface is documented. |
| Map object | MCP create_map_object + get_map_object, then place_map_object to put it on a map. | POST /map-objects, then GET /map-objects/{object_id} for status + metadata. |
| Whole map, map CRUD, terrain tiles, or placing/moving/removing objects and characters on a map | MCP only: read references/mcp-platform-tools.md before remove_map_object; placement_id targets one placement, while asset_id removes every placement of that asset from the map. Use create_map (seeded from a top-down tileset, or from a tiles-pro/path/building tile group via tile_group_id), edit_map (path/rect terrain-tile ops), place_map_tiles (place, stack, or erase tile-group tiles on tile layers), get_map, view_map, list_maps, delete_map, and place_map_object/move_map_object/remove_map_object/list_map_objects. Otherwise use the visible website Map Workshop manually; use its Godot/Unity export when requested. | No public REST v2 map or map-export surface is documented; do not invent /v2/maps... routes. |
| Game Builder or game-building project | For Tier 1+ users, use the visible Game Builder workflow. If compatible MCP project/chat/sandbox tools are visible, read references/mcp-platform-tools.md before using them and pass project_id only for the requested project context. | No public REST v2 Game Builder endpoint is documented; do not invent one. |
| Static effect/VFX sprite | If a target image is supplied and the user asks to add an effect to it, MCP edit_image (pro) when MCP-first, else REST image edit, on that target; otherwise default isolated reusable VFX to Create Image Pro (create_image_pro/generate-image-v2) and read references/create-image-pro.md. | Pro is the reliable effects/variety route found in focused testing; Pixen is retry-heavy and unreliable for effect-only assets. Edit routes return a whole edited image, not an isolated effect layer; no static VFX endpoint is documented. vfx_workbench is for animated effects. |
| Animated effect/VFX | Use MCP vfx_workbench when visible; use REST POST /vfx when it is not, for code or batch integrations, or when the user wants PixelLab's own effects artist. Read references/vfx-workbench.md for both. For free-form motion on a supplied raw image without effect-part or anchor controls, use animate_image_pixminimax when explicitly requested, otherwise animate_image; use managed object animation for a managed object. | Effects artist: POST /vfx. Raw animation uses animate-pixminimax, animate-with-text-v3, animate-with-skeleton-v3, or legacy animate-with-skeleton; managed object animation uses the object animation endpoints. |
| Balance, credits, account check | MCP get_balance if available. | GET /balance. |
| REST async job status or cancellation | Poll GET /background-jobs/{job_id}; while processing, last_response.queue_position and last_response.estimated_wait_seconds expose queue information. Use HTTP DELETE on /background-jobs/{job_id} only when the user explicitly approves cancellation; read references/job-lifecycle.md. Vocal animation is the exception and uses GET /vocal-animation/{job_id}. | MCP managed assets use resource-specific get_* tools instead. |
| PixelLab projects, sandbox, chat, deployed agents, job control, MCP help/knowledge/feedback | Read references/mcp-platform-tools.md before using list_projects, add_to_project, remove_from_project, sandbox_*, chat_*, agent_*, search_knowledge, list_jobs, wait_for_jobs, or cancel_job. | No public REST v2 equivalent is documented for the platform helpers, active-job list, or all-job wait; REST cancellation uses HTTP DELETE on /background-jobs/{job_id}. |
Discover, inspect, select, or replay blueprints/recipes, including a supplied *.blueprint.json | Read references/blueprint.md and follow its discovery, selection, and replay contract. A blueprint name that contains an asset word (e.g. "knight") is still blueprint intent when the conversation identifies it as one. | The exact route recorded in the blueprint (MCP <tool> or POST /v2/...). |
tile_feature="tileset".south for one preview candidate; ask only when south is unavailable, directions are unknown, or the user needs another gameplay-facing direction. Animate all directions only on explicit request or approval.references/paperdolling.md.references/image-input-roles.md.references/auto.md) before a credit-spending call.Resolve every references/ path against this skill's own directory (the parent of this SKILL.md) and use an absolute path in the tool call. If that directory is unknown to you, find the pixellab-pip/references/ folder by listing or searching the workspace and agent-skill directories before acting; do not skip the read. When a rule names a reference, open and read it before acting, then follow its current text — not memory or a summary. Your training does not contain these PixelLab-specific contracts, so answering from general knowledge — for example treating Pip as a pip-installed Python package — will be wrong. If a required reference cannot be read, say so and stop rather than improvise its contract.
Read each reference only when its trigger applies:
references/credentials.md.references/setup.md.references/update.md.references/uninstall.md.references/bark.md.auto on/off toggle: references/auto.md.no_background: true fails: references/background-removal.md.references/icon.md.references/create-image-pro.md.references/pro-flash.md.references/cost-routing.md.references/paperdolling.md.references/reviewable-candidates.md.vfx_workbench or REST /vfx: references/vfx-workbench.md.references/tileset.md.references/style-reference.md.references/image-input-roles.md.references/pixelart-workbench.md.references/localization.md.references/official-pixellab-documentation.md.references/usage-reporting.md.references/blueprint.md.references/job-lifecycle.md.references/preset-skeleton-template-animation.md.references/animation.md.references/vocal-animation.md.references/cinematic.md.references/editor-only-utilities.md.references/mcp-platform-tools.md.references/prompt-limits.md..aseprite workspaces, palette quantization, CLI/Lua export: references/aseprite-cli.md.references/aseprite-mcp.md.references/local-asset-assembly.md.Optional broader docs: in full plugin/repo installs these resolve relative to this SKILL.md; raw skill installs may omit them. Read at most one matching file if runtime references are not enough; if absent, continue with references/official-pixellab-documentation.md and current official docs.
../../docs/pixellab/pixellab-surfaces-and-services.md.../../docs/pixellab/pixellab-asset-routing.md.../../docs/pixellab/pixellab-terminology.md.../../docs/pixellab/pixellab-sdk-compatibility.md.../../docs/pixellab/pixellab-auth-and-security.md.../../docs/pixellab/pixellab-ui-generation-surfaces-research.md.../../docs/pixellab/pixellab-cinematic-spike.md.../../docs/pixellab/pixellab-cinematic-inspiration.md.Treat PixelLab model/provider language as product labels unless official docs disclose more. Do not invent provider internals where docs are silent.
Pixen, PixFlux: product/workflow labels, not guaranteed provider names.PixMiniMax: PixelLab's label for raw-frame animation and managed-character mode; provider attribution varies by surface. See references/animation.md for the public evidence and route details.PixPatch: website-surface label; no public v2 PixPatch endpoint exists.Pro: a quality/tier label across many unrelated tools, not one endpoint or model. Treat Pro and Pro Tools routes as expensive unless current docs prove otherwise.Pro Flash: a separate beta image/character/object/edit/inpaint/pixel-conversion family, not a faster alias for existing Pro routes. Its image-to-pixel-art converter costs 6 generations; other creation estimates remain operation-specific and provisional. The single-image creation option is advertised at 4–6 generations with a maximum size of 256×256; current REST OpenAPI describes a provisional five-generation first-image estimate. Read references/pro-flash.md.v3 and new: workflow/version labels scoped to a selected operation. Cheap-family hints, but check the endpoint — REST inpaint-v3 is documented as Pro.standard: character standard is deprecated for Pip routing; do not recommend it. The separate standard mode on top-down tilesets is a different workflow — read references/tileset.md for its routing.S-XL, M-XL, S-M, M-L: size/product labels, not asset intents.Gemini: retired label, absent from current REST v2 and MCP docs. Do not present it as a current tier or provider.Exact field values win over prompt prep. If the user explicitly supplies a PixelLab-facing field value, such as prompt: ..., description: ..., action: ..., or use exactly ..., send that value unchanged and do not enhance it. If it is invalid, over limit, or unsafe, stop and ask for an approved replacement or trim before spending credits.
Prompt enhancement is opt-out. Otherwise, for natural-language parameters such as description, style_description, negative_description, *_description, action, item_descriptions, text, and color_palette, produce the best concise PixelLab-ready English value from the request and visible inputs before calling a tool. For non-English or mixed-language requests, load references/localization.md and obtain the user's approval for the exact English transformation before the first external call. Exception: /talking-gif.text, /lip-sync.text, and their MCP text_to_speak fields are dialogue content; preserve the user's wording exactly and do not enhance or translate it.
Prompts describe visual content or, for action fields, depicted motion — never tool operation, output metadata, or report status. Include only details that change output; omit boilerplate already expressed by a supported control. Prefer supported controls and positive structural wording. Use inline exclusions only for a specific visual constraint, not generic boilerplate; no separate field is required. On Pixen, describe the intended empty or replacement state instead of naming an otherwise absent object only to exclude it. Send negative_description only when the live schema exposes it. For a named visual style, state it briefly and avoid conflicting render adjectives; use route-specific references for additional style guidance.
Respect documented character limits: many REST v2 description fields allow 2000 characters, but several action/edit/style fields cap at 500. On a length rejection, trim without changing intent, note the adjustment, and retry. Exact limits: references/prompt-limits.md or OpenAPI.
Use one enhancement path per call. Inline enhance_prompt flags exist on create-image-pixen, animate-with-text-v3, animate-pixminimax, create-character-v3, animate-character/characters/animations, and object animations, cost about 0.05 generations, and are preferred over a separate enhancer call when the route has one. Constraints: for character/object animation, enhance_prompt is valid only with mode="v3"; for create-character-v3 it is valid only for from-scratch generation; on animate-pixminimax, enhance_prompt rewrites the motion-only action caption, while direction is a separate facing caption field and may be used with or without enhancement. The current PixMiniMax schema also exposes optional subject_description, initial_pose, and view caption fields; omit them only when image inference is acceptable. These fields are surface-specific: MCP animate_image_pixminimax exposes enhance_prompt, direction, subject_description, initial_pose, and view but not REST's drift_threshold; create_image_pixen, animate_image, and create_character expose no enhance_prompt, so on those MCP-first routes enhance directly as the agent instead. Standalone enhancers: enhance-pixen-prompt for Pixen image prompts, enhance-animation-v3-prompt for animation actions (engine="v3", "pixminimax", or "skeleton-v3"), and enhance-character-v3-prompt for character-v3 prompts. Otherwise enhance directly as the agent; do not force a mismatched enhancer.
https://api.pixellab.ai/ paths like /tilesets/create, or Aseprite extension operation URLs. Treat them as unsupported unless they appear in public REST v2 docs/OpenAPI or MCP docs.PIXELLAB_SECRET, or app secret settings.Route from this skill first. Refresh official docs only when a needed tool, endpoint, field, schema, SDK detail, auth step, price/limit, or model/mode claim is missing or unclear. Start lightweight; fetch openapi.json only for exact schemas.
https://api.pixellab.ai/v2/llms.txt — REST v2 endpoint index and auth summaryhttps://api.pixellab.ai/v2/docs — interactive REST v2 parametershttps://api.pixellab.ai/v2/openapi.json — exact schema checks only; read a field's existence, type, or default from the raw JSON, not a prose summaryhttps://api.pixellab.ai/mcp/docs — MCP tool behaviorhttps://www.pixellab.ai/mcp — MCP setuphttps://github.com/pixellab-code — official SDK/MCP repo state onlyhttps://api.pixellab.ai/v1/openapi.json — legacy checks onlyIf web access is unavailable, answer from this skill and say which current claim could not be freshly verified.
If no bearer token is configured, stop before generation and offer the setup wizard: the user opens https://www.pixellab.ai/account after signing in, copies the value labeled Secret, and stores it locally as PIXELLAB_SECRET or in app secret settings — never pasted into chat. For Manual setup, link https://www.pixellab.ai/mcp and stop. PixelLab UI/docs may call this value an API key, API token, or secret; for REST/MCP bearer auth, call it a bearer token.
For questions, answer with: recommended surface/endpoint, why it fits, warnings for unsupported alternatives, and a verification note only when the answer depends on an unverified current fact.
For tasks, generate only when the user clearly requested it and token plus tooling are configured. For nontrivial work, produce one candidate first, report it, and continue only if asked. Before the first credit-spending call, apply the cost-approval gate in references/auto.md: unless the persistent auto setting is on, plan the whole paid chain, then in one message show every predicted paid call, its material inputs (including the exact prompt text), and a rough total for approval. For destructive remote actions, follow Destructive Remote Actions. Refuse unsupported automation and reroute to the closest documented MCP/REST option or a visible manual website flow. Locally authored non-PixelLab visual content requires explicit request or approval and a non-PixelLab-fallback label.
Capture a balance snapshot before a nontrivial paid call when available. After live PixelLab work, read references/usage-reporting.md and use its report layout; verify the output against the user's explicit constraints before calling it final, and say plainly when verification failed instead of silently salvaging. Do not paste secrets, raw base64, full response JSON, or internal IDs unless needed for pending status, follow-up, or debugging.
When a live generation, edit, transform, conversion, background-removal, or animation job returns image(s), read references/bark.md and apply the completion-sound contract.
| Request | Route |
|---|---|
| "Make a wizard with idle and walk animations." | MCP create_character, then animate_character; south first, ask before all directions. |
| "Use the humanoid Walk (8 frames) template animation." | references/preset-skeleton-template-animation.md; MCP animate_character with template_animation_id="walking-8-frames", REST /characters/animations fallback. |
| "Auto-rig this sprite and animate from the skeleton." | references/preset-skeleton-template-animation.md; REST estimate-skeleton for the starting pose, author the remaining poses to make a complete 3–15-frame sequence, then MCP animate_with_skeleton_v3 or REST animate-with-skeleton-v3. Use legacy REST animate-with-skeleton only for its exact three-frame contract. |
| "Generate a mossy platformer tileset from code." | MCP create_sidescroller_tileset; REST v2 create-tileset-sidescroller for code/exact control or when MCP is unavailable. |
| "Make a 512x256 UI panel with a portrait circle and three buttons." | MCP create_ui_asset with pieces/elements; REST v2 create-ui-asset when MCP is unavailable. |
| "Convert this image to 128×128 pixel art and remove the background." | MCP image_to_pixelart at the requested size, then REST v2 remove-background. |
| "Add static wind streaks to this runner sprite." | MCP edit_image (pro) when MCP-first, else REST v2 edit-image; the runner is the edit target, effect on the same canvas. |
| "Animate a wind dash around this runner sprite." | MCP vfx_workbench with the runner as --sprite; read references/vfx-workbench.md for composition and export. |
| "Give my character a leather helmet as a separate layer." | Paperdoll edit per references/paperdolling.md, not object generation. |
"Use /tilesets/create with my browser token." | Refuse; route to public MCP/REST tileset tools or manual website use. |
| "What does Pro use?" | Product-level facts only; refresh official docs if current model details matter. |
| "Cheapest way to get a few item icons?" | references/cost-routing.md + references/icon.md; prefer a non-Pro route and name the tradeoff. |
| "Make a 30-second looping scene from this frame." | references/cinematic.md; ask for a budget if none given, decide cyclic vs evolving (one looped clip or chained shots), plan, validate each shot. |