Claude Code Plugins

Community-maintained marketplace

Feedback

kitty-tui-control

@frixaco/dotfiles
0
0

Runs and controls TUI applications inside Kitty terminal tabs using Kitty's remote control interface. Use when asked to run a TUI app, start a dev server in a new tab, or check/inspect output from a running TUI application.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name kitty-tui-control
description Runs and controls TUI applications inside Kitty terminal tabs using Kitty's remote control interface. Use when asked to run a TUI app, start a dev server in a new tab, or check/inspect output from a running TUI application.

Kitty TUI Control

Launch a TUI App in a New Tab

kitten @ launch --type tab --copy-env --cwd=current --tab-title "NAME" --hold command args

Examples:

kitten @ launch --type tab --copy-env --cwd=current --tab-title "dev-server" --hold bun dev
kitten @ launch --type tab --copy-env --cwd /Users/frixa/projects/myapp --tab-title "dev-server" --hold bun dev

Flags:

  • --type tab - Create new tab (SPACE separator, not =)
  • --copy-env - Copy environment (PATH with mise/bun/node)
  • --cwd=current - Use current window's working directory
  • --cwd /path - Use specific directory
  • --tab-title "NAME" - Set tab title
  • --hold - Keep tab open after command exits
  • --keep-focus - Stay on current tab (optional)

Returns window ID (number) for later reference.

Fallback: Shell Wrapper

If --copy-env doesn't work for dynamic per-directory envs (direnv, mise hooks):

kitten @ launch --type tab --tab-title "NAME" --hold fish -ic "cd /path/to/project && command args"

Inspect a Running TUI App

List all windows:

kitten @ ls | jq -r '.[] | .tabs[] | .windows[] | "id:\(.id) | title: \(.title) | process: \(.foreground_processes[0].cmdline | join(" "))"'

Capture window output:

kitten @ get-text --match "id:N" --extent screen   # visible only
kitten @ get-text --match "id:N" --extent all      # include scrollback

Send Input

kitten @ send-text --match "id:N" "text"   # Send text
kitten @ send-text --match "id:N" "\r"     # Enter
kitten @ send-text --match "id:N" "\x03"   # Ctrl+C

Close a Tab

kitten @ close-window --match "id:N"