LibSpellDB
A shared spell database library for World of Warcraft addon developers, featuring a composable tagging system for granular spell queries.
Overview
LibSpellDB was originally built to power VeevHUD but is designed as a generic, reusable library that any addon can leverage. It provides a centralized, curated repository of spell data including:
- Cooldowns and durations
- Buff/debuff associations (when the applied aura uses a different spellId than the ability)
- Spell ranks (mapping all ranks to a canonical spell ID)
- Proc information
- Spec relevance
- Extensive tagging for categorization
The Composable Tagging Approach
Rather than rigid categories, LibSpellDB uses a composable tag system that allows granular, flexible queries. Each spell can have multiple tags that describe different aspects of what it does and how it's used.
Role Tags
Define what type of throughput the ability provides:
DPS— Deals or increases damageHEAL— Heals or increases healing outputTANK— Tank-specific ability
Usage Pattern Tags
Describe how/when you use the ability:
ROTATIONAL— Core rotation, used on cooldownMAINTENANCE— Buff/debuff to keep activeMINOR— Short cooldown (<60s), tactical usageMAJOR— Long cooldown (60s+), save for key momentsAOE— AoE-focused ability
Defensive Tags
DEFENSIVE— Reduces damage takenPERSONAL_DEFENSIVE— Self-survival cooldownsEXTERNAL_DEFENSIVE— Defensives castable on othersIMMUNITY— Full immunity effectsDAMAGE_REDUCTION— Flat damage reduction
Crowd Control Tags
INTERRUPT— Spell interruptsCC_HARD— Stuns, incapacitates, polymorphsCC_SOFT— Slows, snares, rootsSILENCE— Silence effectsFEAR— Fear effectsCC_BREAK— Breaks CC (trinket, Berserker Rage)CC_IMMUNITY— Prevents CC application
Movement Tags
MOVEMENT— General movement abilitiesMOVEMENT_GAP_CLOSE— Charges, blinks, leapsMOVEMENT_ESCAPE— Disengages, vanishes
Utility Tags
DISPEL_MAGIC,DISPEL_CURSE,DISPEL_POISON,DISPEL_DISEASE— Dispel typesPURGE— Offensive dispel (removes enemy buffs)TAUNT— Threat/taunt abilitiesRESOURCE— Resource generation/managementUTILITY— General utility
Mechanic Tags
REACTIVE— Conditional abilities (Overpower, Execute, Revenge)PROC— Proc-based buffs to trackFINISHER— Combo point/resource spendersHAS_BUFF,HAS_DEBUFF,HAS_DOT,HAS_HOT— Describes what the spell applies
Query Examples
local LibSpellDB = LibStub("LibSpellDB-1.0")
-- Get all warrior spells
local warriorSpells = LibSpellDB:GetSpellsByClass("WARRIOR")
-- Get all interrupts
local interrupts = LibSpellDB:GetSpellsByTag("INTERRUPT")
-- Get warrior interrupts specifically
local warriorInterrupts = LibSpellDB:GetSpellsByClassAndTag("WARRIOR", "INTERRUPT")
-- Get spells matching ANY of these tags (union)
local ccAbilities = LibSpellDB:GetSpellsByTags({"CC\_HARD", "CC\_SOFT", "INTERRUPT"})
-- Get spells matching ALL of these tags (intersection)
local rotationalDps = LibSpellDB:GetSpellsByAllTags({"ROTATIONAL", "DPS"})
-- Check if a spell has a specific tag
if LibSpellDB:HasTag(6552, "INTERRUPT") then
-- Pummel is an interrupt
end
Current Coverage
LibSpellDB currently includes comprehensive spell data for all TBC Classic classes. Each class includes rotational abilities, cooldowns, utility, CC, defensives, and more — all properly tagged for flexible querying.
For Addon Developers
LibSpellDB is distributed as a standalone library. To use it in your addon:
- Include LibSpellDB as a dependency or embed it
- Access via LibStub: local LibSpellDB = LibStub("LibSpellDB-1.0")
- Query spells using the API methods above
The library handles spell validation automatically — spells that don't exist in the current game version are silently skipped.
Feedback & Bug Reports
Join the Veev Addons Discord for feedback, suggestions, and bug reports: https://discord.gg/HuSXTa5XNq

