--- name: wow-controller-support description: Design, debug, and review controller/gamepad support for addon UI, native controls, and reskinned Blizzard windows across Retail, Forever, and Classic progression. Use for windows that will not acquire focus, input capture and handoff, current-binding prompts, navigation, recycled controls, text editing, scrolling, and controller validation. --- # Consider controller interaction for every UI element Apply this skill whenever creating or changing visible addon UI, including native templates and skins. Consider decorative elements too: they must not obscure focus or intercept input. Required consideration means recording the interaction and target-specific limitation; it does not mean forcing a controller mode, adding an unrelated feature, or overriding an explicit user decision. 1. Resolve [client targets](../wow-client-targets/SKILL.md), pin each branch, and identify the UI owner and load path. Use the [source map](references/SOURCE-MAP.md) as dated evidence, then verify the actual API, scripts, security and loading for the task. Forever's native navigation machinery is not a portable Retail/Classic API. 2. Add controller acceptance criteria to the existing requirements/design before implementation. For each element specify reachability, focus indication, primary/secondary action, back, tab/page/scroll behavior, and any disabled or unsupported state. Follow the existing [design and testing choices](../wow-addon-development/references/UI-DESIGN-AND-TESTING.md); do not reopen accepted choices solely because this skill was selected. 3. Choose a verified native integration, addon-owned ordinary-UI navigation, or controller-driven cursor interaction for each target. A cursor fallback must still reach every supported action. If no verified path exists, state the limitation explicitly rather than claiming support. Preserve the user's settings, bindings, mouse and keyboard interactions. 4. Establish how an unfocused window receives its first controller action before expanding navigation. Use [focus acquisition and diagnostics](references/FOCUS-ACQUISITION.md) for an unreachable window, Game Menu-style focus shortcut, missing callbacks, or ownership conflict. A glyph is not registration, and an input catcher enabled only after focus cannot acquire focus by itself. Probe consumption, paired release, native-window handoff and combat in the selected client when available; otherwise retain those checks as not run. 5. Implement focus restoration, input-mode changes, binding/glyph refresh, dynamic-control identity, and editor lifetime using the [interaction guide](references/INTERACTION-GUIDE.md). Register shared widgets through their existing lifecycle and add narrow adapters for exceptional controls. Never copy or replace Blizzard's secure managers or treat a callable function as permission. 6. Validate the guide's per-client cases using the user's selected workflow. Separate source inspection, simulated behavior, and in-game controller results. Without a controller, compatible client, simulator, or automation access, mark the affected checks **not run**; static inspection cannot establish runtime compatibility. For radial menus, stick return-to-center selection, protected spell wheels or radial skins, read [radial menus](references/RADIAL-MENUS.md). It traces Forever's native flow, frame-reference argument scrubbing, wheel-only composition and simulator input fidelity. For source lookup, use [the API index](../wow-api-index/SKILL.md), [settings/input](../wow-api-settings-system/SKILL.md), [widget contracts](../wow-api-widget/SKILL.md), [FrameXML lifecycle](../wow-api-framexml/SKILL.md), and [secure execution](../wow-api-lua-environment/SKILL.md). Combine this workflow with [native UI construction](../wow-native-ui/SKILL.md) or [UI skinning](../wow-ui-skinning/SKILL.md), as appropriate.