manage_ui
Design, create, update, and check Roblox in-game UI components such as ScreenGui and Frame, with built-in accessibility validation.
Instructions
Create / update / verify Roblox in-game UI (ScreenGui / Frame / TextLabel / …). Always start a new UI task with the design_brief action — it accepts an omitted or partial brief, inspects Studio context, then returns a current-state summary, recommended mode/change scopes, candidate brief patches, and one user-facing confirmation or clarification question. design_brief may return asset recommendation candidates from existing UI images, user references, or conservative manage_assets.search results; do not use a recommended asset until the user accepts it. Do not dump enum lists at the user; map natural language to internal purpose/platform/tone values through recommendations, and only finalize identity-defining fields after the user accepts a recommendation or provides equivalent intent. Read MCP resource weppy://ui-studio/guide for the full guide; it is split into Floor (non-negotiable accessibility), Vocabulary (style menu — pick ONE family per dimension; do not blend everything), Direction (brief → choices), and Tree encoding (Roblox property JSON shapes). Floor essentials suggested by Design Check (check): (1) mobile touch target ≥ 44 px (2) text contrast ≥ 4.5:1 (3) prefer explicit TextSize over TextScaled (4) respect platform safe zones (5) warn on full-screen opaque roots for non-modal purposes. Style is brief-driven; reject the default AI look (uniform 8 px corners + generic blue + glass card + Gotham everywhere) — each game deserves its own visual identity.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | UI action. [PRO]: design_brief, create_tree, update, delete, preview, check. (M2+에서 propose_layout/apply_asset 추가 예정.) | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| brief | No | 완성 또는 부분 design_brief 구조체. Used by: design_brief (optional; partial allowed). | |
| briefId | No | design_brief 가 반환한 brief 식별자. Used by: create_tree, update, delete (optional). | |
| tree | No | UI 트리 선언형 JSON. 루트는 ScreenGui. 스키마: {className: string, name?: string, parent?: string, properties?: {...}, children?: Tree[]} parent 생략 시 StarterGui. className은 Roblox GUI 계열(ScreenGui/Frame/TextLabel/TextButton/ImageLabel/ImageButton/ScrollingFrame/TextBox/UIListLayout/UIGridLayout/UIPadding/UICorner/UIStroke/UIAspectRatioConstraint/UIGradient/UITextSizeConstraint/UISizeConstraint) 한정. In-game UI 기본 구조(HUD / button / toast / card / 대부분의 menu): ScreenGui > Frame(BackgroundTransparency=1) > 실제 UI 요소. ScreenGui 직속 풀스크린 불투명 Frame 은 modal 용도에만 사용한다. Property 값 인코딩: UDim2는 {xScale, xOffset, yScale, yOffset}, UDim은 {scale, offset}, Color3는 {r, g, b}, Vector2/Vector3는 {x,y}/{x,y,z}, Enum은 item name string을 사용한다. | |
| targetPath | No | Path to existing UI instance. Both `StarterGui.MyGui` and `game.StarterGui.MyGui` are accepted. Used by: update, delete (required). | |
| changes | No | 부분 변경 스펙. {properties?: {...}, addChildren?: Tree[], removeChildren?: [string]} properties는 `Instance:SetPropertyValue` 호환 키·값 쌍. 값 인코딩은 tree 설명의 Property 값 인코딩을 따른다. | |
| includeVisualAnalysis | No | Opt-in only. Used by: check. When true, the server may read a saved preview snapshot PNG + visible GUI metadata and merge AI visual suggestions into check_results. Default false; no screenshot capture is triggered by check. | |
| snapshotId | No | Saved manage_ui.preview snapshot_id to use for visual analysis. Used by: check when includeVisualAnalysis=true. If omitted, the latest compatible saved snapshot is used when available. |