aws-cdk-development
AWS Cloud Development Kit (CDK) expert for building cloud infrastructure with TypeScript/Python. Use when creating CDK stacks,…
Use when you need to run interactive CLI tools (vim, git rebase -i, Python REPL, etc.) that require real-time input/output - provides tmux-based approach for controlling interactive sessions through detached sessions and send-keys
$ npx -y skills add Microck/ordinary-claude-skills --skill using-tmux-for-interactive-commands --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/using-tmux-for-interactive-commandsContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when you need to run interactive CLI tools (vim, git rebase -i, Python REPL, etc.) that require real-time input/output - provides tmux-based approach for controlling interactive sessions through detached sessions and send-keys
name: using-tmux-for-interactive-commands description: Use when you need to run interactive CLI tools (vim, git rebase -i, Python REPL, etc.) that require real-time input/output - provides tmux-based approach for controlling interactive sessions through detached sessions and send-keys
Interactive CLI tools (vim, interactive git rebase, REPLs, etc.) cannot be controlled through standard bash because they require a real terminal. tmux provides detached sessions that can be controlled programmatically via `send-keys` and `capture-pane`.
**Use tmux when:**
**Don't use for:**
| Task | Command | |------|---------| | Start session | `tmux new-session -d -s <name> <command>` | | Send input | `tmux send-keys -t <name> 'text' Enter` | | Capture output | `tmux capture-pane -t <name> -p` | | Stop session | `tmux kill-session -t <name>` | | List sessions | `tmux list-sessions` |
# This hangs because vim expects interactive terminal bash -c "vim file.txt"
# Create detached tmux session tmux new-session -d -s edit_session vim file.txt # Send commands (Enter, Escape are tmux key names) tmux send-keys -t edit_session 'i' 'Hello World' Escape ':wq' Enter # Capture what's on screen tmux capture-pane -t edit_session -p # Clean up tmux kill-session -t edit_session
1. **Create detached session** with the interactive command 2. **Wait briefly** for initialization (100-500ms depending on command) 3. **Send input** using `send-keys` (can send special keys like Enter, Escape) 4. **Capture output** using `capture-pane -p` to see current screen state 5. **Repeat** steps 3-4 as needed 6. **Terminate** session when done
Common tmux key names:
Specify working directory when creating session:
tmux new-session -d -s git_session -c /path/to/repo git rebase -i HEAD~3
For easier use, see `/home/jesse/git/interactive-command/tmux-wrapper.sh`:
# Start session /path/to/tmux-wrapper.sh start <session-name> <command> [args...] # Send input /path/to/tmux-wrapper.sh send <session-name> 'text' Enter # Capture current state /path/to/tmux-wrapper.sh capture <session-name> # Stop /path/to/tmux-wrapper.sh stop <session-name>
tmux new-session -d -s python python3 -i tmux send-keys -t python 'import math' Enter tmux send-keys -t python 'print(math.pi)' Enter tmux capture-pane -t python -p # See output tmux kill-session -t python
tmux new-session -d -s vim vim /tmp/file.txt sleep 0.3 # Wait for vim to start tmux send-keys -t vim 'i' 'New content' Escape ':wq' Enter # File is now saved
tmux new-session -d -s rebase -c /repo/path git rebase -i HEAD~3 sleep 0.5 tmux capture-pane -t rebase -p # See rebase editor # Send commands to modify rebase instructions tmux send-keys -t rebase 'Down' 'Home' 'squash' Escape tmux send-keys -t rebase ':wq' Enter
**Problem:** Capturing immediately after `new-session` shows blank screen
**Fix:** Add brief sleep (100-500ms) before first capture
tmux new-session -d -s sess command sleep 0.3 # Let command initialize tmux capture-pane -t sess -p
**Problem:** Commands typed but not executed
**Fix:** Explicitly send Enter
tmux send-keys -t sess 'print("hello")' Enter # Note: Enter is separate argument**Problem:** `tmux send-keys -t sess '\n'` doesn't work
**Fix:** Use tmux key names: `Enter`, not `\n`
tmux send-keys -t sess 'text' Enter # ✓ tmux send-keys -t sess 'text\n' # ✗
**Problem:** Orphaned tmux sessions accumulate
**Fix:** Always kill sessions when done
tmux kill-session -t session_name # Or check for existing: tmux has-session -t name 2>/dev/null
An unappealing collection of Claude Skills and resources.
AWS Cloud Development Kit (CDK) expert for building cloud infrastructure with TypeScript/Python. Use when creating CDK stacks,…
This skill provides AWS cost optimization, monitoring, and operational best practices with integrated MCP servers for billing…
AWS serverless and event-driven architecture expert based on Well-Architected Framework. Use when building serverless APIs,…
This skill provides safe update capabilities for GitHub SpecKit installations, preserving customizations while applying template…
Apply strict operational protocols for AI task execution including sequential processing, minimal responses, no destructive…
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms,…