
iTerm2 Command Control
FreeControl iTerm2 sessions seamlessly from the command line.
Free · Opens the source repo
What iTerm2 Command Control does
The cli-anything-iterm2 skill provides a robust interface for managing iTerm2 sessions through the command line. By utilizing the iTerm2 Python API over WebSocket, this skill allows users to send commands, read live output, and manage terminal layouts efficiently. This is particularly useful for developers and system administrators who rely on terminal sessions for their workflows and need a way to automate interactions with multiple panes and tabs.
With commands grouped into categories such as app, window, tab, and session, users can perform a wide range of operations. For instance, the app snapshot command gives a comprehensive overview of all active sessions, including their names, current directories, and running processes. This feature is crucial for quickly orienting oneself in a complex workspace without needing to manually check each session.
The skill also supports advanced features like tmux integration, allowing users to manage tmux sessions directly from iTerm2. This is beneficial for those who prefer using tmux for terminal multiplexing but want the added functionality of iTerm2's features. Additionally, the ability to broadcast keystrokes across multiple panes enhances collaborative workflows or simultaneous command execution.
Overall, cli-anything-iterm2 is designed for macOS users who work extensively with iTerm2 and seek to streamline their terminal interactions. It is particularly valuable for developers, DevOps engineers, and anyone who needs to maintain an organized terminal environment while executing complex command sequences.
When to use it
Use this skill when you need to manage multiple iTerm2 sessions programmatically or automate terminal tasks.
When not to use it
This skill is not suitable for users who do not use iTerm2 or those who prefer a graphical interface over command line interactions.
What you can build with it
Automating Terminal Tasks
Use this skill to automate repetitive tasks in iTerm2 by scripting command sequences.
Managing Multiple Sessions
Quickly orient yourself in a workspace with multiple active sessions using the app snapshot command.
Integrating with tmux Workflows
Leverage the tmux integration to manage terminal multiplexing effectively while using iTerm2.
How to install iTerm2 Command Control
View source1. Install with the skills CLI
npx skills add hkuds/cli-anything/cli-anything-iterm2-ctl --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by hkudscli-anything-iterm2
Stateful CLI harness for iTerm2. Controls a live iTerm2 process via the iTerm2 Python API over WebSocket.
Prerequisites
- macOS + iTerm2 running:
brew install --cask iterm2 - Python API enabled: iTerm2 → Preferences → General → Magic → Enable Python API
- Install:
pip install cli-anything-iterm2(orpip install -e .from source)
Basic Syntax
cli-anything-iterm2 [--json] <group> <command> [OPTIONS] [ARGS]
Always use --json for machine-readable output (required for agent use).
Command Groups
| Group | Purpose |
|---|---|
app | App status, workspace snapshot, context management, app-level variables, modal dialogs, file panels |
window | Create, list, close, resize, fullscreen windows |
tab | Create, list, close, activate tabs; navigate split panes by direction |
session | Send text, inject raw bytes, read screen, full scrollback, split panes, prompt detection |
profile | List profiles, get profile details, list/apply color presets |
arrangement | Save and restore window layouts |
tmux | Full tmux -CC integration: bootstrap, connections, windows, commands |
broadcast | Sync keystrokes across panes via broadcast domains |
menu | Invoke any iTerm2 menu item programmatically |
pref | Read/write global iTerm2 preferences; list all valid keys; tmux settings |
Orienting in an Existing Workspace
Use app snapshot when you land in a session with existing panes and need to understand what's running without reading full screen contents for each pane:
cli-anything-iterm2 --json app snapshot
Returns name, current directory, foreground process, user.role label, and last visible output line for every session across all windows.
Naming convention — label panes when setting up a workspace so you can find them later:
cli-anything-iterm2 session set-var user.role "api-server"
cli-anything-iterm2 session set-var user.role "log-tail"
cli-anything-iterm2 session set-var user.role "editor"
app snapshot will surface these roles alongside process and path, giving you a full picture in one call.
Typical Agent Workflow
# 1. Orient — snapshot every session: name, path, process, role, last output line
cli-anything-iterm2 --json app snapshot
# 2. Establish context (saves window/tab/session IDs for subsequent commands)
cli-anything-iterm2 app current
# 3. Interact — no --session-id needed once context is set
cli-anything-iterm2 session send "git status"
cli-anything-iterm2 --json session scrollback --tail 200 --strip
# 4. Create a multi-pane workspace — label panes so snapshot identifies them later
cli-anything-iterm2 session split --vertical --use-as-context
cli-anything-iterm2 session send "python3 -m http.server 8000"
cli-anything-iterm2 session set-var user.role "http-server"
Reference Files
Read only what the task requires — each file is a single narrow concern (~10–30 lines):
| File | Read when you need... |
|---|---|
references/session-io.md | Send text, inject bytes, read screen/scrollback, get selection |
references/session-control.md | Split panes, activate/close sessions, resize, rename, session variables |
references/session-shell-integration.md | wait-prompt, wait-command-end, get-prompt; reliable send→wait→read pattern |
references/layout-window-tab.md | Create/close/resize windows and tabs, navigate split panes |
references/layout-arrangement.md | Save and restore window layouts |
references/app-context.md | Snapshot (orientation), status, context management, app vars, modal dialogs, file panels |
references/profile-pref.md | Profiles list/get/presets, preferences read/write, tmux pref shortcuts |
references/broadcast-menu.md | Broadcast keystrokes to multiple panes, invoke menu items |
references/tmux-commands.md | All tmux CLI commands (bootstrap, send, tabs, create-window, set-visible) |
references/tmux-guide.md | Full tmux -CC workflow, pane→session ID mapping |
references/json-session.md | --json schemas for session, window, tab, screen, scrollback, inject |
references/json-tmux-app.md | --json schemas for tmux, app dialogs, preferences, errors |
REPL Mode
Run without arguments for an interactive REPL that maintains context between commands:
cli-anything-iterm2
Frequently asked questions about iTerm2 Command Control
Similar skills
Turborepo
Optimized build system for JavaScript/TypeScript monorepos.
Azure Pipelines Validation
Streamline your Azure DevOps pipeline changes locally.
Azure Developer CLI
Streamline your Azure project workflows with best practices.
Azure Container Registry CLI
Manage Azure Container Registry resources with ease.
Aspire
Build and orchestrate polyglot distributed applications seamlessly.
Vercel CLI
Manage and deploy Vercel projects from the command line.
