Skip to content
Development
Skill

/tui

Guide for Splitrail's terminal UI and file watching. Use when modifying the TUI, stats display, or real-time update logic.

From plugin
splitrail
2166 skills
Install
$ npx -y skills add Piebald-AI/splitrail --skill tui --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/tui

Context preview

The summary Claude sees to decide when to auto-load this skill.

Guide for Splitrail's terminal UI and file watching. Use when modifying the TUI, stats display, or real-time update logic.

SKILL.md

tui.SKILL.md
name: tui
description: Guide for Splitrail's terminal UI and file watching. Use when modifying the TUI, stats display, or real-time update logic.

Real-Time Monitoring & TUI

Splitrail provides a terminal UI with live updates when analyzer data files change.

Source Files

  • `src/tui.rs` - TUI entry point and rendering
  • `src/tui/logic.rs` - TUI state management and input handling
  • `src/watcher.rs` - File watching implementation

Components

FileWatcher (`src/watcher.rs`)

Watches analyzer data directories for changes using the `notify` crate. Triggers incremental re-parsing on file changes and updates TUI via channels.

RealtimeStatsManager

Coordinates real-time updates: background file watching, auto-upload to Splitrail Cloud (if configured), and stats updates to TUI via `tokio::sync::watch`.

TUI (`src/tui.rs`, `src/tui/logic.rs`)

Terminal interface using `ratatui`:

  • Daily stats view with date navigation
  • Session view with lazy message loading
  • Real-time stats refresh

Key Patterns

  • **Channel-based updates** - Stats flow through `tokio::sync::watch` channels
  • **Lazy message loading** - Messages loaded on-demand for session view to reduce memory

Adding Watch Support to an Analyzer

Implement `get_watch_directories()` in your analyzer to return root directories for file watching. See `src/analyzer.rs` for the trait definition.

Ships withsplitrail

Splitrail is a fast, cross-platform, real-time token usage tracker and cost monitor for: Gemini CLI (and Qwen Code) Claude Code Codex CLI Cline / Roo Code / Zoo Code / Kilo Code (VS Code extension + CLI) GitHub Copilot (VS Code) GitHub Copilot CLI OpenCode Pi

Get the whole plugin
Stats
216
Stars
23
Forks
Active
Maintenance
Rust
Language
MIT
License
8d ago
Last commit
1y ago
Created

Repo: Piebald-AI/splitrail