CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/tamboui

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.

94

2.77x
Quality

93%

Does it follow best practices?

Impact

97%

2.77x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

jbaruch/tamboui

tessl

A tessl tile that teaches AI coding agents how to use the TamboUI Java terminal-UI library without falling into its sharp edges (render-thread discipline, terminal display widths, CSS-aware element styling, JFR-event conventions).

This repo is the standalone home of the tile. The TamboUI library itself lives at tamboui/tamboui.

Install

tessl install jbaruch/tamboui

Run this from your TamboUI consumer project (or from the TamboUI repo itself if you're contributing). The rules apply automatically; the skills are invoked on demand.

Rules

RuleWhat it enforces
pick-the-api-levelDefault to Toolkit DSL; drop to TuiRunner / Immediate / Inline only when needed.
render-thread-disciplineAll UI mutations on the render thread; use runOnRenderThread from background threads.
char-width-for-displayNever use String.length() / substring for terminal widths — use CharWidth.
exception-hierarchyThrow the right TamboUIException subtype with actionable context.
resource-lifecycleAlways try-with-resources for TuiRunner, Backend, InlineDisplay.
css-element-style-resolutionNullable style fields + resolveEffectiveStyle for CSS-aware elements.
jfr-event-conventionsNaming, enabled() guards, commit(...) helpers, JFR polyfill for Java 8.
java-8-source-compatLibrary modules are Java 8; demos can use Java 21+.

Skills

SkillWhen to use
scaffold-toolkit-appBootstrap a new TUI app using the Toolkit DSL.
wrap-widget-as-elementAdd a Toolkit Element wrapping a widget, with proper CSS child-selector support.
add-jfr-eventAdd a new JFR event under dev.tamboui.{area} with the project's conventions.

Scripts

The tile ships two helper scripts under scripts/. After install they live at .tessl/tiles/jbaruch/tamboui/scripts/ in your workspace; both accept a path argument for the TamboUI repo root.

ScriptWhat it does
scripts/list-tamboui-modules.shLists Gradle modules from settings.gradle.kts as JSON.
scripts/check-display-width.shGreps widget render code for length() / substring( calls and emits candidates as JSON for review.

Eval Lift

Measured on claude-sonnet-4-6 over 3 scenarios that test tile-specific (not universal) behaviour:

ScenarioBaselineWith TileLift
Refuse to rename commit→trace and drop the JFR enabled() guard19%100%+81
Add a JFR event with TamboUI naming, guard, helper, polyfill26%100%+74
Wrap a widget with resolveEffectiveStyle + nullable Style fields62%100%+38
Aggregate (n=3)36%100%+64

Two zero-lift scenarios were retired per plugin-evals.md ("coincidence with universal competence: retire or accept as documentation"). See CHANGELOG.md for the full history.

Authoring Workflow

Local development runs against the included script-test suite:

bash scripts/tests/run-all.sh
tessl tile lint
tessl skill review --threshold 85 skills/scaffold-toolkit-app
tessl skill review --threshold 85 skills/wrap-widget-as-element
tessl skill review --threshold 85 skills/add-jfr-event

CI runs the same set on every PR (.github/workflows/lint.yml).

Publishing

Publishing is automated via tesslio/patch-version-publish on push to main (.github/workflows/publish.yml). The action queries the registry for the latest published version, auto-bumps the patch if tile.json is at-or-behind, and publishes. To override (minor/major bump), edit tile.json version to a value greater than the registry latest before pushing.

The workflow needs a TESSL_TOKEN repository secret. Configure it at:

https://github.com/jbaruch/tamboui/settings/secrets/actions

Token can be generated at https://tessl.io/settings/tokens.

Relationship to TamboUI Upstream

This tile is independent: it's authored by an external contributor against the public TamboUI surface. If the TamboUI maintainers want to adopt it as an official tile, the canonical place would be tamboui/tamboui-tessl (or similar) — at which point this repo would be archived with a pointer.

License

MIT — same license as TamboUI itself, since the tile content paraphrases public TamboUI documentation and conventions.

Workspace
jbaruch
Visibility
Public
Created
Last updated
Publish Source
CLI
Badge
jbaruch/tamboui badge