بنقرة واحدة
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: