msw-search
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,
Security Assessment
Detected risks:
About msw-search
Routes MSW development queries to the correct search target across two distinct systems: vector search for API documentation and implementation guides through the msw-mcp MCP server, and a REST API for game resources such as sprites, animations, sounds, resource packs, and avatars. A routing table decides which path a request takes, separating questions like 'show me an example' or 'what related APIs exist' (document search) from requests for a SpriteRUID or a monster sprite (resource search). Resource search is the only way to obtain RUIDs.
For documentation, the skill enforces a research order. When the API name is known, the local .d.mlua type stubs are always consulted first for signatures, types, properties, event parameters, and enum values. Because those stubs contain only signatures and lack descriptions and examples, vector search supplements them: mlua_api_retriever returns code examples, parameter details, related APIs, and ScriptOverridable flags for a named API or component, while mlua_document_retriever returns authoring manuals and implementation guides from a natural-language description of what to build. The default request count is three results, and on any MCP failure the skill surfaces the error and falls back to .d.mlua rather than guessing.
For resources, the strong default is to search the resource_pack type first, because a pack bundles every sprite, animation, and sound for one asset; drilling into payload.elements then yields individual RUIDs. Picking a stray sprite or animationclip first tends to leave entities with a single frame, no animation set, or the wrong asset family, so the skill only switches resource types on explicit intent such as a BGM file, an individual sprite, or an avatar item. A comparison table contrasts what .d.mlua provides versus full search results, and a conversion table translates Maker Editor syntax in examples into .mlua file syntax — mapping override to method, braces to end, and editor exec-space toggles to @ExecSpace annotations — warning that an override's @ExecSpace must byte-match the parent declaration or trigger the LEA-3014 SignatureMismatch error.
FAQ
What are the two things this skill can search?
It searches API documentation and implementation guides via vector search on the msw-mcp server, and game resources (sprites, animations, sounds, resource packs, avatars) via a REST API. Resource search is the only path to obtaining RUIDs.
Should I check .d.mlua or vector search first for an API?
Always read .d.mlua first when you know the API name, since it accurately gives signatures, types, properties, event parameters, and enum values. Use vector search only when .d.mlua's signature-only content is insufficient, for example when you need a code example or per-parameter detail.
Why does the skill recommend starting resource search with resource_pack?
A resource pack bundles every sprite, animation, and sound for one asset, so searching the pack and drilling into payload.elements gives coherent RUIDs. Picking a lone sprite or animationclip first usually leaves the entity with a single frame, no animation set, or the wrong asset family.
What is the difference between mlua_api_retriever and mlua_document_retriever?
mlua_api_retriever returns API-level details such as signatures, parameters, examples, and related APIs for a named API, class, function, or component. mlua_document_retriever returns document-style material like authoring manuals and guidelines, and takes a natural-language sentence describing what you want to implement.
Why might my override fail with LEA-3014 SignatureMismatch?
Search-result examples use Maker Editor syntax, where the parent's exec space is often hidden and toggleable. In a .mlua file the override's @ExecSpace must be byte-identical to the parent in .d.mlua, and if the parent has no @ExecSpace the override must omit it entirely.
Install msw-search
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
msw-git/msw-ai-coding-plugins-official