Skip to content
Back to skills

K Fenui

ASecurity

Context for FenUI - the UI widget library for WoW addons. Covers frames, layouts, buttons, panels, and theming. Load this when building addon UI or working with FenUI widgets. Triggers: fenui, ui, widget, frame, layout, panel, button, tabs.

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 9, 2026
developmentgo

Works with

  • cli

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill k-fenui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of K Fenui?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for K Fenui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-k-fenui/badge)](https://www.skillsdirectory.com/skills/majiayu000-k-fenui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: k-fenui
description: >
  Context for FenUI - the UI widget library for WoW addons. Covers
  frames, layouts, buttons, panels, and theming. Load this when
  building addon UI or working with FenUI widgets.
  Triggers: fenui, ui, widget, frame, layout, panel, button, tabs.
---

# FenUI Library

FenUI is a UI widget library for WoW addons - pre-built components with consistent styling and behavior.

## Design Philosophy

- **Composable**: Build complex UIs from simple widgets
- **Themeable**: Consistent look across all widgets
- **Declarative**: Describe what you want, not how to build it
- **Accessible**: Proper focus handling and keyboard navigation

## Widget Categories

| Category | Widgets | Purpose |
|----------|---------|---------|
| **Containers** | `Panel`, `Frame`, `Window` | Hold other widgets |
| **Layout** | `Layout`, `Grid`, `Stack` | Arrange children |
| **Input** | `Button`, `EditBox`, `Slider`, `Checkbox` | User interaction |
| **Display** | `Label`, `Icon`, `ProgressBar`, `Texture` | Show information |
| **Navigation** | `Tabs`, `ScrollFrame`, `Dropdown` | Navigate content |

## Usage Pattern

```lua
local FenUI = LibStub("FenUI")

-- Create a panel with children
local panel = FenUI.Panel:Create(parent, {
    width = 300,
    height = 200,
    title = "My Panel",
})

-- Add a button
local button = FenUI.Button:Create(panel, {
    text = "Click Me",
    onClick = function() print("Clicked!") end,
})
```

## Layout System

FenUI uses a declarative layout system:

```lua
local layout = FenUI.Layout:Create(parent, {
    direction = "vertical",  -- or "horizontal"
    spacing = 8,
    padding = { top = 10, bottom = 10, left = 10, right = 10 },
})

-- Children are automatically arranged
layout:AddChild(widget1)
layout:AddChild(widget2)
layout:AddChild(widget3)
```

## Common Widgets

### Panel

```lua
FenUI.Panel:Create(parent, {
    width = 300,
    height = 200,
    title = "Title",        -- Optional header
    closable = true,        -- Show close button
    movable = true,         -- Allow dragging
})
```

### Button

```lua
FenUI.Button:Create(parent, {
    text = "Click Me",
    width = 100,
    height = 24,
    onClick = function() end,
    onEnter = function() end,  -- Hover
    onLeave = function() end,
})
```

### Tabs

```lua
FenUI.Tabs:Create(parent, {
    tabs = {
        { id = "tab1", label = "First", content = frame1 },
        { id = "tab2", label = "Second", content = frame2 },
    },
    defaultTab = "tab1",
    onTabChanged = function(tabId) end,
})
```

### Grid

```lua
FenUI.Grid:Create(parent, {
    columns = 3,
    rowHeight = 30,
    columnWidth = 100,
    spacing = 4,
})
```

## Theming

FenUI supports theming via a theme table:

```lua
FenUI:SetTheme({
    colors = {
        background = { 0.1, 0.1, 0.1, 0.9 },
        text = { 1, 1, 1, 1 },
        accent = { 0.2, 0.6, 1, 1 },
    },
    fonts = {
        normal = "GameFontNormal",
        header = "GameFontNormalLarge",
    },
})
```

## Best Practices

1. **Use Layout** - Don't manually position widgets; use Layout containers
2. **Prefer FenUI widgets** - Don't create raw frames when a FenUI widget exists
3. **Keep View layer thin** - UI code should just display data from Bridge layer
4. **Test at different scales** - Check UI at various UI scale settings

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.