원클릭으로
roblox-gui-fusion
Fusion 0.3 game UI - shop, inventory, settings screens. Reactive declarative patterns for Roblox.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Fusion 0.3 game UI - shop, inventory, settings screens. Reactive declarative patterns for Roblox.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Service hierarchy, 7 foundational patterns, cross-platform input. Client-server architecture, module patterns, framework options.
Luau language fundamentals, type system, OOP, deprecation table, error patterns.
Roblox AnalyticsService: custom events, economy tracking, funnels, rate limits, event taxonomy.
Animations, particles, tweens, ContentProvider, visual effects.
Code review with security, performance, and monetization lenses for Roblox projects
DataStores, ProfileStore, session locking, data persistence patterns.
| name | roblox-gui-fusion |
| description | Fusion 0.3 game UI - shop, inventory, settings screens. Reactive declarative patterns for Roblox. |
| last_reviewed | "2026-05-24T00:00:00.000Z" |
Framework: Fusion 0.3 (dphfox/Fusion, MIT). Vendored at .opencode/vendor/fusion/.
Require path: The AI must resolve the Fusion require path based on the project:
Packages/Fusion exists (Wally) → require(ReplicatedStorage.Packages.Fusion).opencode/vendor/fusion exists (this plugin) → require(ReplicatedStorage[".opencode"].vendor.fusion) or wherever the project root maps in the DataModelWhen to use this skill:
When NOT to use this skill:
roblox-gui skill)Routing logic for the AI:
Key design rules (framework-agnostic, always apply):
local Fusion = require(path.to.Fusion)
local scoped = Fusion.scoped
local peek = Fusion.peek
local Children = Fusion.Children
local OnEvent = Fusion.OnEvent
-- Create a scope (manages cleanup of all objects created within it)
local scope = scoped(Fusion)
-- Reactive state
local count = scope:Value(0)
-- Derived state (re-computes when dependencies change)
local label = scope:Computed(function(use)
return "Count: " .. use(count)
end)
-- Create instances (reactive properties auto-update)
local gui = scope:New "ScreenGui" {
Parent = playerGui,
[Children] = {
scope:New "TextLabel" {
Text = label,
Size = UDim2.fromOffset(200, 50),
},
},
}
-- Animate any value
local smoothPos = scope:Spring(position, 25) -- speed 25
-- Read without subscribing (in callbacks)
local currentCount = peek(count)
-- Cleanup everything in the scope
scope:doCleanup()
local function Button(scope: Fusion.Scope, props: {
Text: Fusion.UsedAs<string>,
OnClick: () -> (),
Color: Fusion.UsedAs<Color3>?,
})
local isHovering = scope:Value(false)
return scope:New "TextButton" {
Text = props.Text,
BackgroundColor3 = scope:Spring(scope:Computed(function(use)
local base = if props.Color then use(props.Color) else Color3.fromRGB(80, 140, 255)
return if use(isHovering) then base:Lerp(Color3.new(1,1,1), 0.1) else base
end), 25),
[OnEvent "Activated"] = props.OnClick,
[OnEvent "MouseEnter"] = function() isHovering:set(true) end,
[OnEvent "MouseLeave"] = function() isHovering:set(false) end,
[Children] = { scope:New "UICorner" { CornerRadius = UDim.new(0, 6) } },
}
end
-- Renders a UI element for each item. Automatically adds/removes as data changes.
scope:ForPairs(items, function(use, itemScope, index, item)
return index, itemScope:New "TextLabel" {
Text = item.Name,
LayoutOrder = index,
}
end)
Full production-quality screen implementations are in references/:
Each reference is self-contained and demonstrates: