# 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.

- Skill: `majiayu000/s-develop` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/s-develop`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/s-develop/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/s-develop

---


# Developing WoW Addons

Expert guidance for building World of Warcraft addons with a focus on testability and maintenance.

## Related Commands

- [c-develop](../../commands/c-develop.md) - 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

1. **Event-Driven Design** — Register events, handle callbacks, bucket patterns
2. **Frame Architecture** — Three-layer design (Core/Bridge/View), layouts, templates
3. **SavedVariables** — Database design, AceDB, versioning, defaults
4. **Combat Lockdown** — Protected functions, taint avoidance, secure handlers
5. **API Resilience** — Defensive programming, C_ namespaces, secret values

## Routing Logic

| Request type | Load reference |
|--------------|----------------|
| Addon architecture, layers | [../../docs/addon-architecture.md](../../docs/addon-architecture.md) |
| Event registration, callbacks | [references/event-patterns.md](references/event-patterns.md) |
| Frame creation, UI engineering | [references/frame-engineering.md](references/frame-engineering.md) |
| SavedVariables, AceDB | [references/saved-variables.md](references/saved-variables.md) |
| Combat lockdown, secure code | [references/combat-lockdown.md](references/combat-lockdown.md) |
| Blizzard API, C_ namespaces | [references/api-patterns.md](references/api-patterns.md) |
| MechanicLib integration | [../../docs/integration/mechaniclib.md](../../docs/integration/mechaniclib.md) |
| Performance profiling | [../../docs/integration/performance.md](../../docs/integration/performance.md) |

## Quick Reference

### Create New Addon
```bash
mech call addon.create -i '{"name": "MyAddon", "author": "Name"}'
mech call addon.sync -i '{"addon": "MyAddon"}'
```

### Core Principles
1. **Headless Core**: Keep logic in pure Lua functions (Layer 1)
2. **Event-Driven**: Avoid `OnUpdate` polling; use events (Layer 2)
3. **Defensive API**: Always check for `nil` and use `pcall` for uncertain APIs
4. **Combat Aware**: Never modify protected frames in combat

