
msw-ui-kit
Packaged UI asset kit — polished, visually harmonized MSW UI from official MSWPackages assets. Use when the user wants UI that looks good / polished / pretty / consistent / game-quality, asks for a themed screen or themed part (frame, slot, gauge, arrow, icon), or needs an interaction widget native components lack. (1) 7 theme RUID palettes mined from published-world UI resource packs: parts with RUID, native size, 9-slice type and button states, usable as UIBuilder imageruid with no install, plus entity-tree digests of 130+ sample and official package screens (inventory, shop, ranking, HUD, dialog). (2) Prebuilt widgets: checkbox, radio button, switch, toggle group, dropdown, pagination, progress bar, scroll picker, time picker, number pad, loading spinner.
- Installs
- 1.4K
- Last 24h
- +73
- Trending rank
- #2495
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/msw-git/msw-ai-coding-plugins-official --skill msw-ui-kit- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads msw-ui-kit automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
msw-ui-kit
Build visually harmonized UI by reusing official MSWPackages assets: theme RUID palettes from published worlds + a prebuilt interaction widget library. The premise: parts shipped together in one resource pack are already art-directed to match — picking from one theme beats assembling RUIDs ad-hoc via search.
Role division:
| Skill | Responsibility |
|---|---|
msw-ui-kit (this skill) | Which assets — themed part RUIDs, sample screen references, prebuilt widget integration |
msw-ui-system | The .ui itself — all .ui creation/mutation goes through its UIBuilder; layout, anchors, components |
msw-packages | Feature systems (inventory logic, shop logic, ranking data…) — this skill covers only the look and interaction widgets |
0. Routing
| Trigger | Read |
|---|---|
| "polished / pretty / game-quality UI", "themed screen", theme chosen | references/themes/<theme>.md — pick via §1 table first |
| Specific part hunt ("this theme's close button / arrow / slot variant / gauge") | Theme doc part lists; long tail → grep data/themes/<theme>.ruids.json by name keyword |
| "checkbox / radio / switch / toggle group / dropdown / pagination / progress bar / scroll picker / time picker / number pad / spinner" | references/widgets.md |
| Whole-screen structure reference ("make an inventory/shop/ranking screen like a real game") | Theme doc §Sample screens → read the bundled tree at data/samples/<theme>/<Screen>.txt |
| Same, but the feature comes from an official package (inventory / shop / mail / ranking / quest / dialog…) | references/package-screens.md → data/packages/<package>/<Screen>.txt |
| Feature logic behind the screen (inventory add/remove, purchase flow…) | Route to msw-packages skill |
1. Theme selection
Pick one theme per world (at minimum per screen family) and stay inside it. All parts within a theme are art-directed to match.
| Theme | Source world | Character / best for | Inventory |
|---|---|---|---|
supersimple | Getting Over It Maker | Clean minimal utility UI; lightweight games, tool-like screens | 9 core sets, 19 sample screens |
simplefantasy | MapleSlash | Fantasy action RPG, the largest kit (equip/skill/gacha/star-force screens) | 11 core sets, 42 sample screens |
casualrpg | MapleSoulHero | Casual RPG full suite (inventory, quest, collection, stage map) | 11 core sets, 20 sample screens |
casualsurvival | Durango The Lost Island | Survival/crafting (research, crafting, minimap, status) | 10 core sets, 15 sample screens |
cutecasual | ChuChuBurger | Cute round management/tycoon style, biggest sample set | 10 core sets, 28 sample screens |
cardgame | Maple Duel | Card battler (cards, minions, ranked match, decks) | 8 core sets, 12 sample screens |
minimalcombat | Maple Auto Battler | Small core-only set (icons, slots, tints) — accent use | 5 core sets, no samples |
If the user has no preference: supersimple for utility/lightweight worlds, simplefantasy for RPG-like worlds. State the choice and why in one line.
2. Workflow
(1) Pick theme §1 table (ask only if genuinely ambiguous)
(2) Load palette references/themes/<theme>.md
(3) Structure first building a standard screen (inventory/shop/ranking/HUD/dialog…)?
read data/samples/<theme>/<Screen>.txt BEFORE laying anything out
(large files say so in their header — read top-level sections, not all)
feature comes from an official package? use data/packages/ instead
(references/package-screens.md indexes them)
(4) Map screen parts panel → surface part, actions → button parts, lists → slot/unit parts,
gauges → slider parts, glyphs → tint/icon parts
(5) Build via builder msw-ui-system UIBuilder, passing image_ruid per part
(6) Widgets if needed references/widgets.md (binding groups + assets/widgets/trees/ blueprint)
3. Rules
ALWAYS
- One theme per screen, baked at authoring time. This skill assumes the theme is chosen when you write the
.uiand does not change at runtime — that is what lets ALWAYS #4 treat "is this text sitting on theme art?" as a fact you can check while building. Never mix parts from two themes on one screen; for a missing part, first grep the theme'sdata/themes/<theme>.ruids.jsonlong tail, then reuse a same-theme part with a different size, and only then fall back tomsw-search. If the world really does swap themes at runtime, that assumption breaks: a plain panel you authored can end up under theme art later. Then either keep the swappable surfaces and the text on them in the same theme set, or leave that chrome out of the swap entirely and fix its colors. - Respect native sizes. Non-Sliced parts keep their native aspect ratio (scale uniformly).
(Sliced)parts resize, but 9-slice keeps only the border clean — a band, divider or inner frame painted inside the art stretches with the middle and lands across your content, unseen by you or lint. For a generic window/popup background, pick from the theme doc's part lists the one whose native W:H is closest to your target rect. Before reusing a background lifted from a sample tree, grep its RUID in the data JSON:"kind": "S"means it exists only in sample screens — a fixture of that layout, not a generic surface.(Tiled)parts extend by repetition — with one exception: for a gauge/bar background marked(Tiled), usesprite_type: 1(Sliced) when your bar width differs from the native size (tiling clips a partial segment at the end and looks misaligned). Keep Tiled for large decorative pattern fills (BG_Pattern-style). Default for resized surfaces: any surface-type part (window bg, panel, list/row bg, plate) used at a non-native size getssprite_type: 1regardless of marker — with 9-slice borders the border renders clean, without them it renders identically to Simple, so it is never worse than Simple. Icons/illustrations are NOT surfaces — scale those uniformly.(Filled)is a record, not an instruction: it means the source drove that art throughFillAmountat its native size, typically inside aSliderComponent. For your own linear gauge, followmsw-ui-system's rule — resize the fill sprite's width instead of filling it, sinceFilledclips UVs and warps any 9-slice border. Start atsprite_type: 1; gauge fills are long thin gradients that often carry no slice borders, so if the fill looks stretched or blurred switch tosprite_type: 2(Tiled), which repeats the pattern cleanly. ReserveFilledfor radial sweeps (cooldown rings). Never keep a(Filled)part's native aspect ratio — these arts run to extremes like 48:1, so uniform scaling can produce no usable bar at all. - Every themed part needs an explicit
color. Passingimage_ruidalone leaves the builder's dark translucent default skin color on the sprite, and it multiplies the art into a near-invisible ghost — pass"#FFFFFF"(bg_coloronbutton/slider/textInput) to render a part as authored, including cells and icons whose image you swap at runtime (a part the theme doc lists with acolor:value takes that value instead).Tint_*parts are monochrome glyphs — apply theme-consistent accent colors via the buildercoloroption instead of hunting for another colored icon. This extends to surfaces: some panel/row/unit bgs are neutral white masks sharing a RUID withTint_*entries — bare they render as a flat white (or near-invisible) fill that buries text. Any part listed with acolor:value must get that color (or a deliberate theme-consistent substitute) passed to the builder; never render the bare RUID. Mask RUIDs are flagged"tint": truein the data JSON. - Never invent font colors on themed art. Sprite brightness is invisible to you — white-on-light and dark-on-dark failures are undetectable statically. Use the part's
text:pairing from the theme doc: it lists every font color the source world actually put on that art, most-used first, with counts. A pairing carrying+o#RRGGBB(outline) or+s#RRGGBB(flat halo) is one unit — most light font colors in these packs read only because of that ring, so taking the color without it recreates the failure. Pass the outline asoutline/outline_color/outline_widthon the text node; a halo isUnderlay+UnderlayColorviapatchComponent, at offset 0 (a flat ring, not a drop shadow). If the part has none, pick from the theme's "Text colors" section (matching the closest context). Only fall back to plain black/white on your own flat-color panels. A part marked[split surface]("split_text": truein the data JSON) carries both light and dark regions — a title band over a pale body, say — so its listed colors are not interchangeable: match the region you are writing on, and when unsure prefer the darker option, which stays readable on the pale part. - All
.uimutations go throughmsw-ui-system's UIBuilder — this skill only supplies RUIDs/sizes/structure. Its design rules (anchors, nesting, UIGroup roots) still apply. - Sample and package screens are structural references, not files to copy — study the part composition, then rebuild with the builder. Package screens carry the package's own art, so take their composition and pass your theme's RUIDs; prefer one when the feature itself comes from that package, since its scripts bind against that tree.
NEVER
- Do not install/copy the
ui-resource-*packages — their RUIDs resolve from MSW resource storage as-is. Widgets are the only thing copied into the workspace, and their source is this skill'sassets/widgets/(seereferences/widgets.md) — never fetch anything from the network. - Do not hand-edit widget prefab internals (script names, child names) — bindings are by name.
4. Sub-documents
references/themes/— per-theme part palettes:supersimple.md,simplefantasy.md,casualrpg.md,casualsurvival.md,cutecasual.md,cardgame.md,minimalcombat.mdreferences/widgets.md— prebuilt interaction widgets: integration, per-widget API, binding groups, events, pitfallsreferences/package-screens.md— index of official feature-package screens (inventory, shop, mail, ranking, quest…) whose trees are digested atdata/packages/<package>/<Screen>.txtdata/themes/<theme>.ruids.json— full RUID registry per theme (machine-greppable long tail; one JSON object per line: names, category,kind(which models the art appears in —Ccore palette only,Ssample screens only,CSboth), size, andtype— a record of how the source world rendered that art, not a recommendation for your use; see ALWAYS #2 for what to actually pass — plus"surface": trueon parts classified as stretch-to-fit surfaces — the ALWAYS #2 default-Sliced targets — and"tint": trueon neutral masks that require an explicitcolor— the ALWAYS #3 targets — plus"text", the font colors the source world used on that art with counts and their+o/+srings, and"split_text": truewhere those span light and dark — the ALWAYS #4 targets)data/samples/<theme>/<Screen>.txt— full entity-tree digests of the source world's production screens (structural recipes)assets/widgets/— bundled widget sources:UIComponent/**/*.mlua+Util/Util.mlua(copy into workspace) andtrees/**.txtprefab structure digests (rebuild visuals with theme parts)
Out of Scope
.uibuilding mechanics, anchors, components, runtime patterns —msw-ui-system- Feature/system packages (inventory, shop, mail, ranking logic…) —
msw-packages - Free-form sprite search outside themes —
msw-search; drawing new sprites —msw-painter
FAQ
What does the msw-ui-kit skill do?
Packaged UI asset kit — polished, visually harmonized MSW UI from official MSWPackages assets. Use when the user wants UI that looks good / polished / pretty / consistent / game-quality, asks for a themed screen or themed part (frame, slot, gauge, arrow, icon), or needs an interaction widget native components lack. (1) 7 theme RUID palettes mined from published-world UI resource packs: parts with RUID, native size, 9-slice type and button states, usable as UIBuilder imageruid with no install, plus entity-tree digests of 130+ sample and official package screens (inventory, shop, ranking, HUD, dialog). (2) Prebuilt widgets: checkbox, radio button, switch, toggle group, dropdown, pagination, progress bar, scroll picker, time picker, number pad, loading spinner.
How do I install msw-ui-kit?
Run npx skills add https://github.com/msw-git/msw-ai-coding-plugins-official --skill msw-ui-kit in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/msw-ui-kit/ (personal) or .claude/skills/msw-ui-kit/ (project).
Which AI agents can use msw-ui-kit?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is msw-ui-kit safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains msw-ui-kit?
It is published by msw-git in msw-git/msw-ai-coding-plugins-official. It has 1,380 recorded installs.
More from msw-git/msw-ai-coding-plugins-official
msw-general
msw-git/msw-ai-coding-plugins-official
Foundation skill for MSW (MapleStory Worlds). Read this FIRST before anything else in MSW.
msw-defaultplayer
msw-git/msw-ai-coding-plugins-official
MSW DefaultPlayer (character) management. Use the msw-general ModelBuilder to inspect/patch DefaultPlayer.model and Player.model, add/remove components, configure movement speed / jump force / HP / camera, and per-map-mode movement components. Use for DefaultPlayer model, player components, movement speed, jump force, HP, camera, physics. Keywords: player, DefaultPlayer, speed, jump, HP, camera, gravity, revive, respawn, character.
msw-scripting
msw-git/msw-ai-coding-plugins-official
Authoring MSW scripts (.mlua) plus integrated playtest and debugging. Covers mlua syntax, annotations (@Component/@Logic/@ExecSpace/@Sync), lifecycle, exec spaces, property sync, event system, file workflow, build-log inspection, error classification, and the test/debug loop. Keywords: script, mlua, lua, Component, Logic, annotation, ExecSpace, Sync, event, play, test, debug, lifecycle.
msw-search
msw-git/msw-ai-coding-plugins-official
MSW search integration — (1) vector search for API docs and implementation guides via the msw-mcp MCP server (mluaapiretriever / mluadocumentretriever), (2) REST API search for resources (sprite / animation / sound / resource pack / avatar). Use for 'find details, examples, or related APIs not in .d.mlua', 'need a SpriteRUID', 'monster sprite', 'background image', 'find a sound', 'avatar item lookup', etc. Keywords: document search, API details, examples, guide, retriever, resource, sprite, animation, sound, RUID, resource pack, avatar.
msw-avatar
msw-git/msw-ai-coding-plugins-official
MSW avatar management — costume (CostumeManagerComponent, 17 slots) + animation 3-layer pipeline (StateComponent → AvatarStateAnimationComponent → AvatarRendererComponent). Four-level distinction: State key (uppercase) / AvatarBodyActionStateName (lowercase) / MapleAvatarBodyActionState enum / sprite action ID (swingO1, shoot1). Two mapping systems via IsLegacy/ActionSheet/StateToAvatarBodyActionSheet. PlayerControllerComponent auto-transition conflicts with ActionStateChangedEvent resolved via RemoveActionSheet/SetActionSheet/BodyActionStateChangeEvent. Applies to any avatar-bearing entity (NPC, monster, etc.), not only DefaultPlayer. Use for costume get/set, 17 equip slots, animation state mapping, action override, weapon-specific attack motion, custom shoot/cast/dance action. Keywords: avatar, costume, animation, state, action, shoot, swing, weapon, equipment, custom action, block auto playback, remap.
msw-combat-system
msw-git/msw-ai-coding-plugins-official
MSW combat system integration guide. Covers the Attack→Hit pipeline, damage model, i-frame, knockback, Hit Stop, Camera Shake, Sprite Flash, SFX, death/revive, damage skin, hit effect, avatar combat motion, custom events, and AI FSM — all based on MSW native APIs for 2D multi-genre coverage. Keywords: attack, hit, damage, combat, monster, hit effect, critical, projectile, damage skin, knockback, hit stop, combo, HP bar, collision, contact hit, TriggerComponent.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.