| name | elvui-config |
| description | Generate polished, production-ready ElvUI profiles for World of Warcraft. Use this skill whenever someone asks to create, customize, tweak, or generate an ElvUI configuration, profile, or UI layout. Also trigger when the user mentions ElvUI settings, WoW UI customization, unit frames, action bars, nameplates, or wants help making their WoW interface look clean/minimal/slick. Trigger on phrases like "make my ElvUI look good", "generate a UI profile", "ElvUI config for my healer", "clean WoW UI", "minimal ElvUI setup", or any request involving ElvUI profile strings, import strings, or Lua table configuration for ElvUI.
|
ElvUI Config Generator
Generate visually cohesive ElvUI profiles that look designed by high-level player. Output = complete profile Lua table user can adapt into importable profile.
How ElvUI Profiles Work
Config stored in Lua tables across three SavedVariables:
- ElvDB — Account-wide.
ElvDB.profiles[name] = per-profile settings (P table). ElvDB.global = global settings (G table).
- ElvPrivateDB — Per-character private settings (V table). Font replacement, loot frames, chat bubbles, pixel perfect.
- ElvCharacterDB — Per-character data including mover positions.
Runtime: E.db (profile), E.global (global), E.private (private). Defaults merged via AceDB — only specify values that differ.
Export/Import Format
Export: serialize Lua table (LibSerialize) → compress (LibDeflate since v13.01) → Base64 encode.
Import reverses. Cannot generate encoded string directly — generate Lua table, instruct user to paste into SavedVariables or encode for in-game import.
What You Generate
Generate profile table (ElvDB.profiles["ProfileName"]). P table only. Only keys differing from defaults — ElvUI merges automatically, shorter = better.
Also generate movers table when layout changes needed. Format:
"AnchorPoint,RelativeFrame,RelativePoint,X,Y"
Example: MinimapMover = "TOPRIGHT,ElvUIParent,TOPRIGHT,-3,-3"
Design Philosophy
Read references/design-guide.md for full aesthetic guide. Core principles:
Typography
- ONE font everywhere. No mixing.
- Good defaults:
PT Sans Narrow (clean/narrow), Expressway (modern/wider), Continuum Medium (elegant)
- Size 11-12 most elements. 10 chat. 9-11 nameplates. 18-22 cooldown text.
OUTLINE for game-world text (nameplates, FCT). SHADOW/NONE for panel text (chat, datatexts).
Color
- Dark backdrop:
{r=0.07, g=0.07, b=0.07} alpha 0.8-0.9
- Border slightly lighter:
{r=0.15..0.23, g=0.15..0.23, b=0.15..0.23}
- ONE accent color for value text. Default blue
{r=0.09, g=0.52, b=0.82} works. Alternatives: teal, gold, soft green.
- Class colors for health bars = always good. Set
classbar = true, colorClass = true.
- Power bars use default power colors — don't override unless user asks.
Layout
- UFs: player+target near center-bottom, compact (width 220-280, height 40-55)
- Action bars: bottom-center, 1-2 rows. Button 28-34px, spacing 3-4px.
- Minimap: top-right
- Chat: bottom-left, width 380-420, height 160-200
- Raid frames: left side or bottom-center (role-dependent)
- Boss frames: right side, growing down
Textures
ElvUI Norm — flat/clean, gold standard
Minimalist — even flatter
ElvUI Gloss — slight sheen, use sparingly
- Same statusbar texture across ALL bars
Slick Checklist
Before finalizing:
Profile Structure Reference
Read references/profile-schema.md for complete key reference. Skeleton:
{
general = { ... },
unitframe = {
units = {
player = { ... },
target = { ... },
targettarget = { ... },
party = { ... },
raid1 = { ... },
raid2 = { ... },
raid3 = { ... },
boss = { ... },
arena = { ... },
},
},
actionbar = {
bar1 = { ... },
bar2 = { ... },
},
nameplates = {
units = {
FRIENDLY_PLAYER = { ... },
ENEMY_PLAYER = { ... },
FRIENDLY_NPC = { ... },
ENEMY_NPC = { ... },
},
},
databars = { ... },
datatexts = {
panels = {
LeftChatDataPanel = { ... },
RightChatDataPanel = { ... },
MinimapPanel = { ... },
},
},
chat = { ... },
bags = { ... },
tooltip = { ... },
movers = {
ElvUF_PlayerMover = "BOTTOM,ElvUIParent,BOTTOM,-200,215",
ElvUF_TargetMover = "BOTTOM,ElvUIParent,BOTTOM,200,215",
},
}
Generating Configs
1. Gather Requirements
Ask user (if not provided):
- Role/spec: Tank/healer/DPS? Class? Affects UF sizing, raid frame prominence, buff/debuff priority.
- Content: Raid, M+, PvP, casual? Affects layout density.
- Resolution: 1080p, 1440p, ultrawide? Affects scaling/sizing/spacing.
- Style: Minimal/clean, info-dense, or between?
- Specific requests: Fonts, colors, layout prefs?
2. Pick Foundation
Minimal Clean (best default):
Small UFs, hidden bars on mouseover, minimal datatexts. PT Sans Narrow 11 OUTLINE. ElvUI Norm. Dark backdrop, class health, blue accent.
Info-Dense (hardcore raiders/M+):
Larger UFs, always-visible bars, more datatexts. PT Sans Narrow 12. Role-specific accents.
PvP Focus (arena/BG):
Prominent arena frames, castbar emphasis, ToT visible. Wider UFs for readability. Debuff tracking prominent on target.
3. Build Profile
Only keys differing from defaults. Reference references/profile-schema.md. Keep lean.
Structure as Lua table with comments for non-obvious choices:
{
general = {
font = "PT Sans Narrow",
fontSize = 11,
fontStyle = "OUTLINE",
backdropcolor = { r = 0.07, g = 0.07, b = 0.07 },
backdropfadecolor = { r = 0.07, g = 0.07, b = 0.07, a = 0.85 },
bordercolor = { r = 0.15, g = 0.15, b = 0.15 },
valuecolor = { r = 0.32, g = 0.78, b = 0.72 },
},
}
4. Generate Movers
Calculate positions based on resolution:
movers = {
ElvUF_PlayerMover = "BOTTOM,ElvUIParent,BOTTOM,-200,215",
ElvUF_TargetMover = "BOTTOM,ElvUIParent,BOTTOM,200,215",
ElvUF_TargetTargetMover = "BOTTOM,ElvUIParent,BOTTOM,200,175",
ElvAB_1 = "BOTTOM,ElvUIParent,BOTTOM,0,4",
ElvAB_2 = "BOTTOM,ElvUIParent,BOTTOM,0,40",
ElvAB_3 = "BOTTOMRIGHT,ElvAB_1,BOTTOMLEFT,-4,0",
ElvAB_5 = "BOTTOMLEFT,ElvAB_1,BOTTOMRIGHT,4,0",
MinimapMover = "TOPRIGHT,ElvUIParent,TOPRIGHT,-3,-3",
BossHeaderMover = "TOPRIGHT,ElvUIParent,TOPRIGHT,-200,-300",
ElvUF_RaidMover = "BOTTOMLEFT,ElvUIParent,BOTTOMLEFT,4,250",
}
Ultrawide: spread wider, increase X offsets. 1080p: keep tighter.
5. Tailor to Role
Healers:
- Raid frames larger (width 80-90, height 40-50)
- Raid frames centered/left-center for mouse access
- Show incoming heals, heal prediction bars
- Debuff indicators prominent (center icon, colored borders)
- Party frames can hide if raid covers it
Tanks:
- Personal defensive cooldowns visible
- Target-of-target enabled and visible
- Threat indicator on nameplates prominent
- Boss castbar emphasis
DPS:
- Compact raid frames (width 60-70, height 30-35)
- Target debuffs visible (DoT classes)
- Castbar prominent for casters
- Smaller action bars OK if player uses keybinds
6. Present to User
Output as formatted Lua table with:
- Section headers as comments
- Design choice explanations
- Import instructions (paste into SavedVariables or use encoding tool)
- Note which settings are personal-preference tweaks
Anti-Patterns
- Don't generate full default table. Only overridden values. 2000-line config that's 90% defaults = useless noise.
- Don't mix fonts randomly. One font everywhere (maybe separate cooldown/display font).
- Don't make UFs huge. Player/target wider than 300px or taller than 60px = bloated on most resolutions.
- Don't use bright borders.
{r=0.8, g=0.0, b=0.0} border = crime.
- Don't forget movers. No movers = everything piles up in default positions.
- Don't hard-code pixels without considering user resolution.
- Don't over-customize nameplates for PvE-only players.
Source Code Reference
Authoritative source for ElvUI defaults: tukui-org/ElvUI repository:
- Profile defaults (P):
ElvUI/Game/Shared/Defaults/Profile.lua
- Global defaults (G):
ElvUI/Game/Shared/Defaults/Global.lua
- Private defaults (V):
ElvUI/Game/Shared/Defaults/Private.lua
- Mover positions:
ElvUI/Game/Shared/General/Movers.lua
- Export/Import:
ElvUI/Core/Distributor.lua
- Repo: https://github.com/tukui-org/ElvUI