# godot-ui-theming

A skill that guides an AI agent through Godot UI theming: Theme resources, StyleBoxes, fonts and dark/light switching.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 617 installs · ★ 893
- Author: thedivergentai
- License: LGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/thedivergentai/Game-Dev-Agentic-Skills/tree/HEAD/skills/godot-ui-theming/SKILL.md
- Updated: 2026-10-16
- HTML: https://affpapa.org/en/nevibecode/skills/godot-ui-theming

## What it does

The skill lays out how UI theming works in Godot: Theme resources, StyleBoxFlat and StyleBoxTexture, per-node overrides and theme inheritance. It ships GDScript helpers — `global_theme_manager.gd` for dynamic switching and fallbacks, `theme_swapper.gd` for dark and light mode, `ui_scale_manager.gd` for DPI and resolution scaling, `rtl_theme_mirroring.gd` for right-to-left layouts.

A long section lists what to avoid. Calling `StyleBoxFlat.new()` in `_ready()` across many nodes creates one object per node instead of a shared resource. Hardcoded colors in a StyleBox drift from the palette; the skill points to `theme.get_color()` instead. To tint a single Control at runtime, duplicate the StyleBox first, otherwise the edit hits the shared theme resource. Touching theme resources inside `_draw()` or `_process()` forces layout recalculations, so that is off the table too.

A decision table maps goals to tools: app-wide look goes in project settings, a single differing Control uses `add_theme_*_override`, and button or panel subtypes use `theme_type_variation`. For something like a DangerButton, the advice is a Type Variation based on `Button` rather than a forked scene. All of this assumes a Godot project — the scripts and patterns do not carry over to another engine.

## Requirements
- Works with: Godot

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-ui-theming -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/godot-ui-theming/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/godot-ui-theming/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-ui-theming -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/godot-ui-theming/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-ui-theming -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/godot-ui-theming/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install thedivergentai/Game-Dev-Agentic-Skills godot-ui-theming
```

2. **Manually: put the files in place**
- File: `.github/skills/godot-ui-theming/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-ui-theming -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/thedivergentai/Game-Dev-Agentic-Skills --path skills/godot-ui-theming
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/godot-ui-theming/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-ui-theming -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/thedivergentai/Game-Dev-Agentic-Skills/tree/HEAD/skills/godot-ui-theming/SKILL.md

## When to use it
- keep one palette and font set across the whole UI
- switch dark and light themes while the game runs
- add a Danger-style button without duplicating the scene
- tint one StyleBox without mutating the shared theme
- support right-to-left UI layouts

## Example prompts
- Help me set up a Theme resource for the UI: StyleBoxFlat for buttons and panels, one shared color palette
- I need runtime dark/light switching — walk me through theme_swapper.gd
- Create a DangerButton variant with theme_type_variation instead of a duplicated scene

## Similar
- [godot-ui-control](https://affpapa.org/en/nevibecode/skills/godot-ui-control.md) — skill · 6700 installs
- [godot-nodes-scenes](https://affpapa.org/en/nevibecode/skills/godot-nodes-scenes.md) — skill · 6400 installs
- [cli-anything-godot](https://affpapa.org/en/nevibecode/skills/cli-anything-godot.md) — skill · 548 installs
- [godot-best-practices](https://affpapa.org/en/nevibecode/skills/godot-best-practices.md) — skill · 2100 installs
- [godot-prompter](https://affpapa.org/en/nevibecode/plugins/godot-prompter.md) — plugin · ★ 867
- [godot](https://affpapa.org/en/nevibecode/rules/godot.md) — rule · ★ 3579

From the same set: [thedivergentai/game-dev-agentic-skills](https://affpapa.org/en/nevibecode/by/thedivergentai/game-dev-agentic-skills.md) — 50 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
