Skag's Toolkit

Libraries 1 more category

A library of functions common to my addons.

Hidden Gem WoW 11.0.7 Needs Update

Trend Explorer

Recent download momentum

Hourly download deltas for the last 48 hours.

Latest hour +0 Jun 2, 12 PM
Peak hour +0 Jun 4, 10 AM
Average +0 per hour

About this addon

What it does

This library is meant to be used as a dependency for my other addons, and as such it may or may not be directly useful to anyone else.

 

That said, I will document it anyway in case someone finds value in it for their own addons.

To import the library, make sure that it is set as a dependency in your addon's .toc file

## Dependencies: stk

 

In your addon's main LUA file you will import it via:

 

-- Skag's Toolkit import
local stk = _G["STKLIB"] or error("Cannot find an instance of STKLIB, please download from: https://www.curseforge.com/wow/addons/stk");
local reqSTKLIBmajor = 01;
local reqSTKLIBminor = 00;
if not stk:stkVersionCheck(reqSTKLIBmajor,reqSTKLIBminor) then
   error("STKLIB is out of date, please download from: https://www.curseforge.com/wow/addons/stk");
end

 

Change the reqSTKLIB var values according to which major/minor version of the library you require at a minimum for your addon

 

In your addon's primary lua file you can include any or all of these variables which you may have use of.

 

-- Character Vars
local charClass = stk:charClass();
local charGUID = stk:charGUID();
local charLevel = stk:charLevel();
local charMaxLevel = stk:charMaxLevel();
local charName = stk:charName();
local charRace = stk:charRace();
-- Region & Server Vars
local currentRegion = stk:currentRegion();
local currentServer = stk:currentServer();

 

It will be expected that you version your addon with the following variables

 

local majorVERSION = 02;
local minorVERSION = 00;
local patchVERSION = 00;
local releaseType = "r"; -- a = Alpha, b = Beta, = r = Release

 

In your addon's primary lua file during the PLAYER_LOGIN or PLAYER_ENTERING_WORLD event you should version check addon against what version (if anything) the user has saved settings from.

 

if (not SavedVarDB) or
   (SavedVarDB.version == nil) or
   (SavedVarDB.version.major == nil) or
   (SavedVarDB.version.major ~= majorVERSION) then
   SavedVarDB = stk:dbInit(majorVERSION,minorVERSION,patchVERSION,releaseType);
end

 

If this version check fails then stk:dbInit(majorVERSION,minorVERSION,patchVERSION,releaseType) will wipe the Saved Variables and provide you with this basic structure:

 

SavedVarDB = {

   ["options"] = {},
   ["version"] = {
      ["major"] = ma,
      ["minor"] = mi,
      ["patch"] = pa,
      ["release"] = rel,
   },
   ["characterData"] = {}
}

 

You can call stk:firstUpper("string of text"); to capitalize the first letter of a string, and force all other letters to lowercase. Particularly useful for some instances where Blizzard puts class names or character names in all caps.

 

local foo = stk:firstUpper(bar);
or

local foo = stk:firstUpper("HEY GUYS!");
results in: Hey guys!

 

If your addon has a UI then you can call stk:savePosition(SavedVarDB,frame); to save the position the user dragged your window to, and you can restore the position of the frame when showing it with stk:setPosition(SavedVarDB,frame);


Addons which use this library include:

Warband Wallet

At-a-glance numbers

Performance highlights

  • Peaked at Hot #3426 on May 15, 2026.
  • Peaked at Rising #5761 on May 15, 2026.
  • Featured on the Hot list across 3 distinct weeks.
  • Shipped 1 release in the last 30 days.

Discover more

Keep exploring

Similar addons you might also want to check out.