msw-packages
MSWPackages catalog — official 1st-party prebuilt packages for common MSW features. Use this skill BEFORE writing a feature from scratch when the user asks for any standard game system (toast/notification, ranking/leaderboard, inventory/equipment, shop/store, world shop, mail, quest/achievement, dia
By msw-git · 6,716 installs
npx skills add msw-git/msw-ai-coding-plugins-official --skill msw-packages
Source repository · Upstream listing
MSW Packages — Official Prebuilt Catalog
[ MSW Git/MSWPackages ](https://github.com/MSW Git/MSWPackages) is the official MSW first party repository of prebuilt feature packages. Before writing any standard game feature from scratch, check this catalog first — if a package matches, propose integration instead of zero from scratch implementation.
This skill is a thin index. Per package details (README, source, integration steps) are fetched on demand from GitHub rather than mirrored here, so the catalog stays current automatically.
Decision Flow
Default posture : ask the user before integrating. Do not auto install without confirmation — packages can collide with existing UUIDs, sprite RUIDs, or naming conventions in the user's project.
Feature → Package Mapping
When a user request mentions one of these features (Korean or English), look up the matching package and fetch its README first.
Feature domain Package GitHub path
Toast / notification / banner maplestory toast package [link](https://github.com/MSW Git/MSWPackages/tree/main/maplestory toast package)
Ranking / leaderboard / scoreboard (basic) ranking basic package [link](https://github.com/MSW Git/MSWPackages/tree/main/ranking basic package)
Ranking / leaderboard (advanced — multi board, season) ranking advanced package [link](https://github.com/MSW Git/MSWPackages/tree/main/ranking advanced package)
Inventory / item bag / equipment inventory package [link](https://github.com/MSW Git/MSWPackages/tree/main/inventory package)
Shop / store / purchase shop package [link](https://github.com/MSW Git/MSWPackages/tree/main/shop package)
World shop / premium shop worldshop package [link](https://github.com/MSW Git/MSWPackages/tree/main/worldshop package)
Mail / mailbox mail package [link](https://github.com/MSW Git/MSWPackages/tree/main/mail package)
Quest / achievement / mission quest achievement package [link](https://github.com/MSW Git/MSWPackages/tree/main/quest achievement package)
Dialog / NPC conversation (typewriter style) dialog package [link](https://github.com/MSW Git/MSWPackages/tree/main/dialog package)
Key binding / virtual button key binding package [link](https://github.com/MSW Git/MSWPackages/tree/main/key binding package)
Game event broadcast / pub sub game event package [link](https://github.com/MSW Git/MSWPackages/tree/main/game event package)
Player data / save / profile player data package [link](https://github.com/MSW Git/MSWPackages/tree/main/player data package)
Collection / gallery / dex collections package [link](https://github.com/MSW Git/MSWPackages/tree/main/collections package)
Slash command / chat command command package [link](https://github.com/MSW Git/MSWPackages/tree/main/command package)
Virtualized scroll list / large list recyclescrollview package [link](https://github.com/MSW Git/MSWPackages/tree/main/recyclescrollview package)
Drop table / loot probability droptable resolver package [link](https://github.com/MSW Git/MSWPackages/tree/main/droptable resolver package)
Global config / shared settings global config package [link](https://github.com/MSW Git/MSWPackages/tree/main/global config package)
GM / system announcement gm message package [link](https://github.com/MSW Git/MSWPackages/tree/main/gm message package)
Game resource (currency, energy, refillable) resource package [link](https://github.com/MSW Git/MSWPackages/tree/main/resource package)
UI components and prefab models ui component package [link](https://github.com/MSW Git/MSWPackages/tree/main/ui component package)
If multiple packages plausibly match (e.g. "ranking" → basic vs advanced), fetch both READMEs and let the user choose based on the comparison.
Scope First Routing (UI vs System)
When a request matches a catalog keyword but it is unclear whether the user wants the full system (data + logic + UI) or just the UI screen , ask ONE short question BEFORE fetching package files. Use the matching row from the table below.
Request keyword Question to ask
Ranking / leaderboard "Do you need score saving and rank calculation too, or just the leaderboard screen?"
Inventory / bag "Do you need add/remove item logic too, or just the slot screen?"
Shop / store "Do you need currency deduction and purchase handling too, or just the shop screen?"
Mail / mailbox "Do you need send/receive logic too, or just the mailbox screen?"
Quest / achievement "Do you need progress tracking and rewards too, or just the quest list screen?"
Toast / notification "Do you need the queueing/timing system too, or just the message popup?"
Dialog / NPC conversation "Do you need branching dialogue and state too, or just the dialog window?"
Collection / dex "Do you need collection state and progress tracking too, or just the dex screen?"
Player data / save "Do you need persistence and load/save flow too, or just a profile screen?"
Anything else / unclear "Do you need the working feature, or just the UI screen?"
Routing rule
Map the user's answer to a destination:
User says... Route to
"feature", "system", "logic", "save", "calculate", "handle", "process" Stay here ( msw packages ) — proceed to Fetch Protocol below
"screen", "UI", "look", "visual", "just the layout", "show only" msw ui system skill (+ references/templates/ ) — pick a style template, then build via the UI builder
Low level question (anchor, component property, enum) msw ui system skill — answer directly via [ references/component api.md ](../msw ui system/references/component api.md) (incl. §Enums) / [ ui fundamentals.md ](../msw ui system/references/ui fundamentals.md), no fetch needed
When to skip the question
Skip the Scope First question and route directly when the user's request is already explicit:
"from scratch" / "just the UI" / "only the screen" → msw ui system skill (+ references/templates/ )
"full system" / "with backend" / "with data" / "save score" → stay in msw packages
Pure low level UI question (e.g. "how do I set anchor?") → msw ui system skill
Only ask when the keyword matches a catalog package AND the scope is genuinely ambiguous.
Fetch Protocol
When a candidate package is identified:
1. README first (always)
Use WebFetch to pull this. Summarize the public API and use cases for the user before going further.
2. File tree (when integration is likely)
Use the GitHub tree API and grep for the package path:
The response is large and may be truncated. Grep the response for <package name / to extract the file list. If truncated, fall back to per directory tree calls:
Standard package layout:
<package name /README.md
<package name /<PackageName .modpackage — installer manifest (treat as opaque)
<package name /MyDesk/<PackageName /Core/ — core scripts/UI to copy
<package name /MyDesk/<PackageName /Sample/ — example usage (do not copy unless requested)
<package name /MyDesk/Util/ — shared utilities (some packages)
3. Raw file fetch (per file as needed)
Substitute github.com/.../blob/main/... with raw.githubusercontent.com/.../main/... for any browsing URL.
Integration Workflow
After the user confirms integration:
1. Map files into project layout :
MyDesk/<PackageName /Core/ .mlua → RootDesk/MyDesk/<PackageName /
MyDesk/<PackageName /Core/ .ui → ui/
MyDesk/<PackageName /Core/ .model → RootDesk/MyDesk/Models/<Category /
MyDesk/Util/ → RootDesk/MyDesk/Util/ (reuse if already present)
2. Check UUID collisions : every entity id and EntryKey in incoming .ui / .model files must not already exist in the user's project. grep the workspace for collisions before writing. Regenerate any colliding UUID with a fresh hex UUID.
3. Check sprite RUID dependencies : scan the package files for hard coded RUIDs. They reference MSW community resources — usually fine, but verify with msw search if any look suspicious or you need a substitute.
4. Resolve cross package dependencies : some packages depend on others (e.g. ranking may build on player data). Read the package's README and source headers — install transitive packages first, then this one.
5. Apply with the standard MSW workflow: stop → refresh workspace → play . Verify in build logs and runtime logs.
6. Wire into user's code : most packages expose a <PackageName Logic singleton. Call its API from the user's existing scripts (e.g. MaplestoryToast:Show(...) ).
Pitfalls
.modpackage files are NOT auto installer scripts in this workflow — they are Maker editor metadata. Manual file copy is what actually integrates the package.
Hardcoded sprite RUIDs in samples : package samples often reference specific RUIDs for decoration sprites. These work but the user may want to substitute. Note this when summarizing.
UI files use UIGroup root entities — when copying, route through msw ui system ( UIBuilder.read/load to inspect, builder API to mutate; design rules — UIGroup root configuration, anchor mode pitfalls — live in the same skill). Do not hand edit raw .ui JSON.
Sample/ content is illustrative, not production — do not copy Sample/ files unless the user explicitly asks. Sample scripts often bind to keyboard shortcuts that conflict with the user's controls.
No package replaces understanding of mlua — packages provide pre built features but the user still needs msw scripting knowledge to extend them.
Don't bulk install multiple packages speculatively — each integration adds files and surface area. Install one feature at a time, validate, then move on.
When the user has already chosen "build from scratch"
Skip integration entirely. Proceed with normal MSW authoring ( msw scripting , msw search , etc.). Do not silently keep nudging toward packages.
When MSW Git/MSWPackages is unreachable
WebFetch returns an error or 404 → confirm the URL hasn't changed.
Sandboxed network may block direct curl to api.github.com — prefer WebFetch for raw and HTML URLs.
If everything fails, fall back to building from scratch and tell the user the package is currently inaccessible.
Cross references
msw general — workspace, file paths, MCP tools, coordinate systems.
msw scripting — .mlua syntax for hooking package APIs into game logic.
msw search — sprite/animation/sound RUID lookup when substituting package bundled resources.