tachikoma-tui

Scaffolds terminal UI applications in Julia using the Tachikoma.jl framework.

12|1|Updated May 18, 2026
One-click install
npx skills add https://github.com/csvance/Luximm.jl --skill tachikoma-tui-csvance
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: tachikoma-tui
Source: https://github.com/csvance/Luximm.jl/tree/main/skills/tachikoma-tui
Command: npx skills add https://github.com/csvance/Luximm.jl --skill tachikoma-tui-csvance

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building a terminal UI in Julia with Tachikoma.jl requires knowing its Model/update!/view protocol, layout constraints, widget statefulness rules, and several non-obvious pitfalls that cause blank screens or corrupted output. This Skill provides the minimal app skeleton and the sharp edges upfront so you avoid costly trial-and-error round trips. ## Core Features & Use Cases - App Protocol Reference: Covers the mutable Model struct, update!/view/should_quit callbacks, the app() loop, and event dispatch on KeyEvent, MouseEvent, and TaskEvent. - Layout and Rendering Guide: Explains constraint-based split_layout (Fixed, Min, Max, Percent, Fill, Ratio), 1-based coordinates, set_char!/set_string! primitives, and theme-aware tstyle styling. - Widget Catalog and Pitfalls: Distinguishes stateless widgets (Block, Gauge, StatusBar) from stateful ones (Form, SelectableList, TextInput) and lists the mistakes that cost the most debugging time. - Use Case: Ask the agent to build a counter or dashboard TUI in Julia, and it produces a working Tachikoma app with correct layout guards, key handling, and widget state management on the first attempt. ## Quick Start Ask the agent to create a Tachikoma.jl terminal app in Julia with a counter, a bordered layout, and keyboard controls for incrementing and quitting.

Frequently Asked Questions about tachikoma-tui

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

FAQPage Schema
How do I build a terminal UI app in Julia with Tachikoma.jl?

Define a mutable struct subtyping Model, implement update! to handle KeyEvent and MouseEvent input, implement view to draw into the Frame buffer, and call app(model) to run the loop. Use @tachikoma_app so your methods extend Tachikoma's callbacks instead of shadowing them.

How do I handle keyboard input in a Tachikoma.jl app?

Define an update!(m, evt::KeyEvent) method and match on evt.key and evt.char, such as :char with 'q' to quit or :escape. For complex dispatch, Match.jl's @match macro on the (key, char) tuple is the idiomatic pattern.

Why does my Tachikoma app show a blank screen with no errors?

The usual cause is missing @tachikoma_app or explicit imports of view, update!, and should_quit, so your methods define fresh functions instead of extending Tachikoma's. The render loop never sees your callbacks and draws nothing.

Which Tachikoma widgets are stateful and must persist on the model?

TextInput, TextArea, CodeEditor, DataTable, Form, SelectableList, TreeView, DropDown, Checkbox, RadioGroup, Button, ScrollPane, REPLWidget, and TerminalWidget carry internal state like cursor and scroll position. Rebuilding them each frame resets that state, so store them on the model.

Why does println corrupt the screen in a Tachikoma app?

println writes directly to the terminal while Tachikoma is composing the frame, breaking the layout. Use @info, @debug, or @warn, which Tachikoma redirects through its recording channel, or wire on_stdout and on_stderr callbacks via app(m; on_stdout=..., on_stderr=...).