
godot-ui-containers
Expert blueprint for responsive UI layouts using Container nodes (HBoxContainer, VBoxContainer, GridContainer, MarginContainer, ScrollContainer, HFlowContainer, SubViewportContainer). Covers size flags, anchors, split containers, virtuallist pooling, stretchshrink previews, and dynamic layouts. Use when building adaptive interfaces OR implementing responsive menus. Keywords: Container, HBoxContainer, VBoxContainer, GridContainer, HFlowContainer, SubViewportContainer, virtuallist, stretchshrink, sizeflags, EXPANDFILL, anchors, responsive.
- Installs
- 517
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-ui-containers- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads godot-ui-containers automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Decision Tree: Container type → script
| Need | Prefer | MANDATORY script |
|---|---|---|
| Breakpoint shell / full-screen adaptive root | Margin + Box containers | responsive_layout_builder.gd |
| Fixed columns that change with width | GridContainer | responsive_grid.gd / responsive_inventory_grid.gd |
| Wrapping chips / tags | HFlowContainer | responsive_tag_cloud.gd |
| Thousands of scroll rows | Virtual pool (not raw children) | virtual_list.gd |
| Log/chat autoscroll | ScrollContainer | terminal_autoscroll.gd |
| 3D character/item preview in UI | SubViewportContainer | viewport_3d_preview.gd |
| Deep nesting causing layout spikes | Anchors/offsets instead | performance_anchor_layout.gd |
| Radial/wheel menus | Custom Container | custom_radial_container.gd |
Do-NOT-Load (by scenario)
| Scenario | Load | Do NOT load |
|---|---|---|
| Inventory / shop grid | responsive_grid.gd / responsive_inventory_grid.gd | custom_radial_container.gd, viewport_3d_preview.gd |
| Tag cloud / chip wrap | responsive_tag_cloud.gd | Grid column scripts, virtual_list.gd |
| Thousands of log/chat rows | virtual_list.gd + terminal_autoscroll.gd | Inventory/radial/viewport scripts |
| 3D item/character preview | viewport_3d_preview.gd | Radial menu + inventory grid scripts |
| Radial / wheel menu | custom_radial_container.gd | Virtual list + tag cloud |
| Deep nesting / layout spikes | performance_anchor_layout.gd | Full responsive builder catalog |
Available Scripts
virtual_list.gd
Virtual List Pooling — recycle a small Control pool + spacer height for O(1) ScrollContainer rows.
responsive_layout_builder.gd
Expert container builder with breakpoint-based responsive layouts.
responsive_grid.gd
Auto-adjusting GridContainer that changes column count based on available width.
responsive_inventory_grid.gd
Expert logic for dynamic Grid columns based on available width and item minimum size.
terminal_autoscroll.gd
Safe ScrollContainer management. Handles the common "one-frame delay" bug when adding logs or chat.
viewport_3d_preview.gd
High-performance 3D-in-UI setup. Uses stretch_shrink and transparent_bg for character previews.
dynamic_tab_manager.gd
Pattern for dynamic tab spawning, custom titles, and tab closing logic.
responsive_tag_cloud.gd
Wrapping item lists using HFlowContainer, essential for tag clouds and responsive menus.
performance_anchor_layout.gd
Optimization architecture. Replaces deep container nesting with lightweight Anchor and Offset logic.
custom_radial_container.gd
Expert custom container logic implementing a radial/circle layout via NOTIFICATION_SORT_CHILDREN.
animated_container_shuffle.gd
Dynamic sibling reordering and animation logic for interactive UI lists.
aspect_ratio_mini_map.gd
Enforcing strict aspect ratios (e.g. 1:1, 16:9) across fluid window resizes using AspectRatioContainer.
container_size_flags_pro.gd
Advanced sizing logic using SIZE_EXPAND_FILL and stretch_ratio for weighted layouts.
NEVER Do in UI Containers
- NEVER ignore
mouse_filterproperties; strictly set toPASSorIGNOREon overlay containers to prevent them from blocking clicks to underlying buttons. - NEVER instantiate thousands of nodes in a
ScrollContainer; strictly use Virtual List Pooling — MANDATORY read virtual_list.gd (VScrollBarhook + single spacer child) for O(1) rendering performance. - NEVER manually calculate card dimensions for responsive grids; strictly use an
AspectRatioContainerto lock proportions (e.g., 2:3 ratio) while allowing parent containers to handle scaling. - NEVER manually set child
positionorsizein a Container — Containers override child transforms duringqueue_sort(). Usecustom_minimum_sizeorsize_flagsinstead [1]. - NEVER forget
size_flagsfor expansion — Default isSIZE_SHRINK_BEGIN. Children will stay tiny unless you setSIZE_EXPAND_FILLfor responsive containers. - NEVER use
GridContainerwithout settingcolumns— Default is 1, creating a simple vertical list. For responsive wrapping, useHFlowContainerinstead [8]. - NEVER nest containers too deeply (10+ levels) — Heavy nesting causes layout recalculation spikes. Replace intermediate containers with Anchor Layouts for static padding [16].
- NEVER skip separation overrides — Default theme separation is often too tight. Use
add_theme_constant_override("separation", value)for professional breathing room. - NEVER use
ScrollContainerwithout a minimum size — Without it, the container may collapse to zero or expand infinitely, breaking the scroll mechanism. - NEVER scroll to a new child on the same frame it was added — The layout hasn't updated yet. You MUST
await get_tree().process_framebefore settingscroll_vertical[5]. - NEVER scale a
SubViewportContainerto change its size — This distorts the rendered contents. Adjust margins or usestretchandstretch_shrinkproperties instead [2]. - NEVER leave
mouse_filteron default for layered Viewports — Input events might not reach children. UseMOUSE_FILTER_PASSorSTOPto ensure events drill down [6]. - NEVER use
GridContainerfor responsive wrapping — UseHFlowContainerif you want items to wrap based on width. GridContainer enforces a strict column count [7]. - NEVER animate
positiondirectly inside a container — UseTweenoncustom_minimum_sizeto smoothly "push" siblings during transitions [1].
Expert Layout Patterns
1. Split-Screen-Container (Dynamic)
Standard pattern for local multiplayer or comparisons using HSplitContainer.
# split_screen.gd
func setup_split(v1: SubViewport, v2: SubViewport):
var hsplit = HSplitContainer.new()
var c1 = SubViewportContainer.new()
c1.stretch = true # Resize viewport to match container
c1.add_child(v1)
hsplit.add_child(c1)
# repeat for c2/v2...
2. Virtual List ScrollContainer (Pooling)
High-performance list for thousands of items. MANDATORY: implement via virtual_list.gd (setup_pool + set_data) — do not paste a one-off scroll recycler inline.
3. Aspect-Ratio-Locked Cards
Responsive cards that maintain proportions (e.g., 2:3) in any grid or flow container.
# card_grid.gd
func add_card(texture: Texture2D):
var arc = AspectRatioContainer.new()
arc.ratio = 0.66 # 2:3 proportions
arc.stretch_mode = AspectRatioContainer.STRETCH_FIT
var tr = TextureRect.new()
tr.texture = texture
tr.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
tr.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
arc.add_child(tr)
grid_container.add_child(arc)
Size-flag recipes: MANDATORY container_size_flags_pro.gd — do not paste beginner
SIZE_EXPAND_FILLtutorials inline.
Deep recipes (on demand)
LLM-ignorance rule: if a general agent would not know it before reading, it lives here or in
scripts/— never delete, only move.
| Topic | Reference |
|---|---|
| Anchors, flags, separation | container-layout-recipes.md |
Reference
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
Official Documentation
- Using Containers — Canonical guide for box/grid/flow/split containers, size flags, and when Containers override child transforms.
- Size and anchors — Anchor presets and offsets for responsive Control placement when you intentionally skip deep Container nesting.
- Control node gallery — Visual catalog of Control/Container types so agents pick HFlow vs Grid vs Split correctly.
- Custom GUI controls — NOTIFICATION_SORT_CHILDREN and fit_child_in_rect patterns required for custom radial/layouts.
- GUI navigation — Focus neighbors and keyboard/gamepad traversal across container-built menus.
- Multiple resolutions — Stretch modes and content scale that interact with container-driven responsive UI.
- Control — size_flags_*, custom_minimum_size, mouse_filter, and anchors APIs every layout script uses.
- Container — Base sort lifecycle (queue_sort / SORT_CHILDREN) that forbids manual child position/size.
- ScrollContainer — Scroll bars, minimum size pitfalls, and post-frame scroll_vertical updates for log/chat UIs.
- HFlowContainer — Width-based wrapping for tag clouds and chip lists (prefer over fixed-column GridContainer).
- AspectRatioContainer — Lock card/minimap proportions under fluid parent sizes.
- SubViewportContainer — stretch / stretch_shrink for 3D-in-UI previews without scaling distortion.
Related Skills
Prerequisites
- godot-project-foundations — Scene tree ownership, Control roots, and project layout conventions every responsive menu assumes before wiring containers.
- godot-gdscript-mastery — Typed Control APIs,
@onready, and safe child rebuild loops used when building grids/tabs at runtime. - godot-signal-architecture — Resize, tab-changed, and inventory-refresh signals should flow signal-up / call-down so layout scripts never own game state.
Complements
- godot-ui-theming — Theme constants (
separation, margins) and type variations style container chrome without hardcoding colors in layout code. - godot-ui-rich-text — RichTextLabel minimum sizes and BBCode content drive ScrollContainer height; pair after the layout shell exists.
- godot-tweening — Animate
custom_minimum_size/ reorder feedback instead of tweeningpositioninside Containers. - godot-input-handling — Focus, mouse_filter, and action maps for interactive lists/tabs built from Containers.
- godot-adapt-desktop-to-mobile — Breakpoint-driven column counts and safe-area margins compose with responsive Grid/HFlow builders.
- godot-inventory-system — Inventory grids consume responsive column logic; containers present slots, inventory owns item truth.
- godot-performance-optimization — Virtual list pooling and shallow anchor layouts when ScrollContainer would otherwise spawn thousands of Controls.
Downstream / consumers
- godot-dialogue-system — Dialogue choice lists and history panels are Scroll/VBox layouts that reuse autoscroll and separation patterns.
- godot-genre-card-game — Hand arcs, drag layers, and deck UIs assemble AspectRatio/HFlow containers around card Resources.
- godot-composition-apps — Tooling/app UIs reuse the same Container size-flag and split patterns outside gameplay HUDs.
Master
- godot-master — Router and mirrored module entry for UI Containers when agents start from the library index.
FAQ
What does the godot-ui-containers skill do?
Expert blueprint for responsive UI layouts using Container nodes (HBoxContainer, VBoxContainer, GridContainer, MarginContainer, ScrollContainer, HFlowContainer, SubViewportContainer). Covers size flags, anchors, split containers, virtuallist pooling, stretchshrink previews, and dynamic layouts. Use when building adaptive interfaces OR implementing responsive menus. Keywords: Container, HBoxContainer, VBoxContainer, GridContainer, HFlowContainer, SubViewportContainer, virtuallist, stretchshrink, sizeflags, EXPANDFILL, anchors, responsive.
How do I install godot-ui-containers?
Run npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-ui-containers in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/godot-ui-containers/ (personal) or .claude/skills/godot-ui-containers/ (project).
Which AI agents can use godot-ui-containers?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is godot-ui-containers safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains godot-ui-containers?
It is published by thedivergentai in thedivergentai/game-dev-agentic-skills. It has 517 recorded installs.
More from thedivergentai/game-dev-agentic-skills
godot-master
thedivergentai/game-dev-agentic-skills
Consolidated expert library for professional Godot 4.7+ game and application development. Orchestrates 92 Domain Skills through architectural workflows, anti-pattern catalogs, performance budgets, and Server API patterns. Use when: (1) starting a new Godot project, (2) designing game or app architecture, (3) building entity/component systems, (4) debugging performance or physics issues, (5) choosing between 2D/3D approaches, (6) implementing multiplayer, (7) optimizing draw calls or script time, (8) porting between platforms, (9) migrating from 4.6 to 4.7. Primary entry point for ALL Godot development tasks. Keywords: Godot 4.7, AreaLight3D, HDR, Asset Store, godot-master.
godot-shaders-basics
thedivergentai/game-dev-agentic-skills
Expert Godot shader patterns for batch-safe hitflash, alpha-scissor foliage/dissolve, screenspace postFX, depth reconstruction, triplanar, and instance uniforms — not first-shader tutorials. Trigger on draw-call batching breaks, discard vs depth-prepass, foliage shadows, post-process quads, or world-position FX. Keywords: instance uniform, ALPHASCISSOR, hintscreentexture, hintdepthtexture, global uniform, sampler2DArray, canvasitem, spatial, post-processing.
godot-2d-animation
thedivergentai/game-dev-agentic-skills
Expert patterns for 2D animation in Godot using AnimatedSprite2D and skeletal cutout rigs. Use when implementing sprite frame animations, procedural animation (squash/stretch), cutout bone hierarchies, or frame-perfect timing systems. Trigger keywords: AnimatedSprite2D, SpriteFrames, animationfinished, animationlooped, framechanged, frameprogress, setframeandprogress, cutout animation, skeletal 2D, Bone2D, procedural animation, animation state machine, advance(0).
godot-ui-theming
thedivergentai/game-dev-agentic-skills
Expert blueprint for UI themes using Theme resources, StyleBoxes, custom fonts, and theme overrides for consistent visual styling. Covers StyleBoxFlat/Texture, theme inheritance, dynamic theme switching, and font variations. Use when implementing consistent UI styling OR supporting multiple themes. Keywords Theme, StyleBox, StyleBoxFlat, addthemeoverride, font, theme inheritance, dark mode.
godot-gdscript-mastery
thedivergentai/game-dev-agentic-skills
Expert GDScript landmine guidance: static typing opcodes, signal-up/call-down, %UniqueName/@onready lifecycle, Callable bind/unbind, await sequences, typed collections, and safe Dictionary iteration. Use for code review, refactoring hot paths, or project standards. Trigger keywords: statictyping, signalarchitecture, uniquenodes, @onready, classname, signalupcalldown, Callable.bind, typedcollections, awaitsequence.
godot-particles
thedivergentai/game-dev-agentic-skills
Expert blueprint for GPU particle systems (explosions, magic effects, weather, trails) using GPUParticles2D/3D, ParticleProcessMaterial, gradients, sub-emitters, and custom shaders. Use when creating VFX, environmental effects, or visual feedback. Keywords GPUParticles2D, ParticleProcessMaterial, emissionshape, colorramp, subemitter, oneshot.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.