npx skills add ...
npx skills add msw-git/msw-ai-coding-plugins-official --skill 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, dialog/NPC conversation, key binding, game event broadcast, player data/save, collection/dex, slash command, scrollview/virtualized list, drop table, global config, GM message, resource/currency, UI components). Always check the catalog first; if a package matches the requested feature, fetch its README and propose integrating instead of building from zero. Keywords: MSWPackages, package, prebuilt, integration.
npx skills add msw-git/msw-ai-coding-plugins-official --skill msw-packages
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.
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.
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 |
| Ranking / leaderboard / scoreboard (basic) | ranking-basic-package | link |
| Ranking / leaderboard (advanced — multi-board, season) | ranking-advanced-package | link |
| Inventory / item bag / equipment | inventory-package | link |
| Shop / store / purchase | shop-package | link |
| World shop / premium shop | worldshop-package | link |
| Mail / mailbox | mail-package | link |
| Quest / achievement / mission | quest-achievement-package | link |
| Dialog / NPC conversation (typewriter style) | dialog-package | link |
| Key binding / virtual button | key-binding-package | link |
| Game event broadcast / pub-sub | game-event-package | link |
| Player data / save / profile | player-data-package | link |
| Collection / gallery / dex | collections-package | link |
| Slash command / chat command | command-package | link |
| Virtualized scroll list / large list | recyclescrollview-package | link |
| Drop table / loot probability | droptable-resolver-package | link |
| Global config / shared settings | global-config-package | link |
| GM / system announcement | gm-message-package | link |
| Game resource (currency, energy, refillable) | resource-package | link |
| UI components and prefab models | ui-component-package | link |
If multiple packages plausibly match (e.g. "ranking" → basic vs advanced), fetch both READMEs and let the user choose based on the comparison.
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?" |
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 (incl. §Enums) / ui-fundamentals.md, no fetch needed |
Skip the Scope-First question and route directly when the user's request is already explicit:
msw-ui-system skill (+ references/templates/)msw-packagesmsw-ui-system skillOnly ask when the keyword matches a catalog package AND the scope is genuinely ambiguous.
When a candidate package is identified:
Use WebFetch to pull this. Summarize the public API and use cases for the user before going further.
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)Substitute github.com/.../blob/main/... with raw.githubusercontent.com/.../main/... for any browsing URL.
After the user confirms integration:
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)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.
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.
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.
Apply with the standard MSW workflow: stop → refresh_workspace → play. Verify in build logs and runtime logs.
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(...)).
.modpackage files are NOT auto-installer scripts in this workflow — they are Maker-editor metadata. Manual file copy is what actually integrates the package.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.msw-scripting knowledge to extend them.Skip integration entirely. Proceed with normal MSW authoring (msw-scripting, msw-search, etc.). Do not silently keep nudging toward packages.
MSW-Git/MSWPackages is unreachablecurl to api.github.com — prefer WebFetch for raw and HTML URLs.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.https://raw.githubusercontent.com/MSW-Git/MSWPackages/main/<package-name>/README.mdhttps://api.github.com/repos/MSW-Git/MSWPackages/git/trees/main?recursive=1https://api.github.com/repos/MSW-Git/MSWPackages/contents/<package-name>/MyDeskhttps://raw.githubusercontent.com/MSW-Git/MSWPackages/main/<path>