FenCore Library

SkillDev tools

Context for FenCore - the pure logic library for WoW addons. Covers utility functions, math helpers, table operations, and environment detection. Load this when working with FenCore or needing utility functions. Triggers: fencore, utility, math, table, logic, pure functions.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the FenCore Library skill

What this skill tells your AI

The instructions your AI receives, as published by falkicon/mechanic in .agent/skills/k-fencore/SKILL.md and read by ahel’s review.

FenCore is a pure logic library for WoW addons - no UI dependencies, just utility functions.

Design Philosophy

  • Pure Functions: No side effects, predictable outputs
  • No UI Dependencies: Works in any layer of your addon
  • Testable: All functions can be unit tested without WoW
  • Documented: Every function has clear input/output contracts

MCP Tools

TaskMCP Tool
List All Functionsfencore.catalog()
Search Functionsfencore.search(query="clamp")
Get Function Detailsfencore.info(domain="Math", function="Clamp")

Domains

FenCore organizes functions by domain:

DomainPurposeExamples
MathNumeric operationsClamp, Round, Lerp, InRange
TableTable manipulationCopy, Merge, Filter, Map
StringString utilitiesSplit, Trim, StartsWith, Format
ColorColor manipulationHexToRGB, RGBToHex, Lighten, Darken
TimeTime formattingFormatDuration, FormatTime, ParseDuration
EnvironmentWoW detectionIsRetail, IsClassic, GetExpansion

Usage Pattern

local FenCore = LibStub("FenCore")

-- Access by domain
local Math = FenCore.Math
local result = Math.Clamp(value, 0, 100)

-- Or direct access
local clamped = FenCore.Math.Clamp(value, 0, 100)

Common Functions

Math

FenCore.Math.Clamp(value, min, max)     -- Constrain value to range
FenCore.Math.Round(value, decimals)      -- Round to decimal places
FenCore.Math.Lerp(a, b, t)              -- Linear interpolation
FenCore.Math.InRange(value, min, max)   -- Check if value in range

Table

FenCore.Table.Copy(tbl)                 -- Shallow copy
FenCore.Table.DeepCopy(tbl)             -- Deep copy
FenCore.Table.Merge(base, override)     -- Merge tables
FenCore.Table.Filter(tbl, predicate)    -- Filter by function
FenCore.Table.Map(tbl, transform)       -- Transform values

Environment

FenCore.Environment.IsRetail()          -- true if retail client
FenCore.Environment.IsClassic()         -- true if classic client
FenCore.Environment.GetExpansion()      -- "TWW", "Classic", etc.
FenCore.Environment.GetBuildInfo()      -- version, build, date

Best Practices

  1. Use for Core layer - FenCore belongs in your addon's pure logic layer
  2. Don't wrap unnecessarily - Call FenCore directly, don't create wrappers
  3. Check domain first - Use fencore.search to find existing functions before writing your own
  4. Prefer pure functions - If you need state, that belongs in Bridge layer

Signals

GitHub stars
20
Forks
5
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
k-fencore
Source
github.com/falkicon/mechanic