Use when the user wants a placeholder/custom UI overlay replaced with the authentic v95 client version sourced from the WZ assets + IDA database — phrases like "not the custom overlay", "not the placeholder", "we have a custom overlay right now, but it's not authentic", "authentic v95", "authentic [stat/inventory/equip/chat/skill/quest/family/system menu/NPC dialog/channel select/character profile/key config/buddy/party/guild/alliance/blacklist] window", "rebuild [UI] 1:1 from the IDB", "look up CUI[X] and rebuild it 1:1", "fix [UI screen] to match the IDB", "look into the proper IDB implementation", "use the natural UI and proper icons", "should reuse the [UIWindow*.img/...]", "look into the IDB for the proper [UI]". Walks the WZ subtree identification → `CUI*` class decompile via `ida-lookup` → coordinate extraction → C# rebuild loop. For full-screen rebuilds it escalates to the `v95-ui-rebuilder` agent; for origin extraction to the `ui-origin-finder` agent. Triggers ONLY for UI that exists in the original
Use when the user explicitly hands off the phase queue and wants Claude to pick the next item from `docs/roadmap.md` and run it to completion, then loop — phrases like "continue with the next phase", "do the next phase", "do the next phase from the readme", "continue with the phases", "continue with the phases to be implemented from the readme", "auto-implement the rest of the phases", "on auto mode dont ask me about anything", "im going to bed", "keep going on the roadmap", "keep going", "auto-run the roadmap". Reads `docs/roadmap.md` for the next un-shipped phase, plans, implements (delegating to `authentic-ui-rebuild`, `ingame-feature`, `wz-audio-bind`, `wz-subsystem-research`, packet skills as needed), tests, and ships via `ship-pr` — which still asks for per-commit approval per CLAUDE.md (no blanket auto-commit). Loops to the next phase until interrupted, roadmap exhausted, or three consecutive failures. Triggers NOT for a single mid-flight task (just keep working) and NOT for short replies like "continu
Use when the user wants a single v95 client class, function, struct, or constant looked up — phrases like "look into the IDB", "look into the IDB for X", "reference the IDB", "look up CXxx", "look in the idb", "check the IDB for", "investigate it with the idb", "look into how the v95 client does X", "look into the proper IDB implementation", "find the function that does Y", "decompile CUI[X]", "the IDB for the proper [Y]", or anywhere the user implies "go ask the IDA database what the real client does here". Drives the live `ida-pro/idalib` MCP via `idb-bind`, runs the standard lookup_funcs → decompile → xrefs recipe, and surfaces a paraphrased answer with translated constants / coordinates / formulas — never the .i64 path, never raw decompiled C++ blocks pasted into committed files. Triggers ONLY for single-symbol queries; NOT for full WZ subsystem sweeps (use `wz-subsystem-research`) and NOT for full UI screen rebuilds (use `authentic-ui-rebuild`, which itself calls into this skill).
Use when the user wants a player or world feature implemented end-to-end (packets + animation + WZ assets + state) — phrases like "implement [combat / death / drop / pickup / NPC click / emotion / facial expression / damage / attack / knockback / tombstone / revive / collision / aggro / mob movement / loot / level up]", "research how a player dies", "ensure when the player's HP reaches 0 he dies", "we need to be able to hit mobs", "mobs should X when Y", "player should X when Y", "when [event] happens, [response]", "mob death animation", "drop to the ground", "pick it up should fly into the character", "play the mob's sounds when hit", "introduce facial expressions", "we want emotions when F1-F7 is pressed", or similar full-feature requests that cut across the packet layer + the IDB animation logic + the WZ assets + the runtime state. Coordinates calls into `client-packet-author`, `server-packet-mirror`, `ida-lookup`, `wz-audio-bind`, and `wz-subsystem-research`. Triggers NOT for UI windows alone (`authentic-
Use when the user reports — or wants to enforce — that an NPC, mob, character, or drop is rendering on the wrong z-layer relative to a map's tiles/objs/trees — phrases like "layering", "z-index", "z-order", "z order", "render order", "the player goes behind/in front of [the tree/the object/the platform]", "draw order is wrong", "entity is in the wrong layer", "obj covers the player", "tree is behind the mob", "foothold layer", "make NPCs/mobs/characters layer-aware", "honor the v95 layer model", "draw on the correct layer", "behind the [obj/wall/decoration]". Owns the 8-layer + per-layer-z draw model documented in `docs/map-wz.md`, the foothold→entity-layer mapping, and the canonical per-layer entity draw order used by `GameStage.DrawEntitiesAtLayer`. Triggers NOT for parallax-back sort order (that's the `back/front` flag inside `FieldScene.DrawBacks`) and NOT for shader depth-buffer questions (we are 2D — no real depth buffer).
Use when the user wants to nudge an already-rendered UI element by a small amount — phrases like "move it [N]px [direction]", "move it 3px down", "lower it like 3px", "move it 2 pixels to the right, 4 down", "icon too high", "icon too low", "the [element] is wrong [direction]", "needs to be a bit higher", "needs to be a bit lower", "nudge [element]", "position is wrong", "the position is off", "needs to be [N]px [direction]". Redirects the user to the live debug overlay (`watch.ps1` + `MAPLECLAUDE_DEBUG=1`) for tuning without rebuild, and only when overlay tuning isn't possible, makes the smallest constant-edit in the right Stage/UI file. Triggers ONLY for nudging an existing element; NOT for adding new UI (use `authentic-ui-rebuild`) and NOT for reading WZ origins from scratch (use `ida-lookup` or the `ui-origin-finder` agent).
Use when the user wants a sound or music clip from `Sound.wz` wired to a runtime event — phrases like "play [X] sound", "play the BGM", "play the BGM from Sound.wz", "BGM from Sound.wz of maps", "mob sounds when it gets hit", "play the mob's sounds", "audio for [Wizet/Nexon/Title/login]", "Bgm for [Wizet/Nexon]", "play the map's BGM", "Sound.wz/[node]", or any reference to binding a Sound.wz node to a play trigger (map BGM swap on `SetField`, mob hit/die SFX, UI clicks, login map BGM, drop/pickup SFX). Locates the right Sound.wz subtree, identifies the trigger site, wires through the project's MonoGame audio service in `src/MapleClaude/Audio/` (XAudio2 — NOT BASS). Triggers NOT for WZ binary decode work (that's `wz-reader`) and NOT for inventing new sound effects with no Sound.wz source.
Use when the user wants to see what nodes / fields / actions a WZ subsystem can contain, or which entries have a specific optional capability — phrases like "what nodes does X have", "which mobs have a `jump` node", "all possible nodes for a mob", "what action nodes can a mob have", "find every item with a `req` block", "show me every field under one mob", "what optional fields exist on a skill", "enumerate the WZ structure of Y". Drives the `tools/wz-explorer/wz_explorer.py` script (which wraps `tools/wz-dump`) to surface the WZ structure as JSON. Triggers ONLY for *read-only* exploration; for gap auditing against the C# client use `wz-gap-audit`, for implementing missing capabilities use `wz-gap-implement`, for a full typed-model sweep use `wz-subsystem-research`.