msw-painter

Draw pixel art sprites with SVG, Canvas, or HTML and register them as MapleStory Worlds sprite resources.

Updated Sep 11, 2026
One-click install
npx skills add https://github.com/yoongang02/MapleFist --skill msw-painter-yoongang02
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: msw-painter
Source: https://github.com/yoongang02/MapleFist/tree/main/.agents/skills/msw-painter
Command: npx skills add https://github.com/yoongang02/MapleFist --skill msw-painter-yoongang02

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires puppeteer, and includes scripts (resource) and references (resource) components.

What problem does it solve? When the msw-search resource lookup cannot find a suitable sprite RUID for a MapleStory Worlds project, this Skill lets you create a custom pixel art sprite from scratch and register it as an official sprite resource with its own RUID. ## Core Features & Use Cases - Code-based sprite drawing: Author pixel art in SVG, HTML5 Canvas, or HTML following two defined styles — chunky pixel (retro icons, tiles) and maple cartoon (MapleStory-inspired characters, NPCs, monsters). - Deterministic PNG rendering: Render the code to a transparent-background PNG at a chosen size using a sandboxed, network-isolated headless Chromium script (render.cjs). - Resource registration: Upload the PNG through the msw-mcp asset_create_resource_storage_item two-step presigned-URL flow to obtain a sprite RUID. - Use Case: You need a cute slime monster sprite but search returns nothing suitable — draw it in maple cartoon style at 128×128, render it, upload it, and receive a sprite RUID ready for entity placement. ## Quick Start Ask the AI to draw a custom pixel art sprite, for example a maple-style slime at 128×128, and register it as a sprite resource when no existing RUID matches.

Frequently Asked Questions about msw-painter

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a custom sprite for MapleStory Worlds?

First search existing resources with msw-search. If no suitable sprite RUID is found, write pixel art code in SVG, Canvas, or HTML, render it to PNG with render.cjs, then upload it via the msw-mcp asset_create_resource_storage_item two-step flow to receive a sprite RUID.

What is the difference between chunky pixel and maple cartoon styles?

Chunky pixel uses a small logical grid, black or white outlines, 2-4 shading levels, and no anti-aliasing for retro icons and tiles. Maple cartoon uses a larger grid, colored selout outlines, 4-6 shading levels, and selective silhouette anti-aliasing for characters and monsters.

How do I render SVG or Canvas code to a PNG sprite?

Run node scripts/render.cjs with --type svg, canvas, or html, plus --in, --out, --width, and --height arguments. Puppeteer must be installed first with npm ci inside the scripts directory. The output PNG has a transparent background by default.

Why is my rendered PNG blank or only filled in the top-left corner?

This happens when the drawing code declares fixed dimensions smaller than the render size. Use width="100%" height="100%" in SVG, or derive the Canvas scale from c.width instead of a hard-coded constant, so the drawing fills the full output canvas.

What sprite size should I use for icons versus characters?

Icons and buttons work best at 48×48 to 64×64, while characters, NPCs, and monsters should be 96×96 to 128×128. The default is 128×128. Maple cartoon style needs at least 64×64 output to fit selout, anti-aliasing, and facial features.

Why does the sprite upload fail with a 401 or 403 error?

A 401 or 403 during the PUT step means the presigned URL expired or is invalid. Discard the URL and restart the upload from step 1 to request a fresh presigned URL, then repeat the PUT and completion calls.