# godot-ui-rich-text

A skill for RichTextLabel work in Godot: BBCode markup, clickable links, custom shader effects and dialogue systems.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 400 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-rich-text/SKILL.md
- Updated: 2026-10-16
- HTML: https://affpapa.org/en/nevibecode/skills/godot-ui-rich-text

## What it does

The skill hands your agent ready-made patterns for Godot's `RichTextLabel`: BBCode tags, meta links wired to `meta_clicked`, `RichTextEffect` shaders and dynamic text. Ten GDScript files ship with it, covering a rainbow color cycle, a horror glitch, and a typewriter controller that reads `[pause]` and `[speed]` tags.

A good chunk of the text is about what breaks. Parsing a long string with hundreds of tags every frame tanks performance, so formatted strings get cached. Typewriter animation runs on `visible_characters` rather than rewriting the string each frame — otherwise parsing overhead and flicker show up. Custom effects also need registering in `custom_effects` or via `install_effect()`; the script alone does nothing.

For player-typed text in chats and lobbies there's a sanitizer. Skip it and someone types an `[img]` tag with a huge image path and your layout is gone. Heavy logic stays out of `meta_clicked` because that signal fires on the main thread — emit a command and process it elsewhere. Image sizes in `[img]` go through `width_unit` and `height_unit` instead of pixels, since fixed pixel widths fall apart at higher resolutions.

## 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-rich-text -a claude-code
```

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

### Codex

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

2. **Manually: put the files in place**
- File: `.agents/skills/godot-ui-rich-text/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-rich-text -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/godot-ui-rich-text/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-rich-text
```

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

### Gemini CLI

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

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

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/godot-ui-rich-text/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-rich-text -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-rich-text/SKILL.md

## When to use it
- render dialogue with pauses and variable typing speed
- make item and quest links clickable inside text
- block BBCode injection from player chat input
- scale [img] tags to match the current font size
- add a custom glitch or color-cycle effect

## Example prompts
- Build a dialogue box on RichTextLabel with [pause] and [speed] tags
- Wire meta_clicked for links like item: and quest:
- Run chat text through the sanitizer before assigning it

## Similar
- [godot-ui-control](https://affpapa.org/en/nevibecode/skills/godot-ui-control.md) — skill · 6700 installs
- [godot-gdscript](https://affpapa.org/en/nevibecode/skills/godot-gdscript.md) — skill · 6500 installs
- [godot-ui](https://affpapa.org/en/nevibecode/skills/godot-ui.md) — skill · 2700 installs
- [godot](https://affpapa.org/en/nevibecode/rules/godot.md) — rule · ★ 3579
- [godot-mcp-enhanced](https://affpapa.org/en/nevibecode/mcp/godot-mcp-enhanced.md) — MCP server · ★ 103
- [godot-gdscript-patterns](https://affpapa.org/en/nevibecode/skills/godot-gdscript-patterns.md) — skill · 17396 installs

From the same set: [thedivergentai/game-dev-agentic-skills](https://affpapa.org/en/nevibecode/by/thedivergentai/game-dev-agentic-skills.md) — 51 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
