Command Reference¶
The better-addons plugin provides ten slash commands that turn Claude Code into a specialized WoW addon development environment. Each command invokes a purpose-built agent with deep knowledge of the Midnight 12.0+ API, Secret Values, taint model, and addon ecosystem.
Using Commands¶
Commands are typed directly into Claude Code's prompt. They follow the format /wow-<name> and optionally accept arguments — a description, a file path, a question, or a mode name depending on the command.
/wow-create a housing decoration tracker with minimap button
/wow-review ./MyAddon/Core.lua
/wow-api C_Spell.GetSpellInfo
/wow-mode boundary
Each command invokes a specialized agent behind the scenes. The agent reads your project files, accesses the WoW API knowledge base, and may spawn sub-agents for parallel research. You interact with the results as normal Claude Code output — code is written to your project, reports appear in the conversation, and you can follow up with questions.
Commands are mode-aware. The active development mode (set with /wow-mode) changes how every command behaves. In blizzard-faithful mode, /wow-create generates conservative code using only official APIs. In boundary-pusher mode, the same command produces aggressive code with metatable hooks and frame-level modifications. /wow-review adjusts its severity thresholds based on the active mode — what's a critical violation in blizzard-faithful might be expected practice in boundary-pusher.
Some commands also accept inline mode overrides. Including keywords like "faithful", "boundary", "aggressive", or "performance" in your arguments temporarily overrides the active mode for that invocation without changing the project's mode setting.
Plugin prefix
If you have multiple plugins installed, you may need the fully qualified name: /better-addons:wow-create. If better-addons is your only plugin with wow- commands, the short form /wow-create works fine.
All Commands¶
/wow-init¶
Initialize a project for better-addons development
Invoked agent: Built-in initialization logic (no specialized agent)
Sets up a WoW addon project directory to work with the better-addons plugin. Creates the mode system, generates a starter CLAUDE.md with Midnight conventions, and displays available commands.
Syntax:
| Argument | Effect |
|---|---|
| (none) | Initialize with default mode (enhancement-artist) |
| Mode name or alias | Initialize with that mode active |
| Project name | Used in the generated CLAUDE.md header |
Example
> /wow-init boundary
better-addons initialized!
Current mode: boundary-pusher
Available commands:
/wow-create — Create a complete addon
/wow-review — Review addon code
/wow-debug — Debug addon issues
/wow-mode — Switch development philosophy
/wow-migrate — Migrate to Midnight 12.0
/wow-api — Look up WoW API docs
/wow-news — Latest addon ecosystem news
/wow-research — Research & verify information
/wow-verify — Verify code or API claims
Change mode: /wow-mode faithful|boundary|enhance|performance
What it creates:
.claude/modes/active-mode.md— containing the active mode nameCLAUDE.md— with WoW 12.0+ conventions, Secret Values guidance, and a command reference (only if one doesn't already exist)
Tip
Run /wow-init first in any new project. It creates the .claude/modes/ directory that all other commands depend on for mode-aware behavior.
/wow-create¶
Create a complete addon from a natural language description
Invoked agent: WoW Addon Coder (with WoW Addon Researcher sub-agent for API verification)
Takes a plain English description of what your addon should do and generates a complete, ready-to-install addon — TOC file, Lua files, Settings panel, slash commands, and all. Every API call is verified against the 12.0.1 specification before code is written.
Syntax:
/wow-create a poison reminder addon that alerts when lethal poison is missing
/wow-create faithful housing decoration tracker with minimap button
/wow-create boundary nameplate addon with classification-based coloring
| Argument | Effect |
|---|---|
| Description | Natural language description of the addon |
| Mode keyword | Optional inline override: faithful, boundary, enhance, performance |
Example
> /wow-create a buff tracker that shows my active buffs near the minimap
## Addon Created: MiniBuffTracker
**Files:**
- MiniBuffTracker/MiniBuffTracker.toc — Interface 120001
- MiniBuffTracker/Init.lua — Namespace setup
- MiniBuffTracker/Core.lua — Buff tracking logic
- MiniBuffTracker/Config.lua — Settings panel
**Features:**
- Compact buff display anchored to minimap
- Tracks player buffs using C_UnitAuras
- Secret Values safe — degrades gracefully in instances
- Configurable icon size and layout via Settings panel
**APIs Used:**
- C_UnitAuras.GetBuffDataByIndex()
- C_UnitAuras.GetPlayerAuraBySpellID()
- Settings.RegisterVerticalLayoutCategory()
**Installation:**
Copy the `MiniBuffTracker` folder to Interface/AddOns/
The agent follows mandatory patterns: namespace pattern (local ADDON_NAME, ns = ...), event dispatch table, issecretvalue() guards on combat data, and InCombatLockdown() checks before frame modifications. It never generates placeholder code or TODO comments.
Common mistake
Don't ask for addons that fundamentally require Secret Values access (rotation helpers, detailed damage breakdowns, conditional ability triggers). The agent will explain why these are impossible under Midnight restrictions and suggest viable alternatives.
/wow-review¶
Review addon code for bugs, deprecated APIs, and taint risks
Invoked agent: WoW Addon Reviewer
Performs a thorough code review across seven categories: API correctness, taint risks, Secret Values compliance, pattern violations, Lua 5.1 compliance, performance, and TOC file validation. Produces a graded report with specific file/line references and fix suggestions.
Syntax:
| Argument | Effect |
|---|---|
| File path | Review a single file |
| Directory path | Review all .lua, .toc, and .xml files recursively |
| Mode keyword | Override mode for this review (e.g., as boundary-pusher) |
Example output (abbreviated)
## Code Review: MyAddon/
**Reviewer:** WoW Addon Code Review (12.0.1)
**Files Reviewed:** 4
**Overall Grade:** C
### Summary
| Severity | Count |
|----------|-------|
| CRITICAL | 2 |
| HIGH | 1 |
| MEDIUM | 3 |
| LOW | 1 |
| PASS | 18 |
### Findings
#### CRITICAL
**[C1] Deprecated API Usage** — Core.lua:42
GetSpellInfo() removed in 11.0. Use C_Spell.GetSpellInfo().
**[C2] Unguarded Secret Value** — Health.lua:88
UnitHealth("target") compared without issecretvalue() guard.
Review severity adjusts by mode. In blizzard-faithful, any hooksecurefunc on Blizzard frames is flagged as critical. In boundary-pusher, missing -- BOUNDARY comments and pcall wrappers around metatable access are flagged instead.
Tip
Review early and often. Run /wow-review after /wow-create to catch any edge cases the generator missed, and after /wow-migrate to verify all deprecated APIs were replaced correctly.
/wow-debug¶
Diagnose addon errors from symptoms or error messages
Invoked agent: WoW Addon Debugger
Takes an error message, symptom description, or file path with an error and diagnoses the root cause. Categorizes issues into nine categories (taint, code errors, silent failures, frame issues, data issues, Secret Values, taint spread, persistence, and initialization order) and provides targeted fixes with before/after code.
Syntax:
/wow-debug attempt to perform arithmetic on a secret value
/wow-debug "addon works in open world but breaks in dungeons"
/wow-debug Core.lua:42 attempt to index a nil value
/wow-debug "health bars show 0 during boss fights"
| Argument | Effect |
|---|---|
| Error message | Diagnose that specific Lua error |
| Symptom description | Identify the most likely cause |
| File:line + error | Read the file, find the location, diagnose in context |
Example
> /wow-debug attempt to perform arithmetic on a secret value
## Diagnosis: Secret Values Arithmetic Error
**Category:** A (Secret Values)
**Severity:** CRITICAL
**Context:** Error occurs inside instances, M+, PvP, or encounters
### Root Cause
Code is performing math (addition, division, comparison) on a value
returned by UnitHealth(), UnitPower(), or similar API that returns
Secret Values in restricted contexts.
### Fix
**Before (broken):**
local percent = UnitHealth("target") / UnitHealthMax("target") * 100
**After (fixed):**
local health = UnitHealth("target")
local maxHealth = UnitHealthMax("target")
if issecretvalue(health) or issecretvalue(maxHealth) then
myBar:SetValue(health) -- widget setters accept secrets
return
end
local percent = health / maxHealth * 100
### Testing
Force Secret Values in open world for testing:
/run SetCVar("secretUnitPowerForced", 1)
Tip
The most common Midnight debugging scenario is "works in open world, breaks in dungeons." This is almost always a Secret Values issue. The debugger knows this pattern and will suggest issecretvalue() guards immediately.
/wow-migrate¶
Scan and migrate pre-12.0 addon code to Midnight
Invoked agent: WoW Addon Migrator
Scans an entire addon for deprecated APIs, CLEU dependencies, Secret Values readiness, interface version issues, and pattern modernization opportunities. Produces a structured migration report and can optionally apply fixes automatically.
Syntax:
| Argument | Effect |
|---|---|
| Directory path | Scan all .lua and .toc files recursively |
| File path | Scan a single file |
The migration scan runs in five phases:
- Deprecated API detection — flags all 50+ removed functions with their replacements
- CLEU dependency analysis — finds
COMBAT_LOG_EVENT_UNFILTEREDandCombatLogGetCurrentEventInfo()usage - Secret Values readiness — finds unguarded arithmetic on
UnitHealth(),UnitPower(), etc. - Interface version — checks TOC for
120001 - Pattern modernization — suggests
RegisterEventCallback(), namespace pattern, and other modern patterns
Example output (abbreviated)
## Migration Report: MyOldAddon
**Scanned:** 6 files
**Patch Target:** 12.0.1 (Interface 120001)
**Overall Status:** CRITICAL ISSUES
### Summary
- Critical: 4 (blocks loading or causes errors)
- Warning: 7 (degraded functionality)
- Info: 3 (modernization opportunities)
### Critical Issues
| # | File:Line | Issue | Fix |
|---|------------------|--------------------------|-------------------------------|
| 1 | Core.lua:12 | GetSpellInfo() removed | C_Spell.GetSpellInfo() |
| 2 | Combat.lua:45 | CLEU parsing in instance | Migrate to unit events |
| 3 | Health.lua:88 | UnitHealth() unguarded | Add issecretvalue() check |
| 4 | MyAddon.toc:1 | Interface: 110002 | Change to 120001 |
After generating the report, the migrator asks whether to apply critical fixes automatically using the Edit tool.
Warning
CLEU-dependent code (combat log parsing) cannot be mechanically migrated. The migrator will flag it and suggest replacement strategies (unit events, C_DamageMeter, UNIT_SPELLCAST_SUCCEEDED), but this requires architectural decisions that need human judgment.
/wow-api¶
Look up any WoW API function, event, or widget method
Invoked agent: WoW Addon Researcher
Quick API reference lookup. Returns the current 12.0.1 status, signature, parameters, return values, Secret Values behavior, and a usage example. For deprecated functions, immediately shows the replacement with a migration code sample.
Syntax:
/wow-api C_Spell.GetSpellInfo
/wow-api UnitHealth
/wow-api UNIT_AURA
/wow-api Frame:SetFrameStrata
/wow-api C_Housing
/wow-api Secret Values
| Argument | Effect |
|---|---|
| Function name | Look up a global or namespaced function |
| Event name | Look up an event's payload and Secret Values status |
| Widget method | Look up a frame/widget method |
| C_ namespace | List all functions in a namespace |
| Concept | Explain a WoW addon concept |
Example
> /wow-api C_Spell.GetSpellInfo
## API Reference: C_Spell.GetSpellInfo
**Status:** CURRENT (changed in 11.0)
**Patch:** 12.0.1 (Interface 120001)
**Source:** https://warcraft.wiki.gg/wiki/API_C_Spell.GetSpellInfo
### Signature
spellInfo = C_Spell.GetSpellInfo(spellIdentifier)
### Parameters
| Name | Type | Description |
|-----------------|---------------|----------------------|
| spellIdentifier | number/string | Spell ID or name |
### Returns
| Name | Type | Description |
|-----------|-------|------------------------------------------------|
| spellInfo | table | { name, iconID, castTime, minRange, maxRange } |
### Example
local info = C_Spell.GetSpellInfo(spellId)
if info then
print(info.name, info.iconID)
end
### Notes
- Replaces the old GetSpellInfo() which returned multiple values
- Returns a TABLE, not multiple values — do not destructure
Tip
Use /wow-api for quick lookups during coding. Use /wow-research when you need deep investigation with cross-referenced sources and community context.
/wow-research¶
Deep research with parallel verification from multiple sources
Invoked agent: WoW Addon Researcher (coordinator), plus three parallel sub-agents: Wiki Specialist, Community Specialist, and Code Specialist
Launches a three-agent research swarm that simultaneously searches warcraft.wiki.gg, community sites (Reddit, Wowhead, Icy Veins, Blizzard forums), and GitHub repositories. Results are cross-referenced and tagged with confidence levels.
Syntax:
/wow-research how does Cell handle Secret Values in raid frames
/wow-research C_EncounterEvents namespace usage patterns
/wow-research ScrollBox element factory hooks
| Argument | Effect |
|---|---|
| Topic | Any WoW addon development topic to investigate |
Example
> /wow-research Private Aura integration for audio alerts
# Research Report: Private Aura Audio Integration
**Date:** 2026-03-15
**Patch:** 12.0.1 (Midnight)
**Confidence:** CONFIRMED
## Summary
Private Auras in 12.0 allow addons to attach custom audio to
encounter-specific debuffs. DBM and BigWigs both use this pattern
for boss mod alerts.
## Findings
### From warcraft.wiki.gg
[API signatures, event documentation]
### From Community
[Wowhead coverage, developer statements from MysticalOS]
### From GitHub
[DBM source code showing Private Aura audio integration]
## Conflicts / Gaps
None — all three sources agree on the implementation approach.
Each finding is tagged: CONFIRMED (multiple sources agree), LIKELY (single credible source), or UNVERIFIED (speculation or unverifiable).
Tip
/wow-research is significantly slower than /wow-api because it launches parallel agents. Use it when you need community context, real-world code examples, or answers to questions that go beyond API signatures.
/wow-verify¶
Fact-check code snippets or API claims
Invoked agent: WoW Addon Researcher (verification mode)
Takes a code snippet, file, or textual claim and verifies every API call, pattern, and assumption against the 12.0.1 specification. Catches hallucinated functions, deprecated calls, and Secret Values violations that might have slipped through.
Syntax:
/wow-verify GetSpellInfo still works in 12.0
/wow-verify ./MyAddon/Core.lua
/wow-verify "C_Spell.GetSpellName(spellId) returns the spell name"
| Argument | Effect |
|---|---|
| Claim | Verify a factual statement about the WoW API |
| Code snippet | Check all API calls in the snippet |
| File path | Read the file and verify all API usage |
Example
> /wow-verify "C_Spell.GetSpellName(spellId) returns the spell name"
## Verification Report
**Target:** C_Spell.GetSpellName()
**Patch:** 12.0.1 (Interface 120001)
**Overall:** FAIL
### Results
| # | Check | Status | Details |
|---|---------------------------|--------|--------------------------------------|
| 1 | C_Spell.GetSpellName() | FAIL | Function does NOT exist in WoW API |
### Required Fixes
1. C_Spell.GetSpellName() is a common AI hallucination.
Use instead: C_Spell.GetSpellInfo(spellId).name
Warning
AI-generated WoW addon code frequently contains hallucinated functions. The most common offenders: C_Spell.GetSpellName(), C_Spell.GetSpellIcon(), C_UnitAuras.GetAuraBySpellID(), C_Item.GetItemName(), and C_Timer.SetTimeout(). None of these exist. Always verify.
/wow-news¶
Latest WoW addon ecosystem intelligence
Invoked agent: WoW Addon News Desk
Searches official Blizzard sources, community news sites, developer blogs, and addon platforms for the latest WoW addon ecosystem developments. Every claim is verified against the original source with confidence tags.
Syntax:
| Argument | Effect |
|---|---|
(none) or latest | General ecosystem news roundup |
| Topic | News filtered to a specific topic |
Example
> /wow-news housing addons
## WoW Addon News Brief
**Date:** 2026-03-15
**Topic:** Housing Addons
**Patch:** 12.0.1 (Midnight, launched March 2, 2026)
### Headlines
1. **HomeBound hits 3M downloads** — The essential housing addon
adds 3D preview images and organized checklists for all
housing achievements.
Source: curseforge.com (March 2026) [CONFIRMED]
2. **C_HousingPhotoSharing API added in 12.0.1** — New namespace
with authorization flows, screenshot handling, and uploads.
Source: warcraft.wiki.gg [CONFIRMED]
### What This Means for Addon Developers
Housing APIs are unrestricted — no Secret Values, no combat
lockdown. This is a greenfield opportunity with a hungry user base.
News is prioritized by impact: API changes that break addons come first, then Blizzard policy statements, major addon deaths/comebacks, new addons filling gaps, and community drama.
Tip
Run /wow-news before starting a new addon project. The landscape is evolving rapidly post-Midnight — an addon concept that was impossible two weeks ago might be viable after a whitelist expansion, and vice versa.
/wow-mode¶
Switch the active development philosophy mode
Invoked agent: Built-in mode manager (no specialized agent)
Changes the development mode that governs how all other commands behave. The mode is persisted in your project's .claude/modes/active-mode.md and affects code generation, review severity, scaffold structure, and architectural recommendations.
Syntax:
/wow-mode
/wow-mode status
/wow-mode boundary
/wow-mode faithful
/wow-mode enhance
/wow-mode performance
| Argument | Effect |
|---|---|
(none) or status | Display current mode and all options |
| Mode name or alias | Switch to that mode |
Available modes:
| Mode | Aliases | Philosophy |
|---|---|---|
blizzard-faithful | faithful, blizzard, safe, conservative | Official APIs only. No Blizzard frame hooks. Patch-proof. |
boundary-pusher | boundary, pusher, aggressive, advanced, elvui | Metatable hooks, creative workarounds. ElvUI-class. |
enhancement-artist | enhance, artist, better, skin, hook | hooksecurefunc, Mixin, frame skinning. DEFAULT. |
performance-zealot | performance, perf, zealot, fast, lean | Minimal memory, throttled updates, object pooling. |
Example
> /wow-mode boundary
Mode: boundary-pusher
Philosophy: "Push WoW's addon API to its absolute limits."
Key rules:
- getmetatable() + __index hooks on Blizzard frame types
- hooksecurefunc on any Blizzard global function
- Noop pattern to block texture re-application
- Every aggressive technique requires pcall() and fallback path
- BOUNDARY comments marking fragile code
All /wow-create, /wow-review, and agent interactions will now
follow boundary-pusher rules.
Tip
You can override the mode for a single command without switching globally. Include a mode keyword in your arguments: /wow-create faithful housing tracker uses blizzard-faithful rules for that one addon without changing your project's active mode.
Command Cheat Sheet¶
Quick Reference¶
| Command | What It Does | When to Use It |
|---|---|---|
/wow-init | Set up project for better-addons | First time in a new project |
/wow-create | Generate a complete addon | Starting a new addon from scratch |
/wow-review | Review code for issues | After writing or generating code |
/wow-debug | Diagnose error messages | When your addon throws errors |
/wow-migrate | Scan for deprecated APIs | Updating a pre-12.0 addon |
/wow-api | Quick API lookup | Need a function signature fast |
/wow-research | Deep multi-source research | Complex questions needing evidence |
/wow-verify | Fact-check code or claims | Validating AI-generated code |
/wow-news | Latest ecosystem updates | Before starting new work |
/wow-mode | Switch development philosophy | Changing your coding approach |
Recommended Workflows¶
New addon from scratch:
/wow-init -- set up the project
/wow-mode enhance -- choose your philosophy
/wow-create "a buff tracker near the minimap"
/wow-review ./BuffTracker/
Initialize, set your mode, generate the addon, then review the output. The review catches edge cases the generator might miss.
Migrating a legacy addon:
/wow-migrate ./MyOldAddon/
/wow-review ./MyOldAddon/
/wow-debug "attempt to call a nil value at Core.lua:42"
Scan for deprecated APIs, review the migrated code, then debug any remaining issues. The migrator handles mechanical replacements; the debugger handles the subtle breakages.
Research and verification:
/wow-api C_EncounterEvents -- quick signature lookup
/wow-research Private Aura audio -- deep investigation
/wow-verify "code snippet here" -- fact-check before shipping
Start with /wow-api for fast lookups. Escalate to /wow-research when you need community context and real-world examples. Always /wow-verify before shipping AI-generated code.
Ongoing maintenance:
/wow-news API changes -- check for breaking changes
/wow-review ./MyAddon/ -- re-review after patch notes
/wow-migrate ./MyAddon/ -- scan for newly deprecated APIs
After each WoW patch, check the news for API changes, review your addon against the new rules, and run a migration scan to catch any newly deprecated functions.
Chaining commands
Commands don't need to be run in isolation. You can ask Claude Code to run a sequence: "Create a housing addon, then review it, then fix any issues." Claude will invoke /wow-create, pass the output to /wow-review, and apply fixes — all in one conversation.