World of Warcraft Classic AddOns Development
Expert guidance for working with World of Warcraft Classic AddOns in a multi-addon repository structure.
What This Skill Does
This skill provides specialized knowledge for developing and maintaining WoW Classic AddOns, including:
Understanding multi-addon repository architectureManaging TOC files for different WoW expansionsWorking with Lua/XML addon structureHandling localization and librariesMaintaining cross-expansion compatibilityAddon Development Instructions
1. Understanding Repository Structure
When working with this codebase:
Recognize this is a **multi-addon repository** where each addon is independently managedEach addon has its own directory (e.g., `Auctionator`, `DBM-Core`, `Questie`)Treat each addon as an independent project while respecting shared dependenciesNever assume a centralized build system—each addon may have its own tools2. Working with TOC Files
TOC files are critical for addon functionality:
**Key TOC file rules:**
Each addon has one or more `.toc` files defining metadata, dependencies, and load orderMultiple TOC files support different expansions: `_Vanilla.toc`, `_Mainline.toc`, `_Mists.toc`When modifying an addon, update ALL relevant TOC files for version consistencyPreserve `SavedVariables` declarations for persistent data storageRespect dependency declarations to avoid breaking load order**TOC file structure:**
```
Interface: [version]
Title: Addon Name
Notes: Description
Author: Name
Version: 1.0.0
SavedVariables: AddonDB
RequiredDeps: Dependency1, Dependency2
```
3. Code Organization Patterns
Follow these structural patterns:
**File types:**
**Lua files**: Core addon logic and functionality**XML files**: UI definitions and manifest files for load order**Manifest.xml**: Organizes Lua script loading sequence (critical for initialization)**Locales/**: Multi-language support files**Libs/** or **embeds/**: Shared libraries (Ace3, LibStub, etc.)**Common addon categories:**
Auction House tools (Auctionator, BuyEmAllClassic)Raid/Dungeon management (DBM suite, Details)Questing helpers (Questie, RXPGuides)UI enhancement (MoveAnything, Dominos, SexyMap)Inventory management (Baganator, Syndicator)Combat tools (Plater, ThreatClassic2)4. Development Workflow
**Before making changes:**
1. Identify which addon(s) you're modifying
2. Read the relevant TOC file(s) to understand dependencies
3. Check for addon-specific build scripts (`fetchlocale.sh`, `get-libs.sh`, `genlocale.sh`)
4. Review existing code patterns in that addon
**When making changes:**
1. Maintain existing code structure and patterns
2. Preserve compatibility across WoW expansion versions
3. Update version numbers in TOC files when appropriate
4. Follow existing localization patterns (check `Locales/` directories)
5. Update CHANGELOG.md if present in the addon
**After making changes:**
Verify TOC file dependencies are still validCheck that Manifest.xml includes any new Lua files in correct orderTest loading order if you modified initialization codeValidate localization strings if you added UI elements5. Core Libraries and Frameworks
Be aware of these common WoW addon libraries:
**Ace3**: Full-featured addon development framework**LibStub**: Library management and versioning system**DBM framework**: Specialized boss encounter management (for DBM addons)Libraries are typically embedded in `Libs/` or `embeds/` directoriesDon't modify library code directly—use addon-specific configuration6. Testing Considerations
Since this is game addon code:
Primary testing happens **in-game** in the WoW clientUse Lua linting tools for syntax validationFor DBM modules, leverage DBM-Test framework if availableTest across relevant WoW Classic expansions (Vanilla, Wrath, etc.)Verify SavedVariables persistence by checking `/WTF/Account/.../SavedVariables/`Validate UI elements render correctly7. Version and Expansion Management
Handle multi-expansion support carefully:
Different TOC files target different Interface versionsKeep version numbers synchronized across expansion-specific TOCsTest changes against the expansions you're targetingBe aware of API differences between WoW Classic versions8. Git Commit Guidelines
**CRITICAL:** When creating commits:
❌ **NEVER** include "Generated with [Claude Code]" footer❌ **NEVER** include "Co-Authored-By: Claude" attribution✅ Use clean, descriptive commit messages✅ Follow existing commit message patterns in the repository✅ Focus on what changed and why**Example commit messages:**
```
Fix Auctionator search filter reset bug
Update Questie to support new quest types
Add localization strings for German client
```
9. Common Pitfalls to Avoid
Don't break TOC file structure or syntaxDon't modify load order without understanding dependenciesDon't assume a unified build system across addonsDon't ignore expansion-specific TOC files when updating versionsDon't hardcode strings—use localization systemsDon't modify embedded libraries directly10. When Unsure
If you encounter ambiguity:
Check existing patterns in the specific addon you're modifyingReview TOC files for dependency and version informationLook for addon-specific documentation or changelogsExamine similar functionality in related addonsAsk the user for clarification on expansion targetingExample Usage Scenarios
**Scenario 1: Adding a new feature to Questie**
1. Read `Questie/Questie.toc` and expansion-specific TOCs
2. Examine existing Lua files in `Questie/` for code patterns
3. Add new Lua file and update `Manifest.xml` if needed
4. Add localization keys to `Locales/` files
5. Update version in all Questie TOC files
6. Test in-game across target expansions
**Scenario 2: Fixing a DBM module bug**
1. Identify the specific DBM module (e.g., `DBM-Naxx`)
2. Check module TOC and dependencies on `DBM-Core`
3. Fix bug in module Lua files
4. Update module version in TOC
5. Test with DBM-Test framework if available
6. Verify fix works with DBM-Core integration
**Scenario 3: Updating localization**
1. Locate addon's `Locales/` directory
2. Follow existing localization pattern (usually locale tables)
3. Add strings to appropriate locale files
4. Ensure default locale (enUS) is always complete
5. Use localization fetch scripts if available
Important Notes
This repository contains multiple independent addons at various development stagesLarge file count is normal due to embedded librariesSome addons have active maintenance, others may be legacyAlways respect the self-contained nature of each addonCross-addon changes require careful dependency management