Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
sentinelcore avatar

Roblox Gui

  • 737 installs
  • 11 repo stars
  • Updated February 23, 2026
  • sentinelcore/roblox-skills

roblox-gui is an agent skill that guides Roblox GUI development for developers who need HUDs, menus, world-space UI, UDim2 layouts, and TweenService animations in ScreenGui and BillboardGui containers.

About

roblox-gui is a reference skill from sentinelcore/roblox-skills for building, animating, and debugging Roblox GUI elements including HUDs, menus, world-space UI, and player labels. It documents container types—ScreenGui in PlayerGui for screen-facing overlays, SurfaceGui on BasePart surfaces, and BillboardGui floating above parts or models—plus UDim2 responsive sizing, TweenService UI animations, LocalScript GUI logic, and ResetOnSpawn pitfalls. Developers reach for roblox-gui when agents work on Frame, TextLabel, or ImageButton layout questions, responsive scaling, or GUI bugs in Roblox Studio Luau projects.

  • roblox-gui
  • AI & Agent Building
  • AI-coding skill

Roblox Gui by the numbers

  • 737 all-time installs (skills.sh)
  • +60 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #1,385 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/sentinelcore/roblox-skills --skill roblox-gui

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs737
repo stars11
Last updatedFebruary 23, 2026
Repositorysentinelcore/roblox-skills

How do you build Roblox GUI with ScreenGui?

Helps with ai & agent building tasks.

Who is it for?

Roblox Luau developers building HUDs, menus, world-space signs, or responsive UI who need container-type and UDim2 layout guidance.

Skip if: Non-Roblox game engines such as Unity UGUI or Unreal UMG where Roblox PlayerGui patterns do not apply.

When should I use this skill?

The task involves ScreenGui setup, SurfaceGui or BillboardGui placement, UDim2 sizing, TweenService UI animation, or ResetOnSpawn GUI issues.

What you get

Configured ScreenGui or BillboardGui hierarchies, UDim2-scaled UI elements, TweenService animations, and working LocalScript GUI logic.

  • Configured GUI hierarchy
  • UDim2-scaled UI elements

Files

SKILL.mdMarkdownGitHub ↗

Roblox GUI Reference

GUI Container Types

ContainerParentUse Case
ScreenGuiPlayerGuiHUDs, menus, overlays — always faces screen
SurfaceGuiBasePartWorld-space UI on a part surface (signs, screens)
BillboardGuiBasePart or ModelFloats above a part in 3D space (name tags, health bars)

ScreenGui

-- LocalScript in StarterGui or StarterPlayerScripts
local player = game:GetService("Players").LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "HUD"
screenGui.ResetOnSpawn = false   -- keep GUI across respawns
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = playerGui

SurfaceGui

local surfaceGui = Instance.new("SurfaceGui")
surfaceGui.Face = Enum.NormalId.Front
surfaceGui.SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud
surfaceGui.PixelsPerStud = 50
surfaceGui.Parent = workspace.ScreenPart

local label = Instance.new("TextLabel")
label.Size = UDim2.fromScale(1, 1)
label.Text = "Hello World"
label.Parent = surfaceGui

BillboardGui

local billboard = Instance.new("BillboardGui")
billboard.Size = UDim2.fromOffset(200, 50)
billboard.StudsOffset = Vector3.new(0, 2.5, 0)  -- float above head
billboard.AlwaysOnTop = false
billboard.Parent = character:WaitForChild("Head")

local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.fromScale(1, 1)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = player.DisplayName
nameLabel.Parent = billboard

---

UDim2 Sizing and Positioning

UDim2.new(xScale, xOffset, yScale, yOffset) — scale is 0–1 relative to parent, offset is pixels.

frame.Size     = UDim2.new(1, 0, 0, 50)       -- full width, 50px tall
frame.Position = UDim2.new(0, 0, 0, 0)         -- top-left corner

frame.Size     = UDim2.fromScale(0.6, 0.4)     -- 60% wide, 40% tall
frame.Position = UDim2.new(0.2, 0, 0.3, 0)    -- centered (0.2 = (1-0.6)/2)

UDim2.fromScale(0.5, 0.5)    -- scale only
UDim2.fromOffset(300, 150)   -- pixels only

AnchorPoint shifts the element's pivot (0–1 on each axis):

frame.AnchorPoint = Vector2.new(0.5, 0.5)   -- pivot at center
frame.Position    = UDim2.fromScale(0.5, 0.5)  -- truly centered on screen

---

Responsive Design

Prefer scale over offset so UI adapts to all screen sizes.

button.Size     = UDim2.fromScale(0.2, 0.07)
button.Position = UDim2.new(0.4, 0, 0.85, 0)

-- Prevent distortion with UIAspectRatioConstraint
local arc = Instance.new("UIAspectRatioConstraint")
arc.AspectRatio = 4   -- width:height = 4:1
arc.Parent = button

---

TweenService Animations

local TweenService = game:GetService("TweenService")
local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)

local menuFrame = script.Parent

local function openMenu()
    TweenService:Create(menuFrame, tweenInfo, {
        Position = UDim2.new(0.05, 0, 0.1, 0)
    }):Play()
end

local function closeMenu()
    TweenService:Create(menuFrame, tweenInfo, {
        Position = UDim2.new(-0.5, 0, 0.1, 0)
    }):Play()
end

-- Animated progress bar
local function setProgress(bar, pct)
    TweenService:Create(bar, TweenInfo.new(0.2), {
        Size = UDim2.new(pct, 0, 1, 0)
    }):Play()
end

---

LocalScript Placement

LocationNotes
StarterGuiCloned into PlayerGui on join; use ResetOnSpawn = false to persist
StarterPlayerScriptsRuns once, not reset on respawn; good for persistent managers
StarterCharacterScriptsRe-runs each spawn; suited for character-dependent UI
-- Safe pattern: wait for character
local player = game:GetService("Players").LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

humanoid.HealthChanged:Connect(function(health)
    -- update health bar
end)

---

ResetOnSpawn

screenGui.ResetOnSpawn = false  -- persist across respawns (inventory, settings)
screenGui.ResetOnSpawn = true   -- re-create on respawn (respawn timer) — default

---

Common Patterns Quick Reference

PatternKey Setup
Full-screen overlaySize = UDim2.fromScale(1,1), Position = UDim2.fromScale(0,0)
Bottom-center HUD barAnchorPoint = (0.5,1), Position = UDim2.new(0.5,0,1,-10)
Padded listUIPadding + UIListLayout inside a Frame
Scrollable listScrollingFrame + UIListLayout; set CanvasSize from UIListLayout.AbsoluteContentSize
Rounded cornersUICorner with CornerRadius = UDim.new(0, 8)
Scaled textTextScaled = true on TextLabel/TextButton so font grows with container
Dynamic frame heightAutomaticSize = Enum.AutomaticSize.Y so frame expands to fit children
Health barNested frames: outer = background, inner tweened by Size.X.Scale
Name tagBillboardGui on Head, StudsOffset = Vector3.new(0, 2.5, 0)

---

Common Mistakes

MistakeFix
GUI disappears on respawnSet ResetOnSpawn = false or use StarterPlayerScripts
UI looks wrong on mobileUse UDim2.fromScale + UIAspectRatioConstraint
Script can't find PlayerGuiUse player:WaitForChild("PlayerGui")
Tween doesn't runEnsure the property is tweenable; Text is not, Position and Size are
BillboardGui visible through wallsVerify AlwaysOnTop = false
AbsoluteSize is zero on first frameRead it inside task.defer or after first render step
Clicks pass through overlapping framesAdd a transparent input-blocking Frame or set Modal = true
SurfaceGui flickersSet LightInfluence = 0; ensure part isn't too thin
Text tiny on mobileSet TextScaled = true — fixed TextSize doesn't adapt to screen size
UI hard to test on mobileUse Studio's Device Emulator (Test tab → Device) to preview layouts

Related skills

FAQ

Which Roblox GUI containers does roblox-gui cover?

roblox-gui covers ScreenGui for screen-facing HUDs in PlayerGui, SurfaceGui on BasePart surfaces for world signs, and BillboardGui floating above parts or models for player labels and overlays.

What Roblox UI topics does roblox-gui address?

roblox-gui addresses UDim2 sizing, Frame and TextLabel layouts, TweenService animations, LocalScript GUI logic, responsive scaling, and common ResetOnSpawn configuration issues in Roblox Studio.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.