Teaches coding agents how to build TUIs with TamboUI correctly: API-level selection, render-thread discipline, display-width safety, CSS-aware element authoring, and JFR conventions.
76
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Toolkit offers several factories for "show some text" — text, richText, richTextArea, markupText, and the cell-content path inside list. Each computes its preferred size differently, so choosing the wrong one produces clipped output, ellipsis truncation, or a column layout that shrinks every line to height 1. Why: in a column(...) or panel(...), parent layout calls preferredSize(width) on each child to allocate rows — and only some text elements actually wrap to compute their real height.
text("...") — fastest, no wrap, no width mathrichText(...) — height is always 1, content past the width clipsrichTextArea(...) — preferredSize computes the wrapped height, so column layouts give it the rows it needsmarkupText(...) — height behaves like richText, do not use for long contentlist(...) — pre-wrap long strings into multiple short items (see [[build-log-style-list]])RichTextElement.preferredSize(width) returns text.height() = 1 regardless of .wrapWord() — the modifier sets a flag the size calculation never readscolumn(...) each richText(...) child gets exactly one row; long content truncates with ellipsis even when the column has empty rows belowrichTextArea(...) (which computes wrapped height), or pre-wrap the string yourself and feed multiple text linestext(...) returns a TextElement whose .constraint() is a zero-arg getter — there is no setter overload, so you cannot give a bare line a fixed height in a column layoutArgument type mismatch: actual type is 'Constraint!', but 'Element!' was expected. Too many arguments for 'fun constraint(): Constraint!'..constraint(...): row(text("...")) or column(text("...")) — containers are where sizing constraints liverichText clipped with … inside a panel — switch to richTextArea or pre-wraptext("...").constraint(length(3)) compile error — wrap in row(...) or column(...)list cell falling back to ellipsis — pre-wrap into multiple list items (see [[build-log-style-list]])rules
skills