Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when you need to reproduce or debug TUI rendering issues (garbled output, broken streaming, layout corruption) by running ralph in a tmux split pane and capturing live output.
.claude/skills/mikeyobrien-tui-debug-in-pane/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -8% | 0% |
Debug TUI rendering bugs by launching ralph in a tmux split pane and capturing live output. The split keeps your main pane free for inspection commands.
| Task | Command | |------|---------| | Identify current pane | tmux display-message -p '#{session_name}:#{window_index}.#{pane_index}' | | Create split pane | tmux split-window -h -t SESSION:WINDOW -c /path/to/repo | | List panes | tmux list-panes -t SESSION:WINDOW | | Fix shell in pane | tmux send-keys -t PANE "exec /path/to/fish" Enter | | Send command | tmux send-keys -t PANE "command" Enter | | Capture output | tmux capture-pane -t PANE -p -S -60 | | Quit TUI | tmux send-keys -t PANE q | | Force stop | tmux send-keys -t PANE C-c | | Kill split pane | tmux kill-pane -t PANE |
bashtmux display-message -p '#{session_name}:#{window_index}.#{pane_index}' tmux split-window -h -t SESSION:WINDOW -c /path/to/repo tmux list-panes -t SESSION:WINDOW
Split panes inherit the tmux server's default shell (bash), not the parent's. Tools like pi need fish (mise/Node).
bashtmux send-keys -t PANE "exec /nix/store/km9w9r1p4nl92y5fp4vfwsjymjig4axl-fish-3.7.1/bin/fish" Enter tmux send-keys -t PANE "which pi && pi --version" Enter
bashrm -f .ralph/loop.lock git worktree prune
bash# Prefer release binary (faster startup) tmux send-keys -t PANE "target/release/ralph run -c CONFIG.yml -p 'prompt' --max-iterations N" Enter # Or with cargo (must specify --bin for this workspace) tmux send-keys -t PANE "cargo run --bin ralph -- run -c CONFIG.yml -p 'prompt' --max-iterations N" Enter
bashsleep 20 # Pi/Kiro take 15-30s to start streaming tmux capture-pane -t PANE -p -S -60 ls -lt .ralph/diagnostics/logs/ | head -5
bashtmux send-keys -t PANE q tmux send-keys -t PANE C-c tmux kill-pane -t PANE
exec /path/to/fish..ralph/loop.lock exists, ralph spawns worktree loops instead of running normally. Always delete it first.cli.backend: pi in the config, ralph uses claude regardless of hat settings.name field: HatConfig requires name; omitting it causes a config parse error.q prepends it to your next command. Check if the TUI is still running before sending quit keys.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 7,527 | 6,712 | -11% | 1 | 1 | 0% | 1,476 | 2,434 | +65% | 0 | 0 | — |
case-02 | fail→pass | 9,693 | 7,819 | -19% | 1 | 1 | 0% | 1,920 | 2,592 | +35% | 0 | 0 | — |
case-03 | fail→pass | 13,773 | 4,877 | -65% | 1 | 1 | 0% | 2,657 | 2,045 | -23% | 0 | 0 | — |
case-04 | pass→pass | 8,912 | 4,740 | -47% | 1 | 1 | 0% | 1,517 | 1,924 | +27% | 0 | 0 | — |
case-05 | pass→pass | 10,862 | 8,967 | -17% | 1 | 1 | 0% | 2,050 | 2,589 | +26% | 0 | 0 | — |
case-06 | pass→pass | 9,975 | 7,022 | -30% | 1 | 1 | 0% | 1,798 | 2,313 | +29% | 0 | 0 | — |
case-07 | pass→pass | 5,446 | 2,166 | -60% | 1 | 1 | 0% | 1,005 | 1,348 | +34% | 0 | 0 | — |
case-08 | pass→pass | 9,558 | 4,407 | -54% | 1 | 1 | 0% | 1,741 | 1,566 | -10% | 0 | 0 | — |
case-09 | pass→pass | 7,592 | 2,877 | -62% | 1 | 1 | 0% | 1,384 | 1,508 | +9% | 0 | 0 | — |
case-10 | fail→pass | 7,401 | 2,363 | -68% | 1 | 1 | 0% | 1,298 | 1,348 | +4% | 0 | 0 | — |
case-11 | pass→fail | 5,266 | 1,685 | -68% | 1 | 1 | 0% | 882 | 1,184 | +34% | 0 | 0 | — |
case-12 | fail→pass | 9,096 | 2,936 | -68% | 1 | 1 | 0% | 1,580 | 1,460 | -8% | 0 | 0 | — |
case-13 | fail→pass | 12,521 | 2,895 | -77% | 1 | 1 | 0% | 2,341 | 1,470 | -37% | 0 | 0 | — |
case-14 | pass→pass | 12,070 | 2,212 | -82% | 1 | 1 | 0% | 2,339 | 1,383 | -41% | 0 | 0 | — |
case-15 | fail→pass | 12,083 | 3,658 | -70% | 1 | 1 | 0% | 2,304 | 1,621 | -30% | 0 | 0 | — |
case-16 | fail→pass | 11,614 | 2,282 | -80% | 1 | 1 | 0% | 1,713 | 1,385 | -19% | 0 | 0 | — |
case-17 | pass→pass | 9,189 | 5,077 | -45% | 1 | 1 | 0% | 1,741 | 1,926 | +11% | 0 | 0 | — |
case-18 | fail→pass | 7,795 | 2,035 | -74% | 1 | 1 | 0% | 1,432 | 1,281 | -11% | 0 | 0 | — |
case-19 | pass→pass | 10,649 | 1,449 | -86% | 1 | 1 | 0% | 1,833 | 1,146 | -37% | 0 | 0 | — |
case-20 | fail→pass | 7,070 | 1,855 | -74% | 1 | 1 | 0% | 1,216 | 1,233 | +1% | 0 | 0 | — |
case-21 | fail→pass | 11,331 | 2,866 | -75% | 1 | 1 | 0% | 2,227 | 1,474 | -34% | 0 | 0 | — |
case-22 | pass→pass | 3,573 | 1,479 | -59% | 1 | 1 | 0% | 622 | 1,175 | +89% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.