PluginBench
Skill
Review
Audit score 70

msw-packages

msw-git/msw-ai-coding-plugins-official

How to install msw-packages

npx skills add https://github.com/msw-git/msw-ai-coding-plugins-official --skill msw-packages
Claude Code
Cursor
Windsurf
Cline
Full instructions (SKILL.md)

Source of truth, from msw-git/msw-ai-coding-plugins-official.


name: msw-packages description: "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."

MSW Packages — Official Prebuilt Catalog

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

User asks for feature X
        │
        ▼
Match X against Feature → Package table below
        │
   ┌────┴─────┐
   │ Match    │ No match
   ▼          ▼
Scope-First check      Proceed with normal MSW
(see section below):   authoring (msw-scripting,
system vs UI-only?     msw-search, etc.)
        │
   ┌────┴───────────┐
   │ system         │ UI-only
   ▼                ▼
Fetch package    Route to msw-ui-system
README           (+ references/templates/, skip the rest of this skill)
        │
        ▼
Summarize for user
"Found <package>. README says: <summary>.
 Integrate this, or build from scratch?"
        │
   ┌────┴─────┐
   │          │
   ▼          ▼
Integrate    Build from scratch
        │
        ▼
Run Integration Workflow (below)

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 domainPackageGitHub path
Toast / notification / bannermaplestory-toast-packagelink
Ranking / leaderboard / scoreboard (basic)ranking-basic-packagelink
Ranking / leaderboard (advanced — multi-board, season)ranking-advanced-packagelink
Inventory / item bag / equipmentinventory-packagelink
Shop / store / purchaseshop-packagelink
World shop / premium shopworldshop-packagelink
Mail / mailboxmail-packagelink
Quest / achievement / missionquest-achievement-packagelink
Dialog / NPC conversation (typewriter style)dialog-packagelink
Key binding / virtual buttonkey-binding-packagelink
Game event broadcast / pub-subgame-event-packagelink
Player data / save / profileplayer-data-packagelink
Collection / gallery / dexcollections-packagelink
Slash command / chat commandcommand-packagelink
Virtualized scroll list / large listrecyclescrollview-packagelink
Drop table / loot probabilitydroptable-resolver-packagelink
Global config / shared settingsglobal-config-packagelink
GM / system announcementgm-message-packagelink
Game resource (currency, energy, refillable)resource-packagelink
UI components and prefab modelsui-component-packagelink

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 keywordQuestion 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 (incl. §Enums) / 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)

https://raw.githubusercontent.com/MSW-Git/MSWPackages/main/<package-name>/README.md

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:

https://api.github.com/repos/MSW-Git/MSWPackages/git/trees/main?recursive=1

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:

https://api.github.com/repos/MSW-Git/MSWPackages/contents/<package-name>/MyDesk

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)

https://raw.githubusercontent.com/MSW-Git/MSWPackages/main/<path>

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/*.mluaRootDesk/MyDesk/<PackageName>/
    • MyDesk/<PackageName>/Core/*.uiui/
    • MyDesk/<PackageName>/Core/*.modelRootDesk/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: stoprefresh_workspaceplay. 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.

Related skills

More from msw-git/msw-ai-coding-plugins-official and the wider catalog.

MS

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 (mlua_api_retriever / mlua_document_retriever), (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.

2.1k installsAudited
MS

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.

2.1k installsAudited
MS

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.

2.1k installs
MS

msw-general

msw-git/msw-ai-coding-plugins-official

Foundation skill for MSW (MapleStory Worlds). Read this FIRST before anything else in MSW.

2.1k installsAudited
MS

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.

2.1k installsAudited
MS

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.

2.1k installsAudited