msw-avatar — Claude Code skill: MSW costumes and animation
A skill for MSW avatars: 17 equipment slots, mapping animation states onto sprite clips, and custom actions such as shoot or dance.
npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a claude-codeWhat msw-avatar does
The skill treats an MSW avatar on two axes. Appearance lives in CostumeManagerComponent; motion comes from AvatarStateAnimationComponent together with AvatarRendererComponent. Edits go straight into workspace files, and then the msw-maker-mcp server is asked to run refresh so the editor shows the new state. Which file you touch depends on the target: ./Global/DefaultPlayer.model for the player, an inline block inside ./map/{mapName}.map for a placed NPC or monster, a separate .model when the entity is bound by modelId alone.
All 17 Custom*Equip string fields are documented next to the matching MapleAvatarItemCategory values, quirks included. Longcoat covers both top and bottom, for instance. Item RUIDs are not invented here: they come from msw-search, since a made-up identifier binds nothing. The Custom*Equip slots take a bare Guid, and a prefixed form such as thumbnail://<ruid> gets dropped silently, leaving the slot empty. Worth remembering when equipment refuses to show up.
On the animation side the skill walks through the three-layer chain and four separate key forms: State, AvatarBodyActionStateName, the MapleAvatarBodyActionState enum and a sprite action ID like swingO1 or shoot1. Two mapping systems exist, driven by IsLegacy, ActionSheet and StateToAvatarBodyActionSheet.
What it helps with
- give an NPC a costume without writing code
- read what a player currently wears via
GetEquip - tie a custom action to an animation state
- stop auto-transition on a character
- add a weapon-specific attack motion
Example prompts for the agent
- List the items this NPC has equipped and swap its cape for a new RUID from
msw-search - Create a custom dance action and wire it to a state through
StateToAvatarBodyActionSheet - Disable auto-transition on this monster so only my clip plays
How to install msw-avatar
1Skills CLI (Vercel)
npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a claude-code2Manually: put the files in place
~/.claude/skills/msw-avatar/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/msw-avatar/
1Skills CLI (Vercel)
npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a codex2Manually: put the files in place
.agents/skills/msw-avatar/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a cursor2Manually: put the files in place
.cursor/skills/msw-avatar/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install MSW-Git/msw-ai-coding-plugins-official msw-avatar2Manually: put the files in place
.github/skills/msw-avatar/SKILL.md1Skills CLI (Vercel)
npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a gemini-cli2Platform CLI
gemini skills install https://github.com/MSW-Git/msw-ai-coding-plugins-official --path plugins/msw-maker-base-skill/skills/msw-avatarManually: put the files in place
.devin/skills/msw-avatar/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about msw-avatar
How do I install msw-avatar in Claude Code?
Run npx skills add MSW-Git/msw-ai-coding-plugins-official --skill msw-avatar -a claude-code. The skill file lands at ~/.claude/skills/msw-avatar/SKILL.md.
What does msw-avatar do?
It lets the agent edit MSW avatar costumes and animation: equipment slots, state-to-clip mapping, custom actions. After editing files it calls refresh on msw-maker-mcp.
What does the skill need to work?
A connected msw-maker-mcp server for the refresh call, plus msw-search to look up RUIDs. Never make an RUID up, and only a plain Guid works in Custom*Equip fields.