Fen Ecosystem
The Mechanic/Fen ecosystem is a unified platform for WoW addon development.
The Reload Loop (MANDATORY)
After ANY addon code change, you MUST verify the changes in-game:
-
Ask the user to /reload in WoW (or trigger via keybinding CTRL+SHIFT+R)
-
Wait for the user to confirm the reload is complete
-
Then use the addon.output MCP tool (agent_mode=true) to get errors, tests, and console logs
CRITICAL: Do NOT call addon.output immediately after changes. The timing between reload and SavedVariables sync is unpredictable. Always wait for user confirmation.
Ecosystem Components
Component Purpose Key Tools
Mechanic Development hub (CLI, MCP, Dashboard) env.status , addon.output , addon.lint , addon.test
FenCore Pure logic library (no UI dependencies) fencore.catalog , fencore.search , fencore.info
FenUI UI widget library (frames, layouts) Layout , Panel , Tabs , Grid , Buttons
MechanicLib Bridge library (addon ↔ Mechanic) RegisterAddon , Print , RegisterTest
Component Relationships
┌─────────────────────────────────────────────────────┐ │ Your Addon │ ├─────────────────────────────────────────────────────┤ │ Core Layer │ Bridge Layer │ View Layer │ │ (Pure Logic) │ (Events/Data) │ (UI Frames) │ │ │ │ │ │ Uses: FenCore │ Uses: Ace3 │ Uses: FenUI │ └─────────────────────────────────────────────────────┘ │ │ │ └────────────┬────┴─────────────────┘ │ ┌───────▼───────┐ │ MechanicLib │ (Registers addon with Mechanic) └───────┬───────┘ │ ┌───────▼───────┐ │ Mechanic │ (Development hub) └───────────────┘
Essential MCP Tools
Task MCP Tool
Get Addon Output addon.output(agent_mode=true)
Lint Code addon.lint(addon="MyAddon")
Run Tests addon.test(addon="MyAddon")
Search APIs api.search(query="Spell")
Search FenCore fencore.search(query="clamp")
Env Status env.status()
AFD Core Principles
Mechanic follows Agent-First Development (AFD) — github.com/Falkicon/afd
-
Tool-First: All functionality exists as an MCP tool before any UI
-
Structured Results: Tools return predictable JSON with success , data , error
-
Agent Mode: Use agent_mode=true for AI-optimized output
Related Knowledge
-
k-mechanic - Deep dive into Mechanic tools
-
k-fencore - FenCore library details
-
k-fenui - FenUI widget library