s-develop
Core WoW addon development patterns using Ace3 framework and Blizzard UI APIs. Covers event-driven design, SavedVariables, frame architecture, and API resilience. Use when building addons, designing systems, or integrating libraries. Triggers: addon, WoW, Lua, Ace3, frame, event, SavedVariables, architecture.
When & Why to Use This Skill
This Claude skill provides expert guidance and automated workflows for World of Warcraft (WoW) addon development. It leverages the Ace3 framework and Blizzard UI APIs to help developers implement robust event-driven designs, manage persistent SavedVariables, and build resilient frame architectures. By focusing on testability, maintenance, and combat-safe programming, it streamlines the creation of high-quality game modifications.
Use Cases
- Bootstrap new WoW addons with automated TOC validation and library synchronization using dedicated CLI commands.
- Design scalable UI architectures using a three-layer pattern (Core/Bridge/View) to separate logic from presentation and improve maintainability.
- Implement robust event-driven systems that register callbacks and handle game state changes efficiently without performance-heavy polling.
- Manage complex user configurations and database defaults using AceDB integration and versioned SavedVariables.
- Develop combat-aware interfaces that safely navigate combat lockdown and avoid UI 'taint' through secure handlers and defensive API usage.
| name | s-develop |
|---|---|
| description | > |
| Triggers | addon, WoW, Lua, Ace3, frame, event, SavedVariables, architecture. |
Developing WoW Addons
Expert guidance for building World of Warcraft addons with a focus on testability and maintenance.
Related Commands
- c-develop - Build or extend addon features workflow
CLI Commands (Use These First)
MANDATORY: Always use CLI commands before manual exploration.
| Task | Command |
|---|---|
| Create Addon | mech call addon.create -i '{"name": "MyAddon"}' |
| Sync Junctions | mech call addon.sync -i '{"addon": "MyAddon"}' |
| Validate TOC | mech call addon.validate -i '{"addon": "MyAddon"}' |
| Check Libraries | mech call libs.check -i '{"addon": "MyAddon"}' |
| Sync Libraries | mech call libs.sync -i '{"addon": "MyAddon"}' |
Capabilities
- Event-Driven Design — Register events, handle callbacks, bucket patterns
- Frame Architecture — Three-layer design (Core/Bridge/View), layouts, templates
- SavedVariables — Database design, AceDB, versioning, defaults
- Combat Lockdown — Protected functions, taint avoidance, secure handlers
- API Resilience — Defensive programming, C_ namespaces, secret values
Routing Logic
| Request type | Load reference |
|---|---|
| Addon architecture, layers | ../../docs/addon-architecture.md |
| Event registration, callbacks | references/event-patterns.md |
| Frame creation, UI engineering | references/frame-engineering.md |
| SavedVariables, AceDB | references/saved-variables.md |
| Combat lockdown, secure code | references/combat-lockdown.md |
| Blizzard API, C_ namespaces | references/api-patterns.md |
| MechanicLib integration | ../../docs/integration/mechaniclib.md |
| Performance profiling | ../../docs/integration/performance.md |
Quick Reference
Create New Addon
mech call addon.create -i '{"name": "MyAddon", "author": "Name"}'
mech call addon.sync -i '{"addon": "MyAddon"}'
Core Principles
- Headless Core: Keep logic in pure Lua functions (Layer 1)
- Event-Driven: Avoid
OnUpdatepolling; use events (Layer 2) - Defensive API: Always check for
niland usepcallfor uncertain APIs - Combat Aware: Never modify protected frames in combat