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.

76

Quality

95%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

java-8-source-compat.mdrules/

alwaysApply:
Yes

Java 8 Source Compatibility

TamboUI's library modules (tamboui-core, tamboui-widgets, tamboui-toolkit, tamboui-tui, the backends, etc.) target Java 8 source compatibility so they can run on any modern JVM, including embedded scenarios. Demos and tooling are free to use newer Java. Why: dropping Java 8 here would lock out users on long-LTS deployments without their consent — and the cost of staying on Java 8 in the library is small.

What Library Code Can Use

  • All Java 8 language features: lambdas, method references, streams, default/static interface methods, Optional
  • Standard library APIs available in Java 8 (java.util.function, java.time, Collectors, etc.)
  • Immutable data structures via Collections.unmodifiable*, Arrays.asList, builder patterns

What Library Code Must NOT Use

  • var (Java 10), text blocks (Java 15), record (Java 16), sealed classes (Java 17), pattern matching for instanceof and switch
  • List.of, Map.of, Set.of (Java 9) — use Collections.unmodifiableList(Arrays.asList(...)) instead
  • Any java.util.* API added after Java 8 (Stream.toList, String.lines, Files.mismatch, etc.)

Demos and Tooling Are Different

  • Demo modules under demos/ should use Java 21 idioms — pattern matching, records, switch expressions, var — they exist to showcase modern Java
  • The tamboui-processor module and build scripts can also use newer Java if useful
  • Do not let demo idioms bleed into library modules during refactors

Verifying

  • ./gradlew -q assemble will fail if a library module uses a too-new feature
  • ./gradlew -q javadoc must also pass before considering a change done — TamboUI treats javadoc warnings as errors

rules

char-width-for-display.md

css-element-style-resolution.md

enable-mouse-capture-when-scrollable.md

exception-hierarchy.md

focusable-needs-id.md

java-8-source-compat.md

jfr-event-conventions.md

persistent-stateful-elements.md

pick-the-api-level.md

pick-the-text-element.md

projector-safe-colors.md

render-thread-discipline.md

resource-lifecycle.md

text-input-submit-pattern.md

CHANGELOG.md

README.md

tile.json