msw-painter
When msw-search cannot find a suitable sprite RUID, draw a pixel art sprite directly with SVG / HTML5 Canvas / HTML code, render it to PNG, and upload it via msw-mcp `asset_create_resource_storage_item` to obtain a sprite RUID. Two style modes are supported: chunky pixel (retro / icon / tile feel) and maple cartoon (MapleStory-inspired character / NPC feel). Triggers: draw sprite directly, create sprite, image generation, custom graphic, pixel art, cartoon sprite, maple style, chibi character, p
Security Assessment
About msw-painter
A workflow for hand-drawing a pixel-art sprite and registering it as a sprite resource in the MSW (MapleStory Worlds) asset system. It is explicitly a fallback: callers should run msw-search first, and only invoke the painter when no suitable sprite RUID is found or when the user specifically wants a hand-drawn-looking character or icon. The skill is scoped to the sprite category alone and does not handle animation, audio, avatar, or atlas resources. Its end result is a sprite RUID obtained by rendering the drawing to PNG and uploading it through the msw-mcp asset_create_resource_storage_item two-step pattern.
The authoring path has the user pick a medium and a style. The medium is one of SVG (best for icons, logos, and shape-based pixel art with 1px rect dots), Canvas (best for procedural, loop-drawn patterns), or HTML (rarely the best fit). Minimal templates are provided for each, with a strong caveat to size SVG at 100% width/height and to derive Canvas scale from the canvas width rather than hard-coding pixel counts, so output fills the rendered viewport. Two styles are offered: chunky (retro, 8-bit, small logical grids like 16x16 or 32x32, 1px black or white outline, a few stepped shading levels and no anti-aliasing) and maple (MapleStory-inspired characters and NPCs on larger grids, selout outlines, more shading levels with selective AA and optional dithering). Defaults steer icons/buttons/tiles to chunky and characters/NPCs/monsters/cute requests to maple, and outputs below 64x64 fall back to chunky because maple lacks pixels for selout plus AA.
Rendering uses scripts/render.cjs after a one-time npm ci install of puppeteer, with the lockfile pinned for supply-chain integrity. The renderer runs headless Chromium with the OS sandbox enabled and all network requests blocked; input is served from a data: URL under a strict Content-Security-Policy and sanitized to strip scripts, foreignObject, inline handlers, and non-data URLs. A PAINTER_DISABLE_SANDBOX escape hatch exists for constrained CI or WSL environments but should not be used on a developer workstation. The final report returns the RUID plus a short description noting which style was used.
FAQ
When should I use the painter instead of searching?
Always run msw-search first. Invoke the painter only when search returns no suitable RUID, when all results are unsuitable, or when the user explicitly wants a hand-drawn-looking character or icon.
What styles and mediums are supported?
Two styles, chunky (retro/8-bit) and maple (MapleStory-inspired cartoon), drawn in one of three mediums: SVG, HTML5 Canvas, or HTML. Defaults send icons and tiles to chunky and characters and NPCs to maple.
What is the default sprite size and what happens below 64x64?
The default is 128x128. If the requested output is below 64x64, the maple style lacks pixels for selout plus AA and facial features, so the skill bumps the size to 64+ or falls back to chunky.
How is the PNG rendered and is it sandboxed?
Via scripts/render.cjs (after a one-time npm ci that installs puppeteer). It runs headless Chromium with the OS sandbox enabled, blocks all network requests, serves input from a data: URL under a strict CSP, and sanitizes scripts and inline handlers.
Does this skill handle animations or audio?
No. It is dedicated to the sprite category only and does not handle animation, audio, avatar, or atlas resources. Entity placement and script application are also outside its scope.
Install msw-painter
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
msw-git/msw-ai-coding-plugins-official