Stud UI Clean Roblox: Agent Skill + tested Luau kit to build Roblox UI in the chunky 3D stud simulator style: buttons, windows, shops, HUD, slots, 1022 icons, motion.
# Add to your Claude Code skills
git clone https://github.com/TemporaryLooker22/Stud-UI-Clean-RobloxGuides for using ai agents skills like Stud-UI-Clean-Roblox.
See how Stud-UI-Clean-Roblox compares with popular alternatives.
Stud-UI-Clean-Roblox is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by TemporaryLooker22. Stud UI Clean Roblox: Agent Skill + tested Luau kit to build Roblox UI in the chunky 3D stud simulator style: buttons, windows, shops, HUD, slots, 1022 icons, motion. It has 50 GitHub stars.
Stud-UI-Clean-Roblox's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/TemporaryLooker22/Stud-UI-Clean-Roblox" and add it to your Claude Code skills directory (see the Installation section above). Stud-UI-Clean-Roblox ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
Stud-UI-Clean-Roblox is primarily written in Luau. It is open-source under TemporaryLooker22 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh Stud-UI-Clean-Roblox against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
A complete, measured design system extracted from a shipped Roblox simulator (17 ScreenGuis, ~7,700 instances) plus a tested component kit that rebuilds it from scratch. Your job when this skill triggers: produce UI that is indistinguishable from the reference screenshots, by building through the kit instead of hand-placing frames.
Look at assets/screenshots/ first (index in assets/screenshots/README.md). Screenshot 20 shows the original shop
(left) next to the same window generated by this kit (right) — that is the quality bar.
WindowScale
UIScale = clamp(min(vx/1050, vy/620), 0.52, 1.18). This keeps 1 px bevels and 4 px lips crisp on every device.| Path | What | When to read |
|---|---|---|
src/StudUI.luau |
Component kit (ModuleScript). Tokens + builders for every component | always use it; read its header comments for parameters |
src/StudMotion.luau |
Motion/sound/responsive (client ModuleScript) | when wiring runtime behaviour |
src/CheckUIIcons.luau |
1022-icon registry (ModuleScript) | install it; don't read it — use the catalog |
references/icon-catalog.md |
every icon path + id, ★ = used by reference | to pick icons (search by keyword) |
references/design-tokens.md |
fonts, sizes, every color, button themes, rarities, surfaces, strokes, z-index | when choosing or extending colors/sizes |
references/components.md |
exact instance trees + geometry of every component | when building something the kit doesn't cover, or debugging a look |
references/layouts-and-archetypes.md |
HUD placement, DisplayOrder stack, 7 window archetypes with recipes | when composing a screen |
references/motion-and-sound.md |
every tween, idle loop, feedback, sound id | when adding behaviour |
references/icons-and-assets.md |
icon API, variant rules, custom texture ids | when placing icons / images |
references/checklist.md |
QA checklist, common mistakes, MCP verification loop | before you say "done" |
examples/01…06 |
runnable builders (shop, HUD, rebirth, daily, index+tabs) + runtime controller | copy the closest one as a starting point |
assets/screenshots/ |
11 reference captures + 3 validation captures | to see the target |
StudUI, StudMotion, CheckUIIcons as ModuleScripts in
ReplicatedStorage (or map src/ with Rojo). If you can't write files into the place, inline the module source in
your build script.StarterGui with a builder function like the examples (return function(UI, Icons, parent) … end),
run once from the command bar / MCP execute_luau. Never rebuild UI on every spawn.examples/06_MenuController.client.luau):
Motion.Window, Motion.BindButton, Motion.SpinSunbursts, feedback (Motion.Float, Motion.Shake).references/checklist.md.local UI = require(ReplicatedStorage.StudUI))local gui = UI.ScreenGui("MenuShop", 11, { Parent = game.StarterGui }) -- + Sons folder + Basculer event
local win = UI.Window(gui, { Size = Vector2.new(662, 448), Title = "Nest Shop",
Header = "image" --[[ or "blue"|"purple"|"gold"|"pink"|ColorSequence ]], Icon = UI.Assets.Basket })
-- win.Fenetre / win.Entete / win.Corps / win.Fermer / win.WindowScale / win.HeaderHeight
UI.Button(parent, { Theme = "green", Size = Vector2.new(179, 65), Position = UDim2.fromOffset(x, y),
Text = "Pier", TextSize = 36, Icon = Icons.Get("Item/Box/Box 1st Outline") }) -- Style "Stud" (HUD/menus)
UI.Button(parent, { Style = "Glossy", Theme = "cash", Size = Vector2.new(142, 49), Text = "$100", FixedTextSize = 32 })
UI.Button(parent, { Style = "Chunky", Theme = "orange", Size = Vector2.new(146, 56), Text = "Restock", FixedTextSize = 31 })
UI.Button(parent, { Theme = "red", Size = Vector2.new(106, 106), IconLayout = "Big", Icon = id, Text = "Shop" }) -- menu tile
UI.Button(parent, { Style = "Chunky", Theme = "purple", Size = Vector2.new(96, 70), IconLayout = "Top", Icon = id, Text = "All" }) -- tab
UI.Button(parent, { Theme = "Legendary", Size = Vector2.new(150, 42), Text = "Legendary" }) -- rarity tab
UI.CloseButton(entete, { Position = UDim2.fromOffset(W - 41, 37) })
UI.ProductCard(list, { Title, Rarity = "Rare", Description, Stock = "Stock x3", Icon, Robux = 49, Price = "$1.2K" })
UI.ItemSlot(parent, { Size = Vector2.new(80, 80), Icon, Title, Quantity = "x1", Tag, Top = "60%", Selected, Check, Lock })
UI.StudPanel(parent, { Size, Position, Gradient = "cyan"|"violet"|"amber"|"lime"|"pink"|"cosmic"|"gold"|"rainbow", Rotation })
UI.InsetBox(parent, { Size, Position, Transparency = 0.1 })
UI.ProgressBar(parent, { Size, Position, Progress = 0.48, Text = "$12K / $25K" })
UI.Pill(parent, 'New stock in <font color="#FFD23F">4:59</font>', { Width = 230, Position = UDim2.new(.5, 0, 0, Hh) })
UI.ScrollList(win.Corps, { Size, Padding = 9 }) / { Grid = Vector2.new(140, 126), GridGap = 12 }
UI.Text(parent, "text", { Size, Position, TextSize | Max, Stroke, Thickness, Gradient, Rich, Font = "Heavy"|"Gotham"|"Bold" })
UI.ShadowText(parent, "text", {...}) UI.MoneyText(frame, "$572,831")
UI.RobuxBadge(button, 49, oldPrice?) UI.RobuxContent(robuxButton, 14) UI.NotifBadge(button)
UI.Sunburst(parent, 150) UI.OutlinedIcon(parent, UI.Assets.PlusBlack, UI.Assets.PlusWhite, {...})
UI.Recolor(button, "red") UI.SetButtonText(button, "CLAIMED") UI.SetDisabled(button, true)
Themes: green red blue yellow purple gray meadow orange close robux cash (+ French aliases vert rouge bleu jaune violet gris)
and every rarity name. Reflection presets in UI.ReflectionPresets; custom stripes with UI.Stripes{{from,to,alpha},…}.
Motion (local Motion = require(ReplicatedStorage.StudMotion), client only):
Motion.Window(gui, fenetre) → {Open, Close, Toggle} · Motion.BindButton(btn, 1.05, gui.Sons) ·
Motion.CreateSounds(gui.Sons) · Motion.BindResponsive(uiScale, 0.8) · Motion.SpinSunbursts(root) · Motion.Sway(img) ·
Motion.PulseScale(badge.Pulse) · Motion.PulseStroke(slot.Lisere.Selection) · Motion.SelectTab(tabs, active) ·
Motion.Float(btn, "Bought!", UI.Colors.FloatSuccess) · Motion.Shake(btn) · Motion.ShowBanner(banner) ·
Motion.Abbreviate(1234) → "$1.2K" · Motion.Duration(299) → "04:59".
#26020A on red, #022826 on blue, #1A2402 on green… Pure black makes it look generic.UI.ShadowText does it.Fenetre, Entete, Corps, Biseau, Face, Fond, Texte, Ombre, Icone…):
runtime scripts (recolor, tabs, disabled state, menu controllers) find parts by these names.references/icon-catalog.md, "1st Outline" variants by default.New color theme for a button = 4 colors: a 3–5 stop bright fond gradient (lighter top), a 2-stop biseau ~45 % darker,
a near-black bord of the same hue, a very dark texte tint. New rarity = text gradient (light → saturated) + tab theme +
optional panel image. New window = pick the closest archetype and reuse its proportions; header color from UI.HeaderThemes
or a new 3-stop vertical gradient in the same luminance range. Keep corner radii ≤ 6 and stroke thicknesses in the table.
If the Roblox Studio MCP is connected: build with execute_luau (Edit), make the window visible temporarily (store and
restore the original Visible), screen_capture, compare with the reference screenshot, fix, then clean up any temporary
instances. For motion, start_stop_play, run a client check (blur 18, FOV +8, other GUIs hidden then restored), read
get_console_output, stop Play. Never leave test instances or changed properties in the user's place.
Chunky 3D stud buttons · glass streaks · extruded Heavy text · dark glass windows · spinning sunbursts · rarity ladder · bouncy motion
Download the skill · Quick start · Gallery · Kit API · 🇫🇷 Français
Left: the original shop from a shipped Roblox simulator. Right: the same window generated from scratch by this kit.
Stud UI Clean Roblox is a ready-to-use Agent Skill: a folder an AI agent (Claude Code, Claude.ai, or any agent that can read files) loads to create Roblox interfaces in one precise, polished style. The style was measured on a real Roblox experience (17 ScreenGuis, ~7,700 UI instances, every color, stroke, gradient keypoint and tween timing) and then rebuilt as a tested Luau component kit.
Ask your agent "make me a pet index with rarity tabs" or "add a daily rewards menu" and it builds UI that looks like it shipped with the game, instead of a generic flat menu.
| The agent gets | So it can |
|---|---|
🧩 StudUI.luau component kit |
build 3D buttons, windows, product cards, slots, panels, bars, badges in one call each |
🎬 StudMotion.luau |
wire hover / press, bouncy open & close with blur and FOV, idle animations, feedback, sounds |
🖼️ 1022 icons (CheckUIIcons) + catalog |
pick real rbxassetids instead of placeholders |
| 🎨 Design tokens | use the exact palette, fonts, outlines, rarity colors, surfaces |
| 📐 Layouts & 7 screen archetypes | compose HUDs, shops, calendars, season passes, collections, reward popups |
| 📸 14 screenshots | see the target and compare its own output |
| ✅ QA checklist | catch the mistakes that make a UI look "generic" |
More captures and notes: assets/screenshots/.
git clone https://github.com/TemporaryLooker22/Stud-UI-Clean-Roblox ~/.claude/skills/stud-ui-clean-roblox
Or put it in a project at .claude/skills/stud-ui-clean-roblox. Claude picks it up automatically when you ask for Roblox UI.
Download stud-ui-clean-roblox.skill from the latest release and add it in
Settings → Capabilities → Skills (or ask Claude to install it).
Give the agent this folder and tell it to start with SKILL.md. Every other file is referenced from there.
Works best when the agent can drive Roblox Studio (for example through the Roblox Studio MCP) so it can build, screenshot and compare. Example prompts:
"Create a pet shop menu in my game's Stud UI style with 6 pets, Robux and coin prices." "Add a Settings window with music / sound toggles, same style as the Rebirth menu." "Build the HUD: top nav bar with Shop, Play, Trade, and a hotbar of 6 slots."
Put the three modules of src/ in ReplicatedStorage (copy-paste, or rojo serve with the included
default.project.json), then from the Studio command bar:
local RS = game.ReplicatedStorage
local UI, Icons = require(RS.StudUI), require(RS.CheckUIIcons)
local gui = UI.ScreenGui("MenuShop", 11, { Parent = game.StarterGui })
local win = UI.Window(gui, { Size = Vector2.new(662, 448), Title = "Pet Shop", Header = "pink",
Icon = Icons.Get("Main/Paw/Golden Paw 1st Outline"), Visible = true })
local list = UI.ScrollList(win.Corps, { Size = UDim2.fromOffset(648, 358) })
UI.ProductCard(list, { Title = "Golden Cat", Rarity = "Legendary", Description = "Purrs in pure gold.",
Stock = "Stock x3", Icon = Icons.Get("Animal/Cat/Golden Cat 1st Outline"), Robux = 99, Price = "$25K" })
Then drop a LocalScript in the ScreenGui based on
examples/06_MenuController.client.luau for the open / close animation,
blur, hover and sounds. Open it from anywhere with PlayerGui.MenuShop.Basculer:Fire().
local UI = require(ReplicatedStorage.StudUI)
| Component | Call | Look |
|---|---|---|
| Stud button | UI.Button(p, { Theme = "green", Size = Vector2.new(179,65), Text, Icon }) |
HUD / menu buttons, no corners, studs, glass streaks |
| Menu tile | UI.Button(p, { Theme = "red", Size = Vector2.new(106,106), IconLayout = "Big", Icon, Text }) |
huge overflowing icon, label on the edge |
| Glossy button | UI.Button(p, { Style = "Glossy", Theme = "cash", Text = "$100" }) |
purchase buttons in cards, 28° gradient + gloss |
| Chunky button | UI.Button(p, { Style = "Chunky", Theme = "orange", Text = "Restock" }) |
header actions, category tabs (IconLayout = "Top") |
| Rarity tab | UI.Button(p, { Theme = "Legendary", Text = "Legendary" }) |
8 rarities Common → Cosmic |
| Close X | UI.CloseButton(entete, { Position }) |
55×55 pink-red chunky X |
| Window | UI.Window(gui, { Size, Title, Header = "blue"/"purple"/"gold"/"pink"/"image", Icon }) |
stud header, overflowing icon, dark glass body |
| Product card | UI.ProductCard(list, { Title, Rarity, Description, Stock, Icon, Robux, Price }) |
617×168 shop card |
| Item slot | UI.ItemSlot(p, { Size, Icon, Title, Quantity, Tag, Selected, Check, Lock }) |
dark slot + spinning sunburst |
| Stud panel | UI.StudPanel(p, { Size, Gradient = "cyan"/"rainbow"/…, Rotation }) |
colored tiles, banners |
| Inset box / bar / pill | UI.InsetBox, UI.ProgressBar, UI.Pill |
recessed boxes, gold progress, timer pill |
| Badges & text | UI.RobuxBadge, UI.NotifBadge, UI.Text, UI.ShadowText, UI.MoneyText, UI.OutlinedIcon |
|
| Helpers | UI.Recolor, UI.SetButtonText, UI.SetDisabled, UI.Stripes, UI.Reflection |
local Motion = require(ReplicatedStorage.StudMotion) (client)
| Behaviour | Call |
|---|---|
| Menu open / close (bounce, blur 18, FOV +8, other GUIs hidden, Esc / B / X) | Motion.Window(gui, fenetre) → Open, Close, Toggle |
| Hover 1.05 · press 0.92 in 0.05 s · Back-Out release | Motion.BindButton(button, 1.05, gui.Sons) |
| Responsive scale (1050×620 reference, 0.52–1.18) | Motion.BindResponsive(uiScale) |
| Idle: sunbursts, basket sway, badge pulse, stroke pulse | Motion.SpinSunbursts, Sway, PulseScale, PulseStroke |
| Feedback | Motion.Float(btn, "Bought!"), Motion.Shake(btn), Motion.ShowBanner(banner) |
| Sounds & formatting | Motion.CreateSounds(folder), Motion.Abbreviate(1234) → "$1.2K", Motion.Duration(299) → "04:59" |
Full parameter docs are in the header comments of each function and in references/components.md.