godot-ui-rich-text

Implements BBCode-formatted RichTextLabel dialogue, clickable meta links, and custom text effects in Godot.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/DecioLuvier/Shatterless --skill godot-ui-rich-text-decioluvier
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: godot-ui-rich-text
Source: https://github.com/DecioLuvier/Shatterless/tree/main/.claude/skills/godot/references/godot-ui-rich-text
Command: npx skills add https://github.com/DecioLuvier/Shatterless --skill godot-ui-rich-text-decioluvier

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Building formatted in-game text in Godot—dialogue with typewriter reveals, clickable links, colored or animated text, and embedded images—requires juggling BBCode tags, RichTextEffect shaders, and signal wiring, with many performance and security pitfalls that are easy to miss. ## Core Features & Use Cases - BBCode Formatting & Effects: Apply bold, italic, colors, gradients, and custom RichTextEffect shaders (rainbow, glitch) with correct registration via custom_effects. - Dialogue & Typewriter Systems: Drive per-character reveals with pause/speed event tags using visible_characters instead of expensive string rewrites. - Clickable Meta Links & Safety: Dispatch [url] meta clicks for items, quests, and NPCs, and sanitize user-generated chat input against BBCode injection. - Use Case: When building a visual novel dialogue box, use the typewriter controller for paced text reveal, the meta dispatcher for choice links, and the image scaler so inline icons match runtime font sizes. ## Quick Start Ask the agent to implement a Godot dialogue RichTextLabel with a typewriter reveal, clickable choice links, and sanitized player chat text.

Frequently Asked Questions about godot-ui-rich-text

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a typewriter text effect in Godot RichTextLabel?▼

Use the visible_characters property with per-character indexing rather than modifying the text string each frame. For pause and speed event tags like [pause] and [speed], use a dedicated typewriter controller script instead of visible_ratio, which is unreliable for per-character logic.

How do I make clickable links in Godot RichTextLabel?▼

Wrap text in [url=payload] tags and connect the meta_clicked signal to a handler. Keep heavy logic off the main thread by emitting a command from the handler, and add hover feedback so players know the text is clickable.

How do I add custom text effects like rainbow or glitch in Godot?▼

Extend RichTextEffect, set a bbcode identifier, and implement _process_custom_fx to modify each CharFXTransform. You must register the effect instance in the RichTextLabel custom_effects list or via install_effect() for it to render.

Is BBCode in Godot chat safe for user-generated input?▼

No, raw user input is unsafe because players can inject tags like [img] or [color=transparent] to break your UI. Always run player-typed strings through a BBCode sanitizer before assigning them to RichTextLabel.text.

Why does my inline image in RichTextLabel look wrong at different resolutions?▼

Absolute pixel sizes in [img] tags fail on higher resolutions. In Godot 4.7 use width_unit and height_unit with RichTextLabel.ImageUnit, and scale images dynamically to match the runtime font line height.

When should I use visible_ratio versus visible_characters in Godot?▼

Use visible_ratio with a Tween for simple whole-text fades. Use visible_characters when you need per-character control such as pause or speed event tags in dialogue, since visible_ratio cannot handle indexed character logic.