From botster
Use when customizing the Botster TUI layout, keybindings, actions, overlays, or reading TUI agent state.
How this skill is triggered — by the user, by Claude, or both
Slash command
/botster:botster-customize-tuiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
TUI customizations live in the active Botster config directory:
TUI customizations live in the active Botster config directory:
lua/user/ui/layout.lua replaces or wraps the main layout.lua/user/ui/keybindings.lua adds or rebinds keys.lua/user/ui/actions.lua defines custom action handlers.Debug builds use ~/.botster-dev/; release builds use ~/.botster/.
Repo-specific config may live under .botster/ in the spawn target.
Rust calls these globals every frame:
render(state)
render_overlay(state)
Wrap the built-in layout when making small changes:
local original_render = render
render = function(state)
local tree = original_render(state)
return tree
end
Replace the layout when the structure changes substantially:
render = function(state)
return {
type = "hsplit",
constraints = { "25%", "75%" },
children = {
{ type = "list", props = { items = {}, selected = 0 } },
{ type = "terminal", props = { session_uuid = _tui_state.selected_session_uuid } },
},
}
end
Read _tui_state inside render functions. Important fields:
agentsselected_session_uuidlist_cursor_poslist_selectedavailable_worktreesavailable_profilespending_fieldsmodeinput_bufferUse session_uuid for routing. Do not use older agent_key vocabulary.
local kb = require("ui.keybindings")
kb.normal["ctrl+h"] = "show_connection_code"
kb.insert["ctrl+h"] = "show_connection_code"
Key names include enter, ctrl+p, shift+enter, and ctrl+]. ctrl+q is
handled by Rust and does not reach Lua.
normalinsertmenunew_agent_select_profilenew_agent_select_worktreenew_agent_create_worktreenew_agent_promptclose_agent_confirmconnection_codeerrorctrl+p — open_menuctrl+j — select_nextctrl+k — select_previousctrl+] — toggle_ptyshift+pageup — scroll_half_upshift+pagedown — scroll_half_downshift+home — scroll_topshift+end — scroll_bottomctrl+r — refresh_agentshsplitvsplitcenteredlistparagraphinputterminalconnection_codeemptyset_modesend_msgfocus_terminalquitbotster.keymap.set(modes, key, action_or_fn, opts)botster.keymap.del(modes, key, opts)botster.keymap.list(opts)botster.keymap.clear_namespace(ns)botster.action.register(name, fn, opts)botster.action.unregister(name)botster.action.list()botster.ui.register_component(name, fn)botster.ui.get_component(name)botster.ui.render_component(name, state)botster.ui.list_components()botster.tbl_deep_extend(behavior, ...)botster.gCreate new customization files before hub startup, then restart once. After the watcher sees the file/directory, later saves hot-reload.
docs/lua/tui-configuration.md — complete TUI modes, nodes, ops, and extension API.docs/lua/directory-structure.md — config file discovery.docs/lua/hot-reload.md — reload behavior.npx claudepluginhub tonksthebear/trybotster --plugin botsterGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.