wow-api-events
SKILL.md
WoW Events (Frame Events)
This skill documents frame events that the WoW client sends to UI code via OnEvent handlers. It covers setup, payload handling, and a categorized list of events with their payloads.
Source of truth: https://warcraft.wiki.gg/wiki/Events Event handling: https://warcraft.wiki.gg/wiki/Handling_events OnEvent handler: https://warcraft.wiki.gg/wiki/UIHANDLER_OnEvent Current as of: Patch 12.0.0 (Retail)
Scope
- Retail only (ignore Classic-only events).
- Frame events delivered to
OnEventhandlers. - Includes payloads where documented.
When to Use This Skill
Use this skill when you need to:
- Register or handle events (
RegisterEvent,RegisterUnitEvent). - Understand event payloads and argument order.
- Map events to UI systems (Inventory, Quest, Party, etc.).
- Build event-driven addon logic.
How to Use This Skill
- Start with the event handling primer below.
- Open the reference file that contains the event category you need.
- Use the event payload list to unpack
...in your handler. - Cross-check unusual events on their wiki pages if a payload is unclear.
Event Handling Primer
Core APIs
CreateFrame("Frame")creates an event handler frame.frame:RegisterEvent("EVENT_NAME")subscribes to a specific event.frame:RegisterUnitEvent("UNIT_EVENT", "unit")filters to units.frame:SetScript("OnEvent", handler)assigns the handler.frame:UnregisterEvent("EVENT_NAME")orframe:UnregisterAllEvents()removes subscriptions.
Handler Signature
An OnEvent handler receives:
self- the frameevent- event name string...- event payload arguments (vary per event)
From the Handling events guide:
- The global
eventandargXvariables were removed in patch 4.0.1. - Always unpack payloads from
....
Dispatch Table Pattern
local f = CreateFrame("Frame")
local handlers = {}
function handlers:PLAYER_LOGIN()
print("Login")
end
function handlers:BAG_UPDATE(bagID)
print("Bag updated", bagID)
end
f:SetScript("OnEvent", function(self, event, ...)
local handler = handlers[event]
if handler then
handler(handlers, ...)
end
end)
for name in pairs(handlers) do
f:RegisterEvent(name)
end
XML Event Handler
<Ui>
<Frame name="MyEventFrame">
<Scripts>
<OnLoad>
self:RegisterEvent("PLAYER_ENTERING_WORLD")
</OnLoad>
<OnEvent>
print("Event:", event)
</OnEvent>
</Scripts>
</Frame>
</Ui>
Debugging Events
Use /etrace to open the Event Trace window and inspect event traffic.
Reference Files
Event lists are grouped by API system, matching the wiki categories:
Sources
Weekly Installs
4
Repository
jburlison/wowad…piagentsGitHub Stars
8
First Seen
10 days ago
Security Audits
Installed on
gemini-cli4
github-copilot4
codex4
cursor4
opencode4
cline4