Tools and agents for developing, testing, and improving Claude Code agents
You can install this plugin from any of these themed marketplaces. Choose one, add it as a marketplace, then install the plugin.
Choose your preferred installation method below
A marketplace is a collection of plugins. Every plugin gets an auto-generated marketplace JSON for individual installation, plus inclusion in category and themed collections. Add a marketplace once (step 1), then install any plugin from it (step 2).
One-time setup for access to all plugins
When to use: If you plan to install multiple plugins now or later
Step 1: Add the marketplace (one-time)
/plugin marketplace add https://claudepluginhub.com/marketplaces/all.json
Run this once to access all plugins
Step 2: Install this plugin
/plugin install it2-claude-agent-development@all
Use this plugin's auto-generated marketplace JSON for individual installation
When to use: If you only want to try this specific plugin
Step 1: Add this plugin's marketplace
/plugin marketplace add https://claudepluginhub.com/marketplaces/plugins/it2-claude-agent-development.json
Step 2: Install the plugin
/plugin install it2-claude-agent-development@it2-claude-agent-development
A powerful command-line tool for controlling iTerm2 through its API. Automate terminal sessions, manage tabs and windows, monitor events, and integrate iTerm2 into your workflows.
go install github.com/tmc/it2/cmd/it2@latest
Make sure ~/go/bin
is in your PATH:
export PATH="$HOME/go/bin:$PATH"
Download pre-built binaries from GitHub Releases.
it2 auth check
The first time you run it2
, iTerm2 will prompt you to allow API access. Click "Allow" to continue.
Plugin scripts provide additional functionality for Claude Code integration and session management. They are automatically embedded in the it2
binary and extracted on first use to ~/.it2/plugins/{version}/
.
The plugin discovery system searches for plugins in this priority order:
PATH
(highest priority)IT2_PLUGIN_PATHS
environment variableList available plugins:
it2 plugins list
Available plugin scripts (embedded):
it2-session-has-no-queued-claude-messages
- Detect if Claude is idleit2-session-claude-suggest-action
- Suggest interventions for stuck Claude sessionsit2-session-is-at-prompt
- Check if session is at a shell promptit2-session-claude-has-modal
- Check if Claude has a modal dialogit2-session-claude-auto-approve
- Auto-approve safe operationsTo override embedded plugins, place your own version in your PATH
.
Try these commands to get started:
# List all terminal sessions
it2 session list
# Send text to the current session
it2 session send-text "echo Hello, iTerm2!"
# Create a new tab
it2 tab create "Default"
# Split current pane vertically
it2 session split --vertical
# Split current pane horizontally
it2 session split --horizontal
Create a development environment with one command:
# Create a new tab and split it into three panes
it2 tab create "Default"
it2 session send-text "cd ~/project && vim"
it2 session split --horizontal
it2 session send-text "npm run dev"
it2 session split --vertical
it2 session send-text "git status && git log --oneline -5"
Setup a complete development environment:
# Create a new tab with editor, dev server, and git status
it2 tab create "Default"
it2 session send-text "cd ~/project && vim"
it2 session split --vertical
it2 session send-text "npm run dev"
it2 session split --horizontal
it2 session send-text "git status"
Connect to multiple servers at once:
for server in web1 web2 db1; do
it2 tab create "Default"
it2 session send-text "ssh $server"
done
Run the same command in all sessions:
for session in $(it2 session list --format json | jq -r '.[].id'); do
it2 session send-text "$session" "git pull && git status"
done
Save your current window arrangement:
it2 arrangement save "my-dev-setup"
# Later, restore it
it2 arrangement list
it2 arrangement restore "my-dev-setup"
Sessions & Tabs:
it2 session list
- List all terminal sessionsit2 session split [--vertical|--horizontal]
- Split current paneit2 session send-text <text>
- Send text to sessionit2 tab create <profile>
- Create new tabit2 window create
- Create new windowText & Content:
it2 text get-buffer
- Get session buffer contentit2 clipboard paste
- Paste from clipboardit2 badge set <text>
- Set session badgeMonitoring:
it2 notification monitor --type <type>
- Monitor eventsit2 variable monitor <scope> <name>
- Watch variable changesApplication Control:
app
- Control iTerm2 application (focus, variables, properties)auth
- Manage API authentication and connectionarrangement
- Save and restore window arrangementsSession & Tab Management:
session
- Create, list, close, split, activate, restart sessionstab
- Create, list, close, move, activate tabswindow
- Create, list, close, focus windowsText & Content Operations:
text
- Buffer operations, cursor control, search, selectionselection
- Control and retrieve text selectionbadge
- Display informational badges on sessionsclipboard
- Manage clipboard operationsscreen
- Screen capture utilitiesShell Integration Features (requires Shell Integration):
prompt
- Access command history, prompts, exit codesjob
- Monitor running processes and jobsshell
- Detect shell state (ready/busy/tui) and wait for promptsCustomization:
profile
- Manage terminal profiles and their propertiescolor
- Import/export color presets and themesvariable
- Get/set iTerm2 variables with scope controlMonitoring & Events:
notification
- Subscribe to real-time iTerm2 eventsbroadcast
- Manage broadcast input domainsstatusbar
- Configure status bar componentsAdvanced:
tmux
- Control tmux integrationcompletion
- Generate shell completion scriptsconfig
- Manage it2 configurationAll commands support these flags:
--format string # Output format: text, json, yaml (default "text")
--timeout duration # Connection timeout (default 5s)
--url string # API URL (auto-detects Unix socket)
ITERM_SESSION_ID # Current session ID (auto-set by iTerm2)
ITERM2_COOKIE # Auth cookie (auto-requested if not set)
ITERM2_KEY # Auth key (auto-requested if not set)
ITERM2_DEBUG=1 # Enable debug logging
Get data in different formats:
it2 session list # Human-readable text
it2 session list --format json # JSON for scripting
it2 profile get "Default" --format yaml # YAML for config
Enable advanced features by installing iTerm2 Shell Integration:
Menu → iTerm2 → Install Shell Integration
This unlocks:
# Show command history with exit codes
it2 prompt list
# Search for failed commands
it2 prompt search "git" | grep "Exit: [^0]"
# Wait for shell to be ready
it2 shell wait-for-prompt && it2 session send-text "echo ready"
Subscribe to live iTerm2 events:
# Monitor keystrokes
it2 notification monitor --type keystroke
# Watch for new sessions
it2 notification monitor --type session
# Monitor variable changes
it2 variable monitor session user.myvar
Authentication is automatic:
# Check auth status
it2 auth check
# Force re-authentication
it2 auth request
Sessions can be referenced by:
w0t1p12:C3D91F33-3805-47E2-A3F6-B8AED6EC2209
C3D91F33-3805-47E2-A3F6-B8AED6EC2209
$ITERM_SESSION_ID
(current session)# Use JSON output for parsing
SESSIONS=$(it2 session list --format json)
echo "$SESSIONS" | jq -r '.[].id'
# Always quote variables
it2 session send-text "$SESSION_ID" "$COMMAND"
# Chain commands carefully
it2 session send-text "cd /path && pwd && ls"
# Check if iTerm2 API is enabled
it2 auth check
# Enable debug output
ITERM2_DEBUG=1 it2 session list
# Verify API is enabled in iTerm2
# Preferences → General → Magic → Enable Python API
# Verify Shell Integration is installed
echo $ITERM_SESSION_ID # Should show session ID
# Reinstall if needed
curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash
# List all sessions to find the correct ID
it2 session list
# Use UUID format or full format
it2 session send-text C3D91F33-3805-47E2-A3F6-B8AED6EC2209 "echo test"
For using it2 as a Go library in your own projects:
go get github.com/tmc/it2
See documentation at pkg.go.dev/github.com/tmc/it2
Get help for any command:
it2 help [command]
it2 [command] --help
1.0.0